Преглед на файлове

修改预算表的显示表格

余思翰 преди 1 година
родител
ревизия
e948ba8340

+ 75
- 27
oa-ui/src/views/flowable/form/budget/addBudget.vue Целия файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-25 15:05:59
3
  * @Date: 2024-03-25 15:05:59
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-21 18:04:09
5
+ * @LastEditTime: 2024-05-22 18:48:24
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
106
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
106
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
107
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
107
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
108
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
108
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
109
-            <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
109
+            <el-breadcrumb-item>{{ projectForm.projectLeaderUser
110
+          ? projectForm.projectLeaderUser.nickName
111
+          : "" }}</el-breadcrumb-item>
110
           </el-breadcrumb>
112
           </el-breadcrumb>
111
           <el-form ref="form2" :model="peopleForm" style="padding: 20px 100px 0">
113
           <el-form ref="form2" :model="peopleForm" style="padding: 20px 100px 0">
112
             <!-- 选择人员 -->
114
             <!-- 选择人员 -->
180
                 <tr v-for="car in chooseCar" :key="car.carId">
182
                 <tr v-for="car in chooseCar" :key="car.carId">
181
                   <td>{{ car.licensePlate }}</td>
183
                   <td>{{ car.licensePlate }}</td>
182
                   <td>
184
                   <td>
183
-                    <el-input v-model="car.mileage" placeholder="请输入油耗" @change="calculateCarTotal(car)"></el-input>
185
+                    {{ car.mileage }}
184
                   </td>
186
                   </td>
185
                   <td>
187
                   <td>
186
                     <el-input v-model="car.distance" placeholder="请输入总里程" @change="calculateCarTotal(car)"></el-input>
188
                     <el-input v-model="car.distance" placeholder="请输入总里程" @change="calculateCarTotal(car)"></el-input>
249
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
251
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
250
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
252
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
251
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
253
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
252
-            <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
254
+            <el-breadcrumb-item>{{ projectForm.projectLeaderUser
255
+          ? projectForm.projectLeaderUser.nickName
256
+          : "" }}</el-breadcrumb-item>
253
           </el-breadcrumb>
257
           </el-breadcrumb>
254
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
258
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
255
             <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
259
             <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
256
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
260
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
257
           </el-breadcrumb>
261
           </el-breadcrumb>
258
           <el-form>
262
           <el-form>
259
-            <choose-money :workList="workList" :chooseUser="chooseUser" :budgetForm="budgetForm"
260
-              @getSettle="getSettle" @getWorkList="setPreSettlement"></choose-money>
261
-            <el-form-item label="其他预算:">
263
+            <choose-money :workList="workList" :chooseUser="chooseUser" :budgetForm="budgetForm" @getSettle="getSettle"
264
+              @getWorkList="setPreSettlement"></choose-money>
265
+            <el-form-item label="关联合同:" label-width="90px" v-if="contract.contractId">
262
               <table border="1">
266
               <table border="1">
267
+                <tr class="head">
268
+                  <td>合同项目</td>
269
+                  <td>合同编码</td>
270
+                  <td>合同编号</td>
271
+                  <td>合同金额</td>
272
+                </tr>
263
                 <tr>
273
                 <tr>
274
+                  <td>{{ contract.tender ? contract.tender.projectName : '' }}</td>
275
+                  <td>{{ contract.contractCode }}</td>
276
+                  <td>{{ contract.contractNumber }}</td>
277
+                  <td>{{ contract.amount }}</td>
278
+                </tr>
279
+              </table>
280
+            </el-form-item>
281
+            <el-form-item label="其他预算:" label-width="90px">
282
+              <table border="1">
283
+                <tr class="head">
264
                   <td>内容</td>
284
                   <td>内容</td>
265
                   <td>费用金额</td>
285
                   <td>费用金额</td>
266
                   <td>备注</td>
286
                   <td>备注</td>
268
                 <tr>
288
                 <tr>
269
                   <td>外协费用</td>
289
                   <td>外协费用</td>
270
                   <td>
290
                   <td>
271
-                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.outExpense" style="width: 400px"
272
-                      @change="getDirectExpense(budgetForm)"></el-input-number>
291
+                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.outExpense"
292
+                      style="width: 100%" @change="getDirectExpense(budgetForm)"></el-input-number>
273
                   </td>
293
                   </td>
274
                   <td>
294
                   <td>
275
-                    <el-input type="textarea" v-model="budgetForm.outRemark" style="width: 400px"></el-input>
295
+                    <el-input type="textarea" v-model="budgetForm.outRemark" style="width: 100%"></el-input>
276
                   </td>
296
                   </td>
277
                 </tr>
297
                 </tr>
278
                 <tr>
298
                 <tr>
279
                   <td>税费成本</td>
299
                   <td>税费成本</td>
280
                   <td>
300
                   <td>
281
-                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.taxExpense" style="width: 400px"
282
-                      @change="getDirectExpense(budgetForm)"></el-input-number>
301
+                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.taxExpense"
302
+                      style="width: 100%" @change="getDirectExpense(budgetForm)"></el-input-number>
283
                   </td>
303
                   </td>
284
                   <td>
304
                   <td>
285
-                    <el-input type="textarea" v-model="budgetForm.taxRemark" style="width: 400px"></el-input>
305
+                    <el-input type="textarea" v-model="budgetForm.taxRemark" style="width: 100%"></el-input>
286
                   </td>
306
                   </td>
287
                 </tr>
307
                 </tr>
288
                 <tr>
308
                 <tr>
289
                   <td>经营管理费用</td>
309
                   <td>经营管理费用</td>
290
                   <td>
310
                   <td>
291
-                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.businessExpense" style="width: 400px"
292
-                      @change="getDirectExpense(budgetForm)"></el-input-number>
311
+                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.businessExpense"
312
+                      style="width: 100%" @change="getDirectExpense(budgetForm)"></el-input-number>
293
                   </td>
313
                   </td>
294
                   <td>
314
                   <td>
295
-                    <el-input type="textarea" v-model="budgetForm.businessRemark" style="width: 400px"></el-input>
315
+                    <el-input type="textarea" v-model="budgetForm.businessRemark" style="width: 100%"></el-input>
296
                   </td>
316
                   </td>
297
                 </tr>
317
                 </tr>
298
                 <tr>
318
                 <tr>
299
                   <td>车船租赁</td>
319
                   <td>车船租赁</td>
300
                   <td>
320
                   <td>
301
-                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.rentExpense" style="width: 400px"
302
-                      @change="getDirectExpense(budgetForm)"></el-input-number>
321
+                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.rentExpense"
322
+                      style="width: 100%" @change="getDirectExpense(budgetForm)"></el-input-number>
303
                   </td>
323
                   </td>
304
                   <td>
324
                   <td>
305
-                    <el-input type="textarea" v-model="budgetForm.rentRemark" style="width: 400px"></el-input>
325
+                    <el-input type="textarea" v-model="budgetForm.rentRemark" style="width: 100%"></el-input>
306
                   </td>
326
                   </td>
307
                 </tr>
327
                 </tr>
308
                 <tr>
328
                 <tr>
309
                   <td>其他费用</td>
