Browse Source

修改预算的新增接口

余思翰 1 year ago
parent
commit
0a483849a6

+ 98
- 55
oa-ui/src/views/oa/budget/addBudget.vue View File

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-03-29 16:51:06
5
+ * @LastEditTime: 2024-04-03 11:23:25
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
124
                 <td style="width:100px">进出场单价</td>
124
                 <td style="width:100px">进出场单价</td>
125
                 <td style="width:100px">预算天数</td>
125
                 <td style="width:100px">预算天数</td>
126
                 <td style="width: 100px">总额</td>
126
                 <td style="width: 100px">总额</td>
127
-                <td></td>
128
               </tr>
127
               </tr>
129
               <tr v-for="user in chooseUser" :key="user.userId">
128
               <tr v-for="user in chooseUser" :key="user.userId">
130
                 <td>{{ user.nickName }}</td>
129
                 <td>{{ user.nickName }}</td>
131
                 <td>{{ user.salary.salary }}</td>
130
                 <td>{{ user.salary.salary }}</td>
132
                 <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
131
                 <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
133
                 <td>
132
                 <td>
134
-                  <el-input v-model="user.inOutPrice" placeholder="请输入进出场单价" @change="calculateUserTotal(user)"></el-input>
133
+                  <el-input v-model="user.inOutPrice" placeholder="请输入进出场单价"
134
+                    @change="calculateUserTotal(user)"></el-input>
135
                 </td>
135
                 </td>
136
                 <td>
136
                 <td>
137
-                  <el-input v-model="user.days" placeholder="请输入天数" @change="calculateUserTotal(user)"
138
-                  ></el-input>
137
+                  <el-input v-model="user.days" placeholder="请输入天数" @change="calculateUserTotal(user)"></el-input>
139
                 </td>
138
                 </td>
140
                 <td class="staffCost">{{ user.staffCost }}</td>
139
                 <td class="staffCost">{{ user.staffCost }}</td>
141
-                <td>
142
-                  <!-- <el-button type="text" @click="calculateUserTotal(user)">计算</el-button> -->
143
-                </td>
144
               </tr>
140
               </tr>
145
               <tr>
141
               <tr>
146
                 <td colspan="5">合计</td>
142
                 <td colspan="5">合计</td>
147
                 <td>{{ budgetForm.staffCost }}</td>
143
                 <td>{{ budgetForm.staffCost }}</td>
148
-                <td>
149
-                  <el-button type="text" @click="calculateTotal('staffCost')">计算</el-button>
150
-                </td>
151
               </tr>
144
               </tr>
152
             </table>
145
             </table>
153
           </el-form-item>
146
           </el-form-item>
170
                 <td style="width:110px">折旧成本(天)</td>
163
                 <td style="width:110px">折旧成本(天)</td>
171
                 <td style="width:110px">预算天数</td>
164
                 <td style="width:110px">预算天数</td>
172
                 <td style="width: 100px">总额</td>
165
                 <td style="width: 100px">总额</td>
173
-                <td></td>
174
               </tr>
166
               </tr>
175
               <tr v-for="car in chooseCar" :key="car.carId">
167
               <tr v-for="car in chooseCar" :key="car.carId">
176
                 <td>{{ car.licensePlate }}</td>
168
                 <td>{{ car.licensePlate }}</td>
187
                   <el-input v-model="car.days" placeholder="请输入天数" @change="calculateCarTotal(car)"></el-input>
179
                   <el-input v-model="car.days" placeholder="请输入天数" @change="calculateCarTotal(car)"></el-input>
188
                 </td>
180
                 </td>
189
                 <td class="carCost">{{ car.expense }}</td>
181
                 <td class="carCost">{{ car.expense }}</td>
190
-                <td>
191
-                  <!-- <el-button type="text" @click="calculateCarTotal(car)">计算</el-button> -->
192
-                </td>
193
               </tr>
182
               </tr>
194
               <tr>
183
               <tr>
195
                 <td colspan="5">合计</td>
184
                 <td colspan="5">合计</td>
196
                 <td>{{ budgetForm.carCost }}</td>
185
                 <td>{{ budgetForm.carCost }}</td>
197
-                <td>
198
-                  <el-button type="text" @click="calculateTotal('carCost')">计算</el-button>
199
-                </td>
200
               </tr>
186
               </tr>
201
             </table>
187
             </table>
202
           </el-form-item>
188
           </el-form-item>
219
                 <td>折旧成本(天)</td>
205
                 <td>折旧成本(天)</td>
220
                 <td style="width:100px">预算天数</td>
