duy 2 роки тому
батько
коміт
19a85f0957

+ 30 - 0
src/api/modules/project/cost.js

@@ -0,0 +1,30 @@
+import {httpApi} from "../../request/httpApi";
+
+export default {
+    //获取分页
+    async getprojectCostBudgetStats(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudgetStats/page',
+            method: 'get',
+            params: form
+        }, msg);
+    },
+    //获取详情
+    async getBudgetStatsById(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudgetStats/getBudgetStatsById',
+            method: 'get',
+            params: form
+        }, msg);
+    },
+    //查询预览测算
+    async getBudgetList(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-control/projectCostBudgetStats/budgetList',
+            method: 'get',
+            params: form
+        }, msg);
+    },
+ 
+}
+

+ 37 - 17
src/views/project/cost/data.vue

@@ -5,8 +5,8 @@
                 <HcIcon name="arrow-go-back"/>
                 <span>返回</span>
             </div>
-            <span class="mr-2">这里是显示项目名称:总成本为</span>
-            <span class="text-red text-xl">812983</span>
+            <span class="mr-2">{{projectName}} 总成本为</span>
+            <span class="text-red text-xl">{{ previewTotalCost }}</span>
             <span class="ml-2">元</span>
         </template>
         <template #extra>
@@ -26,29 +26,30 @@
                       :header-cell-style="tableHeaderCellStyle"
                       :cell-style="tableCellStyle"
                       style="width: 100%; height: 100%"
+                      :loading="tableLoading"
             >
-                <el-table-column prop="key1" label="费用分类" align="center"/>
-                <el-table-column prop="key2" label="项目环节" align="center"/>
-                <el-table-column prop="key3" label="预算类型" align="center"/>
-                <el-table-column prop="key4" label="任务明细" align="center"/>
-                <el-table-column prop="key5" label="预计工作量(小数/整数)" align="center"/>
-                <el-table-column prop="key6" label="投入岗位类型(日单价)" align="center">
+                <el-table-column prop="costType" label="费用分类" align="center"/>
+                <el-table-column prop="projectProcess" label="项目环节" align="center"/>
+                <el-table-column prop="budgetType" label="预算类型" align="center"/>
+                <el-table-column prop="planTaskDesc" label="任务明细" align="center"/>
+                <el-table-column prop="budgetDays" label="预计工作量(小数/整数)" align="center"/>
+                <el-table-column prop="postType" label="投入岗位类型(日单价)" align="center">
                     <template #default="{ row }">
-                        <div style="background: #00CCFF">{{ row.key6 }}</div>
+                        <div style="background: #00CCFF">{{ row.postType }}</div>
                     </template>
                 </el-table-column>
                 <el-table-column prop="key7" label="投入人员数量" align="center"/>
-                <el-table-column prop="key8" label="预计人工成本(元)" align="center">
+                <el-table-column prop="budgetStaffCost" label="预计人工成本(元)" align="center">
                     <template #default="{ row }">
                         <div style="background: #fe6e22">{{ row.key8 }}</div>
                     </template>
                 </el-table-column>
-                <el-table-column prop="key9" label="预计差旅费(元)" align="center"/>
-                <el-table-column prop="key10" label="外包单价" align="center"/>
-                <el-table-column prop="key11" label="外包数量" align="center"/>
-                <el-table-column prop="key12" label="外包金额" align="center"/>
-                <el-table-column prop="key13" label="其他预算金额" align="center"/>
-                <el-table-column prop="key14" label="总预算金额" align="center">
+                <el-table-column prop="budgetTravelExpense" label="预计差旅费(元)" align="center"/>
+                <el-table-column prop="outsourceUnitPrice" label="外包单价" align="center"/>
+                <el-table-column prop="outsourcePeopleCount" label="外包数量" align="center"/>
+                <el-table-column prop="outsourceCountMoney" label="外包金额" align="center"/>
+                <el-table-column prop="otherBudgetMoney" label="其他预算金额" align="center"/>
+                <el-table-column prop="budgetCountMoney" label="总预算金额" align="center">
                     <template #default="{ row }">
                         <div style="background: #fe6e22">{{ row.key14 }}</div>
                     </template>
@@ -62,6 +63,8 @@
 <script setup>
 import {onActivated, ref} from "vue";
 import {useRouter, useRoute} from 'vue-router'
+import costApi from '~api/project/cost.js';
+import {getArrValue,getObjValue,formValidate} from "js-fast-way"
 //初始变量
 const router = useRouter()
 const useRoutes = useRoute()
