Browse Source

项目统计

ZaiZai 2 years ago
parent
commit
ffff6f56c9
3 changed files with 171 additions and 60 deletions
  1. 44 0
      src/api/modules/home/index.js
  2. 1 1
      src/config/index.json
  3. 126 59
      src/views/home/index/index.vue

+ 44 - 0
src/api/modules/home/index.js

@@ -0,0 +1,44 @@
+import {httpApi} from "../../request/httpApi";
+
+export default {
+    //门户普通权限总计划统计
+    async planOverview() {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudget/planOverview',
+            method: 'get',
+            params: {}
+        }, false);
+    },
+    //门户普通权限预警
+    async postponePlan() {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudget/postponePlan',
+            method: 'get',
+            params: {}
+        }, false);
+    },
+    //获取用户计划通知
+    async getUserInform() {
+        return httpApi({
+            url: '/api/blade-control/planInform/getUserInform',
+            method: 'get',
+            params: {}
+        }, false);
+    },
+    //门户普通权限单月计划统计
+    async monthPlanOverview(form) {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudget/MonthPlanOverview',
+            method: 'get',
+            params: form
+        }, false);
+    },
+    //门户普通权限计划统计图
+    async monthOfYearPlanOverview() {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudget/MonthOfYearPlanOverview',
+            method: 'get',
+            params: {}
+        }, false);
+    },
+}

+ 1 - 1
src/config/index.json