206
                 <td style="width:100px">预算天数</td>
221
                 <td style="width: 100px">总额</td>
207
                 <td style="width: 100px">总额</td>
222
-                <td></td>
223
               </tr>
208
               </tr>
224
               <tr v-for="device in chooseDevice" :key="device.deviceId">
209
               <tr v-for="device in chooseDevice" :key="device.deviceId">
225
                 <td>{{ device.name }}</td>
210
                 <td>{{ device.name }}</td>
232
                   <el-input v-model="device.days" placeholder="请输入天数" @change="calculateDeviceTotal(device)"></el-input>
217
                   <el-input v-model="device.days" placeholder="请输入天数" @change="calculateDeviceTotal(device)"></el-input>
233
                 </td>
218
                 </td>
234
                 <td class="deviceCost">{{ device.depreciation }}</td>
219
                 <td class="deviceCost">{{ device.depreciation }}</td>
235
-                <td>
236
-                  <!-- <el-button type="text" @click="calculateDeviceTotal(device)">计算</el-button> -->
237
-                </td>
238
               </tr>
220
               </tr>
239
               <tr>
221
               <tr>
240
                 <td colspan="5">合计</td>
222
                 <td colspan="5">合计</td>
241
                 <td>{{ budgetForm.deviceCost }}</td>
223
                 <td>{{ budgetForm.deviceCost }}</td>
242
-                <td>
243
-                  <el-button type="text" @click="calculateTotal('deviceCost')">计算</el-button>
244
-                </td>
245
               </tr>
224
               </tr>
246
             </table>
225
             </table>
247
           </el-form-item>
226
           </el-form-item>
248
           <el-form-item label="固定成本小计:">
227
           <el-form-item label="固定成本小计:">
249
-            <el-tag type="danger" style="margin-right:20px;font-size:14px;">{{ budgetForm.fixCost }}</el-tag>
250
-            <el-button @click="getFixCost" type="success">计算</el-button>
228
+            <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥ {{ budgetForm.fixCost }}</el-tag>
251
           </el-form-item>
229
           </el-form-item>
252
         </el-form>
230
         </el-form>
253
 
231
 
267
         <el-form>
245
         <el-form>
268
           <choose-money :workList="workList" @getSettle="getSettle"></choose-money>
246
           <choose-money :workList="workList" @getSettle="getSettle"></choose-money>
269
           <el-form-item label="外协费用:">
247
           <el-form-item label="外协费用:">
270
-            <el-input-number v-model="budgetForm.outExpense" style="width:400px;"></el-input-number>
248
+            <el-input v-model="budgetForm.outExpense" style="width:400px;"
249
+              @change="getDirectExpense(budgetForm)"></el-input>
271
           </el-form-item>
250
           </el-form-item>
272
           <el-form-item label="商务费用:">
251
           <el-form-item label="商务费用:">
273
-            <el-input-number v-model="budgetForm.businessExpense" style="width:400px;"></el-input-number>
252
+            <el-input v-model="budgetForm.businessExpense" style="width:400px;"
253
+              @change="getDirectExpense(budgetForm)"></el-input>
274
           </el-form-item>
254
           </el-form-item>
275
           <el-form-item label="车船租赁:">
255
           <el-form-item label="车船租赁:">
276
-            <el-input-number v-model="budgetForm.rentExpense" style="width:400px;"></el-input-number>
256
+            <el-input v-model="budgetForm.rentExpense" style="width:400px;"
257
+              @change="getDirectExpense(budgetForm)"></el-input>
277
           </el-form-item>
258
           </el-form-item>
278
           <el-form-item label="其他费用:">
259
           <el-form-item label="其他费用:">
279
-            <el-input-number v-model="budgetForm.otherExpense" style="width:400px;"></el-input-number>
260
+            <el-input v-model="budgetForm.otherExpense" style="width:400px;"
261
+              @change="getDirectExpense(budgetForm)"></el-input>
280
           </el-form-item>
262
           </el-form-item>
281
           <el-form-item label="直接成本小计:">
263
           <el-form-item label="直接成本小计:">
282
-            {{ budgetForm.directExpense }}
283
-            <el-button type="success" style="margin-left:30px;" @click="getDirectExpense(budgetForm)">计算</el-button>
264
+            <el-tag type="danger" style="margin-right:20px;font-size:14px;"> ¥{{ budgetForm.directExpense }} </el-tag>
284
           </el-form-item>
265
           </el-form-item>
285
 
266
 
286
         </el-form>
267
         </el-form>
302
           <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