329
                   <td>其他费用</td>
310
                   <td>
330
                   <td>
311
-                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.otherExpense" style="width: 400px"
312
-                      @change="getDirectExpense(budgetForm)"></el-input-number>
331
+                    <el-input-number :controls="false" :precision="2" v-model="budgetForm.otherExpense"
332
+                      style="width: 100%" @change="getDirectExpense(budgetForm)"></el-input-number>
313
                   </td>
333
                   </td>
314
                   <td>
334
                   <td>
315
-                    <el-input type="textarea" v-model="budgetForm.otherRemark" style="width: 400px"></el-input>
335
+                    <el-input type="textarea" v-model="budgetForm.otherRemark" style="width: 100%"></el-input>
316
                   </td>
336
                   </td>
317
                 </tr>
337
                 </tr>
318
               </table>
338
               </table>
331
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
351
             <el-breadcrumb-item>选择项目</el-breadcrumb-item>
332
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
352
             <el-breadcrumb-item>{{ projectForm.projectNumber }}</el-breadcrumb-item>
333
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
353
             <el-breadcrumb-item>{{ projectForm.projectName }}</el-breadcrumb-item>
334
-            <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
354
+            <el-breadcrumb-item>{{ projectForm.projectLeaderUser
355
+          ? projectForm.projectLeaderUser.nickName
356
+          : "" }}</el-breadcrumb-item>
335
           </el-breadcrumb>
357
           </el-breadcrumb>
336
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
358
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
337
             <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
359
             <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
341
             <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
363
             <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
342
             <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
364
             <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
343
           </el-breadcrumb>
365
           </el-breadcrumb>
344
-          <budget-table :budgetForm="budgetForm" :projectForm="projectForm" @getTotal="getTotalBudget"></budget-table>
366
+          <budget-table :budgetForm="budgetForm" :projectForm="projectForm"  @getTotal="getTotalBudget"></budget-table>
345
         </div>
367
         </div>
346
         <div class="finish" v-show="activeStep == 4">
368
         <div class="finish" v-show="activeStep == 4">
347
           <el-result icon="success" title="成功提示" subTitle="预算表生成完成">
369
           <el-result icon="success" title="成功提示" subTitle="预算表生成完成">
415
 </template>
437
 </template>
416
 
438
 
417
 <script>
439
 <script>
440
+import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
441
+import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
418
 import { getProject } from "@/api/oa/project/project";
442
 import { getProject } from "@/api/oa/project/project";
419
 import { listProjectWork } from "@/api/oa/project/projectWork";
443
 import { listProjectWork } from "@/api/oa/project/projectWork";
420
 import { getSalary } from "@/api/oa/staff/salary";
444
 import { getSalary } from "@/api/oa/staff/salary";
508
       openDevice: false,
532
       openDevice: false,
509
       chooseCar: [],
533
       chooseCar: [],
510
       chooseDevice: [],
534
       chooseDevice: [],
535
+      contract:{}
511
     };
536
     };
512
   },
537
   },
513
   created() {
538
   created() {
514
     this.getProjectList();
539
     this.getProjectList();
540
+    this.getProjectContract();
515
     this.getProjectWorkList();
541
     this.getProjectWorkList();
516
   },
542
   },
517
   methods: {
543
   methods: {
526
         this.projectForm = response.data;
552
         this.projectForm = response.data;
527
       });
553
       });
528
     },
554
     },
555
+    // 查询项目是否有合同关联
556
+    getProjectContract() {
557
+      listProjectContract({ projectId: this.taskForm.formId }).then(res => {
558
+        if (res.rows) {
559
+          console.log(res.rows);
560
+          if(res.rows.length == 1){
561
+            getContract(res.rows[0].contractId).then(result=>{
562
+              if (result.data) {
563
+                this.contract = result.data;
564
+                this.budgetForm.contract = result.data;
565
+              }
566
+            })
567
+          }
568
+        }
569
+      })
570
+    },
529
     getProjectWorkList() {
571
     getProjectWorkList() {
530
       listProjectWork({ projectId: this.$route.query.formId }).then(res => {
572
       listProjectWork({ projectId: this.$route.query.formId }).then(res => {
531
         this.workList = res.rows;
573
         this.workList = res.rows;
565
     },
607
     },
566
     getChooseCar(val) {
608
     getChooseCar(val) {
567
       this.chooseCar = val;
609
       this.chooseCar = val;
610
+      for(let car of this.chooseCar){
611
+        car.mileage = 1.5
612
+      }
568
       this.openCar = false;
613
       this.openCar = false;
569
     },
614
     },
570
     getChooseDevice(val) {
615
     getChooseDevice(val) {
580
       this.budgetForm.settleExpense = val.settle;
625
       this.budgetForm.settleExpense = val.settle;
581
       this.budgetForm.workList = val.workList;
626
       this.budgetForm.workList = val.workList;
582
       this.budgetForm.inOutPriceSum = val.inOutPriceSum
627
       this.budgetForm.inOutPriceSum = val.inOutPriceSum
583
-      console.log(this.budgetForm);
584
       if (this.chooseUser.length != 0) {
628
       if (this.chooseUser.length != 0) {
585
         for (let s of this.chooseUser) {
629
         for (let s of this.chooseUser) {
586
           s.inOutPrice = val.inOutPrice
630
           s.inOutPrice = val.inOutPrice
588
       }
632
       }
589
       this.getDirectExpense(this.budgetForm);
633
       this.getDirectExpense(this.budgetForm);
590
     },
634
     },
591
-    setPreSettlement(val){
635
+    setPreSettlement(val) {
592
       this.budgetForm.contentList = val
636
       this.budgetForm.contentList = val
593
     },
637
     },
594
     // 计算单个人员的成本
638
     // 计算单个人员的成本
655
         device.budgetId = form.budgetId;
699
         device.budgetId = form.budgetId;
656
         addBudgetDevice(device);
700
         addBudgetDevice(device);
657
       }
701
       }
658
-      for (let work of form.workList) {
702
+      for (let work of form.contentList) {
659
         work.budgetId = form.budgetId;
703
         work.budgetId = form.budgetId;
660
         addBudgetSettle(work)
704
         addBudgetSettle(work)
661
       }
705
       }
751
 }
795
 }
752
 
796
 
753
 table {
797
 table {
798
+  width: 100%;
754
   /*居中*/
799
   /*居中*/
755
   // margin: 0 auto;
800
   // margin: 0 auto;
756
   /*边框*/
801
   /*边框*/
764
     padding: 3px;
809
     padding: 3px;
765
   }
810
   }
766
 }
811
 }
812
+.head{
813
+  font-weight: bold;
814
+}
767
 
815
 
