Browse Source

车辆预算新增油耗、保险、维修

余思翰 2 months ago
parent
commit
8b18ae6920

+ 3
- 2
oa-ui/src/views/flowable/form/budget/addBudget.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-21 18:51:51
3
  * @Date: 2024-06-21 18:51:51
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-01-23 14:02:18
5
+ * @LastEditTime: 2025-04-03 16:58:09
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
61
       <el-button type="primary" @click="submitNextFlow" v-if="taskName != '预算批准'">提交下一个流程</el-button>
61
       <el-button type="primary" @click="submitNextFlow" v-if="taskName != '预算批准'">提交下一个流程</el-button>
62
       <el-button type="primary" @click="submitNextFlow" v-else>结算批准</el-button>
62
       <el-button type="primary" @click="submitNextFlow" v-else>结算批准</el-button>
63
     </div>
63
     </div>
64
-    <el-dialog title="表单预览" :visible.sync="viewOpen" width="60%" append-to-body>
64
+    <el-dialog title="表单预览" :visible.sync="viewOpen" width="70%" append-to-body>
65
       <budget-info :taskName="taskName" :taskForm="taskForm" @goBack="$emit('goBack')"></budget-info>
65
       <budget-info :taskName="taskName" :taskForm="taskForm" @goBack="$emit('goBack')"></budget-info>
66
     </el-dialog>
66
     </el-dialog>
67
   </div>
67
   </div>
166
       } else {
166
       } else {
167
         this.updateBudgetForm(this.budgetForm)
167
         this.updateBudgetForm(this.budgetForm)
168
       }
168
       }
169
+      this.$message.success('保存成功');
169
     },
170
     },