283
           <el-breadcrumb-item>直接成本小计</el-breadcrumb-item>
303
           <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
284
           <el-breadcrumb-item>¥ {{ budgetForm.directExpense }}</el-breadcrumb-item>
304
         </el-breadcrumb>
285
         </el-breadcrumb>
305
-        <budget-table :budgetForm="budgetForm" :projectForm="projectForm" ></budget-table>
286
+        <budget-table :budgetForm="budgetForm" :projectForm="projectForm" @getTotal="getTotalBudget"></budget-table>
287
+      </div>
288
+      <div class="finish" v-if="activeStep == 4">
289
+        <el-result icon="success" title="成功提示" subTitle="预算表生成完成">
290
+          <template slot="extra">
291
+          </template>
292
+        </el-result>
306
       </div>
293
       </div>
307
       <el-divider></el-divider>
294
       <el-divider></el-divider>
308
       <div class="btn">
295
       <div class="btn">
309
         <el-button @click="activeStep -= 1" :disabled="activeStep == 0">上一步</el-button>
296
         <el-button @click="activeStep -= 1" :disabled="activeStep == 0">上一步</el-button>
310
         <el-button @click="confirmStep" type="primary" v-if="activeStep < 4">下一步</el-button>
297
         <el-button @click="confirmStep" type="primary" v-if="activeStep < 4">下一步</el-button>
311
-        <el-button @click="activeStep += 1" type="primary" v-if="activeStep == 4">生成预算表</el-button>
298
+        <el-button @click="goBack" type="primary" v-if="activeStep == 4">完成</el-button>
312
       </div>
299
       </div>
313
     </div>
300
     </div>
314
 
301
 
338
         </el-table-column>
325
         </el-table-column>
339
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" />
326
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" />
340
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" width="200px" />
327
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" width="200px" />
341
-        <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderName" />
328
+        <el-table-column label="项目负责人" align="center" key="projectLeader" prop="projectLeaderUser.nickName" />
342
         <el-table-column align="center">
329
         <el-table-column align="center">
343
           <template slot-scope="scope">
330
           <template slot-scope="scope">
344
             <el-button size="mini" type="text" @click="chooseProject(scope.row)">选择</el-button>
331
             <el-button size="mini" type="text" @click="chooseProject(scope.row)">选择</el-button>
374
 import chooseDevice from "./components/chooseDevice.vue";
361
 import chooseDevice from "./components/chooseDevice.vue";
375
 import chooseMoney from "./components/chooseMoney.vue";
362
 import chooseMoney from "./components/chooseMoney.vue";
376
 import budgetTable from './components/budgetTable.vue';
363
 import budgetTable from './components/budgetTable.vue';