768
 ::v-deep .el-input.is-disabled .el-input__inner {
816
 ::v-deep .el-input.is-disabled .el-input__inner {
769
   background-color: #fff;
817
   background-color: #fff;

+ 116
- 93
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Целия файл

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-03 16:28:09
3
  * @Date: 2024-04-03 16:28:09
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 14:28:28
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-22 19:10:22
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
9
     <h2 style="text-align: center">项目直接生产成本预算表</h2>
9
     <h2 style="text-align: center">项目直接生产成本预算表</h2>
10
     <table border="1" class="table">
10
     <table border="1" class="table">
11
       <tr>
11
       <tr>
12
-        <td class="head">项目名称</td>
13
-        <td colspan="3">{{ budgetForm.project ? budgetForm.project.projectName : '' }}</td>
14
-        <td class="head">项目编号</td>
15
-        <td colspan="2">{{ budgetForm.project ? budgetForm.project.projectNumber : '' }}</td>
12
+        <td style="width: 100px;">项目名称</td>
13
+        <td colspan="6">{{ budgetForm.project ? budgetForm.project.projectName : '' }}</td>
14
+        <td>项目编号</td>
15
+        <td colspan="1">{{ budgetForm.project ? budgetForm.project.projectNumber : '' }}</td>
16
       </tr>
16
       </tr>
17
       <tr>
17
       <tr>
18
-        <td :rowspan="userLen" class="head vertical-text">人员</td>
19
-        <td class="head" style="width:250px">姓名</td>
20
-        <td class="head">部门</td>
21
-        <td class="head">岗位工资</td>
22
-        <td class="head">人员成本(天)</td>
23
-        <!-- <td class="head">进出场单价</td> -->
24
-        <td class="head">预算天数</td>
25
-        <td class="head">金额</td>
26
-      </tr>
27
-      <tr v-for="user, index in chooseUser" :key="'user' + index">
18
+        <td :rowspan="workLen + 2">直接成本</td>
19
+        <td>工作简述</td>
20
+        <td>工作内容</td>
21
+        <td>数量</td>
22
+        <td>单价</td>
23
+        <td>单位</td>
24
+        <td>系数</td>
25
+        <td>金额</td>
26
+        <td style="width: 250px;">备注</td>
27
+      </tr>
28
+      <tr v-for="work in workList">
29
+        <td>{{ work.content }}</td>
30
+        <td>{{ work.cmcPrice ? work.cmcPrice.workItem:''}}</td>
31
+        <td>{{ work.workload }}</td>
32
+        <td>{{ work.price }}</td>
33
+        <td>{{ work.unit }}</td>
34
+        <td>{{ work.coefficient }}</td>
35
+        <td>{{ work.settle }}</td>
36
+        <td>{{ work.remark ? work.remark : '' }}</td>
37
+      </tr>
38
+      <tr>
39
+        <td :colspan="6" class="head">直接成本合计</td>
40
+        <td :colspan="1" class="head">{{ budgetForm.settleExpense }}</td>
41
+        <td></td>
42
+      </tr>
43
+      <tr>
44
+        <td :rowspan="userLen + carLen + deviceLen + 2">间接成本</td>
45
+      </tr>
46
+      <tr v-if="userLen != 1">
47
+        <td :rowspan="userLen">人员</td>
48
+        <td>姓名</td>
49
+        <td>基本工资</td>
50
+        <td>岗位工资</td>
51
+        <td>人员成本(天)</td>
52
+        <td>预算天数</td>
53
+        <td>金额</td>
54
+        <td></td>
55
+      </tr>
56
+      <tr v-for="user in chooseUser" :key="'user' + user.userId">
28
         <td>{{ user.user ? user.user.nickName : '' }}</td>
57
         <td>{{ user.user ? user.user.nickName : '' }}</td>
29
-        <td>{{ user.dept? user.dept.deptName : '' }}</td>
58
+        <td>1780</td>
30
         <td>{{ user.salary.salary }}</td>
59
         <td>{{ user.salary.salary }}</td>
31
-        <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
60
+        <td>{{ parseFloat((user.salary.salary + 1780) / 21.75).toFixed(2) }}</td>
32
         <td>{{ user.days }}</td>
61
         <td>{{ user.days }}</td>
33
         <td>{{ user.staffCost }}</td>
62
         <td>{{ user.staffCost }}</td>
63
+        <td></td>
34
       </tr>
64
       </tr>
35
-      <tr>
36
-        <td :rowspan="carLen" class="head vertical-text">车辆</td>
37
-        <td class="head">车牌号</td>
38
-        <td class="head">油耗</td>
39
-        <td class="head">总里程</td>
40
-        <td class="head">折旧成天(天)</td>
41
-        <td class="head">预算天数</td>
42
-        <td class="head">金额</td>
43
-      </tr>
44
-      <tr v-for="car, index in chooseCar" :key="'car' + index">
65
+      <tr v-if="carLen != 1">
66
+        <td :rowspan="carLen">车辆</td>
67
+        <td>车牌号</td>
68
+        <td>油耗</td>
69
+        <td>总里程</td>
70
+        <td>折旧成天(天)</td>
71
+        <td>预算天数</td>
72
+        <td>金额</td>
73
+      </tr>
74
+      <tr v-for="car in chooseCar" :key="'car' + car.carId">
45
         <td>{{ car.car ? car.car.licensePlate : '' }}</td>
75
         <td>{{ car.car ? car.car.licensePlate : '' }}</td>
46
         <td>{{ car.mileage }}</td>
76
         <td>{{ car.mileage }}</td>
47
         <td>{{ car.distance }}</td>
77
         <td>{{ car.distance }}</td>
48
         <td>{{ car.car ? car.car.dayCost : '' }}</td>
78
         <td>{{ car.car ? car.car.dayCost : '' }}</td>
49
         <td>{{ car.days }}</td>
79
         <td>{{ car.days }}</td>
50
         <td>{{ car.expense }}</td>
80
         <td>{{ car.expense }}</td>
81
+        <td></td>
51
       </tr>
82
       </tr>
52
-      <tr>
53
-        <td :rowspan="deviceLen" class="head vertical-text">设备</td>
54
-        <td class="head">设备名称</td>
55
-        <td class="head">规格型号</td>
56
-        <td class="head">品牌</td>
57
-        <td class="head">折旧成本(天)</td>
58
-        <td class="head">预算天数</td>
59
-        <td class="head">金额</td>
60
-      </tr>
61
-      <tr v-for="device, index in chooseDevice" :key="'device' + index">
83
+      <tr v-if="deviceLen != 1">
84
+        <td :rowspan="deviceLen">设备</td>
85
+        <td>设备名称</td>
86
+        <td>规格型号</td>
87
+        <td>品牌</td>
88
+        <td>折旧成本(天)</td>
89
+        <td>预算天数</td>
90
+        <td>金额</td>
91
+      </tr>
92
+      <tr v-for="device in chooseDevice" :key="'device' + device.deviceId">
62
         <td>{{ device.device ? device.device.name : '' }}</td>
93
         <td>{{ device.device ? device.device.name : '' }}</td>
63
         <td>{{ device.device ? device.device.series : '' }}</td>
94
         <td>{{ device.device ? device.device.series : '' }}</td>
64
         <td>{{ device.device ? device.device.brand : '' }}</td>
95
         <td>{{ device.device ? device.device.brand : '' }}</td>
65
         <td>{{ device.device ? device.device.dayCost : '' }}</td>
96
         <td>{{ device.device ? device.device.dayCost : '' }}</td>
66
         <td>{{ device.days }}</td>
97
         <td>{{ device.days }}</td>
67
         <td>{{ device.depreciation }}</td>
98
         <td>{{ device.depreciation }}</td>
99
+        <td></td>
68
       </tr>
100
       </tr>
69
       <tr>
101
       <tr>
70
-        <td colspan="6" class="head">固定成本小计</td>
71
-        <td>{{ budgetForm.fixCost }}</td>
102
+        <td :colspan="6" class="head">间接成本合计</td>
103
+        <td :colspan="1" class="head">{{ budgetForm.fixCost }}</td>
104
+        <td></td>
72
       </tr>
105
       </tr>
73
-      <tr>
74
-        <td :rowspan="workLen" class="head vertical-text">预计结算金额</td>
75
-        <td class="head">工作内容</td>
76
-        <td class="head">比例尺</td>
77
-        <td class="head">总工作量</td>
78
-        <td class="head">单价</td>
79
-        <td class="head">系数</td>
80
-        <td class="head">金额</td>
81
-      </tr>
82
-      <tr v-for="(work, index) in workList" :key="'work' + index">
83
-        <td>{{ workContentList.length != 0 ? workContentList[index].content : "" }}</td>
84
-        <td>{{ work.scaleGrade }}</td>
85
-        <td>{{ work.workload }}</td>
86
-        <td>{{ work.price }}</td>
87
-        <td>{{ work.coefficient }}</td>
88
-        <td>{{ work.settle }}</td>
106
+      <tr class="head">
107
+        <td :colspan="3">外协费用</td>
108
+        <td :colspan="5">{{ budgetForm.outExpense }}</td>
109
+        <td>{{ budgetForm.outRemark }}</td>
89
       </tr>
110
       </tr>
90
-      <tr>
91
-        <td colspan="5" class="head">进出场津贴</td>
92
-        <td>{{ budgetForm.inOutPriceSum }}</td>
111
+      <tr class="head">
112
+        <td colspan="3">车船租赁</td>
113
+        <td :colspan="5">{{ budgetForm.rentExpense }}</td>
114
+        <td>{{ budgetForm.rentRemark }}</td>
93
       </tr>
115
       </tr>
94
-      <tr>
95
-        <td colspan="5" class="head">外协费用</td>
96
-        <td>{{ budgetForm.outExpense }}</td>
116
+      <tr class="head">
117
+        <td colspan="3">其他费用</td>
118
+        <td :colspan="5">{{ budgetForm.otherExpense }}</td>
119
+        <td>{{ budgetForm.otherRemark }}</td>
97
       </tr>
120
       </tr>
98
-      <tr>
99
-        <td colspan="5" class="head">商务费用</td>
100
-        <td>{{ budgetForm.businessExpense }}</td>
121
+      <tr class="head">
122
+        <td colspan="3">税费成本</td>
123
+        <td :colspan="5">{{ budgetForm.taxExpense }}</td>
124
+        <td>{{ budgetForm.taxRemark }}</td>
101
       </tr>
125
       </tr>
102
-      <tr>
103
-        <td colspan="5" class="head">车船租赁</td>
104
-        <td>{{ budgetForm.rentExpense }}</td>
126
+      <tr class="head">
127
+        <td colspan="3">经营管理费用</td>
128
+        <td :colspan="5">{{ budgetForm.businessExpense }}</td>
129
+        <td>{{ budgetForm.businessRemark }}</td>
105
       </tr>
130
       </tr>
106
       <tr>
131
       <tr>
107
-        <td colspan="5" class="head">其他费用</td>
108
-        <td>{{ budgetForm.otherExpense }}</td>
132
+        <td colspan="3" class="head">成本合计</td>
133
+        <td colspan="5" class="head">{{ budgetForm.totalBudget }}</td>
109
       </tr>
134
       </tr>
110
-      <tr>
111
-        <td colspan="6" class="head">直接成本小计</td>
112
-        <td>{{ budgetForm.directExpense }}</td>
113
-      </tr>
114
-      <tr>
115
-        <td colspan="6" class="head">总成本=(固定成本+直接成本)*120%</td>
116
-        <td>{{ budgetForm.totalBudget }}</td>
117
-      </tr>
118
-      <tr>
119
-        <td class="head">编制人</td>
120
-        <td colspan="5">{{ budgetForm.compilerUser ? budgetForm.compilerUser.nickName :'' }}</td>
121
-        <!-- <td class="head">审核人</td> -->
122
-        <!-- <td colspan="3">{{ name }}</td> -->
135
+      <tr v-if="budgetForm.contract">
136
+        <td colspan="3" class="head">利润</td>
137
+        <td colspan="2" class="head">{{ profit }}</td>
138
+        <td colspan="3" class="head">合同总价约</td>
139
+        <td colspan="1" class="head">{{ budgetForm.contract ? budgetForm.contract.amount : '' }}</td>
123
       </tr>
140
       </tr>
124
     </table>
141
     </table>
125
   </div>
142
   </div>
172
     initBudgetForm() {
189
     initBudgetForm() {
173
       listBudget({ pageNum: 1, pageSize: 20, projectId: this.taskForm.formId }).then(res => {
190
       listBudget({ pageNum: 1, pageSize: 20, projectId: this.taskForm.formId }).then(res => {
174
         this.budgetForm = res.rows[0];
191
         this.budgetForm = res.rows[0];
175
-        listBudgetDevice({budgetId: this.budgetForm.budgetId}).then(res => {
192
+        console.log(this.budgetForm);
193
+        listBudgetDevice({ budgetId: this.budgetForm.budgetId }).then(res => {
176
           this.chooseDevice = res.rows;
194
           this.chooseDevice = res.rows;
177
           this.deviceLen = res.rows.length + 1;
195
           this.deviceLen = res.rows.length + 1;
178
         })
196
         })
179
-        listBudgetStaff({budgetId: this.budgetForm.budgetId}).then(res => {
197
+        listBudgetStaff({ budgetId: this.budgetForm.budgetId }).then(res => {
180
           this.chooseUser = res.rows;
198
           this.chooseUser = res.rows;
181
           this.userLen = res.rows.length + 1;
199
           this.userLen = res.rows.length + 1;
182
           let days = 0;
200
           let days = 0;
183
-          for(let d of this.chooseUser){
201
+          for (let d of this.chooseUser) {
184
             days = days + d.days
202
             days = days + d.days
185
           }
203
           }
186
           this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
204
           this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
187
         })
205
         })
188
-        listBudgetCar({budgetId: this.budgetForm.budgetId}).then(res => {
206
+        listBudgetCar({ budgetId: this.budgetForm.budgetId }).then(res => {
207
+          console.log(res.rows);
189
           this.chooseCar = res.rows;
208
           this.chooseCar = res.rows;
190
           this.carLen = res.rows.length + 1;
209
           this.carLen = res.rows.length + 1;
191
         })
210
         })
192
-        listBudgetSettle({budgetId: this.budgetForm.budgetId}).then(res => {
211
+        listBudgetSettle({ budgetId: this.budgetForm.budgetId }).then(res => {
193
           this.workList = res.rows;
212
           this.workList = res.rows;
194
-          this.workLen = res.rows.length + 6;
195
-          for(let work of this.workList){
196
-            if(work.groundType == '0'){
213
+          this.workLen = res.rows.length;
214
+
215
+          for (let work of this.workList) {
216
+            if (work.groundType == '0') {
197
               work.price = work.cmcPrice.commonPrice
217
               work.price = work.cmcPrice.commonPrice
198
               work.scaleGrade = work.cmcPrice.scaleGrade
218
               work.scaleGrade = work.cmcPrice.scaleGrade
199
-            }else{
219
+              work.unit = work.cmcPrice.unit
220
+            } else {
200
               work.price = work.cmcPrice.complexPrice
221
               work.price = work.cmcPrice.complexPrice
222
+              work.scaleGrade = work.cmcPrice.scaleGrade
223
+              work.unit = work.cmcPrice.unit
201
             }
224
             }
202
           }
225
           }
203
           this.getProjectWorkList();
226
           this.getProjectWorkList();
205
       });
228
       });
206
     },
229
     },
207
     getProjectWorkList() {
230
     getProjectWorkList() {
208
-      listProjectWork({projectId: this.$route.query.formId}).then(res => {
231
+      listProjectWork({ projectId: this.$route.query.formId }).then(res => {
209
         this.workContentList = res.rows;
232
         this.workContentList = res.rows;
210
       })
233
       })
211
     },
234
     },

+ 31
- 26
oa-ui/src/views/flowable/form/budget/components/budgetTable.vue Целия файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-05-10 15:50:41
3
  * @Date: 2024-05-10 15:50:41
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-21 19:18:34
5
+ * @LastEditTime: 2024-05-22 19:07:27
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
15
         <td colspan="1">{{ projectForm.projectNumber }}</td>
15
         <td colspan="1">{{ projectForm.projectNumber }}</td>
16
       </tr>
16
       </tr>
17
       <tr>
17
       <tr>
18
-        <td :rowspan="workLen">直接成本</td>
18
+        <td :rowspan="workLen+2">直接成本</td>
19
         <td>工作简述</td>
19
         <td>工作简述</td>
20
-        <td>工作类别</td>
20
+        <td>工作内容</td>
21
         <td>数量</td>
21
         <td>数量</td>
22
         <td>单价</td>
22
         <td>单价</td>
23
         <td>单位</td>
23
         <td>单位</td>
27
       </tr>
27
       </tr>
28
       <tr v-for="work in budgetForm.contentList">
28
       <tr v-for="work in budgetForm.contentList">
29
         <td>{{ work.content }}</td>
29
         <td>{{ work.content }}</td>
30
-        <td>{{ work.workType }}</td>
30
+        <td>{{ work.workItem }}</td>
31
         <td>{{ work.workload }}</td>
31
         <td>{{ work.workload }}</td>
32
         <td>{{ work.price }}</td>
32
         <td>{{ work.price }}</td>
33
         <td>{{ work.unit }}</td>
33
         <td>{{ work.unit }}</td>
36
         <td>{{ work.remark ? work.remark : '' }}</td>
36
         <td>{{ work.remark ? work.remark : '' }}</td>
37
       </tr>
37
       </tr>
38
       <tr>
38
       <tr>
39
-        <td :colspan="2">进出场费用</td>
40
-        <td :colspan="5">{{ budgetForm.inOutPriceSum }}</td>
41
-        <td></td>
42
-      </tr>
43
-      <tr>
44
-        <td :colspan="2" class="head">直接成本合计</td>
45
-        <td :colspan="5" class="head">{{ budgetForm.settleExpense }}</td>
39
+        <td :colspan="6" class="head">直接成本合计</td>
40
+        <td :colspan="1" class="head">{{ budgetForm.settleExpense }}</td>
46
         <td></td>
41
         <td></td>
47
       </tr>
42
       </tr>
48
       <tr>
43
       <tr>
108
         <td></td>
103
         <td></td>
109
       </tr>
104
       </tr>
110
       <tr>
105
       <tr>
111
-        <td :colspan="2" class="head">间接成本合计</td>
112
-        <td :colspan="5" class="head">{{ budgetForm.fixCost }}</td>
106
+        <td :colspan="6" class="head">间接成本合计</td>
107
+        <td :colspan="1" class="head">{{ budgetForm.fixCost }}</td>
113
         <td></td>
108
         <td></td>
114
       </tr>
109
       </tr>
115
       <tr class="head">
110
       <tr class="head">
117
         <td :colspan="5">{{ budgetForm.outExpense }}</td>
112
         <td :colspan="5">{{ budgetForm.outExpense }}</td>
118
         <td>{{ budgetForm.outRemark }}</td>
113
         <td>{{ budgetForm.outRemark }}</td>
119
       </tr>
114
       </tr>
120
-      <tr class="head">
121
-        <td colspan="3">税费成本</td>
122
-        <td :colspan="5">{{ budgetForm.taxExpense }}</td>
123
-        <td>{{ budgetForm.taxRemark }}</td>
124
-      </tr>
125
-      <tr class="head">
126
-        <td colspan="3">经营管理费用</td>
127
-        <td :colspan="5">{{ budgetForm.businessExpense }}</td>
128
-        <td>{{ budgetForm.businessRemark }}</td>
129
-      </tr>
130
       <tr class="head">
115
       <tr class="head">
131
         <td colspan="3">车船租赁</td>
116
         <td colspan="3">车船租赁</td>
132
         <td :colspan="5">{{ budgetForm.rentExpense }}</td>
117
         <td :colspan="5">{{ budgetForm.rentExpense }}</td>
137
         <td :colspan="5">{{ budgetForm.otherExpense }}</td>
122
         <td :colspan="5">{{ budgetForm.otherExpense }}</td>
138
         <td>{{ budgetForm.otherRemark }}</td>
123
         <td>{{ budgetForm.otherRemark }}</td>
139
       </tr>
124
       </tr>
125
+      <tr class="head">
126
+        <td colspan="3">税费成本</td>
127
+        <td :colspan="5">{{ budgetForm.taxExpense }}</td>
128
+        <td>{{ budgetForm.taxRemark }}</td>
129
+      </tr>
130
+      <tr class="head">
131
+        <td colspan="3">经营管理费用</td>
132
+        <td :colspan="5">{{ budgetForm.businessExpense }}</td>
133
+        <td>{{ budgetForm.businessRemark }}</td>
134
+      </tr>
140
       <tr>
135
       <tr>
141
         <td colspan="3" class="head">成本合计</td>
136
         <td colspan="3" class="head">成本合计</td>
142
         <td colspan="5" class="head">{{ costSum }}</td>
137
         <td colspan="5" class="head">{{ costSum }}</td>
143
       </tr>
138
       </tr>
139
+      <tr v-if="budgetForm.contract">
140
+        <td colspan="3" class="head">利润</td>
141
+        <td colspan="2" class="head">{{ profit }}</td>
142
+        <td colspan="3" class="head">合同总价约</td>
143
+        <td colspan="1" class="head">{{ budgetForm.contract ? budgetForm.contract.amount : '' }}</td>
144
+      </tr>
144
     </table>
145
     </table>
145
   </div>
146
   </div>
146
 </template>
147
 </template>
165
       workLen: 1,
166
       workLen: 1,
166
       costSum: 0,
167
       costSum: 0,
167
       inOutPrice: '',
168
       inOutPrice: '',
169
+      profit:''
168
     }
170
     }
169
   },
171
   },
170
   created() {
172
   created() {
172
     this.userLen = this.budgetForm.chooseUser.length + 1;
174
     this.userLen = this.budgetForm.chooseUser.length + 1;
173
     this.carLen = this.budgetForm.chooseCar.length + 1;
175
     this.carLen = this.budgetForm.chooseCar.length + 1;
174
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
176
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
175
-    this.workLen = this.budgetForm.contentList.length + 3;
176
-    this.costSum = (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)).toFixed(2);
177
-    this.$emit('getTotal', this.totalBudget);
177
+    this.workLen = this.budgetForm.contentList.length;
178
+    this.costSum = (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost) ).toFixed(2);
179
+    if(this.budgetForm.contract){
180
+      this.profit = (Number(this.budgetForm.contract.amount) - Number(this.costSum) ).toFixed(2)
181
+    }
182
+    this.$emit('getTotal', this.costSum);
178
   },
183
   },
