ZaiZai преди 2 години
родител
ревизия
9d16bc96db
променени са 2 файла, в които са добавени 104 реда и са изтрити 138 реда
  1. 14 54
      src/api/modules/static/project.js
  2. 90 84
      src/views/static/project.vue

+ 14 - 54
src/api/modules/static/project.js

@@ -1,74 +1,34 @@
 import {httpApi} from "../../request/httpApi";
 
 export default {
-    //财务报销分页查询
-    async page(form, msg = false) {
+    //项目统计总金额成本
+    async allProjectStats(form) {
         return httpApi({
-            url: '/api/blade-control/expense/financial/page',
-            method: 'post',
-            data: form
-        }, msg);
-    },
-    //财务报销草稿箱列表
-    async draft(form = {}, msg = false) {
-        return httpApi({
-            url: '/api/blade-control/expense/financial/draft/list',
-            method: 'get',
-            params: form
-        }, msg);
-    },
-    //财务报销信息详情
-    async detail(form, msg = false) {
-        return httpApi({
-            url: '/api/blade-control/expense/financial/detail',
+            url: '/api/blade-control/projectInfo/allProjectStats',
             method: 'get',
             params: form
-        }, msg);
+        }, false);
     },
-    //财务报销草稿箱编辑详情
-    async draftDetail(form, msg = false) {
+    //项目统计列表统计
+    async ProjectListStats(form = {}) {
         return httpApi({
-            url: '/api/blade-control/expense/financial/draft/detail',
+            url: '/api/blade-control/projectInfo/ProjectListStats',
             method: 'get',
             params: form
-        }, msg);
-    },
-    //财务报销信息提交
-    async submit(form, msg = false) {
-        return httpApi({
-            url: '/api/blade-control/expense/financial/submit',
-            method: 'post',
-            data: form
-        }, msg);
-    },
-    //财务报销记录物理删除
-    async remove(form, msg = false) {
-        return httpApi({
-            url: '/api/blade-control/expense/financial/remove',
-            method: 'post',
-            params: form
-        }, msg);
-    },
-    //财务报销记录上报撤销
-    async cancel(form, msg = false) {
-        return httpApi({
-            url: '/api/blade-control/expense/financial/cancel',
-            method: 'post',
-            params: form
-        }, msg);
+        }, false);
     },