364
+import { addBudget } from '@/api/oa/budget/budget.js';
377
 export default {
365
 export default {
378
   components: {
366
   components: {
379
     choosePeople, chooseCar, chooseDevice, chooseMoney, budgetTable
367
     choosePeople, chooseCar, chooseDevice, chooseMoney, budgetTable
381
   data() {
369
   data() {
382
     return {
370
     return {
383
       activeStep: 0,
371
       activeStep: 0,
384
-      form: {},
372
+      form:{
373
+        projectId: null,
374
+        staffCost: 0,
375
+        carCost: 0,
376
+        deviceCost: 0,
377
+        fixCost: 0,
378
+        outExpense: 0,
379
+        businessExpense: 0,
380
+        rentExpense: 0,
381
+        otherExpense: 0,
382
+        directExpense: 0,
383
+        totalBudget: 0,
384
+        settleExpense:0,
385
+        compiler: '',
386
+        auditor: ''
387
+      },
385
       budgetForm: {
388
       budgetForm: {
389
+        projectId: null,
390
+        staffCost: 0,
391
+        carCost: 0,
392
+        deviceCost: 0,
386
         fixCost: 0,
393
         fixCost: 0,
387
         outExpense: 0,
394
         outExpense: 0,
388
         businessExpense: 0,
395
         businessExpense: 0,
390
         otherExpense: 0,
397
         otherExpense: 0,
391
         directExpense: 0,
398
         directExpense: 0,
392
         totalBudget: 0,
399
         totalBudget: 0,
400
+        settleExpense:0,
393
         compiler: '',
401
         compiler: '',
394
         auditor: ''
402
         auditor: ''
395
       }, // 预算表
403
       }, // 预算表
459
       this.openProject = false;
467
       this.openProject = false;
460
     },
468
     },
461
     confirmStep() {
469
     confirmStep() {
462
-        debugger
463
       if (this.activeStep == 0) {
470
       if (this.activeStep == 0) {
464
         if (this.projectForm.projectNumber == undefined) {
471
         if (this.projectForm.projectNumber == undefined) {
465
           this.activeStep = 0;
472
           this.activeStep = 0;
467
         } else {
474
         } else {
468
           this.activeStep += 1;
475
           this.activeStep += 1;
469
         }
476
         }
470
-      }else if(this.activeStep == 2){
477
+      } else if (this.activeStep == 2) {
471
         this.budgetForm.chooseUser = this.chooseUser;
478
         this.budgetForm.chooseUser = this.chooseUser;
472
         this.budgetForm.chooseCar = this.chooseCar;
479
         this.budgetForm.chooseCar = this.chooseCar;
473
         this.budgetForm.chooseDevice = this.chooseDevice;
480
         this.budgetForm.chooseDevice = this.chooseDevice;
481
+        this.budgetForm.projectId = this.projectForm.projectId;
474
         this.activeStep += 1;
482
         this.activeStep += 1;
483
+        this.calculateThatCost();
484
+      } else if (this.activeStep == 3) {
485
+        console.log(this.budgetForm);
486
+        this.form.projectId = this.budgetForm.projectId
487
+        this.form.staffCost = this.budgetForm.staffCost
488
+        this.form.carCost = this.budgetForm.carCost
489
+        this.form.deviceCost = this.budgetForm.deviceCost
490
+        this.form.fixCost = this.budgetForm.fixCost
491
+        this.form.outExpense = this.budgetForm.outExpense
492
+        this.form.businessExpense = this.budgetForm.businessExpense
493
+        this.form.rentExpense = this.budgetForm.rentExpense
494
+        this.form.otherExpense = this.budgetForm.otherExpense
495
+        this.form.directExpense = this.budgetForm.directExpense
496
+        this.form.totalBudget = this.budgetForm.totalBudget
497
+        this.form.settleExpense = this.budgetForm.settleExpense
498
+        this.addBudgetForm(this.form)
475
       }
499
       }
476
       else {
500
       else {
477
         this.activeStep += 1;
501
         this.activeStep += 1;
495
       });
519
       });
496
     },
520
     },
497
     getSettle(val) {
521
     getSettle(val) {
498
-      console.log(val);
499
-      console.log(this.budgetForm);
500
       this.budgetForm.settleExpense = val.settle;
522
       this.budgetForm.settleExpense = val.settle;
501
       this.budgetForm.workList = val.workList;
523
       this.budgetForm.workList = val.workList;
524
+      this.getDirectExpense(this.budgetForm)
502
     },
525
     },
503
     // 计算单个人员的成本
526
     // 计算单个人员的成本
504
     calculateUserTotal(user) {
527
     calculateUserTotal(user) {
505
-      if (user.inOutPrice == undefined) {
506
-        this.$message.error("请输入进出场单价");
507
-        return;
508
-      }
509
       let total =
528
       let total =
510
         (parseFloat(user.salary.salary / 31).toFixed(2) + Number(user.inOutPrice)) *
529
         (parseFloat(user.salary.salary / 31).toFixed(2) + Number(user.inOutPrice)) *
511
         Number(user.days);
530
         Number(user.days);
512
       this.$set(user, "staffCost", total.toFixed(2));
531
       this.$set(user, "staffCost", total.toFixed(2));
532
+      this.getCost("staffCost", "staffCost", this.chooseUser);
533
+      this.getFixCost()
513
     },
534
     },
514
     calculateCarTotal(car) {
535
     calculateCarTotal(car) {
515
       let total1 = Number(car.mileage) * Number(car.distance)
536
       let total1 = Number(car.mileage) * Number(car.distance)
517
       let sum = (total1 + total2).toFixed(2);
538
       let sum = (total1 + total2).toFixed(2);
518
       this.$set(car, 'depreciation', total2);
539
       this.$set(car, 'depreciation', total2);
519
       this.$set(car, 'expense', sum);
540
       this.$set(car, 'expense', sum);
541
+      this.getCost("expense", "carCost", this.chooseCar);
542
+      this.getFixCost()
520
     },
543
     },
521
     calculateDeviceTotal(device) {
544
     calculateDeviceTotal(device) {
522
       let total = Number(device.dayCost) * Number(device.days)
545
       let total = Number(device.dayCost) * Number(device.days)
523
       this.$set(device, 'depreciation', total);
546
       this.$set(device, 'depreciation', total);
547
+      this.getCost("depreciation", "deviceCost", this.chooseDevice);
548
+      this.getFixCost()
524
     },
549
     },
525
-    // 合计
526
-    calculateTotal(val) {
527
-      const elements = document.querySelectorAll("." + val);
550
+    getCost(name1, name2, list) {
528
       let sum = 0;
551
       let sum = 0;
529
-      if (elements.length > 0) {
530
-        for (let e of elements) {
531
-          sum = sum + Number(e.innerHTML);
532
-        }
533
-        this.$set(this.budgetForm, val, sum.toFixed(2));
552
+      for (let user of list) {
553
+        sum = sum + Number(user[name1])
534
       }
554
       }
555
+      this.budgetForm[name2] = sum.toFixed(2)
535
     },
556
     },
536
     getFixCost() {
557
     getFixCost() {
537
       let total = Number(this.budgetForm.staffCost) + Number(this.budgetForm.carCost) + Number(this.budgetForm.deviceCost)
558
       let total = Number(this.budgetForm.staffCost) + Number(this.budgetForm.carCost) + Number(this.budgetForm.deviceCost)
539
     },
560
     },
540
     // 获取直接成本
561
     // 获取直接成本
541
     getDirectExpense(form) {
562
     getDirectExpense(form) {
542
-      console.log(this.budgetForm);
543
-      let sum = Number(form.settleExpense) + form.outExpense + form.rentExpense + form.businessExpense + form.otherExpense
563
+      let sum = Number(form.settleExpense) + Number(form.outExpense) + Number(form.rentExpense) + Number(form.businessExpense) + Number(form.otherExpense)
544
       this.budgetForm.directExpense = sum.toFixed(2)
564
       this.budgetForm.directExpense = sum.toFixed(2)
565
+    },
566
+    getTotalBudget(val) {
567
+      this.budgetForm.totalBudget = val
568
+    },
569
+    addBudgetForm(form) {
570
+      addBudget(form)
571
+    },
572
+    calculateThatCost() {
573
+      let staffCost = 0;
574
+      let carCost = 0;
575
+      let deviceCost = 0;
576
+      for (let user of this.chooseUser) {
577
+        staffCost = staffCost + Number(user.staffCost)
578
+      }
579
+      for (let car of this.chooseCar) {
580
+        carCost = carCost + Number(car.expense)
581
+      }
582
+      for (let device of this.chooseDevice) {
583
+        deviceCost = deviceCost + Number(device.depreciation)
584
+      }
585
+      this.budgetForm.staffCost = staffCost;
586
+      this.budgetForm.carCost = carCost;
587
+      this.budgetForm.deviceCost = deviceCost;
545
     }
588
     }
546
   },
589
   },
547
 };
590
 };