179
 }
184
 }
180
 </script>
185
 </script>

+ 13
- 45
oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue Целия файл

3
     <el-form>
3
     <el-form>
4
       <el-form-item label="项目概况:" label-width="90px">
4
       <el-form-item label="项目概况:" label-width="90px">
5
         <table border="1">
5
         <table border="1">
6
-          <tr>
6
+          <tr class="head">
7
             <td style="width: 320px">工作内容</td>
7
             <td style="width: 320px">工作内容</td>
8
             <td style="width:120px;">等级或比例尺</td>
8
             <td style="width:120px;">等级或比例尺</td>
9
             <td style="width:90px;">单位</td>
9
             <td style="width:90px;">单位</td>
35
       </el-form-item>
35
       </el-form-item>
36
       <el-form-item label="预结算:" label-width="90px">
36
       <el-form-item label="预结算:" label-width="90px">
37
         <table border="1">
37
         <table border="1">
38
-          <tr>
38
+          <tr class="head">
39
             <td style="width: 250px">工作简述</td>
39
             <td style="width: 250px">工作简述</td>
40
             <td>工作类别</td>
40
             <td>工作类别</td>
41
             <td>工作项目</td>
41
             <td>工作项目</td>
115
           </tr>
115
           </tr>
116
           <tr>