-    //获取我的项目预算列表
-    async budget(form) {
+    //项目统计费用分类
+    async ProjectCostTypeStats(form) {
         return httpApi({
-            url: '/api/blade-control/ex/ma/project/budget/list',
+            url: '/api/blade-control/projectInfo/ProjectCostTypeStats',
             method: 'get',
             params: form
         }, false);
     },
-    //获取我的借款列表
-    async loanList(form = {}) {
+    //项目统计-环节费用
+    async projectLinkCost(form) {
         return httpApi({
-            url: '/api/blade-control/ex/ma/loan/list',
+            url: '/api/blade-control/projectProcess/projectLinkCost',
             method: 'get',
             params: form
         }, false);

+ 90 - 84
src/views/static/project.vue

@@ -6,7 +6,7 @@
                     <div class="hc-card-item-sub">
                         <div class="item-sub-title">截至目前总合同额</div>
                         <div class="item-sub-num">
-                            <span class="num">120033</span>
+                            <span class="num">{{statsAll.allContractMoney}}</span>
                             <span class="text">万</span>
                         </div>
                     </div>
@@ -17,7 +17,7 @@
                     <div class="hc-card-item-sub">
                         <div class="item-sub-title">截至目前项目总测算成本</div>
                         <div class="item-sub-num">
-                            <span class="num">560333</span>
+                            <span class="num">{{statsAll.allProjectCost}}</span>
                             <span class="text">元</span>
                         </div>
                     </div>
@@ -28,7 +28,7 @@
                     <div class="hc-card-item-sub">
                         <div class="item-sub-title">截至目前总实际支出成本</div>
                         <div class="item-sub-num">
-                            <span class="num">903333</span>
+                            <span class="num">{{statsAll.allPracticalDisburse}}</span>
                             <span class="text">元</span>
                         </div>
                     </div>
@@ -39,7 +39,7 @@
                     <div class="hc-card-item-sub">
                         <div class="item-sub-title">截至目前总回款</div>
                         <div class="item-sub-num">
-                            <span class="num">125333</span>
+                            <span class="num">{{statsAll.allReturned}}</span>
                             <span class="text">元</span>
                         </div>
                     </div>
@@ -76,8 +76,8 @@
                 <div class="hc-expense-total-title" v-else>列表统计</div>
             </template>
             <HcTable ui="no-border" border :isIndex="false" :column="tableColumn" :datas="tableData" v-if="isShowtable === 0">
-                <template #name="{row}">
-                    <span class="text-blue text-hover" @click='rowNameClick(row)'>{{ row.name }}</span>
+                <template #projectName="{row}">
+                    <span class="text-blue text-hover" @click='rowNameClick(row)'>{{ row.projectName }}</span>
                 </template>
             </HcTable>
             <!--费用分类-->
@@ -89,8 +89,8 @@
             </HcTable>
             <!--细分环节费用-->
             <HcTable ui="no-border" border :isIndex="false" :column="tableColumn2" :datas="tableData2" v-if="isShowtable === 2">
-                <template #type="{row}">
-                    <HcIcon name="checkbox-circle" class="text-green text-xl" v-if="row.type === 1"/>
+                <template #isParticipate="{row}">
+                    <HcIcon name="checkbox-circle" class="text-green text-xl" v-if="row.isParticipate === 1"/>
                     <HcIcon name="error-warning" class="text-red text-xl" v-else/>
                 </template>
                 <template #detail="{row}">
@@ -109,12 +109,31 @@
 import {onActivated, ref} from "vue";
 import mainApi from "~api/static/project";
 import { ArrowRight } from '@element-plus/icons-vue'
+import {getArrValue, getObjValue} from "js-fast-way";
 
 //缓存被激活
 onActivated(() => {
-
+    getDataApi()
 })
 
+
+const getDataApi = () => {
+    allProjectStats()
+    getTableData()
+}
+
+//项目统计总金额成本
+const statsAll = ref({})
+const allProjectStats = async () => {
+    const {error, code, data} = await mainApi.allProjectStats()
+    //判断状态
+    if (!error && code === 200) {
+        statsAll.value = getObjValue(data)
+    } else {
+        statsAll.value = {}
+    }
+}
+
 //面包屑导航
 const breadcrumbs = ref({title: '列表统计', name: '', section: '', post: ''})
 
@@ -150,63 +169,51 @@ const breadcrumbSection = () => {
 //基础表格
 const isShowtable = ref(0)
 const tableColumn = [
-    {key: 'name', name: '名称', minWidth: 200},
-    {key: 'contract', name: '合同额', align: 'center'},
-    {key: 'cost', name: '测算成本', align: 'center'},
-    {key: 'disbursed', name: '实际已支出成本', align: 'center'},
-    {key: 'receive', name: '实际已回款', align: 'center'},
-    {key: 'uncollected', name: '未回款', align: 'center'},
+    {key: 'projectName', name: '名称', minWidth: 200},
+    {key: 'contractMoney', name: '合同额', align: 'center'},
+    {key: 'allProjectCost', name: '测算成本', align: 'center'},
+    {key: 'allPracticalDisburse', name: '实际已支出成本', align: 'center'},
+    {key: 'allReturned', name: '实际已回款', align: 'center'},
+    {key: 'unreturnedMoney', name: '未回款', align: 'center'},
 ]
-const tableData = ref([
-    {
-        name: '延长高速公路大蒲柴河至烟筒山段PPP项目',
-        contract: '222',
-        cost: 'red',
-        disbursed: '1111',
-        receive: '1111',
-        uncollected: '2222',
-        total: 10000
-    },
-    {
-        name: '延长高速公路大蒲柴河至烟筒山段PPP项目',
-        contract: '222',
-        cost: 'red',
-        disbursed: '1111',
-        receive: '1111',
-        uncollected: '2222',
-        total: 10000
-    },
-    {
-        name: '延长高速公路大蒲柴河至烟筒山段PPP项目',
-        contract: '222',
-        cost: 'red',
-        disbursed: '1111',
-        receive: '1111',
-        uncollected: '2222',
-        total: 10000
-    },
-])
-const rowNameClick = (row) => {
-    breadcrumbs.value.name = row.name
+const tableData = ref([])
+const getTableData = async () => {
+    const {error, code, data} = await mainApi.ProjectListStats()
+    //判断状态
+    if (!error && code === 200) {
+        tableData.value = getArrValue(data)
+    } else {
+        tableData.value = []
+    }
+}
+
+const rowNameClick = ({projectId, projectName}) => {
+    breadcrumbs.value.name = projectName
     isShowtable.value = 1
+    getTableData1(projectId)
 }
 
 //费用分类
 const tableColumn1 = [
-    {key: 'name', name: '费用分类', align: 'center'},
-    {key: 'contract', name: '测算费用(元)', align: 'center'},
-    {key: 'cost', name: '测算费用(元)', align: 'center'},
+    {key: 'costTypeValue', name: '费用分类', align: 'center'},
+    {key: 'allProjectCost', name: '测算费用(元)', align: 'center'},
+    {key: 'practicalCost', name: '实际费用(元)', align: 'center'},
     {key: 'detail', name: '费用明细', align: 'center'},
     {key: 'total', name: '总计', align: 'center'},
 ]
-const tableData1 = ref([
-    {name: '市场部', contract: 2222, cost: 4444, total: 5555},
-    {name: '研发部', contract: 2222, cost: 4444, total: 5555},
-    {name: '实施部', contract: 2222, cost: 4444, total: 5555},
-    {name: '维护部', contract: 2222, cost: 4444, total: 5555},
-    {name: '管理支出', contract: 2222, cost: 4444, total: 5555},
-    {name: '外包劳务', contract: 2222, cost: 4444, total: 5555},
-])
+const tableData1 = ref([])
+const getTableData1 = async (projectId) => {
+    const {error, code, data} = await mainApi.ProjectCostTypeStats({
+        id: projectId
+    })
+    //判断状态
+    if (!error && code === 200) {
+        tableData1.value = getArrValue(data)
+    } else {
+        tableData1.value = []
+    }
+}
+
 
 //合并单元格
 const tableSpanMethod1 = ({columnIndex}) => {
@@ -215,49 +222,48 @@ const tableSpanMethod1 = ({columnIndex}) => {
     }
 }
 
-const rowNameClick1 = (row) => {
-    breadcrumbs.value.section = row.name
+const rowNameClick1 = ({costTypeValue, costType, projectId}) => {
+    breadcrumbs.value.section = costTypeValue
     isShowtable.value = 2
+    getTableData2(costType, projectId)
 }
 
 //细分环节费用
 const tableColumn2 = [
     {key: 'name', name: '项目环节'},
-    {key: 'type', name: '参与', align: 'center'},
-    {key: 'cost', name: '成本支出(元)', align: 'center'},
-    {key: 'timecost', name: '时间成本(工作日)', align: 'center'},
-    {key: 'peoplecost', name: '人员投入(人)', align: 'center'},
+    {key: 'isParticipate', name: '参与', align: 'center'},
+    {key: 'costDisburse', name: '成本支出(元)', align: 'center'},
+    {key: 'timeCost', name: '时间成本(工作日)', align: 'center'},
+    {key: 'staffTotal', name: '人员投入(人)', align: 'center'},
     {key: 'detail', name: '明细', align: 'center'},
 ]
-const tableData2 = ref([
-    {name: '商机-演示沟通', type: 1, cost: 4444, timecost: 12, peoplecost: 3},
-    {name: '商机-演示沟通', type: 1, cost: 4444, timecost: 12, peoplecost: 3},
-    {name: '商机-演示沟通', type: 1, cost: 4444, timecost: 12, peoplecost: 3},
-    {name: '商机-演示沟通', type: 2, cost: 4444, timecost: 12, peoplecost: 3},
-    {name: '商机-演示沟通', type: 2, cost: 4444, timecost: 12, peoplecost: 3},
-    {name: '商机-演示沟通', type: 2, cost: 4444, timecost: 12, peoplecost: 3},
-])
-const rowNameClick2 = (row) => {
-    breadcrumbs.value.post = row.name
+const tableData2 = ref([])
+const getTableData2 = async (typeId,projectId) => {
+    const {error, code, data} = await mainApi.projectLinkCost({
+        costType: typeId,
+        projectId: projectId
+    })
+    //判断状态
+    if (!error && code === 200) {
+        tableData2.value = getArrValue(data)
+    } else {
+        tableData2.value = []
+    }
+}
+
+const rowNameClick2 = ({name, costDetails}) => {
+    breadcrumbs.value.post = name
     isShowtable.value = 3
+    tableData3.value = costDetails
 }
 
 //细分环节费用
 const tableColumn3 = [
-    {key: 'name', name: '费用分类'},
+    {key: 'costTypeValue', name: '费用分类'},
     {key: 'price', name: '费用(元)', align: 'center'},
     {key: 'total', name: '总计', align: 'center'},
 ]
-const tableData3 = ref([
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-    {name: '人工成本', price: 4444, total: 124444},
-])
+const tableData3 = ref([])
 //合并单元格
 const tableSpanMethod2 = ({columnIndex}) => {
     if (columnIndex === tableColumn3.length -1 && tableData1.value.length > 0) {