Просмотр исходного кода

修改新增预算中的人员、车辆、设备、绩效选择

余思翰 1 год назад
Родитель
Сommit
4db7380f13

+ 5
- 0
oa-ui/src/assets/styles/index.scss Просмотреть файл

193
 @font-face {
193
 @font-face {
194
   font-family: 'CMCTitle'; // 根据自己用的去重命名字体名 
194
   font-family: 'CMCTitle'; // 根据自己用的去重命名字体名 
195
   src: url('~@/assets/font/cmctitle/cmctitle.woff');
195
   src: url('~@/assets/font/cmctitle/cmctitle.woff');
196
+}
197
+.vertical-text{
198
+  writing-mode: vertical-rl;
199
+  transform: rotate(360deg);
200
+  letter-spacing: 5px;
196
 }
201
 }

+ 79
- 44
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-08 18:07:49
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-09 15:48:22
6
 -->
6
 -->
7
 <template>
7
 <template>
8
-  <div>
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>
12
         <td class="head">项目名称</td>
13
-        <td colspan="3">{{ projectForm.projectName }}</td>
13
+        <td colspan="3">{{ budgetForm.project ? budgetForm.project.projectName : '' }}</td>
14
         <td class="head">项目编号</td>
14
         <td class="head">项目编号</td>
15
-        <td colspan="2">{{ projectForm.projectNumber }}</td>
15
+        <td colspan="2">{{ budgetForm.project ? budgetForm.project.projectNumber : '' }}</td>
16
       </tr>
16
       </tr>
17
       <tr>
17
       <tr>
18
-        <td :rowspan="userLen" class="head">人员</td>
19
-        <td class="head">姓名</td>
18
+        <td :rowspan="userLen" class="head vertical-text">人员</td>
19
+        <td class="head" style="width:250px">姓名</td>
20
         <td class="head">岗位工资</td>
20
         <td class="head">岗位工资</td>
21
         <td class="head">人员成本(天)</td>
21
         <td class="head">人员成本(天)</td>
22
         <td class="head">进出场单价</td>
22
         <td class="head">进出场单价</td>
23
         <td class="head">预算天数</td>
23
         <td class="head">预算天数</td>
24
         <td class="head">金额</td>
24
         <td class="head">金额</td>
25
       </tr>
25
       </tr>
26
-      <tr v-for="user,index in chooseUser" :key="index">
27
-        <td>{{ user.nickName }}</td>
26
+      <tr v-for="user, index in chooseUser" :key="'user' + index">
27
+        <td>{{ user.user ? user.user.nickName : '' }}</td>
28
         <td>{{ user.salary.salary }}</td>
28
         <td>{{ user.salary.salary }}</td>
29
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
29
         <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
30
         <td>{{ user.inOutPrice }}</td>
30
         <td>{{ user.inOutPrice }}</td>
32
         <td>{{ user.staffCost }}</td>
32
         <td>{{ user.staffCost }}</td>
33
       </tr>
33
       </tr>
34
       <tr>
34
       <tr>
35
-        <td :rowspan="carLen" class="head">车辆</td>
35
+        <td :rowspan="carLen" class="head vertical-text">车辆</td>
36
         <td class="head">车牌号</td>
36
         <td class="head">车牌号</td>
37
         <td class="head">油耗</td>
37
         <td class="head">油耗</td>
38
         <td class="head">总里程</td>
38
         <td class="head">总里程</td>
40
         <td class="head">预算天数</td>
40
         <td class="head">预算天数</td>
41
         <td class="head">金额</td>
41
         <td class="head">金额</td>
42
       </tr>
42
       </tr>
43
-      <tr v-for="car,index in chooseCar" :key="index">
44
-        <td>{{ car.licensePlate }}</td>
43
+      <tr v-for="car, index in chooseCar" :key="'car' + index">
44
+        <td>{{ car.car ? car.car.licensePlate : '' }}</td>
45
         <td>{{ car.mileage }}</td>
45
         <td>{{ car.mileage }}</td>
46
         <td>{{ car.distance }}</td>
46
         <td>{{ car.distance }}</td>
47
-        <td>{{ car.dayCost }}</td>
47
+        <td>{{ car.car ? car.car.dayCost : '' }}</td>
48
         <td>{{ car.days }}</td>
48
         <td>{{ car.days }}</td>
49
         <td>{{ car.expense }}</td>
49
         <td>{{ car.expense }}</td>
50
       </tr>
50
       </tr>
51
       <tr>
51
       <tr>
52
-        <td :rowspan="deviceLen" class="head">设备</td>
52
+        <td :rowspan="deviceLen" class="head vertical-text">设备</td>
53
         <td class="head">设备名称</td>
53
         <td class="head">设备名称</td>
54
         <td class="head">规格型号</td>
54
         <td class="head">规格型号</td>
55
         <td class="head">品牌</td>
55
         <td class="head">品牌</td>
57
         <td class="head">预算天数</td>
57
         <td class="head">预算天数</td>
58
         <td class="head">金额</td>
58
         <td class="head">金额</td>
59
       </tr>
59
       </tr>
60
-      <tr v-for="device,index in chooseDevice" :key="index">
61
-        <td>{{ device.name }}</td>
62
-        <td>{{ device.series }}</td>
63
-        <td>{{ device.brand }}</td>
64
-        <td>{{ device.dayCost }}</td>
60
+      <tr v-for="device, index in chooseDevice" :key="'device' + index">
61
+        <td>{{ device.device ? device.device.name : '' }}</td>
62
+        <td>{{ device.device ? device.device.series : '' }}</td>
63
+        <td>{{ device.device ? device.device.brand : '' }}</td>
64
+        <td>{{ device.device ? device.device.dayCost : '' }}</td>
65
         <td>{{ device.days }}</td>