@@ -71,6 +74,7 @@ const dataId = ref(useRoutes?.query?.id ?? '')
 onActivated(() => {
     dataId.value = useRoutes?.query?.id ?? ''
     console.log(useRoutes.query)
+    getTableData()
 })
 
 const projectType = ref([
@@ -84,7 +88,23 @@ const tableData = ref([
     {id: '2', key1: '选项2', key2: 'xxxx'},
     {id: '3', key1: '选项3', key2: 'xxxx'},
 ])
-
+const tableLoading=ref(false)
+const projectName=ref('')
+const previewTotalCost=ref('')
+const getTableData = async() => {
+    tableLoading.value = true
+    const {error, code, data} = await costApi.getBudgetList({projectId:dataId.value})
+    tableLoading.value = false
+    if (!error && code === 200) {
+        tableData.value = getArrValue(data['previewList'])
+        projectName.value=data?.projectName
+        previewTotalCost.value=data?.previewTotalCost
+   
+    } else {
+        tableData.value = []
+    
+    }
+}
 //自定义表头样式
 const tableHeaderCellStyle = ({column}) => {
     if (column.property === 'key6' || column.property === 'key14') {

+ 27 - 9
src/views/project/cost/form.vue

@@ -4,31 +4,31 @@
             <HcCard scrollbar actionUi="text-center">
                 <div class="hc-card-form-center">
                     <el-form ref="formBaseRef" :model="formBaseModel" :rules="formBaseRules" label-width="auto" size="large">
-                        <el-form-item label="项目名称:" prop="key">
-                            <el-select v-model="formBaseModel.key" block placeholder="项目名称">
+                        <el-form-item label="项目名称:" prop="keprojectNamey">
+                            <el-select v-model="formBaseModel.projectName" block placeholder="项目名称">
                                 <el-option v-for="item in projectName" :label="item.name" :value="item.key"/>
                             </el-select>
                         </el-form-item>
                         <el-form-item label="成本测算总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.previewTotalCost" disabled/>
                         </el-form-item>
                         <el-form-item label="研发部成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.devCostTotal" disabled/>
                         </el-form-item>
                         <el-form-item label="业务部成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.businessCostTotal" disabled/>
                         </el-form-item>
                         <el-form-item label="市场部成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.marketCostTotal" disabled/>
                         </el-form-item>
                         <el-form-item label="维护部成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.maintainCostTotal" disabled/>
                         </el-form-item>
                         <el-form-item label="外包劳务成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.outsourceCostTotal" disabled/>
                         </el-form-item>
                         <el-form-item label="管理费成本总金额:">
-                            <el-input v-model="formBaseModel.key1" disabled/>
+                            <el-input v-model="formBaseModel.manageCostTotal" disabled/>
                         </el-form-item>
                     </el-form>
                 </div>
@@ -139,6 +139,8 @@
 <script setup>
 import {onActivated, ref} from "vue";
 import {useRouter, useRoute} from 'vue-router'
+import costApi from '~api/project/cost.js';
+import {getArrValue,getObjValue,formValidate} from "js-fast-way"
 //初始变量
 const router = useRouter()
 const useRoutes = useRoute()
@@ -148,8 +150,24 @@ const dataId = ref(useRoutes?.query?.id ?? '')
 onActivated(() => {
     dataId.value = useRoutes?.query?.id ?? ''
     console.log(useRoutes.query)
+    if(dataId.value.length>0){
+        getBudgetStatsById()
+    }else{
+        formBaseModel.value={}
+    }
+   
+    
 })
+//获取详情
+const getBudgetStatsById=async()=>{
+    const {error, code, data} = await costApi.getBudgetStatsById({id: dataId.value})
+    if (!error && code === 200) {
+        formBaseModel.value=getObjValue(data)
 
+    } else {
+        formBaseModel.value={}
+    }
+}
 //选项卡
 const tabsKey = ref('table')
 const tabsData = ref([

+ 38 - 38
src/views/project/cost/index.vue

@@ -1,22 +1,7 @@
 <template>
     <HcCard>
         <template #header>
-            <div class="w-36">
-                <el-select v-model="searchForm.projectType" block clearable placeholder="项目类型" size="large">
-                    <el-option v-for="item in projectType" :label="item.name" :value="item.key"/>
-                </el-select>
-            </div>
-            <div class="w-40 ml-2">
-                <el-select v-model="searchForm.projectType" block clearable placeholder="服务类型" size="large">
-                    <el-option v-for="item in projectType" :label="item.name" :value="item.key"/>
-                </el-select>
-            </div>
-            <div class="w-36 ml-2">
-                <el-select v-model="searchForm.date" block clearable placeholder="选择时间" size="large">
-                    <el-option v-for="item in annuals" :label="item.name" :value="item.key"/>
-                </el-select>
-            </div>
-            <div class="w-48 ml-2">
+            <div class=" ml-2">
                 <el-input v-model="searchForm.queryValue" clearable placeholder="请输入项目名称进行查询" size="large"/>
             </div>
             <div class="ml-4">
@@ -40,8 +25,8 @@
         </template>
 
         <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading">
-            <template #key="{row}">
-                <span class="text-blue" @click="rowNameTap(row)">{{row.key}}</span>
+            <template #projectName="{row}">
+                <span class="text-blue" @click="rowNameTap(row)">{{row.projectName}}</span>
             </template>
             <template #action="{row,index}">
                 <el-button plain size="small" type="success" @click="approvalRowClick(row)">提交审批</el-button>
@@ -57,18 +42,24 @@
 </template>
 
 <script setup>
-import {ref} from "vue";
+import {ref,onMounted} from "vue";
 import {useRouter} from 'vue-router'
+import projectApi from '~api/project/project-list.js';
+import costApi from '~api/project/cost.js';
+import {getArrValue} from "js-fast-way"
 
 const router = useRouter()
-
+onMounted(()=>{
+    getTableData()
+  
+})
 //项目类型
-const projectType = ref([
-    {name: '二级路', key: '二级路'},
-    {name: '国道', key: '国道'},
-    {name: '水利水电', key: '水利水电'},
-    {name: '市政', key: '市政'},
-])
+const projectType = ref([])
+
+const serverType=ref([])
+
+
+
 
 //年度数据
 const annuals = ref([
@@ -104,15 +95,15 @@ const pageChange = ({current, size}) => {
 //获取数据
 const tableLoading = ref(false)
 const tableColumn = [
-    {key: 'key', name: '项目名称'},
-    {key: 'key1', name: '项目测算总金额', width: '120', align: 'center'},
-    {key: 'key2', name: '研发部成本总金额', width: '120', align: 'center'},
-    {key: 'key3', name: '实施部成本总金额', width: '120', align: 'center'},
-    {key: 'key4', name: '维护部成本总金额', width: '120', align: 'center'},
-    {key: 'key5', name: '市场部成本总金额', width: '120', align: 'center'},
-    {key: 'key6', name: '管理费成本总金额', width: '120', align: 'center'},
-    {key: 'key7', name: '外包劳务成本总金额', width: '120', align: 'center'},
-    {key: 'action', name: '操作', width: '220', align: 'center', fixed: 'right'},
+    {key: 'projectName', name: '项目名称'},
+    {key: 'previewTotalCost', name: '项目测算总金额', width: '120', align: 'center'},
+    {key: 'devCostTotal', name: '研发部成本总金额', width: '120', align: 'center'},
+    {key: 'businessCostTotal', name: '实施部成本总金额', width: '120', align: 'center'},
+    {key: 'maintainCostTotal', name: '维护部成本总金额', width: '120', align: 'center'},
+    {key: 'marketCostTotal', name: '市场部成本总金额', width: '120', align: 'center'},
+    {key: 'manageCostTotal', name: '管理费成本总金额', width: '120', align: 'center'},
+    {key: 'outsourceCostTotal', name: '外包劳务成本总金额', width: '120', align: 'center'},
+    {key: 'action', name: '操作', width: '250', align: 'center', fixed: 'right'},
 ]
 const tableData = ref([
     {id: 1, key: '焦作至唐河高速公路方城至唐河段', key1: '810232', key2: '203200', key3: '192000', key4: '120350', key5: '63540', key6: '320000', key7: '12000'},
@@ -120,8 +111,17 @@ const tableData = ref([
     {id: 3, key: '焦作至唐河高速公路方城至唐河段', key1: '810232', key2: '203200', key3: '192000', key4: '120350', key5: '63540', key6: '320000', key7: '12000'},
 ])
 
-const getTableData = () => {
-
+const getTableData = async() => {
+    tableLoading.value = true
+    const {error, code, data} = await costApi.getprojectCostBudgetStats(searchForm.value)
+    tableLoading.value = false
+    if (!error && code === 200) {
+        tableData.value = getArrValue(data)
+        searchForm.value.total = data['total'] || 0
+    } else {
+        tableData.value = []
+        searchForm.value.total = 0
+    }
 }
 
 //新增报销记录
@@ -141,7 +141,7 @@ const editRowClick = (row) => {
 const rowNameTap = (row) => {
     router.push({
         name: 'project-cost-data',
-        query: {id: row.id}
+        query: {id: row.projectId}
     })
 }