116
           <tr>
117
             <td colspan="9">合计</td>
117
             <td colspan="9">合计</td>
118
-            <td>{{ (Number(settle) - Number(inOutPriceSum)).toFixed(2) }}</td>
118
+            <td>{{ Number(settle).toFixed(2) }}</td>
119
           </tr>
119
           </tr>
120
         </table>
120
         </table>
121
-        <el-button icon="el-icon-plus" type="primary" size="mini" @click="addWorkList"></el-button>
122
-      </el-form-item>
123
-      <el-form-item label="进出场费用:">
124
-        <el-input v-numeric v-model="inOutPrice" style="width:200px;" @change="getInoutpriceSum">
125
-          <template slot="prepend">单价</template>
126
-        </el-input>
127
-        ×
128
-        <el-input v-numeric v-model="peopleNumber" style="width:200px;" @change="getInoutpriceSum">
129
-          <template slot="prepend">人天</template>
130
-        </el-input>
131
-        = {{ inOutPriceSum }}
132
-      </el-form-item>
133
-      <el-form-item label="预结算合计:">
134
-        <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥{{ settle }}</el-tag>
121
+        <el-button icon="el-icon-plus" plain type="primary" size="mini" @click="addWorkList"></el-button>
135
       </el-form-item>
122
       </el-form-item>
