Browse Source

预算和核算新增分包合同信息;

修改员工工资下载模版错误
余思翰 3 months ago
parent
commit
90986f691d

+ 56
- 21
oa-ui/src/views/flowable/form/budget/adjust/budgetAdjust.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2025-05-07 11:01:39
3
  * @Date: 2025-05-07 11:01:39
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-05-21 09:17:51
5
+ * @LastEditTime: 2025-05-21 14:10:34
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main" v-loading="loading">
8
   <div class="main" v-loading="loading">
158
       <el-descriptions-item label="现场开支" :span="3">
158
       <el-descriptions-item label="现场开支" :span="3">
159
         <site-cost :siteList.sync="siteList" :taskName="taskName" @update:siteList="handleSiteChange"></site-cost>
159
         <site-cost :siteList.sync="siteList" :taskName="taskName" @update:siteList="handleSiteChange"></site-cost>
160
       </el-descriptions-item>
160
       </el-descriptions-item>
161
+      <el-descriptions-item label="合同总价" :span="3" v-hasRole="['leader', 'finance', 'nfinance', 'admin']">
162
+        <table border="1" style="width:100%;" v-if="contractList.length > 0">
163
+          <tr style="background-color:#f8f8f9">
164
+            <td>序号</td>
165
+            <td>合同名称</td>
166
+            <td>合同总价</td>
167
+          </tr>
168
+          <tr v-for="contract, index in contractList" :key="contract.contractId">
169
+            <td>{{ index + 1 }}</td>
170
+            <td>{{ contract.contractName }}</td>
171
+            <td>{{ contract.amount }}</td>
172
+          </tr>
173
+        </table>
174
+        <div v-else>
175
+          <div class="alert alert-warning">
176
+            暂无合同信息
177
+          </div>
178
+        </div>
179
+      </el-descriptions-item>
180
+      <el-descriptions-item label="分包合同总价" :span="3" v-hasRole="['leader', 'finance', 'nfinance', 'admin']">
181
+        <table border="1" style="width:100%;" v-if="subContractList.length > 0">
182
+          <tr style="background-color:#f8f8f9">
183
+            <td>序号</td>
184
+            <td>分包合同名称</td>
185
+            <td>分包合同总价</td>
186
+          </tr>
187
+          <tr v-for="subContract, index in subContractList" :key="subContract.subContractId">
188
+            <td>{{ index + 1 }}</td>
189
+            <td>{{ subContract.subContractName }}</td>
190
+            <td>{{ subContract.subAmount }}</td>
191
+          </tr>
192
+        </table>
193
+        <div v-else>
194
+          <div class="alert alert-warning">
195
+            暂无分包合同信息
196
+          </div>
197
+        </div>
198
+      </el-descriptions-item>
161
       <el-descriptions-item label="经营相关" :span="3">
199
       <el-descriptions-item label="经营相关" :span="3">
162
         <business-cost :budgetForm.sync="budgetForm" :taskName="taskName"
200
         <business-cost :budgetForm.sync="budgetForm" :taskName="taskName"
163
           @update:budgetForm="handleBusinessChange"></business-cost>
201
           @update:budgetForm="handleBusinessChange"></business-cost>
223
           </tr>
261
           </tr>
224
         </table>
262
         </table>
225
       </el-descriptions-item>
263
       </el-descriptions-item>
226
-      <el-descriptions-item label="合同总价" :span="3" v-hasRole="['leader', 'finance', 'nfinance', 'admin']">
227
-        <table border="1" style="width:100%;" v-if="contractList.length > 0">
228
-          <tr style="background-color:#f8f8f9">
229
-            <td>序号</td>
230
-            <td>合同名称</td>
231
-            <td>合同总价</td>
232
-          </tr>
233
-          <tr v-for="contract, index in contractList" :key="contract.contractId">
234
-            <td>{{ index + 1 }}</td>
235
-            <td>{{ contract.contractName }}</td>
236
-            <td>{{ contract.amount }}</td>
237
-          </tr>
238
-        </table>
239
-        <div v-else>
240
-          <div class="alert alert-warning">
241
-            暂无合同信息
242
-          </div>
243
-        </div>
244
-      </el-descriptions-item>
245
       <el-descriptions-item label="核算说明" :span="3">
264
       <el-descriptions-item label="核算说明" :span="3">
246
         <div v-if="taskName == '核算编制' && !checkForm.checkComment" class="alert alert-warning"
265
         <div v-if="taskName == '核算编制' && !checkForm.checkComment" class="alert alert-warning"
247
           style="padding: 10px; border: 1px solid #f0ad4e; background-color: #fcf8e3; color: #8a6d3b;">
266
           style="padding: 10px; border: 1px solid #f0ad4e; background-color: #fcf8e3; color: #8a6d3b;">