+ 54
- 50
oa-ui/src/views/oa/budget/components/budgetTable.vue View File

5
       <tr>
5
       <tr>
6
         <td class="head">项目名称</td>
6
         <td class="head">项目名称</td>
7
         <td colspan="3">{{ projectForm.projectName }}</td>
7
         <td colspan="3">{{ projectForm.projectName }}</td>
8
-        <td>项目编号</td>
8
+        <td class="head">项目编号</td>
9
         <td colspan="2">{{ projectForm.projectNumber }}</td>
9
         <td colspan="2">{{ projectForm.projectNumber }}</td>
10
       </tr>
10
       </tr>
11
       <tr>
11
       <tr>
12
-        <td :rowspan="userLen">人员</td>
13
-        <td>姓名</td>
14
-        <td>岗位工资</td>
15
-        <td>人员成本(天)</td>
16
-        <td>进出场单价</td>
17
-        <td>预算天数</td>
18
-        <td>金额</td>
19
-      </tr>
20
-      <tr v-for="user in budgetForm.chooseUser" :key="user.userId">
12
+        <td :rowspan="userLen" class="head">人员</td>
13
+        <td class="head">姓名</td>
14
+        <td class="head">岗位工资</td>
15
+        <td class="head">人员成本(天)</td>
16
+        <td class="head">进出场单价</td>
17
+        <td class="head">预算天数</td>
18
+        <td class="head">金额</td>
19
+      </tr>
20
+      <tr v-for="user in budgetForm.chooseUser" :key="'user' + user.userId">
21
         <td>{{ user.nickName }}</td>
21
         <td>{{ user.nickName }}</td>
22
         <td>{{ user.salary.salary }}</td>
22
         <td>{{ user.salary.salary }}</td>
23
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
23
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
26
         <td>{{ user.staffCost }}</td>
26
         <td>{{ user.staffCost }}</td>
27
       </tr>
27
       </tr>