65
         <td>{{ device.days }}</td>
66
         <td>{{ device.depreciation }}</td>
66
         <td>{{ device.depreciation }}</td>
67
       </tr>
67
       </tr>
70
         <td>{{ budgetForm.fixCost }}</td>
70
         <td>{{ budgetForm.fixCost }}</td>
71
       </tr>
71
       </tr>
72
       <tr>
72
       <tr>
73
-        <td :rowspan="workLen" class="head">预计结算金额</td>
73
+        <td :rowspan="workLen" class="head vertical-text">预计结算金额</td>
74
         <td class="head">工作内容</td>
74
         <td class="head">工作内容</td>
75
         <td class="head">比例尺</td>
75
         <td class="head">比例尺</td>
76
         <td class="head">总工作量</td>
76
         <td class="head">总工作量</td>
79
         <td class="head">金额</td>
79
         <td class="head">金额</td>
80
       </tr>
80
       </tr>
81
       <tr v-for="(work, index) in workList" :key="'work' + index">
81
       <tr v-for="(work, index) in workList" :key="'work' + index">
82
-        <td>{{ work.content }}</td>
83
-        <td>{{ work.scale }}</td>
82
+        <td>{{ workContentList.length != 0 ? workContentList[index].content : "" }}</td>
83
+        <td>{{ work.cmcprice ? work.cmcprice : '' }}</td>
84
         <td>{{ work.workload }}</td>
84
         <td>{{ work.workload }}</td>
85
         <td>{{ work.price }}</td>
85
         <td>{{ work.price }}</td>
86
         <td>{{ work.coefficient }}</td>
86
         <td>{{ work.coefficient }}</td>
110
         <td colspan="6" class="head">总成本=(固定成本+直接成本)*120%</td>
110
         <td colspan="6" class="head">总成本=(固定成本+直接成本)*120%</td>
111
         <td>{{ budgetForm.totalBudget }}</td>
111
         <td>{{ budgetForm.totalBudget }}</td>
112
       </tr>
112
       </tr>
113
-      <!-- <tr>
113
+      <tr>
114
         <td class="head">编制人</td>
114
         <td class="head">编制人</td>
115
-        <td colspan="2">{{  }}</td>
115
+        <td colspan="2">{{ budgetForm.compilerUser ? budgetForm.compilerUser.nickName :'' }}</td>
116
         <td class="head">审核人</td>
116
         <td class="head">审核人</td>
117
-        <td colspan="3"></td>
118
-      </tr> -->
117
+        <td colspan="3">{{ name }}</td>
118
+      </tr>
119
     </table>
119
     </table>
120
   </div>
120
   </div>
121
 </template>
121
 </template>
126
 import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
126
 import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
127
 import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
127
 import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
128
 import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
128
 import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
129
+import { getProjectWork } from "@/api/oa/project/projectWork";
130
+import { mapGetters } from 'vuex';
129
 export default {
131
 export default {
132
+  computed: {
133
+    ...mapGetters(["name", "userId"]),
134
+  },
130
   props: {
135
   props: {
131
     taskForm: {
136
     taskForm: {
132
       type: Object,
137
       type: Object,
136
   data() {
141
   data() {
137
     return {
142
     return {
138
       projectId: '',
143
       projectId: '',
139
-      budgetForm: {},
144
+      budgetForm: {
145
+      },
140
       projectForm: {},
146
       projectForm: {},
141
       userLen: 1,
147
       userLen: 1,
142
       carLen: 1,
148
       carLen: 1,
146
       chooseCar: [],
152
       chooseCar: [],
147
       chooseDevice: [],
153
       chooseDevice: [],
148
       chooseUser: [],
154
       chooseUser: [],
149
-      workList: []
155
+      workList: [],
156
+      workContentList: []
150
     };
157
     };
151
   },
158
   },
152
   created() {
159
   created() {
153
     this.initBudgetForm();
160
     this.initBudgetForm();
154
-    this.userLen = this.chooseUser.length + 1;
155
-    this.carLen = this.chooseCar.length + 1;
156
-    this.deviceLen = this.chooseDevice.length + 1;
157
-    this.workLen = this.workList.length + 5;
158
     this.totalBudget = (
161
     this.totalBudget = (
159
       (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) *
162
       (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) *
160
       1.2
163
       1.2
167
         this.budgetForm = res.rows[0];
170
         this.budgetForm = res.rows[0];
168
         getBudgetDevice(this.budgetForm.budgetId).then(res => {
171
         getBudgetDevice(this.budgetForm.budgetId).then(res => {
169
           console.log(res);
172
           console.log(res);
170
-          this.chooseDevice = res.rows;
173
+          this.chooseDevice = res.data;
174
+          this.deviceLen = res.data.length + 1;
171
         })
175
         })
172
-        getBudgetStaff(this.budgetForm.budgetId).then(result => {
173
-          console.log(result);
174
-          this.chooseUser = res.rows;
176
+        getBudgetStaff(this.budgetForm.budgetId).then(res => {
177
+          console.log(res);
178
+          this.chooseUser = res.data;
179
+          this.userLen = res.data.length + 1;
175
         })
180
         })
176
-        getBudgetCar(this.budgetForm.budgetId).then(result => {
177
-          console.log(result);
178
-          this.chooseCar = res.rows;
181
+        getBudgetCar(this.budgetForm.budgetId).then(res => {
182
+          console.log(res);
183
+          this.chooseCar = res.data;
184
+          this.carLen = res.data.length + 1;
179
         })
185
         })
180
-        getBudgetSettle(this.budgetForm.budgetId).then(result => {
181
-          console.log(result);
182
-          this.workList = res.rows;
186
+        getBudgetSettle(this.budgetForm.budgetId).then(res => {
187
+          console.log(res);
188
+          this.workList = res.data;
189
+          this.workLen = res.data.length + 5;
190
+          this.getProjectWorkList();
183
         })
191
         })
184
       });
192
       });
185
     },
193
     },
186
-
194
+    getProjectWorkList() {
195
+      getProjectWork(this.$route.query.formId).then(res => {
196
+        this.workContentList = res.data;
197
+      })
198
+    },
187
   },
199
   },
188
 };
200
 };