136
     </el-form>
123
     </el-form>
137
   </div>
124
   </div>
207
         }
194
         }
208
       ],
195
       ],
209
       settle: 0,
196
       settle: 0,
210
-      inOutPrice: 0,
211
-      peopleNumber: 0,
212
-      inOutPriceSum: 0
197
+      checkUserList: []
213
     }
198
     }
214
   },
199
   },
215
   created() {
200
   created() {
337
       for (let work of this.contentList) {
322
       for (let work of this.contentList) {
338
         sum = sum + Number(work.settle)
323
         sum = sum + Number(work.settle)
339
       }
324
       }
340
-      sum = sum + this.inOutPriceSum;
341
       this.settle = sum.toFixed(2);
325
       this.settle = sum.toFixed(2);
342
-      let days = 0
343
-      // for (let user of this.chooseUser) {
344
-      //   days = days + Number(user.days)
345
-      // }
346
-      // this.peopleNumber = days
347
-      // if (this.budgetForm.inOutPriceSum && this.budgetForm.inOutPriceSum != 0) {
348
-      //   if (this.inOutPriceSum == 0) {
349
-      //     this.settle = Number(this.settle) + Number(this.budgetForm.inOutPriceSum)
350
-      //     this.inOutPrice = Number(this.budgetForm.inOutPriceSum) / this.peopleNumber
351
-      //     this.inOutPriceSum = this.budgetForm.inOutPriceSum
352
-      //   }
353
-      // }
354
       let obj = {}
326
       let obj = {}
355
-      obj.workList = this.workList;
327
+      obj.workList = this.contentList;
356
       obj.settle = this.settle;
328
       obj.settle = this.settle;
357
-      obj.inOutPrice = this.inOutPrice;
358
-      obj.peopleNumber = this.peopleNumber;
359
-      obj.inOutPriceSum = this.inOutPriceSum;
360
-      console.log(this.inOutPriceSum);
361
       this.$emit('getSettle', obj);
329
       this.$emit('getSettle', obj);
362
-      this.$emit('getWorkList',this.contentList)
363
-    },
364
-    getInoutpriceSum() {
365
-      this.inOutPriceSum = Number(this.inOutPrice) * Number(this.peopleNumber);
366
-      this.getSettleSum()
330
+      this.$emit('getWorkList', this.contentList)
367
     },
331
     },
368
     /* 计算总额 */
332
     /* 计算总额 */
369
     calculateTotal(price, coefficient, workload, percent) {
333
     calculateTotal(price, coefficient, workload, percent) {
409
   // margin: 0 auto;
373
   // margin: 0 auto;
410
   /*边框*/
374
   /*边框*/
411
   /* border: 1px solid black; */
375
   /* border: 1px solid black; */
376
+  width: 100%;
412
   text-align: center;
377
   text-align: center;
413
   border-collapse: collapse;
378
   border-collapse: collapse;
414
 
379
 
418
     padding: 3px;
383
     padding: 3px;
419
   }
384
   }
420
 }
385
 }
421
-
386
+.head{
387
+  font-weight: bold;
388
+}
422
 .delete-btn {
389
 .delete-btn {
423
   position: absolute;
390
   position: absolute;
424
   left: -30px;
391
   left: -30px;
426
   transform: translate(0, -50%);
393
   transform: translate(0, -50%);
427
   color: #F56C6C;
394
   color: #F56C6C;
428
   cursor: pointer;
395
   cursor: pointer;
429
-  i{
396
+
397
+  i {
430
     font-size: 25px;
398
     font-size: 25px;
431
   }
399
   }
432
 }
400
 }