28
       <tr>
28
       <tr>
29
-        <td :rowspan="carLen">车辆</td>
30
-        <td>车牌号</td>
31
-        <td>油耗</td>
32
-        <td>总里程</td>
33
-        <td>折旧成天(天)</td>
34
-        <td>预算天数</td>
35
-        <td>金额</td>
36
-      </tr>
37
-      <tr v-for="car in budgetForm.chooseCar" :key="car.carId">
29
+        <td :rowspan="carLen" class="head">车辆</td>
30
+        <td class="head">车牌号</td>
31
+        <td class="head">油耗</td>
32
+        <td class="head">总里程</td>
33
+        <td class="head">折旧成天(天)</td>
34
+        <td class="head">预算天数</td>
35
+        <td class="head">金额</td>
36
+      </tr>
37
+      <tr v-for="car in budgetForm.chooseCar" :key="'car' + car.carId">
38
         <td>{{ car.licensePlate }}</td>
38
         <td>{{ car.licensePlate }}</td>
39
         <td>{{ car.mileage }}</td>
39
         <td>{{ car.mileage }}</td>
40
         <td>{{ car.distance }}</td>
40
         <td>{{ car.distance }}</td>
43
         <td>{{ car.expense }}</td>
43
         <td>{{ car.expense }}</td>
44
       </tr>
44
       </tr>
45
       <tr>
45
       <tr>
46
-        <td :rowspan="deviceLen">设备</td>
47
-        <td>设备名称</td>
48
-        <td>规格型号</td>
49
-        <td>品牌</td>
50
-        <td>折旧成本(天)</td>
51
-        <td>预算天数</td>
52
-        <td>金额</td>
53
-      </tr>
54
-      <tr v-for="device in budgetForm.chooseDevice" :key="device.deviceId">
46
+        <td :rowspan="deviceLen" class="head">设备</td>
47
+        <td class="head">设备名称</td>
48
+        <td class="head">规格型号</td>
49
+        <td class="head">品牌</td>
50
+        <td class="head">折旧成本(天)</td>
51
+        <td class="head">预算天数</td>
52
+        <td class="head">金额</td>
53
+      </tr>
54
+      <tr v-for="device in budgetForm.chooseDevice" :key="'device' + device.deviceId">
55
         <td>{{ device.name }}</td>
55
         <td>{{ device.name }}</td>
56
         <td>{{ device.series }}</td>
56
         <td>{{ device.series }}</td>
57
         <td>{{ device.brand }}</td>
57
         <td>{{ device.brand }}</td>
60
         <td>{{ device.depreciation }}</td>
60
         <td>{{ device.depreciation }}</td>
61
       </tr>
61
       </tr>
62
       <tr>
62
       <tr>
63
-        <td colspan="6">固定成本小计</td>
63
+        <td colspan="6" class="head">固定成本小计</td>
64
         <td>{{ budgetForm.fixCost }}</td>
64
         <td>{{ budgetForm.fixCost }}</td>
65
       </tr>
65
       </tr>
66
       <tr>
66
       <tr>
67
-        <td :rowspan="workLen">预计结算金额</td>
68
-        <td>工作内容</td>
69
-        <td>比例尺</td>
70
-        <td>总工作量</td>
71
-        <td>单价</td>
72
-        <td>系数</td>
73
-        <td>金额</td>
67
+        <td :rowspan="workLen" class="head">预计结算金额</td>
68
+        <td class="head">工作内容</td>
69
+        <td class="head">比例尺</td>
70
+        <td class="head">总工作量</td>
71
+        <td class="head">单价</td>
72
+        <td class="head">系数</td>
73
+        <td class="head">金额</td>
74
       </tr>
74
       </tr>
75
       <tr v-for="(work, index) in budgetForm.workList" :key="'work' + index">
75
       <tr v-for="(work, index) in budgetForm.workList" :key="'work' + index">
76
         <td>{{ work.content }}</td>
76
         <td>{{ work.content }}</td>
81
         <td>{{ work.total }}</td>
81
         <td>{{ work.total }}</td>
82
       </tr>
82
       </tr>
83
       <tr>
83
       <tr>
84
-        <td colspan="5">外协费用</td>
84
+        <td colspan="5" class="head">外协费用</td>
85
         <td>{{ budgetForm.outExpense }}</td>
85
         <td>{{ budgetForm.outExpense }}</td>
86
       </tr>
86
       </tr>
87
       <tr>
87
       <tr>
88
-        <td colspan="5">商务费用</td>
88
+        <td colspan="5" class="head">商务费用</td>
89
         <td>{{ budgetForm.businessExpense }}</td>