349
 import { complete, getNextFlowNode } from "@/api/flowable/todo";
368
 import { complete, getNextFlowNode } from "@/api/flowable/todo";
350
 import { getUsersManageLeader, getUserByPost, getUsersViceDeptLeaderByDept } from "@/api/system/post";
369
 import { getUsersManageLeader, getUserByPost, getUsersViceDeptLeaderByDept } from "@/api/system/post";
351
 import { listProjectContract } from "@/api/oa/contract/projectContract";
370
 import { listProjectContract } from "@/api/oa/contract/projectContract";
371
+import { listProjectSubcontract } from "@/api/oa/contract/projectSubcontract";
352
 import { getContract } from "@/api/oa/contract/contract";
372
 import { getContract } from "@/api/oa/contract/contract";
373
+import { getSubContract } from "@/api/oa/contract/subContract";
353
 import InnerStaffCost from './components/InnerStaffCost.vue';
374
 import InnerStaffCost from './components/InnerStaffCost.vue';
354
 import OuterStaffCost from './components/OuterStaffCost.vue';
375
 import OuterStaffCost from './components/OuterStaffCost.vue';
355
 import CarCost from './components/CarCost.vue';
376
 import CarCost from './components/CarCost.vue';
394
           this.initBudgetForm();
415
           this.initBudgetForm();
395
           this.initCheckForm();
416
           this.initCheckForm();
396
           this.getContractInfo();
417
           this.getContractInfo();
418
+          this.getSubContractInfo();
397
         });
419
         });
398
       } else {
420
       } else {
399
         this.initBudgetForm();
421
         this.initBudgetForm();
400
         this.initCheckForm();
422
         this.initCheckForm();
401
         this.getContractInfo();
423
         this.getContractInfo();
424
+        this.getSubContractInfo();
402
       }
425
       }
403
 
426
 
404
     }
427
     }
434
         participateList: []
457
         participateList: []
435
       },
458
       },
436
       contractList: [],
459
       contractList: [],
437
-      contract: {}
460
+      subContractList: [],
438
     }
461
     }
439
   },
462
   },
440
   async created() {
463
   async created() {
445
     this.initBudgetForm();
468
     this.initBudgetForm();
446
     this.initCheckForm();
469
     this.initCheckForm();
447
     this.getContractInfo();
470
     this.getContractInfo();
471
+    this.getSubContractInfo();
448
   },
472
   },
449
   methods: {
473
   methods: {
450
     initBudgetForm() {
474
     initBudgetForm() {
642
         }
666
         }
643
       })
667
       })
644
     },
668
     },
669
+    getSubContractInfo() {
670
+      listProjectSubcontract({ projectId: this.row.projectId }).then(res => {
671
+        let subContractIds = res.rows;
672
+        this.subContractList = [];
673
+        for (let subContract of subContractIds) {
674
+          getSubContract(subContract.subContractId).then(response => {
675
+            this.subContractList.push(response.data);
676
+          })
677
+        }
678
+      })
679
+    },
645
     async initActualInfo(project) {
680
     async initActualInfo(project) {
646
       let deviceIds = project.devices.split(',');
681
       let deviceIds = project.devices.split(',');
647
       let carIds = project.cars.split(',');
682
       let carIds = project.cars.split(',');

+ 37
- 2
oa-ui/src/views/flowable/form/budget/adjust/newBudgetInfo.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2025-05-07 11:01:39
3
  * @Date: 2025-05-07 11:01:39
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-05-21 09:18:59
5
+ * @LastEditTime: 2025-05-21 14:16:47
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main" v-loading="loading">
8
   <div class="main" v-loading="loading">
411
           </div>
411
           </div>
412
         </div>
412
         </div>
413
       </el-descriptions-item>
413
       </el-descriptions-item>
414
+      <el-descriptions-item label="分包合同总价" :span="3" v-hasRole="['leader', 'finance', 'nfinance', 'admin']">
415
+        <table border="1" style="width:100%;" v-if="subContractList.length > 0">
416
+          <tr style="background-color:#f8f8f9">
417
+            <td>序号</td>
418
+            <td>分包合同名称</td>
419
+            <td>分包合同总价</td>
420
+          </tr>
421
+          <tr v-for="subContract, index in subContractList" :key="subContract.subContractId">
422
+            <td>{{ index + 1 }}</td>
423
+            <td>{{ subContract.subContractName }}</td>
424
+            <td>{{ subContract.subAmount }}</td>
425
+          </tr>
426
+        </table>
427
+        <div v-else>
428
+          <div class="alert alert-warning">
429
+            暂无分包合同信息
430
+          </div>
431
+        </div>
432
+      </el-descriptions-item>
414
       <el-descriptions-item label="分管领导审核意见" :span="3">
433
       <el-descriptions-item label="分管领导审核意见" :span="3">
415
         <div v-if="taskName == '分管审核' && !budgetForm.managerComment" class="alert alert-warning"
434
         <div v-if="taskName == '分管审核' && !budgetForm.managerComment" class="alert alert-warning"
416
           style="padding: 10px; border: 1px solid #f0ad4e; background-color: #fcf8e3; color: #8a6d3b;">
435
           style="padding: 10px; border: 1px solid #f0ad4e; background-color: #fcf8e3; color: #8a6d3b;">
466
 import { getUsersManageLeader, getUserByPost } from "@/api/system/post";
485
 import { getUsersManageLeader, getUserByPost } from "@/api/system/post";
467
 import { complete, getNextFlowNode } from "@/api/flowable/todo";
486
 import { complete, getNextFlowNode } from "@/api/flowable/todo";
468
 import { listProjectContract } from "@/api/oa/contract/projectContract";
487
 import { listProjectContract } from "@/api/oa/contract/projectContract";
488
+import { listProjectSubcontract } from "@/api/oa/contract/projectSubcontract";
469
 import { getContract } from "@/api/oa/contract/contract";
489
 import { getContract } from "@/api/oa/contract/contract";
490
+import { getSubContract } from "@/api/oa/contract/subContract";
470
 import InnerStaffCost from './components/InnerStaffCost.vue';
491
 import InnerStaffCost from './components/InnerStaffCost.vue';
471
 import OuterStaffCost from './components/OuterStaffCost.vue';
492
 import OuterStaffCost from './components/OuterStaffCost.vue';
472
 import CarCost from './components/CarCost.vue';
493
 import CarCost from './components/CarCost.vue';
497
       this.initBudgetForm();
518
       this.initBudgetForm();
498
       this.getProjectWorkList();
519
       this.getProjectWorkList();
499
       this.getContractInfo();
520
       this.getContractInfo();
521
+      this.getSubContractInfo();
500
     }
522
     }