+ 96
- 0
oa-ui/src/views/flowable/form/components/chooseContract.vue Целия файл

1
+<template>
2
+  <div>
3
+    <el-row>
4
+      <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="88px">
5
+        <el-form-item label="合同编码" prop="contractCode">
6
+          <el-input v-model="queryParams.contractCode" placeholder="请输入合同编码" clearable
7
+            @keyup.enter.native="handleQuery" />
8
+        </el-form-item>
9
+        <el-form-item label="合同编号" prop="contractNumber">
10
+          <el-input v-model="queryParams.contractNumber" placeholder="请输入合同编号" clearable
11
+            @keyup.enter.native="handleQuery" />
12
+        </el-form-item>
13
+        <el-form-item>
14
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery()">搜索</el-button>
15
+        </el-form-item>
16
+      </el-form>
17
+    </el-row>
18
+    <el-table ref="choosePContract" v-loading="loading" :data="contractList" highlight-current-row
19
+      @current-change="handleCurrentChange" :row-key="getRowKeys" @row-dblclick="confirmChoose">
20
+      <el-table-column label="项目名称" align="center" key="tender.projectName" prop="tender.projectName"
21
+        min-width="150px" />
22
+      <el-table-column label="合同编码" align="center" key="contractCode" prop="contractCode" />
23
+      <el-table-column label="合同编号" align="center" prop="contractNumber" min-width="100px" />
24
+      <el-table-column label="合同金额" align="center" prop="amount" min-width="100px" />
25
+      <el-table-column label="拟稿人" align="center" prop="draftUser.nickName" min-width="100px" />
26
+      <el-table-column label="合同备注" align="center" prop="remark" min-width="100px" />
27
+    </el-table>
28
+    <div style="text-align: right;" class="mt20 mr20">
29
+      <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum"
30
+        :page-size="queryParams.pageSize" layout="total, prev, pager, next" :total="total">
31
+      </el-pagination>
32
+    </div>
33
+    <div>
34
+      已选项目:<el-tag>{{ choosePContract.tender.projectName }}</el-tag>
35
+    </div>
36
+    <div style="text-align: center;margin-top: 20px;">
37
+      <el-button type="primary" @click="confirmChoose">确认选择</el-button>
38
+      <el-button @click="$emit('close')">取消</el-button>
39
+    </div>
40
+  </div>
41
+</template>
42
+
43
+<script>
44
+import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
45
+import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
46
+export default {
47
+  data() {
48
+    return {
49
+      // 查询参数
50
+      queryParams: {
51
+        pageNum: 1,
52
+        pageSize: 10
53
+      },
54
+      contractList: [],
55
+      userList: [],
56
+      total: 0,
57
+      loading: true,
58
+      choosePContract: {
59
+        tender: {
60
+          projectName: ''
61
+        }
62
+      },
63
+    }
64
+  },
65
+  created() {
66
+    this.getList()
67
+  },
68
+  methods: {
69
+    getList() {
70
+      listContract(this.queryParams).then(response => {
71
+        console.log(response);
72
+        this.contractList = response.rows;
73
+        this.total = response.total;
74
+        this.loading = false;
75
+      })
76
+    },
77
+    handleQuery() {
78
+      this.queryParams.pageNum = 1;
79
+      this.getList();
80
+    },
81
+    handleCurrentChange(val) {
82
+      this.choosePContract = val
83
+    },
84
+    getRowKeys(row) {
85
+      return row.contractId;
86
+    },
87
+    confirmChoose() {
88
+      console.log(this.choosePContract);
89
+      this.$emit('choose', this.choosePContract)
90
+    },
91
+  },
92
+
93
+}
94
+</script>
95
+
96
+<style lang="scss" scoped></style>

+ 1
- 1
oa-ui/src/views/flowable/form/components/chooseTender.vue Целия файл

23
     <el-table ref="choosePTender" v-loading="loading" :data="tenderList" highlight-current-row
23
     <el-table ref="choosePTender" v-loading="loading" :data="tenderList" highlight-current-row
24
       @current-change="handleCurrentChange" :row-key="getRowKeys" @row-dblclick="confirmChoose">
24
       @current-change="handleCurrentChange" :row-key="getRowKeys" @row-dblclick="confirmChoose">
25
       <el-table-column label="投标项目名称" align="center" key="projectName" prop="projectName"
25
       <el-table-column label="投标项目名称" align="center" key="projectName" prop="projectName"
26
-        :show-overflow-tooltip="true" />
26
+        :show-overflow-tooltip="true"  width="170px" />
27
       <el-table-column label="招标业主" align="center" prop="partyA" min-width="100px" />
27
       <el-table-column label="招标业主" align="center" prop="partyA" min-width="100px" />
28
       <el-table-column label="招标代理" align="center" prop="agent" min-width="100px" />
28
       <el-table-column label="招标代理" align="center" prop="agent" min-width="100px" />
29
       <el-table-column label="招标地点" align="center" prop="place" min-width="100px" />
29
       <el-table-column label="招标地点" align="center" prop="place" min-width="100px" />

+ 35
- 3
oa-ui/src/views/flowable/form/projectProcess/addproject.vue Целия файл

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-03-18 11:00:04
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-22 13:51:57
6
+-->
1
 <!--
7
 <!--
2
  * @Author: ysh
8
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
9
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
10
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-20 16:15:23
11
+ * @LastEditTime: 2024-05-22 11:00:26
6
 -->
12
 -->
7
 
13
 
8
 <template>
14
 <template>
16
             <el-input v-model="addForm.projectNumber"></el-input>
22
             <el-input v-model="addForm.projectNumber"></el-input>
17
           </el-form-item>
23
           </el-form-item>
18
         </el-col>
24
         </el-col>
19
-        <el-col :span="12">
25
+        <el-col :span="12" v-if="addForm.projectSource == 0">
20
           <el-form-item label="合同编码:">
26
           <el-form-item label="合同编码:">
21
             <el-input v-model="contractCode" disabled></el-input>
27
             <el-input v-model="contractCode" disabled></el-input>
22
           </el-form-item>
28
           </el-form-item>
27
             <el-input v-model="addForm.projectName"></el-input>
33
             <el-input v-model="addForm.projectName"></el-input>
28
           </el-form-item>
34
           </el-form-item>
29
         </el-col>
35
         </el-col>
30
-        <el-col :span="12">
36
+        <el-col :span="12" v-if="addForm.projectSource == 0">
31
           <el-form-item label="合同编号:">
37
           <el-form-item label="合同编号:">
32
             <el-input v-model="contractNumber" disabled></el-input>
38
             <el-input v-model="contractNumber" disabled></el-input>
33
           </el-form-item>
39
           </el-form-item>
45
         <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
51
         <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
46
         <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
52
         <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
47
       </el-form-item>
53
       </el-form-item>
54
+      <el-form-item label="合同编码:" v-if="addForm.projectSource == '1'">
55
+        <el-input v-model="chooseContractInfo.contractCode">
56
+          <el-button slot="append" @click="openContract = true">选择</el-button>
57
+        </el-input>
58
+      </el-form-item>
59
+
60
+      <el-form-item label="合同编号:" v-if="addForm.projectSource == '1'">
61
+        <el-input v-model="chooseContractInfo.contractNumber" disabled></el-input>
62
+      </el-form-item>
48
       <el-form-item label="甲方单位:" prop="partyA">