89
         <td>{{ budgetForm.businessExpense }}</td>
90
       </tr>
90
       </tr>
91
       <tr>
91
       <tr>
92
-        <td colspan="5">车船租赁</td>
92
+        <td colspan="5" class="head">车船租赁</td>
93
         <td>{{ budgetForm.rentExpense }}</td>
93
         <td>{{ budgetForm.rentExpense }}</td>
94
       </tr>
94
       </tr>
95
       <tr>
95
       <tr>
96
-        <td colspan="5">其他费用</td>
96
+        <td colspan="5" class="head">其他费用</td>
97
         <td>{{ budgetForm.otherExpense }}</td>
97
         <td>{{ budgetForm.otherExpense }}</td>
98
       </tr>
98
       </tr>
99
       <tr>
99
       <tr>
100
-        <td colspan="6">直接成本小计</td>
100
+        <td colspan="6" class="head">直接成本小计</td>
101
         <td>{{ budgetForm.directExpense }}</td>
101
         <td>{{ budgetForm.directExpense }}</td>
102
       </tr>
102
       </tr>
103
       <tr>
103
       <tr>
104
-        <td colspan="6">总成本=(固定成本+直接成本)*120%</td>
105
-        <td>{{ totalCost }}</td>
104
+        <td colspan="6" class="head">总成本=(固定成本+直接成本)*120%</td>
105
+        <td>{{ totalBudget }}</td>
106
       </tr>
106
       </tr>
107
-      <tr>
108
-        <td>编制人</td>
109
-        <td colspan="2"></td>
110
-        <td>审核人</td>
107
+      <!-- <tr>
108
+        <td class="head">编制人</td>
109
+        <td colspan="2">{{  }}</td>
110
+        <td class="head">审核人</td>
111
         <td colspan="3"></td>
111
         <td colspan="3"></td>
112
-      </tr>
112
+      </tr> -->
113
     </table>
113
     </table>
114
   </div>
114
   </div>
115
 </template>
115
 </template>
132
       carLen: 1,
132
       carLen: 1,
133
       deviceLen: 1,
133
       deviceLen: 1,
134
       workLen: 1,
134
       workLen: 1,
135
-      totalCost: 0
135
+      totalBudget: 0
136
     }
136
     }
137
   },
137
   },
138
   created() {
138
   created() {
141
     this.carLen = this.budgetForm.chooseCar.length + 1;
141
     this.carLen = this.budgetForm.chooseCar.length + 1;
142
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
142
     this.deviceLen = this.budgetForm.chooseDevice.length + 1;
143
     this.workLen = this.budgetForm.workList.length + 5;
143
     this.workLen = this.budgetForm.workList.length + 5;
144
+    this.totalBudget = ((Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) * 1.2).toFixed(2);
145
+    this.$emit('getTotal',this.totalBudget)
144
   },
146
   },
145
   methods: {
147
   methods: {
146
 
148
 
166
 }
168
 }
167
 
169
 
168
 .head {
170
 .head {
169
-  background-color: var(--primary-color);
171
+  // background-color: var(--current-color);
172
+  // opacity: 0.5;
173
+  // color: #fff;
170
 }
174
 }
171
 </style>
175
 </style>

+ 37
- 31
oa-ui/src/views/oa/budget/components/chooseMoney.vue View File

66
               </el-option>
66
               </el-option>
67
             </el-select>
67
             </el-select>
68
           </td>
68
           </td>
69
-          <!-- <td>
70
-              <el-select v-model="work.subItem" :style="{ width: '100%' }"
71
-                @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
72
-                <el-option v-for="item in work.workSelect.subItemList" :key="item.value" :label="item.label"
73
-                  :value="item.value">
74
-                </el-option>
75
-              </el-select>
76
-            </td> -->
77
           <td>
69
           <td>
78
             <el-select v-model="work.scaleGrade" :style="{ width: '100%' }"
70
             <el-select v-model="work.scaleGrade" :style="{ width: '100%' }"
79
               @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
71
               @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
104
             {{ work.total }}
96
             {{ work.total }}
105
           </td>
97
           </td>
106
         </tr>
98
         </tr>
99
+        <tr>
100
+          <td colspan="8">合计</td>
101
+          <td>{{ settle }}</td>
102
+        </tr>
107
       </table>
103
       </table>
108
       <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
104
       <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
109
     </el-form-item>
105
     </el-form-item>
110
     <el-form-item label="预结算合计:">
106
     <el-form-item label="预结算合计:">