170
     viewForm() {
171
     viewForm() {
171
       this.viewOpen = true;
172
       this.viewOpen = true;

+ 33
- 25
oa-ui/src/views/flowable/form/budget/budgetInfo.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-03 16:28:09
3
  * @Date: 2024-04-03 16:28:09
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-12-30 15:15:58
5
+ * @LastEditTime: 2025-04-03 16:48:33
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
72
               <td style="min-width:50px">单价</td>
72
               <td style="min-width:50px">单价</td>
73
               <td style="min-width:50px">单位</td>
73
               <td style="min-width:50px">单位</td>
74
               <td style="min-width:50px">系数</td>
74
               <td style="min-width:50px">系数</td>
75
-              <td style="min-width:50px">金额</td>
75
+              <td style="min-width:80px">金额</td>
76
               <td style="min-width: 150px;">备注</td>
76
               <td style="min-width: 150px;">备注</td>
77
             </tr>
77
             </tr>
78
             <tr v-for="work in workList">
78
             <tr v-for="work in workList">
98
               <td v-else>
98
               <td v-else>
99
                 {{ work.coefficient }}
99
                 {{ work.coefficient }}
100
               </td>
100
               </td>
101
-              <td>{{ work.settle }}</td>
101
+              <td style="text-align:right;">{{ (work.settle).toFixed(2) }}</td>
102
               <td>{{ work.remark ? work.remark : '' }}</td>
102
               <td>{{ work.remark ? work.remark : '' }}</td>
103
             </tr>
103
             </tr>
104
             <tr>
104
             <tr>
105
               <td :colspan="7" class="head">预结算额合计</td>
105
               <td :colspan="7" class="head">预结算额合计</td>
106
-              <td :colspan="1" class="head">{{ budgetForm.settleExpense }}</td>
106
+              <td :colspan="1" class="head" style="text-align:right;">{{ (budgetForm.settleExpense).toFixed(2) }}</td>
107
               <td></td>
107
               <td></td>
108
             </tr>
108
             </tr>
109
           </table>
109
           </table>
116
               <td>基本工资</td>
116
               <td>基本工资</td>
117
               <td>岗位工资</td>
117
               <td>岗位工资</td>
118
               <td>人员成本(天)</td>
118
               <td>人员成本(天)</td>
119
-              <td>预算天数</td>
120
               <td></td>
119
               <td></td>
121
-              <td>金额</td>
122
-              <td>备注</td>
120
+              <td></td>
121
+              <td style="min-width:80px">预算天数</td>
122
+              <td></td>
123
+              <td style="min-width:80px">金额</td>
123
             </tr>
124
             </tr>
124
             <tr v-for="user in chooseUser" :key="'user' + user.userId">
125
             <tr v-for="user in chooseUser" :key="'user' + user.userId">
125
               <td>{{ user.user ? user.user.nickName : '' }}</td>
126
               <td>{{ user.user ? user.user.nickName : '' }}</td>
136
                 </span>
137
                 </span>
137
                 <span v-else>/</span>
138
                 <span v-else>/</span>
138
               </td>
139
               </td>
140
+              <td></td>
141
+              <td></td>
139
               <td v-if="taskName == '分管审核' || taskName == '总经理审核' || taskName == '预算批准'">
142
               <td v-if="taskName == '分管审核' || taskName == '总经理审核' || taskName == '预算批准'">
140
                 <el-input-number :controls="false" style="width:100px;" v-model="user.days"
143
                 <el-input-number :controls="false" style="width:100px;" v-model="user.days"
141
                   @blur="computedFixCostSettle(user, 'user')"></el-input-number>
144
                   @blur="computedFixCostSettle(user, 'user')"></el-input-number>
144
                 {{ user.days }}
147
                 {{ user.days }}
145
               </td>
148
               </td>
146
               <td></td>
149
               <td></td>
147
-              <td>{{ user.staffCost }}</td>
148
-              <td></td>
150
+              <td style="text-align:right;">{{ (user.staffCost).toFixed(2) }}</td>
149
             </tr>
151
             </tr>
150
             <tr v-if="carLen != 1" style="background-color:#f8f8f9">
152
             <tr v-if="carLen != 1" style="background-color:#f8f8f9">
151
               <td :rowspan="carLen">车辆</td>
153
               <td :rowspan="carLen">车辆</td>
152
               <td>车牌号</td>
154
               <td>车牌号</td>
153
               <td>油耗(元/km)</td>
155
               <td>油耗(元/km)</td>
154
-              <td>总里程</td>
156
+              <td>保险(元/天)</td>
157
+              <td>维修(元/天)</td>
155
               <td>折旧成本(天)</td>
158
               <td>折旧成本(天)</td>
159
+              <td>总里程</td>
156
               <td>预算天数</td>
160
               <td>预算天数</td>
157
               <td>过路费</td>
161
               <td>过路费</td>
158
               <td>金额</td>
162
               <td>金额</td>
159
-              <td>备注</td>
160
             </tr>
163
             </tr>
161
             <tr v-for="car in chooseCar" :key="'car' + car.carId">
164
             <tr v-for="car in chooseCar" :key="'car' + car.carId">
162
               <td>{{ car.car ? car.car.licensePlate : '' }}</td>
165
               <td>{{ car.car ? car.car.licensePlate : '' }}</td>
163
-              <td>{{ car.mileage }}</td>
166
+              <td>{{ car.car ? car.car.fuel : '' }}</td>
167
+              <td>{{ car.car ? car.car.insurance : '' }}</td>
168
+              <td>{{ car.car ? car.car.maintenance : '' }}</td>
169
+              <td>{{ car.car ? car.car.dayCost : '' }}</td>
170
+              <td v-if="taskName != '分管审核' && taskName != '总经理审核'">{{ car.distance }}</td>
164
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
171
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
165
                 <el-input-number :controls="false" style="width:100px;" v-model="car.distance"
172
                 <el-input-number :controls="false" style="width:100px;" v-model="car.distance"
166
                   @blur="computedFixCostSettle(car, 'car')"></el-input-number>
173
                   @blur="computedFixCostSettle(car, 'car')"></el-input-number>
167
               </td>
174
               </td>
168
-              <td v-else>
175
+              <!-- <td v-else>
169
                 {{ car.distance }}
176
                 {{ car.distance }}
170
-              </td>
171
-              <td>{{ car.car ? car.car.dayCost : '' }}</td>
177
+              </td> -->
172
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
178
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
173
                 <el-input-number :controls="false" style="width:100px;" v-model="car.days"
179
                 <el-input-number :controls="false" style="width:100px;" v-model="car.days"
174
                   @blur="computedFixCostSettle(car, 'car')"></el-input-number>
180
                   @blur="computedFixCostSettle(car, 'car')"></el-input-number>
177
                 {{ car.days }}
183
                 {{ car.days }}
178
               </td>
184
               </td>
179
               <td> {{ car.toll }} </td>
185
               <td> {{ car.toll }} </td>
180
-              <td>{{ car.expense }}</td>
186
+              <td style="text-align:right;">{{ (car.expense).toFixed(2) }}</td>
181
             </tr>
187
             </tr>
182
             <tr v-if="deviceLen != 1" style="background-color:#f8f8f9">
188
             <tr v-if="deviceLen != 1" style="background-color:#f8f8f9">
183
               <td :rowspan="deviceLen">设备</td>
189
               <td :rowspan="deviceLen">设备</td>
185
               <td>规格型号</td>
191
               <td>规格型号</td>
186
               <td>品牌</td>
192
               <td>品牌</td>
187
               <td>折旧成本(天)</td>
193
               <td>折旧成本(天)</td>
194
+              <td></td>
195
+              <td></td>
188
               <td>预算天数</td>
196
               <td>预算天数</td>
189
               <td></td>
197
               <td></td>
190
               <td>金额</td>
198
               <td>金额</td>
194
               <td>{{ device.device ? device.device.series : '' }}</td>
202
               <td>{{ device.device ? device.device.series : '' }}</td>
195
               <td>{{ device.device ? device.device.brand : '' }}</td>
203
               <td>{{ device.device ? device.device.brand : '' }}</td>
196
               <td>{{ device.device ? device.device.dayCost : '' }}</td>
204
               <td>{{ device.device ? device.device.dayCost : '' }}</td>
205
+              <td></td>
206
+              <td></td>
197
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
207
               <td v-if="taskName == '分管审核' || taskName == '总经理审核'">
198
                 <el-input-number :controls="false" style="width:100px;" v-model="device.days"
208
                 <el-input-number :controls="false" style="width:100px;" v-model="device.days"
199
                   @blur="computedFixCostSettle(device, 'device')"></el-input-number>
209
                   @blur="computedFixCostSettle(device, 'device')"></el-input-number>
202
                 {{ device.days }}
212
                 {{ device.days }}
203
               </td>
213
               </td>
204
               <td></td>
214
               <td></td>
205
-              <td>{{ device.depreciation }}</td>
206
-              <td></td>
215
+              <td style="text-align:right;">{{ (device.depreciation).toFixed(2) }}</td>
207
             </tr>
216
             </tr>
208
             <tr>
217
             <tr>
209
-              <td :colspan="7" class="head">间接成本合计</td>
210
-              <td :colspan="1" class="head">{{ budgetForm.fixCost }}</td>
211
-              <td></td>
218
+              <td :colspan="9" class="head">间接成本合计</td>
219
+              <td :colspan="1" class="head" style="text-align:right;">{{ budgetForm.fixCost }}</td>
212
             </tr>
220
             </tr>
213
           </table>
221
           </table>
214
         </el-descriptions-item>
222
         </el-descriptions-item>
277
             {{ budgetForm.totalBudget }}
285
             {{ budgetForm.totalBudget }}
278
           </div>
286
           </div>
279
           <div class="text-center">
287
           <div class="text-center">
280
-            (简写:{{ (budgetForm.totalBudget / 10000).toFixed(4) + '万' }})
288
+            <!-- (简写:{{ (budgetForm.totalBudget / 10000).toFixed(4) + '万' }}) -->
281
           </div>
289
           </div>
282
         </el-descriptions-item>
290
         </el-descriptions-item>
283
         <el-descriptions-item label="合同总价约" :span="3" v-if="$store.getters.roles.includes('leader')">
291
         <el-descriptions-item label="合同总价约" :span="3" v-if="$store.getters.roles.includes('leader')">
285
             {{ contract.contractId ? contract.amount : '' }}
293
             {{ contract.contractId ? contract.amount : '' }}
286
           </div>
294
           </div>
287
           <div class="text-center">
295
           <div class="text-center">
288
-            (简写:{{ contract.contractId ? (contract.amount / 10000).toFixed(4) + '万' : '' }})
296
+            <!-- (简写:{{ contract.contractId ? (contract.amount / 10000).toFixed(4) + '万' : '' }}) -->
289
           </div>
297
           </div>
290
         </el-descriptions-item>
298
         </el-descriptions-item>
291
         <el-descriptions-item label="利润" :span="3" v-if="$store.getters.roles.includes('leader')">
299
         <el-descriptions-item label="利润" :span="3" v-if="$store.getters.roles.includes('leader')">
293
             {{ profit.toFixed(2) }}
301
             {{ profit.toFixed(2) }}
294
           </div>
302
           </div>
295
           <div class="text-center">
303
           <div class="text-center">
296
-            (简写:{{ (profit / 10000).toFixed(4) + '万' }})
304
+            <!-- (简写:{{ (profit / 10000).toFixed(4) + '万' }}) -->
297
           </div>
305
           </div>
298
         </el-descriptions-item>
306
         </el-descriptions-item>
299
         <el-descriptions-item label="分管审核意见" :span="3">
307
         <el-descriptions-item label="分管审核意见" :span="3">
594
         this.$set(item, 'staffCost', total);
602
         this.$set(item, 'staffCost', total);
595
         this.getCost("staffCost", "staffCost", this.chooseUser);
603
         this.getCost("staffCost", "staffCost", this.chooseUser);
596
       } else if (type == 'car') {
604
       } else if (type == 'car') {
597
-        let total1 = (Number(item.mileage) || 0) * (Number(item.distance) || 0);
605
+        let total1 = (Number(item.fuel) || 0) * (Number(item.distance) || 0);
598
         let total2 = (Number(item.car.dayCost) || 0) * (Number(item.days) || 0);
606
         let total2 = (Number(item.car.dayCost) || 0) * (Number(item.days) || 0);
599
         this.$set(item, "depreciation", total2);
607
         this.$set(item, "depreciation", total2);
600
         let sum = (total1 + total2).toFixed(2); // sum 是一个字符串  
608
         let sum = (total1 + total2).toFixed(2); // sum 是一个字符串  

+ 18
- 10
oa-ui/src/views/flowable/form/budget/carTable.vue View File

13
       <el-form-item  v-if="chooseCar.length != 0">
13
       <el-form-item  v-if="chooseCar.length != 0">
14
         <table border="1">
14
         <table border="1">
15
           <tr>
15
           <tr>
16
-            <td :colspan="7" class="head">车辆成本预算</td>
16
+            <td :colspan="9" class="head">车辆成本预算</td>
17
           </tr>
17
           </tr>
18
           <tr>
18
           <tr>
19
             <td style="width: 120px">车牌号</td>
19
             <td style="width: 120px">车牌号</td>
20
             <td style="width: 100px">油耗(元/km)</td>
20
             <td style="width: 100px">油耗(元/km)</td>
21
-            <td style="width: 100px">总里程</td>
21
+            <td style="width: 100px">保险(元/天)</td>
22
+            <td style="width: 100px">维修(元/天)</td>
22
             <td style="width: 110px">折旧成本(天)</td>
23
             <td style="width: 110px">折旧成本(天)</td>
24
+            <td style="width: 100px">总里程</td>
23
             <td style="width: 110px">预算天数</td>
25
             <td style="width: 110px">预算天数</td>
24
             <td style="width: 110px">过路费</td>
26
             <td style="width: 110px">过路费</td>
25
             <td style="width: 100px">总额</td>
27
             <td style="width: 100px">总额</td>
27
           <tr v-for="car in chooseCar" :key="car.carId">
29
           <tr v-for="car in chooseCar" :key="car.carId">
28
             <td>{{ car.licensePlate + car.brand }}</td>
30
             <td>{{ car.licensePlate + car.brand }}</td>
29
             <td>
31
             <td>
30
-              {{ car.mileage }}
32
+              {{ car.fuel }}
31
             </td>
33
             </td>
32
             <td>
34
             <td>
33
-              <el-input v-model="car.distance" placeholder="请输入总里程" @blur="calculateCarTotal(car)"></el-input>
35
+              {{ car.insurance }}
36
+            </td>
37
+            <td>
38
+              {{ car.maintenance }}
34
             </td>
39
             </td>
35
             <td>
40
             <td>
36
               {{ car.dayCost }}
41
               {{ car.dayCost }}
37
             </td>
42
             </td>
43
+            <td>
44
+              <el-input v-model="car.distance" placeholder="请输入总里程" @blur="calculateCarTotal(car)"></el-input>
45
+            </td>
38
             <td>
46
             <td>
39
               <el-input v-model="car.days" placeholder="请输入天数" @blur="calculateCarTotal(car)"></el-input>
47
               <el-input v-model="car.days" placeholder="请输入天数" @blur="calculateCarTotal(car)"></el-input>
40
             </td>
48
             </td>
44
             <td class="carCost">{{ car.expense }}</td>
52
             <td class="carCost">{{ car.expense }}</td>
45
           </tr>
53
           </tr>
46
           <tr>
54
           <tr>
47
-            <td colspan="6">车辆成本合计</td>
55
+            <td colspan="8">车辆成本合计</td>
48
             <td>{{ form.carCost }}</td>
56
             <td>{{ form.carCost }}</td>
49
           </tr>
57
           </tr>
50
         </table>
58
         </table>
105
         listBudgetCar({ pageSize: 100, budgetId:this.budgetId }).then((res) => {
113
         listBudgetCar({ pageSize: 100, budgetId:this.budgetId }).then((res) => {
106
           this.chooseCar = res.rows
114
           this.chooseCar = res.rows
107
           for (let car of this.chooseCar) {
115
           for (let car of this.chooseCar) {
116
+            car.fuel = car.car.fuel
117
+            car.insurance = car.car.insurance
118
+            car.maintenance = car.car.maintenance
108
             car.licensePlate = car.car.licensePlate
119
             car.licensePlate = car.car.licensePlate
109
             car.dayCost = car.car.dayCost
120
             car.dayCost = car.car.dayCost
110
             car.brand = car.car.brand
121
             car.brand = car.car.brand
122
     },
133
     },
123
     getChooseCar(val) {
134
     getChooseCar(val) {
124
       this.chooseCar = val;
135
       this.chooseCar = val;
125
-      for (let car of this.chooseCar) {
126
-        car.mileage = 1.0
127
-      }
128
       this.openCar = false;
136
       this.openCar = false;
129
       this.recalculateCost(val, 'expense', 'carCost');
137
       this.recalculateCost(val, 'expense', 'carCost');
130
     },
138
     },
131
     calculateCarTotal(car) {
139
     calculateCarTotal(car) {
132
-      let total1 = Number(car.mileage) * Number(car.distance);
133
-      let total2 = Number(car.dayCost) * Number(car.days);
140
+      let total1 = Number(car.fuel) * Number(car.distance);
141
+      let total2 = (Number(car.insurance) + Number(car.maintenance) + Number(car.dayCost) )* Number(car.days);
134
       let sum = (total1 + total2 + Number(car.toll)).toFixed(2);
142
       let sum = (total1 + total2 + Number(car.toll)).toFixed(2);
135
       this.$set(car, "depreciation", total2.toFixed(2));
143
       this.$set(car, "depreciation", total2.toFixed(2));
136
       this.$set(car, "expense", sum);
144
       this.$set(car, "expense", sum);

Loading…
Cancel
Save