63
       <el-form-item label="甲方单位:" prop="partyA">
49
         <el-autocomplete class="inline-input" v-model="addForm.partyA" :fetch-suggestions="querySearch"
64
         <el-autocomplete class="inline-input" v-model="addForm.partyA" :fetch-suggestions="querySearch"
50
           placeholder="请输入内容" style="width: 100%"></el-autocomplete>
65
           placeholder="请输入内容" style="width: 100%"></el-autocomplete>
125
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
140
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
126
       <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
141
       <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
127
     </div>
142
     </div>
143
+    <el-dialog title="选择合同" :visible.sync="openContract" width="1000px" append-to-body>
144
+      <choose-contract @choose="setContract" @close="openContract = false"></choose-contract>
145
+    </el-dialog>
128
   </div>
146
   </div>
129
 </template>
147
 </template>
130
 
148
 
138
 import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
156
 import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
139
 import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
157
 import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
140
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
158
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
159
+import chooseContract from '../components/chooseContract.vue';
141
 export default {
160
 export default {
161
+  components: { chooseContract },
142
   dicts: ['cmc_scale_grade', 'cmc_unit'],
162
   dicts: ['cmc_scale_grade', 'cmc_unit'],
143
   props: {
163
   props: {
144
     disabled: {
164
     disabled: {
155
   },
175
   },
156
   data() {
176
   data() {
157
     return {
177
     return {
178
+      openContract:false,
158
       registerTime: undefined,
179
       registerTime: undefined,
159
       // 查询参数
180
       // 查询参数
160
       queryParams: {
181
       queryParams: {
172
       addForm: {
193
       addForm: {
173
         registerTime: undefined,
194
         registerTime: undefined,
174
         projectRegistrant: "",
195
         projectRegistrant: "",
196
+        projectSource: "0"
175
       },
197
       },
198
+      chooseContractInfo:{},
176
       contractCode: "",
199
       contractCode: "",
177
       contractNumber: "",
200
       contractNumber: "",
178
       rules: {
201
       rules: {
226
         this.loading = false;
249
         this.loading = false;
227
       });
250
       });
228
     },
251
     },
252
+    
229
     getProjectInfo() {
253
     getProjectInfo() {
230
       getProject(this.taskForm.formId).then(res => {
254
       getProject(this.taskForm.formId).then(res => {
231
         this.addForm = res.data;
255
         this.addForm = res.data;
258
         }
282
         }
259
       })
283
       })
260
     },
284
     },
285
+    setContract(val){
286
+      this.chooseContractInfo = val;
287
+      this.openContract = false;
288
+    },
261
     confirmAddForm() {
289
     confirmAddForm() {
262
       this.addForm.projectId = this.taskForm.formId;
290
       this.addForm.projectId = this.taskForm.formId;
263
       for (let work of this.workList) {
291
       for (let work of this.workList) {
268
         this.$modal.msgSuccess("新增成功");
296
         this.$modal.msgSuccess("新增成功");
269
         this.getList();
297
         this.getList();
270
       });
298
       });
299
+      let pcobj = {projectId:this.taskForm.formId,contractId:this.chooseContractInfo.contractId}
300
+      addProjectContract(pcobj).then(response =>{
301
+        this.$modal.msgSuccess("合同关联成功");
302
+      })
271
       const params = { taskId: this.taskForm.taskId };
303
       const params = { taskId: this.taskForm.taskId };
272
       // 获取下一个流程节点
304
       // 获取下一个流程节点
273
       getNextFlowNode(params).then(res => {
305
       getNextFlowNode(params).then(res => {

+ 2
- 2
oa-ui/src/views/flowable/task/myProcess/index.vue Целия файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-10 14:57:12
5
+ * @LastEditTime: 2024-05-22 18:18:31
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
74
 
74
 
75
     <!-- 发起流程 -->
75
     <!-- 发起流程 -->
76
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
76
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
77
-      <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"></progress-tree>
77
+      <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"  @close="open =false"></progress-tree>
78
       <!-- <el-form :model="queryProcessParams" ref="queryProcessForm" :inline="true" v-show="showSearch" label-width="68px">
78
       <!-- <el-form :model="queryProcessParams" ref="queryProcessForm" :inline="true" v-show="showSearch" label-width="68px">
79
         <el-form-item label="名称" prop="name">
79
         <el-form-item label="名称" prop="name">
80
           <el-input v-model="queryProcessParams.name" placeholder="请输入名称" clearable size="small"
80
           <el-input v-model="queryProcessParams.name" placeholder="请输入名称" clearable size="small"

+ 1
- 1
oa-ui/src/views/flowable/task/myProcess/progressTree.vue Целия файл

19
     <el-divider></el-divider>
19
     <el-divider></el-divider>
20
     <div class="text-center">
20
     <div class="text-center">
21
       <el-button type="primary" @click="confirm">确定</el-button>
21
       <el-button type="primary" @click="confirm">确定</el-button>
22
-      <el-button>取消</el-button>
22
+      <el-button @click="$emit('close')">取消</el-button>
23
     </div>
23
     </div>
24
   </div>
24
   </div>
25
 </template>
25
 </template>

+ 7
- 5
oa-ui/src/views/oa/tender/index.vue Целия файл

256
             <div v-if="form.tenderId != null">
256
             <div v-if="form.tenderId != null">
257
 
257
 
258
               <FileUpload ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
258
               <FileUpload ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
259
-              :filePathName="'投标文件'" :isModify="true" @input="getUploadPathBidDocument"></FileUpload>
259
+                :filePathName="'投标文件'" :isModify="true" @input="getUploadPathBidDocument"></FileUpload>
260
               <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
260
               <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
261
                 tag="ul">
261
                 tag="ul">
262
                 <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
262
                 <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
361
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
361
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
362
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
362
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
363
             <div v-if="form.tenderId != null">
363
             <div v-if="form.tenderId != null">
364
-              <FileUpload ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"  :filePathName="'投标文件'"
365
-                :isModify="true" @input="getUploadPathTenderDocument"></FileUpload>
364
+              <FileUpload ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
365
+                :filePathName="'投标文件'" :isModify="true" @input="getUploadPathTenderDocument"></FileUpload>
366
               <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
366
               <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
367
                 tag="ul">
367
                 tag="ul">
368
                 <li key="li02" class="el-upload-list__item ele-upload-list__item-content">
368
                 <li key="li02" class="el-upload-list__item ele-upload-list__item-content">
672
       }
672
       }
673
     },
673
     },
674
     getFileName(name) {
674
     getFileName(name) {
675
-      let arr = name.split('/')
676
-      return arr[arr.length - 1];
675
+      if (name) {
676
+        let arr = name.split('/')
677
+        return arr[arr.length - 1];
678
+      }
677
     },
679
     },
678
     handleFileDelete(name) {
680
     handleFileDelete(name) {
679
       if (name == 'zb')
681
       if (name == 'zb')

Loading…
Отказ
Запис