@@ -1,6 +1,6 @@
 {
 {
     "version": "20230607160059",
     "version": "20230607160059",
-    "target": "http://192.168.0.109:8090",
+    "target": "http://192.168.0.116:8090",
     "smsPhone": "",
     "smsPhone": "",
     "vite": {
     "vite": {
         "port": 5174,
         "port": 5174,

+ 126 - 59
src/views/home/index/index.vue

@@ -9,7 +9,7 @@
                                 <HcIcon name="calendar-todo"/>
                                 <HcIcon name="calendar-todo"/>
                             </div>
                             </div>
                             <div class="item-sub-content">
                             <div class="item-sub-content">
-                                <div class="num">36条</div>
+                                <div class="num">{{planOverview.totalPlan ?? 0}}条</div>
                                 <div class="title">您的任务总计划</div>
                                 <div class="title">您的任务总计划</div>
                             </div>
                             </div>
                         </div>
                         </div>
@@ -22,7 +22,7 @@
                                 <HcIcon name="calendar-check"/>
                                 <HcIcon name="calendar-check"/>
                             </div>
                             </div>
                             <div class="item-sub-content">
                             <div class="item-sub-content">
-                                <div class="num">53条</div>
+                                <div class="num">{{planOverview.finishedPlan ?? 0}}条</div>
                                 <div class="title">已完成计划</div>
                                 <div class="title">已完成计划</div>
                             </div>
                             </div>
                         </div>
                         </div>
@@ -35,7 +35,7 @@
                                 <HcIcon name="alert" fill/>
                                 <HcIcon name="alert" fill/>
                             </div>
                             </div>
                             <div class="item-sub-content">
                             <div class="item-sub-content">
-                                <div class="num">14条</div>
+                                <div class="num">{{planOverview.riskPlan ?? 0}}条</div>
                                 <div class="title">风险计划</div>
                                 <div class="title">风险计划</div>
                             </div>
                             </div>
                         </div>
                         </div>
@@ -48,7 +48,7 @@
                                 <HcIcon name="time"/>
                                 <HcIcon name="time"/>
                             </div>
                             </div>
                             <div class="item-sub-content">
                             <div class="item-sub-content">
-                                <div class="num">22条</div>
+                                <div class="num">{{planOverview.postponePlan ?? 0}}条</div>
                                 <div class="title">延期计划</div>
                                 <div class="title">延期计划</div>
                             </div>
                             </div>
                         </div>
                         </div>
@@ -74,25 +74,9 @@
                         </template>
                         </template>
                         <div class="hac-card-item-table">
                         <div class="hac-card-item-table">
                             <el-scrollbar>
                             <el-scrollbar>
-                                <div class="hac-home-notice-item">
-                                    <div class="line-clamp-2 title">
-                                        《任务名称xxxxxx》中其中【任务描述】已被【代潘】变更为已完成状态,
-                                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
-                                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-                                    </div>
-                                    <div class="time">2022-10-25</div>
-                                </div>
-                                <div class="hac-home-notice-item">
-                                    <div class="line-clamp-2 title">《任务名称xxxxxx》您有一条新任务待执行,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
-                                    <div class="time">2022-10-25</div>
-                                </div>
-                                <div class="hac-home-notice-item">
-                                    <div class="line-clamp-2 title">《任务名称xxxxxx》您有一条新任务待执行,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
-                                    <div class="time">2022-10-25</div>
-                                </div>
-                                <div class="hac-home-notice-item">
-                                    <div class="line-clamp-2 title">《任务名称xxxxxx》您有一条新任务待执行,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
-                                    <div class="time">2022-10-25</div>
+                                <div v-for="item in userInformData" class="hac-home-notice-item">
+                                    <div class="line-clamp-2 title">{{item.informDetails}}</div>
+                                    <div class="time">{{item.informDate}}</div>
                                 </div>
                                 </div>
                             </el-scrollbar>
                             </el-scrollbar>
                         </div>
                         </div>
@@ -105,43 +89,43 @@
                     <div class="hac-card-title">任务统计</div>
                     <div class="hac-card-title">任务统计</div>
                 </template>
                 </template>
                 <template #extra>
                 <template #extra>
-                    <HcDropdown :cur="planTime" :datas="itemData"/>
+                    <el-date-picker type="month" v-model="planTime" format="YYYY-MM" value-format="YYYY-MM" style="width: 130px;" @change="planTimeChange"/>
                 </template>
                 </template>
                 <div class="hac-card-item-body">
                 <div class="hac-card-item-body">
                     <el-row :gutter="14">
                     <el-row :gutter="14">
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">96</div>
+                                <div class="num">{{monthPlan.totalPlan ?? 0}}</div>
                                 <div class="text">累计任务总数</div>
                                 <div class="text">累计任务总数</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">33</div>
+                                <div class="num">{{monthPlan.unfinishedPlan ?? 0}}</div>
                                 <div class="text">累计未完成任务</div>
                                 <div class="text">累计未完成任务</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">3</div>
+                                <div class="num">{{monthPlan.cancelPlan ?? 0}}</div>
                                 <div class="text">累计取消任务</div>
                                 <div class="text">累计取消任务</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">6</div>
+                                <div class="num">{{monthPlan.postponePlan ?? 0}}</div>
                                 <div class="text">累计延期任务</div>
                                 <div class="text">累计延期任务</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">6</div>
+                                <div class="num">{{monthPlan.transferPlan ?? 0}}</div>
                                 <div class="text">累计转移任务</div>
                                 <div class="text">累计转移任务</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
                         <el-col :span="4">
                         <el-col :span="4">
                             <div class="hac-row-total-item">
                             <div class="hac-row-total-item">
-                                <div class="num">1</div>
+                                <div class="num">{{monthPlan.notFilledLog ?? 0}}</div>
                                 <div class="text">累计未填写日志</div>
                                 <div class="text">累计未填写日志</div>
                             </div>
                             </div>
                         </el-col>
                         </el-col>
@@ -164,45 +148,128 @@
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import {onMounted, ref} from "vue";
+import {onActivated, onMounted, ref} from "vue";
+import mainApi from "~api/home/index";
 import BarLabelRotation from "~com/echarts/BarLabelRotation.vue";
 import BarLabelRotation from "~com/echarts/BarLabelRotation.vue";
+import {getArrValue, getObjValue} from "js-fast-way";
+
+//时间类
+import dayjs from "dayjs"
+import 'dayjs/locale/zh-cn'
+dayjs.locale('zh-cn')
+
+//获取当前年月
+onMounted(() => {
+    planTime.value = dayjs().format('YYYY-MM')
+})
+
+//缓存页面被激活时
+onActivated(() => {
+    getApi()
+})
 
 
+const getApi = () => {
+    getPlanOverview()
+    getTableData()
+    getUserInform()
+    getMonthPlanOverview()
+    getMonthOfYearPlanOverview()
+}
+
+//项目类型
+const planOverview = ref({})
+const getPlanOverview = async () => {
+    const {error, code, data} = await mainApi.planOverview()
+    //判断状态
+    if (!error && code === 200) {
+        planOverview.value = getObjValue(data)
+    } else {
+        planOverview.value = {}
+    }
+}
+
+//最新预警信息
 const tableColumn = [
 const tableColumn = [
-    {key: 'name', name: '任务名称', align: 'left'},
-    {key: 'text', name: '关联项目', align: 'left'},
-    {key: 'time', name: '完成时间', align: 'left'}
+    {key: 'planTaskDesc', name: '任务名称', align: 'left'},
+    {key: 'projectName', name: '关联项目', align: 'left'},
+    {key: 'practicalFinishTime', name: '完成时间', align: 'left'}
 ]
 ]
-const tableData = ref([
-    {name: '名称1', text: '奉建路', time: '2023-03-20'},
-    {name: '名称2', text: '奉建路', time: '2023-03-21'},
-    {name: '名称3', text: '奉建路', time: '2023-03-22'},
-    {name: '名称4', text: '奉建路', time: '2023-03-20'},
-    {name: '名称5', text: '奉建路', time: '2023-03-21'},
-    {name: '名称6', text: '奉建路', time: '2023-03-22'},
-    {name: '名称7', text: '奉建路', time: '2023-03-20'},
-    {name: '名称8', text: '奉建路', time: '2023-03-21'},
-    {name: '名称9', text: '奉建路', time: '2023-03-22'}
-])
+const tableData = ref([])
+const getTableData = async () => {
+    const {error, code, data} = await mainApi.postponePlan()
+    //判断状态
+    if (!error && code === 200) {
+        tableData.value = getArrValue(data)
+    } else {
+        tableData.value = []
+    }
+}
+
+//通知数据
+const userInformData = ref([])
+const getUserInform = async () => {
+    const {error, code, data} = await mainApi.getUserInform()
+    //判断状态
+    if (!error && code === 200) {
+        userInformData.value = getArrValue(data)
+    } else {
+        userInformData.value = []
+    }
+}
 
 
 //选择日期时间
 //选择日期时间
-const planTime = ref('2023年02月')
-const itemData = ref([{name: '2023年02月'}, {name: '2023年03月'}, {name: '2023年04月'}, {name: '2023年05月'}])
+const planTime = ref('2023-02')
+const planTimeChange = () => {
+    getMonthPlanOverview()
+}
+
+//门户普通权限单月计划统计
+const monthPlan = ref({})
+const getMonthPlanOverview = async () => {
+    const {error, code, data} = await mainApi.monthPlanOverview({
+        planDate: planTime.value
+    })
+    //判断状态
+    if (!error && code === 200) {
+        monthPlan.value = getObjValue(data)
+    } else {
+        monthPlan.value = {}
+    }
+}
 
 
 //计划统计图
 //计划统计图
+const initPlanData = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 const planDatas = ref([
 const planDatas = ref([
-    {
-        name: '总计划',
-        value: [120, 132, 101, 134, 90, 230, 210, 210, 210, 210, 132, 101]
-    },
-    {
-        name: '已完成',
-        value: [120, 132, 101, 134, 90, 230, 210, 210, 210, 210, 132, 101]
-    },
-    {
-        name: '未完成',
-        value: [120, 132, 101, 134, 90, 230, 210, 210, 210, 210, 132, 101]
-    },
+    {name: '总计划', value: initPlanData},
+    {name: '已完成', value: initPlanData},
+    {name: '未完成', value: initPlanData},
 ])
 ])
+const getMonthOfYearPlanOverview = async () => {
+    const {error, code, data} = await mainApi.monthOfYearPlanOverview()
+    //判断状态
+    if (!error && code === 200) {
+        planDatas.value = [] //先清空数据
+        const arr = getArrValue(data)
+        //判断是否存在数据
+        if (arr.length > 0) {
+            planDatas.value = arr
+        } else {
+            //接口没有返回数据,显示全部默认为0的数据
+            planDatas.value = [
+                {name: '总计划', value: initPlanData},
+                {name: '已完成', value: initPlanData},
+                {name: '未完成', value: initPlanData},
+            ]
+        }
+    } else {
+        //接口没有返回数据(报错或异常时),显示全部默认为0的数据
+        planDatas.value = [
+            {name: '总计划', value: initPlanData},
+            {name: '已完成', value: initPlanData},
+            {name: '未完成', value: initPlanData},
+        ]
+    }
+}
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>