111
-      {{ settle }}<el-button @click="getSettle()" type="success" style="margin-left:30px;">计算</el-button>
107
+      <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥{{  settle }}</el-tag>
112
     </el-form-item>
108
     </el-form-item>
113
   </div>
109
   </div>
114
 </template>
110
 </template>
151
       this.getWorkTypeList(work);
147
       this.getWorkTypeList(work);
152
     }
148
     }
153
   },
149
   },
150
+  mounted(){
151
+    this.getSettleSum();
152
+  },
154
   methods: {
153
   methods: {
155
     /* 获取工作类别 */
154
     /* 获取工作类别 */
156
     getWorkTypeList(work) {
155
     getWorkTypeList(work) {
195
     },
194
     },
196
     /* 获取比例尺 */
195
     /* 获取比例尺 */
197
     getScaleGradeList(work, workItem) {
196
     getScaleGradeList(work, workItem) {
198
-      getScaleGradeList({ workItem }).then(res => {
199
-        if (res) {
200
-          let scaleGradeList = this.setArray(res);
201
-          work.workSelect.scaleGradeLoading = false;
202
-          work.workSelect.scaleGradeList = scaleGradeList;
203
-          this.setValue(work, 'scaleGrade', scaleGradeList[0].label)
204
-          // work.scaleGrade = scaleGradeList[0].label;
205
-          if (work.scaleGrade == undefined) {
206
-            this.setValue(work, 'scaleGrade', '无');
207
-          }
208
-          if (work.groundType == undefined) {
209
-            this.setValue(work, 'groundType', '一般地类');
210
-          }
211
-          this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
197
+      if (work.scale) {
198
+        this.setValue(work, 'scaleGrade', work.scale);
199
+        if (work.groundType == undefined) {
200
+          this.setValue(work, 'groundType', '一般地类');
212
         }
201
         }
213
-      })
202
+        this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
203
+      } else {
204
+        getScaleGradeList({ workItem }).then(res => {
205
+          if (res) {
206
+            let scaleGradeList = this.setArray(res);
207
+            work.workSelect.scaleGradeLoading = false;
208
+            work.workSelect.scaleGradeList = scaleGradeList;
209
+            this.setValue(work, 'scaleGrade', scaleGradeList[0].label)
210
+            // work.scaleGrade = scaleGradeList[0].label;
211
+            if (work.scaleGrade == undefined) {
212
+              this.setValue(work, 'scaleGrade', '无');
213
+            }
214
+            if (work.groundType == undefined) {
215
+              this.setValue(work, 'groundType', '一般地类');
216
+            }
217
+            this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
218
+          }
219
+        })
220
+      }
221
+
214
     },
222
     },
215
     /* 获取单价 */
223
     /* 获取单价 */
216
     getUnitPrice(work, workItem, subItem, scaleGrade, groundType) {
224
     getUnitPrice(work, workItem, subItem, scaleGrade, groundType) {
229
     getTotal(work) {
237
     getTotal(work) {
230
       let total = this.calculateTotal(work.price, work.coefficient, work.workLoad, 1);
238
       let total = this.calculateTotal(work.price, work.coefficient, work.workLoad, 1);
231
       this.setValue(work, 'total', total)
239
       this.setValue(work, 'total', total)
240
+      this.getSettleSum();
232
     },
241
     },
233
     /* 计算总额 */
242
     /* 计算总额 */
234
     calculateTotal(price, coefficient, workLoad, percent) {
243
     calculateTotal(price, coefficient, workLoad, percent) {
235
       return ((parseFloat(price) * parseFloat(coefficient) * parseFloat(workLoad)) * percent).toFixed(2);
244
       return ((parseFloat(price) * parseFloat(coefficient) * parseFloat(workLoad)) * percent).toFixed(2);
236
     },
245
     },
237
-    getSettle() {
238
-      const elements = document.querySelectorAll(".workTotal");
246
+    getSettleSum() {
239
       let sum = 0;
247
       let sum = 0;
240
-      if (elements.length > 0) {
241
-        for (let e of elements) {
242
-          sum = sum + Number(e.innerHTML);
243
-        }
244
-        this.settle = sum.toFixed(2)
248
+      for(let work of this.workList){
249
+        sum = sum + Number(work.total)
245
       }
250
       }
251
+      this.settle = sum.toFixed(2);
246
       let obj = {}
252
       let obj = {}
247
       obj.workList = this.workList;
253
       obj.workList = this.workList;
248
       obj.settle = this.settle;
254
       obj.settle = this.settle;

Loading…
Cancel
Save