189
 </script>
201
 </script>
190
 
202
 
191
-<style lang="scss" scoped></style>
203
+<style lang="scss" scoped>
204
+.main {
205
+  width: 1200px;
206
+  margin: 0 auto;
207
+  text-align: center;
208
+}
209
+
210
+table {
211
+  text-align: center;
212
+  border-collapse: collapse;
213
+  margin: 0 auto;
214
+
215
+  /*设置背景颜色*/
216
+  /* background-color: #bfa; */
217
+  td {
218
+    padding: 5px;
219
+  }
220
+}
221
+
222
+.head {
223
+  line-height: 35px;
224
+  font-weight: bold;
225
+}
226
+</style>

+ 0
- 1
oa-ui/src/views/flowable/form/deviceForm.vue Просмотреть файл

253
     submit() {
253
     submit() {
254
       this.$refs['deviceForm'].validate((valid) => {
254
       this.$refs['deviceForm'].validate((valid) => {
255
         if (valid) {
255
         if (valid) {
256
-          debugger
257
           this.form.formId = this.taskForm.formId;
256
           this.form.formId = this.taskForm.formId;
258
           let formData = new FormData();
257
           let formData = new FormData();
259
           let jsonForm = JSON.stringify(this.form);
258
           let jsonForm = JSON.stringify(this.form);

+ 0
- 3
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue Просмотреть файл

102
     }
102
     }
103
   },
103
   },
104
   created() {
104
   created() {
105
-    debugger
106
     if (this.$route.query.taskName != '项目登记') {
105
     if (this.$route.query.taskName != '项目登记') {
107
       this.initForm();
106
       this.initForm();
108
       // this.form.projectId = this.taskForm.formId;
107
       // this.form.projectId = this.taskForm.formId;
112
   },
111
   },
113
   methods: {
112
   methods: {
114
     initForm() {
113
     initForm() {
115
-      debugger
116
       getProject(this.$route.query.formId).then(res => {
114
       getProject(this.$route.query.formId).then(res => {
117
         this.form = res.data;
115
         this.form = res.data;
118
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
116
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
148
       this.deptLeaderList = [];
146
       this.deptLeaderList = [];
149
       for (let v of val) {
147
       for (let v of val) {
150
         getUsersDeptLeaderByDept({ deptId: Number(v) }).then(res => {
148
         getUsersDeptLeaderByDept({ deptId: Number(v) }).then(res => {
151
-          debugger
152
           this.deptLeaderList.push(res.data.userId);
149
           this.deptLeaderList.push(res.data.userId);
153
           this.form.deptLeader = this.deptLeaderList;
150
           this.form.deptLeader = this.deptLeaderList;
154
         })
151
         })

+ 21
- 6
oa-ui/src/views/flowable/form/projectProcess/businessReview.vue Просмотреть файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
3
  * @Date: 2024-04-08 13:56:14
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-08 14:08:27
5
+ * @LastEditTime: 2024-04-09 17:51:14
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
9
     <el-form :model="form" :rules="rules" label-width="100px" :disabled="disabled">
9
     <el-form :model="form" :rules="rules" label-width="100px" :disabled="disabled">
10
-      
10
+      <el-form-item label="审核意见:">
11
+        <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="jyComment">
12
+        </el-input>
13
+      </el-form-item>
14
+      <el-form-item label="审核人:">
15
+        {{ name }}
16
+      </el-form-item>
17
+      <el-form-item label="审核时间:">
18
+        {{  }}
19
+      </el-form-item>
11
     </el-form>
20
     </el-form>
12
   </div>
21
   </div>
13
 </template>
22
 </template>
14
 
23
 
15
 <script>
24
 <script>
25
+import { mapGetters } from 'vuex';
16
 export default {
26
 export default {
27
+  computed: {
28
+    ...mapGetters(['name']),
29
+  },
17
   props: {
30
   props: {
18
     disabled: {
31
     disabled: {
19
       type: Boolean,
32
       type: Boolean,
26
   },
39
   },
27
   data() {
40
   data() {
28
     return {
41
     return {
29
-      form:{},
30
-      rules:{}
42
+      form: {},
43
+      rules: {},
44
+      jyComment: "",
45
+      jyApprovalTime: ""
31
     }
46
     }
32
   },
47
   },
33
   created() {
48
   created() {
34
-
49
+    this.jyApprovalTime = 
35
   },
50
   },
36
   methods: {
51
   methods: {
37
-    
52
+
38
   },
53
   },
39
 }
54
 }
40
 </script>
55
 </script>

+ 4
- 3
oa-ui/src/views/flowable/form/projectProcess/index.vue Просмотреть файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-08 14:01:51
5
+ * @LastEditTime: 2024-04-09 17:45:47
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
19
           <el-tab-pane label="项目预算" name="项目预算">
19
           <el-tab-pane label="项目预算" name="项目预算">
20
             
20
             
21
           </el-tab-pane>
21
           </el-tab-pane>
22
-          <el-tab-pane label="经营审核" name="经营审核"></el-tab-pane>
22
+          <el-tab-pane label="经营审核" name="经营审核">
23
+            <business-review :taskForm="taskForm" :disabled="taskName != '经营审核'" @goBack="goBack"></business-review>
24
+          </el-tab-pane>
23
           <el-tab-pane label="分管审核" name="分管审核"></el-tab-pane>
25
           <el-tab-pane label="分管审核" name="分管审核"></el-tab-pane>
24
           <el-tab-pane label="生产确认" name="生产确认"></el-tab-pane>
26
           <el-tab-pane label="生产确认" name="生产确认"></el-tab-pane>
25
           <el-tab-pane label="项目生产" name="项目生产"></el-tab-pane>
27
           <el-tab-pane label="项目生产" name="项目生产"></el-tab-pane>
144
       this.addOpen = true
146
       this.addOpen = true
145
     },
147
     },
146
     handleUpdate(row) {
148
     handleUpdate(row) {
147
-      debugger
148
       this.addForm = row;
149
       this.addForm = row;
149
       this.title = '修改项目信息';
150
       this.title = '修改项目信息';
150
       this.addOpen = true;
151
       this.addOpen = true;

+ 0
- 1
oa-ui/src/views/flowable/task/myProcess/index.vue Просмотреть файл

294
           const formData = {};
294
           const formData = {};
295
           formData.disabled = true;
295
           formData.disabled = true;
296
           formData.formBtns = false;
296
           formData.formBtns = false;
297
-          debugger
298
           formData.formId = formId
297
           formData.formId = formId
299
           if (row.id) {
298
           if (row.id) {
300
             variables.variables = formData;
299
             variables.variables = formData;

+ 4
- 2
oa-ui/src/views/flowable/task/todo/detail/index.vue Просмотреть файл

183
 import AddBudget from '@/views/oa/budget/addBudget.vue';
183
 import AddBudget from '@/views/oa/budget/addBudget.vue';
184
 import borrowForm from '@/views/flowable/form/borrowForm.vue';
184
 import borrowForm from '@/views/flowable/form/borrowForm.vue';
185
 import safeForm from '@/views/flowable/form/safeForm.vue';
185
 import safeForm from '@/views/flowable/form/safeForm.vue';
186
-import budgetIndex from '../../../form/budget/budget.vue';
186
+import budgetIndex from '@/views/flowable/form/budget/budget.vue';
187
+import businessReview from '@/views/flowable/form/projectProcess/businessReview.vue';
187
 
188
 
188
 export default {
189
 export default {
189
   name: "Record",
190
   name: "Record",
204
     AddBudget,
205
     AddBudget,
205
     borrowForm,
206
     borrowForm,
206
     safeForm,
207
     safeForm,
207
-    budgetIndex
208
+    budgetIndex,
209
+    businessReview
208
   },
210
   },
209
   props: {},
211
   props: {},
210
   data() {
212
   data() {

+ 19
- 21
oa-ui/src/views/oa/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-04-08 09:28:41
5
+ * @LastEditTime: 2024-04-09 17:19:08
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
14
         <div class="title">
14
         <div class="title">
15
           <div class="title-text">新增预算</div>
15
           <div class="title-text">新增预算</div>
16
           <div class="title-tips">
16
           <div class="title-tips">
17
-            请精准填写预算标准,对应的人员、设备、车辆可直接选择生成固定成本
17
+            请精准填写预算标准,对应的人员、设备、车辆可直接选择生成间接成本
18
           </div>
18
           </div>
19
         </div>
19
         </div>
20
       </div>
20
       </div>
21
       <div class="add-main">
21
       <div class="add-main">
22
         <el-steps :active="activeStep" align-center finish-status="success">
22
         <el-steps :active="activeStep" align-center finish-status="success">
23
-          <el-step title="选择项目" description="选择想要生成预算的项目"></el-step>
23
+          <el-step title="项目信息" description="需要预算的项目"></el-step>
24
           <el-step
24
           <el-step
25
-            title="选择人员、车辆和设备"
26
-            description="选择参与的人员、车辆和设备,得到固定成本"
25
+            title="间接成本明细"
26
+            description="选择参与的人员、车辆和设备,得到间接成本"
27
           ></el-step>
27
           ></el-step>
28
           <!-- <el-step title="选择车辆和设备" description="选择,得到对应预算"></el-step> -->
28
           <!-- <el-step title="选择车辆和设备" description="选择,得到对应预算"></el-step> -->
29
-          <el-step title="绩效和其他预算" description="包含绩效预算和其他预算"></el-step>
29
+          <el-step title="直接成本明细" description="包含绩效预算和其他预算"></el-step>
30
           <el-step title="生成预算表" description="生成最终的项目预算表"></el-step>
30
           <el-step title="生成预算表" description="生成最终的项目预算表"></el-step>
31
         </el-steps>
31
         </el-steps>
32
         <!-- 选择项目 -->
32
         <!-- 选择项目 -->
64
               <table border="1">
64
               <table border="1">
65
                 <tr>
65
                 <tr>
66
                   <td style="width: 250px">工作内容</td>
66
                   <td style="width: 250px">工作内容</td>
67
-                  <td>等级或比例尺</td>
68
-                  <td>单位</td>
69
-                  <td>工作量</td>
67
+                  <td style="width: 100px">等级或比例尺</td>
68
+                  <td style="width: 100px">单位</td>
69
+                  <td style="width: 100px">工作量</td>
70
                   <td style="width: 100px">要求完成时间</td>
70
                   <td style="width: 100px">要求完成时间</td>
71
-                  <td>备注</td>
71
+                  <td style="width: 100px">备注</td>
72
                 </tr>
72
                 </tr>
73
                 <tr v-for="(work, index) in workList" :key="index">
73
                 <tr v-for="(work, index) in workList" :key="index">
74
                   <td>
74
                   <td>
150
                   <td style="width: 80px">姓名</td>
150
                   <td style="width: 80px">姓名</td>
151
                   <td style="width: 100px">岗位工资</td>
151
                   <td style="width: 100px">岗位工资</td>
152
                   <td style="width: 110px">人员成本(天)</td>
152
                   <td style="width: 110px">人员成本(天)</td>
153
-                  <td style="width: 100px">进出场单价</td>
153
+                  <!-- <td style="width: 100px">进出场单价</td> -->
154
                   <td style="width: 100px">预算天数</td>
154
                   <td style="width: 100px">预算天数</td>
155
                   <td style="width: 100px">总额</td>
155
                   <td style="width: 100px">总额</td>
156
                 </tr>
156
                 </tr>
158
                   <td>{{ user.nickName }}</td>
158
                   <td>{{ user.nickName }}</td>
159
                   <td>{{ user.salary.salary }}</td>
159
                   <td>{{ user.salary.salary }}</td>
160
                   <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
160
                   <td>{{ parseFloat(user.salary.salary / 31).toFixed(2) }}</td>
161
-                  <td>
161
+                  <!-- <td>
162
                     <el-input
162
                     <el-input
163
                       v-model="user.inOutPrice"
163
                       v-model="user.inOutPrice"
164
                       placeholder="请输入进出场单价"
164
                       placeholder="请输入进出场单价"
165
                       @change="calculateUserTotal(user)"
165
                       @change="calculateUserTotal(user)"
166
                     ></el-input>
166
                     ></el-input>
167
-                  </td>
167
+                  </td> -->
168
                   <td>
168
                   <td>
169
                     <el-input
169
                     <el-input
170
                       v-model="user.days"
170
                       v-model="user.days"
175
                   <td class="staffCost">{{ user.staffCost }}</td>
175
                   <td class="staffCost">{{ user.staffCost }}</td>
176
                 </tr>
176
                 </tr>
177
                 <tr>
177
                 <tr>
178
-                  <td colspan="5">合计</td>
178
+                  <td colspan="4">合计</td>
179
                   <td>{{ budgetForm.staffCost }}</td>
179
                   <td>{{ budgetForm.staffCost }}</td>
180
                 </tr>
180
                 </tr>
181
               </table>
181
               </table>
300
                 </tr>
300
                 </tr>
301
               </table>
301
               </table>
302
             </el-form-item>
302
             </el-form-item>
303
-            <el-form-item label="固定成本小计:">
303
+            <el-form-item label="间接成本小计:">
304
               <el-tag type="danger" style="margin-right: 20px; font-size: 14px"
304
               <el-tag type="danger" style="margin-right: 20px; font-size: 14px"
305
                 >¥ {{ budgetForm.fixCost }}</el-tag
305
                 >¥ {{ budgetForm.fixCost }}</el-tag
306
               >
306
               >
316
             <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
316
             <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
317
           </el-breadcrumb>
317
           </el-breadcrumb>
318
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
318
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
319
-            <el-breadcrumb-item>固定成本小计</el-breadcrumb-item>
319
+            <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
320
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
320
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
321
           </el-breadcrumb>
321
           </el-breadcrumb>
322
           <el-form>
322
           <el-form>
366
             <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
366
             <el-breadcrumb-item>{{ projectForm.projectLeaderUser.nickName }}</el-breadcrumb-item>
367
           </el-breadcrumb>
367
           </el-breadcrumb>
368
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
368
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
369
-            <el-breadcrumb-item>固定成本小计</el-breadcrumb-item>
369
+            <el-breadcrumb-item>间接成本小计</el-breadcrumb-item>
370
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
370
             <el-breadcrumb-item>¥ {{ budgetForm.fixCost }}</el-breadcrumb-item>
371
           </el-breadcrumb>
371
           </el-breadcrumb>
372
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
372
           <el-breadcrumb separator-class="el-icon-arrow-right" style="margin: 15px 0">
481
         <chooseCar @chooseList="getChooseCar"></chooseCar>
481
         <chooseCar @chooseList="getChooseCar"></chooseCar>
482
       </el-dialog>
482
       </el-dialog>
483
       <!-- 选择设备对话框 -->
483
       <!-- 选择设备对话框 -->
484
-      <el-dialog title="选择设备" :visible.sync="openDevice" width="700px" append-to-body>
484
+      <el-dialog title="选择设备" :visible.sync="openDevice" width="750px" append-to-body>
485
         <chooseDevice @chooseList="getChooseDevice"></chooseDevice>
485
         <chooseDevice @chooseList="getChooseDevice"></chooseDevice>
486
       </el-dialog>
486
       </el-dialog>
487
     </div>
487
     </div>
662
     },
662
     },
663
     // 计算单个人员的成本
663
     // 计算单个人员的成本
664
     calculateUserTotal(user) {
664
     calculateUserTotal(user) {
665
-      let total =
666
-        (parseFloat(user.salary.salary / 31).toFixed(2) + Number(user.inOutPrice)) *
667
-        Number(user.days);
665
+      let total =parseFloat(user.salary.salary / 31).toFixed(2) * Number(user.days);
668
       this.$set(user, "staffCost", total.toFixed(2));
666
       this.$set(user, "staffCost", total.toFixed(2));
669
       this.getCost("staffCost", "staffCost", this.chooseUser);
667
       this.getCost("staffCost", "staffCost", this.chooseUser);
670
       this.getFixCost();
668
       this.getFixCost();

+ 16
- 5
oa-ui/src/views/oa/budget/components/chooseDevice.vue Просмотреть файл

1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-03-27 11:10:26
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-09 16:37:57
6
+-->
1
 <template>
7
 <template>
2
   <div>
8
   <div>
3
     <el-form :inline="true">
9
     <el-form :inline="true">
4
       <el-form-item label="设备名称:">
10
       <el-form-item label="设备名称:">
5
-        <el-input v-model="queryParams.name" clearable></el-input>
11
+        <el-select v-model="queryParams.name">
12
+          <el-option v-for="item in nameList" :key="item.value" :label="item.label" :value="item.value">
13
+          </el-option>
14
+        </el-select>
15
+        <!-- <el-input v-model="queryParams.name" clearable></el-input> -->
6
       </el-form-item>
16
       </el-form-item>
7
       <el-form-item label="品牌:">
17
       <el-form-item label="品牌:">
8
-        <el-input v-model="queryParams.brand" clearable></el-input>
18
+        <el-input v-model="queryParams.brand" clearable @keyup.enter.native="getList"></el-input>
9
       </el-form-item>
19
       </el-form-item>
10
       <el-form-item>
20
       <el-form-item>
11
         <el-button @click="getList" type="primary">搜索</el-button>
21
         <el-button @click="getList" type="primary">搜索</el-button>
30
         {{ item.name + '-' + item.series + '-' + item.brand }}
40
         {{ item.name + '-' + item.series + '-' + item.brand }}
31
       </el-tag>
41
       </el-tag>
32
       <div style="text-align: center;margin-top: 20px;">
42
       <div style="text-align: center;margin-top: 20px;">
33
-      <el-button type="primary" @click="confirmChoose">确认选择</el-button>
34
-      <el-button @click="clearChoose">清空选择</el-button>
35
-    </div>
43
+        <el-button type="primary" @click="confirmChoose">确认选择</el-button>
44
+        <el-button @click="clearChoose">清空选择</el-button>
45
+      </div>
36
     </div>
46
     </div>
37
   </div>
47
   </div>
38
 </template>
48
 </template>
51
       total: 0,
61
       total: 0,
52
       loading: false,
62
       loading: false,
53
       chooseList: [],
63
       chooseList: [],
64
+      nameList: [],
54
     }
65
     }
55
   },
66
   },
56
   created() {
67
   created() {

+ 115
- 112
oa-ui/src/views/oa/budget/components/chooseMoney.vue Просмотреть файл

1
 <template>
1
 <template>
2
   <div>
2
   <div>
3
-    <el-form-item label="项目概况:">
4
-      <table border="1">
5
-        <tr>
6
-          <td style="width: 250px">工作内容</td>
7
-          <td>等级或比例尺</td>
8
-          <td>单位</td>
9
-          <td>工作量</td>
10
-          <td style="width: 100px">要求完成时间</td>
11
-          <td>备注</td>
12
-        </tr>
13
-        <tr v-for="(work, index) in workList" :key="index">
14
-          <td>
15
-            {{ work.content }}
16
-          </td>
17
-          <td>
18
-            {{ work.scale }}
19
-          </td>
20
-          <td>
21
-            {{ work.unit }}
22
-          </td>
23
-          <td>
24
-            {{ work.workload }}
25
-          </td>
26
-          <td>
27
-            {{ work.deadline }}
28
-          </td>
29
-          <td>
30
-            {{ work.remark }}
31
-          </td>
32
-        </tr>
33
-      </table>
34
-    </el-form-item>
35
-    <el-form-item label="预结算:">
36
-      <table border="1">
37
-        <tr>
38
-          <td style="width: 100px">工作内容</td>
39
-          <td>工作类别</td>
40
-          <td>工作项目</td>
41
-          <!-- <td>项目细项</td> -->
42
-          <td>比例尺</td>
43
-          <td>地类类型</td>
44
-          <td style="width:90px;">单价</td>
45
-          <td style="width:90px;">总工作量</td>
46
-          <td style="width:70px;">系数</td>
47
-          <td style="min-width:70px;">总额</td>
48
-        </tr>
49
-        <tr v-for="(work, index) in workList" :key="index">
50
-          <td>
51
-            {{ work.content }}
52
-          </td>
53
-          <td>
54
-            <el-select v-model="work.workType" :style="{ width: '100%' }" :loading="work.workSelect.workTypeLoading"
55
-              @change="getWorkItemList(work, work.workType)">
56
-              <el-option v-for="item in work.workSelect.workTypeList" :key="item.value" :label="item.label"
57
-                :value="item.value">
58
-              </el-option>
59
-            </el-select>
60
-          </td>
61
-          <td>
62
-            <el-select v-model="work.workItem" :style="{ width: '100%' }" :remote="true"
63
-              @change="getScaleGradeList(work, work.workItem)">
64
-              <el-option v-for="item in work.workSelect.workItemList" :key="item.value" :label="item.label"
65
-                :value="item.value">
66
-              </el-option>
67
-            </el-select>
68
-          </td>
69
-          <td>
70
-            <el-select v-model="work.scaleGrade" :style="{ width: '100%' }"
71
-              @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
72
-              <el-option v-for="item in work.workSelect.scaleGradeList" :key="item.value" :label="item.label"
73
-                :value="item.value">
74
-              </el-option>
75
-            </el-select>
76
-          </td>
77
-          <td>
78
-            <el-select v-model="work.groundType" :style="{ width: '100%' }"
79
-              @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
80
-              <el-option key="一般地类" label="一般地类" value="一般地类">
81
-              </el-option>
82
-              <el-option key="复杂地类" label="复杂地类" value="复杂地类">
83
-              </el-option>
84
-            </el-select>
85
-          </td>
86
-          <td>
87
-            {{ work.price }} / {{ work.unit }}
88
-          </td>
89
-          <td>
90
-            {{ work.workload }}
91
-          </td>
92
-          <td>
93
-            <el-input v-model="work.coefficient" placeholder="请输入系数" @blur="getTotal(work)"></el-input>
94
-          </td>
95
-          <td class="workTotal">
96
-            {{ work.settle }}
97
-          </td>
98
-        </tr>
99
-        <tr>
100
-          <td colspan="8">合计</td>
101
-          <td>{{ settle }}</td>
102
-        </tr>
103
-      </table>
104
-      <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
105
-    </el-form-item>
106
-    <el-form-item label="预结算合计:">
107
-      <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥{{  settle }}</el-tag>
108
-    </el-form-item>
3
+    <el-form>
4
+      <el-form-item label="项目概况:">
5
+        <table border="1">
6
+          <tr>
7
+            <td style="width: 250px">工作内容</td>
8
+            <td style="width:120px;">等级或比例尺</td>
9
+            <td style="width:90px;">单位</td>
10
+            <td style="width:90px;">工作量</td>
11
+            <td style="width: 100px">要求完成时间</td>
12
+            <td style="width:90px;">备注</td>
13
+          </tr>
14
+          <tr v-for="(work, index) in workList" :key="index">
15
+            <td>
16
+              {{ work.content }}
17
+            </td>
18
+            <td>
19
+              {{ work.scale }}
20
+            </td>
21
+            <td>
22
+              {{ work.unit }}
23
+            </td>
24
+            <td>
25
+              {{ work.workload }}
26
+            </td>
27
+            <td>
28
+              {{ work.deadline }}
29
+            </td>
30
+            <td>
31
+              {{ work.remark }}
32
+            </td>
33
+          </tr>
34
+        </table>
35
+      </el-form-item>
36
+      <el-form-item label="预结算:">
37
+        <table border="1">
38
+          <tr>
39
+            <td style="width: 100px">工作内容</td>
40
+            <td>工作类别</td>
41
+            <td>工作项目</td>
42
+            <!-- <td>项目细项</td> -->
43
+            <td>比例尺</td>
44
+            <td>地类类型</td>
45
+            <td style="width:90px;">单价</td>
46
+            <td style="width:90px;">总工作量</td>
47
+            <td style="width:70px;">系数</td>
48
+            <td style="min-width:70px;">总额</td>
49
+          </tr>
50
+          <tr v-for="(work, index) in workList" :key="index">
51
+            <td>
52
+              {{ work.content }}
53
+            </td>
54
+            <td>
55
+              <el-select v-model="work.workType" :style="{ width: '100%' }" :loading="work.workSelect.workTypeLoading"
56
+                @change="getWorkItemList(work, work.workType)">
57
+                <el-option v-for="item in work.workSelect.workTypeList" :key="item.value" :label="item.label"
58
+                  :value="item.value">
59
+                </el-option>
60
+              </el-select>
61
+            </td>
62
+            <td>
63
+              <el-select v-model="work.workItem" :style="{ width: '100%' }" :remote="true"
64
+                @change="getScaleGradeList(work, work.workItem)">
65
+                <el-option v-for="item in work.workSelect.workItemList" :key="item.value" :label="item.label"
66
+                  :value="item.value">
67
+                </el-option>
68
+              </el-select>
69
+            </td>
70
+            <td>
71
+              <el-select v-model="work.scaleGrade" :style="{ width: '100%' }"
72
+                @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
73
+                <el-option v-for="item in work.workSelect.scaleGradeList" :key="item.value" :label="item.label"
74
+                  :value="item.value">
75
+                </el-option>
76
+              </el-select>
77
+            </td>
78
+            <td>
79
+              <el-select v-model="work.groundType" :style="{ width: '100%' }"
80
+                @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
81
+                <el-option key="一般地类" label="一般地类" value="0">
82
+                </el-option>
83
+                <el-option key="复杂地类" label="复杂地类" value="1">
84
+                </el-option>
85
+              </el-select>
86
+            </td>
87
+            <td>
88
+              {{ work.price }} / {{ work.unit }}
89
+            </td>
90
+            <td>
91
+              {{ work.workload }}
92
+            </td>
93
+            <td>
94
+              <el-input v-model="work.coefficient" placeholder="请输入系数" @blur="getTotal(work)"></el-input>
95
+            </td>
96
+            <td class="workTotal">
97
+              {{ work.settle }}
98
+            </td>
99
+          </tr>
100
+          <tr>
101
+            <td colspan="8">合计</td>
102
+            <td>{{ settle }}</td>
103
+          </tr>
104
+        </table>
105
+        <div style="color:red">tips:预结算表中的系数为:困难系统和调整系数相乘的值(1分制)。例如:困难系数1,调整系数0.8,最终系数为0.8</div>
106
+      </el-form-item>
107
+      <el-form-item label="预结算合计:">
108
+        <el-tag type="danger" style="margin-right:20px;font-size:14px;">¥{{ settle }}</el-tag>
109
+      </el-form-item>
110
+    </el-form>
111
+
109
   </div>
112
   </div>
110
 </template>
113
 </template>
111
 
114
 
147
       this.getWorkTypeList(work);
150
       this.getWorkTypeList(work);
148
     }
151
     }
149
   },
152
   },
150
-  mounted(){
153
+  mounted() {
151
     this.getSettleSum();
154
     this.getSettleSum();
152
   },
155
   },
153
   methods: {
156
   methods: {
186
             this.setValue(work, 'scaleGrade', '无');
189
             this.setValue(work, 'scaleGrade', '无');
187
           }
190
           }
188
           if (work.groundType == undefined) {
191
           if (work.groundType == undefined) {
189
-            this.setValue(work, 'groundType', '一般地类');
192
+            this.setValue(work, 'groundType', '0');
190
           }
193
           }
191
           this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
194
           this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
192
         }
195
         }
197
       if (work.scale) {
200
       if (work.scale) {
198
         this.setValue(work, 'scaleGrade', work.scale);
201
         this.setValue(work, 'scaleGrade', work.scale);
199
         if (work.groundType == undefined) {
202
         if (work.groundType == undefined) {
200
-          this.setValue(work, 'groundType', '一般地类');
203
+          this.setValue(work, 'groundType', '0');
201
         }
204
         }
202
         this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
205
         this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
203
       } else {
206
       } else {
212
               this.setValue(work, 'scaleGrade', '无');
215
               this.setValue(work, 'scaleGrade', '无');
213
             }
216
             }
214
             if (work.groundType == undefined) {
217
             if (work.groundType == undefined) {
215
-              this.setValue(work, 'groundType', '一般地类');
218
+              this.setValue(work, 'groundType', '0');
216
             }
219
             }
217
             this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
220
             this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
218
           }
221
           }
222
     },
225
     },
223
     /* 获取单价 */
226
     /* 获取单价 */
224
     getUnitPrice(work, workItem, subItem, scaleGrade, groundType) {
227
     getUnitPrice(work, workItem, subItem, scaleGrade, groundType) {
225
-      getUnitPrice({ workItem, subItem, scaleGrade, priceType: groundType }).then(res => {
228
+      getUnitPrice({ workItem, subItem, scaleGrade, groundType: groundType }).then(res => {
226
         if (res.length != 0) {
229
         if (res.length != 0) {
227
           work.priceId = res.data.id;
230
           work.priceId = res.data.id;
228
           this.setValue(work, 'price', res.data.price)
231
           this.setValue(work, 'price', res.data.price)
245
     },
248
     },
246
     getSettleSum() {
249
     getSettleSum() {
247
       let sum = 0;
250
       let sum = 0;
248
-      for(let work of this.workList){
251
+      for (let work of this.workList) {
249
         sum = sum + Number(work.settle)
252
         sum = sum + Number(work.settle)
250
       }
253
       }
251
       this.settle = sum.toFixed(2);
254
       this.settle = sum.toFixed(2);

+ 1
- 1
oa-ui/src/views/oa/budget/components/choosePeople.vue Просмотреть файл

11
         </el-select>
11
         </el-select>
12
       </el-form-item>
12
       </el-form-item>
13
       <el-form-item>
13
       <el-form-item>
14
-        <el-button @click="getList">搜索</el-button>
14
+        <el-button @click="getList" type="primary">搜索</el-button>
15
       </el-form-item>
15
       </el-form-item>
16
     </el-form>
16
     </el-form>
17
     <el-table ref="chooseUser" :data="userList" @selection-change="handleSelectionChange" :row-key="getRowKeys">
17
     <el-table ref="chooseUser" :data="userList" @selection-change="handleSelectionChange" :row-key="getRowKeys">

+ 0
- 1
oa-ui/src/views/oa/car/expense.vue Просмотреть файл

263
       });
263
       });
264
     },
264
     },
265
     handleDelete(row) {
265
     handleDelete(row) {
266
-      debugger
267
       const carExpenseIds = row.carExpenseId || this.ids;
266
       const carExpenseIds = row.carExpenseId || this.ids;
268
       this.$modal.confirm('是否确认删除车辆费用编号为"' + carExpenseIds + '"的数据项?').then(function () {
267
       this.$modal.confirm('是否确认删除车辆费用编号为"' + carExpenseIds + '"的数据项?').then(function () {
269
         return delCarExpense(carExpenseIds);
268
         return delCarExpense(carExpenseIds);

+ 0
- 1
oa-ui/src/views/oa/device/approval.vue Просмотреть файл

325
       });
325
       });
326
     },
326
     },
327
     handleDelete(row) {
327
     handleDelete(row) {
328
-      debugger
329
       const deviceApprovalIds = row.deviceApprovalId || this.ids;
328
       const deviceApprovalIds = row.deviceApprovalId || this.ids;
330
       this.$modal.confirm('是否确认删除设备使用费用编号为"' + deviceApprovalIds + '"的数据项?').then(function () {
329
       this.$modal.confirm('是否确认删除设备使用费用编号为"' + deviceApprovalIds + '"的数据项?').then(function () {
331
         return delDeviceApproval(deviceApprovalIds);
330
         return delDeviceApproval(deviceApprovalIds);

+ 2
- 3
oa-ui/src/views/oa/project/index.vue Просмотреть файл

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-03-28 10:50:22
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-09 17:39:50
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
294
       this.addOpen = true
294
       this.addOpen = true
295
     },
295
     },
296
     handleUpdate(row) {
296
     handleUpdate(row) {
297
-      debugger
298
       this.addForm = row;
297
       this.addForm = row;
299
       this.title = '修改项目信息';
298
       this.title = '修改项目信息';
300
       this.addOpen = true;
299
       this.addOpen = true;

Загрузка…
Отмена
Сохранить