501
   },
523
   },
502
   data() {
524
   data() {
515
       returnOpen: false,
537
       returnOpen: false,
516
       contractList: [],
538
       contractList: [],
517
       showAlter: true,
539
       showAlter: true,
540
+      subContractList: [],
518
     }
541
     }
519
   },
542
   },
520
   created() {
543
   created() {
521
     this.initBudgetForm();
544
     this.initBudgetForm();
522
     this.getProjectWorkList();
545
     this.getProjectWorkList();
523
     this.getContractInfo();
546
     this.getContractInfo();
547
+    this.getSubContractInfo();
524
   },
548
   },
525
   methods: {
549
   methods: {
526
     initBudgetForm() {
550
     initBudgetForm() {
641
         }
665
         }
642
       })
666
       })
643
     },
667
     },
668
+    getSubContractInfo() {
669
+      listProjectSubcontract({ projectId: this.taskForm.formId }).then(res => {
670
+        let subContractIds = res.rows;
671
+        this.subContractList = [];
672
+        for (let subContract of subContractIds) {
673
+          getSubContract(subContract.subContractId).then(response => {
674
+            this.subContractList.push(response.data);
675
+          })
676
+        }
677
+      })
678
+    },
644
     safeNumber(value) {
679
     safeNumber(value) {
645
       const num = Number(value);
680
       const num = Number(value);
646
       return isNaN(num) ? 0 : num;
681
       return isNaN(num) ? 0 : num;
846
 }
881
 }
847
 
882
 
848
 .total-budget {
883
 .total-budget {
849
-  font-size: 1.5em;
884
+  font-size: 16px;
850
   font-weight: bold;
885
   font-weight: bold;
851
   color: #4CAF50;
886
   color: #4CAF50;
852
   text-align: center;
887
   text-align: center;

+ 1
- 4
oa-ui/src/views/oa/wage/index.vue View File

420
     },
420
     },
421
     /* 下载模板 */
421
     /* 下载模板 */
422
     importTemplate() {
422
     importTemplate() {
423
-      // const path = "http://127.0.0.1:8080/profile/template/userWage.xlsx"
424
-      const path = `${baseUrl}${'/profile/upload/template/userWage.xlsx'}`
423
+      const path = '/profile/upload/template/userWage.xlsx'
425
       downloadTemplate(path).then(res => {
424
       downloadTemplate(path).then(res => {
426
         const blob = new Blob([res])
425
         const blob = new Blob([res])
427
         saveAs(blob, '社保公积金模版.xlsx');
426
         saveAs(blob, '社保公积金模版.xlsx');
428
       });
427
       });
429
-      // this.download("file/achievement/importTemplate", {
430
-      // }, `成果表模板.xlsx`);
431
     },
428
     },
432
   }
429
   }
433
 };
430
 };

Loading…
Cancel
Save