Bläddra i källkod

修改项目生产、用车审批

余思翰 1 år sedan
förälder
incheckning
2f80a44aff

+ 6
- 4
oa-ui/src/views/flowable/form/budget/addBudget.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-25 15:05:59
3
  * @Date: 2024-03-25 15:05:59
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-22 18:48:24
5
+ * @LastEditTime: 2024-05-23 17:40:09
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
162
             <!-- 选择车辆 -->
162
             <!-- 选择车辆 -->
163
             <el-form-item label="选择车辆:">
163
             <el-form-item label="选择车辆:">
164
               <span v-if="chooseCar.length != 0">
164
               <span v-if="chooseCar.length != 0">
165
-                <el-tag effect="plain" type="" v-for="item in chooseCar" style="margin: 5px; font-size: 14px"
165
+                <el-tag effect="plain" v-for="item in chooseCar" style="margin: 5px; font-size: 14px"
166
                   :key="item.licensePlate">
166
                   :key="item.licensePlate">
167
                   {{ item.licensePlate + item.brand }}
167
                   {{ item.licensePlate + item.brand }}
168
                 </el-tag>
168
                 </el-tag>
372
         </div>
372
         </div>
373
         <el-divider></el-divider>
373
         <el-divider></el-divider>
374
         <div class="btn">
374
         <div class="btn">
375
-          <el-button @click="activeStep -= 1" :disabled="activeStep == 0">上一步</el-button>
375
+          <el-button @click="activeStep -= 1" :disabled="activeStep == 0 || activeStep == 4">上一步</el-button>
376
           <el-button @click="confirmStep" type="primary" v-if="activeStep < 4">下一步</el-button>
376
           <el-button @click="confirmStep" type="primary" v-if="activeStep < 4">下一步</el-button>
377
           <el-button @click="submitComplete" type="primary" v-if="activeStep == 4">完成</el-button>
377
           <el-button @click="submitComplete" type="primary" v-if="activeStep == 4">完成</el-button>
378
         </div>
378
         </div>
701
       }
701
       }
702
       for (let work of form.contentList) {
702
       for (let work of form.contentList) {
703
         work.budgetId = form.budgetId;
703
         work.budgetId = form.budgetId;
704
-        addBudgetSettle(work)
704
+        addBudgetSettle(work).then(res=>{
705
+          this.$message.success('预算添加成功')
706
+        })
705
       }
707
       }
706
     },
708
     },
707
     calculateThatCost() {
709
     calculateThatCost() {

+ 22
- 14
oa-ui/src/views/flowable/form/budget/budgetInfo.vue Visa fil

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-05-22 19:10:22
5
+ * @LastEditTime: 2024-05-23 11:21:44
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
9
     <h2 style="text-align: center">项目直接生产成本预算表</h2>
9
     <h2 style="text-align: center">项目直接生产成本预算表</h2>
10
+    <p style="text-align: right;padding-right:80px;">编制人:{{ budgetForm.compilerUser? budgetForm.compilerUser.nickName: '' }}</p>
10
     <table border="1" class="table">
11
     <table border="1" class="table">
11
       <tr>
12
       <tr>
12
         <td style="width: 100px;">项目名称</td>
13
         <td style="width: 100px;">项目名称</td>
13
         <td colspan="6">{{ budgetForm.project ? budgetForm.project.projectName : '' }}</td>
14
         <td colspan="6">{{ budgetForm.project ? budgetForm.project.projectName : '' }}</td>
14
-        <td>项目编号</td>
15
+        <td style="min-width: 100px;">项目编号</td>
15
         <td colspan="1">{{ budgetForm.project ? budgetForm.project.projectNumber : '' }}</td>
16
         <td colspan="1">{{ budgetForm.project ? budgetForm.project.projectNumber : '' }}</td>
16
       </tr>
17
       </tr>
17
       <tr>
18
       <tr>
23
         <td>单位</td>
24
         <td>单位</td>
24
         <td>系数</td>
25
         <td>系数</td>
25
         <td>金额</td>
26
         <td>金额</td>
26
-        <td style="width: 250px;">备注</td>
27
+        <td style="min-width: 150px;">备注</td>
27
       </tr>
28
       </tr>
28
       <tr v-for="work in workList">
29
       <tr v-for="work in workList">
29
         <td>{{ work.content }}</td>
30
         <td>{{ work.content }}</td>
30
-        <td>{{ work.cmcPrice ? work.cmcPrice.workItem:''}}</td>
31
+        <td>{{ work.cmcPrice ? work.cmcPrice.workItem : '' }}</td>
31
         <td>{{ work.workload }}</td>
32
         <td>{{ work.workload }}</td>
32
         <td>{{ work.price }}</td>
33
         <td>{{ work.price }}</td>
33
         <td>{{ work.unit }}</td>
34
         <td>{{ work.unit }}</td>
132
         <td colspan="3" class="head">成本合计</td>
133
         <td colspan="3" class="head">成本合计</td>
133
         <td colspan="5" class="head">{{ budgetForm.totalBudget }}</td>
134
         <td colspan="5" class="head">{{ budgetForm.totalBudget }}</td>
134
       </tr>
135
       </tr>
135
-      <tr v-if="budgetForm.contract">
136
+      <tr v-if="contract.contractId">
136
         <td colspan="3" class="head">利润</td>
137
         <td colspan="3" class="head">利润</td>
137
         <td colspan="2" class="head">{{ profit }}</td>
138
         <td colspan="2" class="head">{{ profit }}</td>
138
         <td colspan="3" class="head">合同总价约</td>
139
         <td colspan="3" class="head">合同总价约</td>
139
-        <td colspan="1" class="head">{{ budgetForm.contract ? budgetForm.contract.amount : '' }}</td>
140
+        <td colspan="1" class="head">{{ contract.contractId ? contract.amount : '' }}</td>
140
       </tr>
141
       </tr>
141
     </table>
142
     </table>
142
   </div>
143
   </div>
150
 import { listBudgetStaff } from "@/api/oa/budget/budgetStaff";
151
 import { listBudgetStaff } from "@/api/oa/budget/budgetStaff";
151
 import { listProjectWork } from "@/api/oa/project/projectWork";
152
 import { listProjectWork } from "@/api/oa/project/projectWork";
152
 import { mapGetters } from 'vuex';
153
 import { mapGetters } from 'vuex';
154
+import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
155
+import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
153
 export default {
156
 export default {
154
   computed: {
157
   computed: {
155
     ...mapGetters(["name", "userId"]),
158
     ...mapGetters(["name", "userId"]),
170
       carLen: 1,
173
       carLen: 1,
171
       deviceLen: 1,
174
       deviceLen: 1,
172
       workLen: 1,
175
       workLen: 1,
173
-      totalBudget: 0,
174
       chooseCar: [],
176
       chooseCar: [],
175
       chooseDevice: [],
177
       chooseDevice: [],
176
       chooseUser: [],
178
       chooseUser: [],
177
       workList: [],
179
       workList: [],
178
-      workContentList: []
180
+      workContentList: [],
181
+      contract: {},
182
+      profit: 0
179
     };
183
     };
180
   },
184
   },
181
   created() {
185
   created() {
182
     this.initBudgetForm();
186
     this.initBudgetForm();
183
-    this.totalBudget = (
184
-      (Number(this.budgetForm.directExpense) + Number(this.budgetForm.fixCost)) *
185
-      1.2
186
-    ).toFixed(2);
187
   },
187
   },
188
   methods: {
188
   methods: {
189
     initBudgetForm() {
189
     initBudgetForm() {
204
           this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
204
           this.budgetForm.inOutPriceSum = Number(days) * Number(this.chooseUser[0].inOutPrice)
205
         })
205
         })
206
         listBudgetCar({ budgetId: this.budgetForm.budgetId }).then(res => {
206
         listBudgetCar({ budgetId: this.budgetForm.budgetId }).then(res => {
207
-          console.log(res.rows);
208
           this.chooseCar = res.rows;
207
           this.chooseCar = res.rows;
209
           this.carLen = res.rows.length + 1;
208
           this.carLen = res.rows.length + 1;
210
         })
209
         })
225
           }
224
           }
226
           this.getProjectWorkList();
225
           this.getProjectWorkList();
227
         })
226
         })
227
+        listProjectContract({ projectId: this.taskForm.formId }).then(res => {
228
+          console.log(res);
229
+          if (res.total == 1) {
230
+            getContract(res.rows[0].contractId).then(response => {
231
+              this.contract = response.data;
232
+              this.profit = Number(this.contract.amount) - Number(this.budgetForm.totalBudget)
233
+            })
234
+          }
235
+        })
228
       });
236
       });
229
     },
237
     },
230
     getProjectWorkList() {
238
     getProjectWorkList() {
231
-      listProjectWork({ projectId: this.$route.query.formId }).then(res => {
239
+      listProjectWork({ projectId: this.taskForm.formId }).then(res => {
232
         this.workContentList = res.rows;
240
         this.workContentList = res.rows;
233
       })
241
       })
234
     },
242
     },

+ 3
- 3
oa-ui/src/views/flowable/form/budget/components/chooseCar.vue Visa fil

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-27 11:10:16
3
  * @Date: 2024-03-27 11:10:16
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-05-22 17:55:15
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-23 15:37:34
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
20
     <el-table ref="chooseCar" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKeys">
20
     <el-table ref="chooseCar" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKeys">
21
       <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
21
       <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
22
       <el-table-column label="车牌号" align="center" prop="licensePlate" />
22
       <el-table-column label="车牌号" align="center" prop="licensePlate" />
23
-      <el-table-column label="驾驶员" align="center" prop="driver" />
23
+      <el-table-column label="驾驶员" align="center" prop="driverUser.nickName" />
24
       <el-table-column label="品牌" align="center" prop="brand" />
24
       <el-table-column label="品牌" align="center" prop="brand" />
25
       <el-table-column label="单日成本" align="center" prop="dayCost" />
25
       <el-table-column label="单日成本" align="center" prop="dayCost" />
26
     </el-table>
26
     </el-table>

+ 15
- 5
oa-ui/src/views/flowable/form/budget/components/choosePeople.vue Visa fil

6
       </el-form-item>
6
       </el-form-item>
7
       <el-form-item label="部门:">
7
       <el-form-item label="部门:">
8
         <el-select v-model="queryParams.deptId" clearable @change="getList">
8
         <el-select v-model="queryParams.deptId" clearable @change="getList">
9
-          <el-option v-for="item in deptList" :key="item.id" :label="item.label" :value="item.id">
9
+          <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId">
10
           </el-option>
10
           </el-option>
11
         </el-select>
11
         </el-select>
12
       </el-form-item>
12
       </el-form-item>
53
 
53
 
54
 <script>
54
 <script>
55
 import { listUser, deptTreeSelect } from "@/api/system/user";
55
 import { listUser, deptTreeSelect } from "@/api/system/user";
56
+import { listDept } from "@/api/system/dept";
56
 export default {
57
 export default {
57
   dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_user_titles', 'sys_user_certificates', 'sys_user_pmlevel', 'sys_user_postlevel', 'sys_user_salarylevel'],
58
   dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_user_titles', 'sys_user_certificates', 'sys_user_pmlevel', 'sys_user_postlevel', 'sys_user_salarylevel'],
59
+  props: {
60
+    deptId: {
61
+      type: Number
62
+    }
63
+  },
58
   data() {
64
   data() {
59
     return {
65
     return {
60
       queryParams: {
66
       queryParams: {
70
     }
76
     }
71
   },
77
   },
72
   created() {
78
   created() {
79
+    this.queryParams.deptId = this.deptId
73
     this.getList();
80
     this.getList();
74
     this.getDeptTree();
81
     this.getDeptTree();
75
   },
82
   },
84
     },
91
     },
85
     /** 查询部门 */
92
     /** 查询部门 */
86
     getDeptTree() {
93
     getDeptTree() {
87
-      deptTreeSelect().then(response => {
88
-        this.deptOptions = response.data;
89
-        this.deptList = response.data[0].children
90
-      });
94
+      // deptTreeSelect().then(response => {
95
+      //   this.deptOptions = response.data;
96
+      //   this.deptList = response.data[0].children
97
+      // });
98
+      listDept().then(res => {
99
+        this.deptList = res.data.filter(item => item.deptName != '四川中水成勘院测绘工程有限责任公司')
100
+      })
91
     },
101
     },
92
     // 格式化表格里的薪资岗级
102
     // 格式化表格里的薪资岗级
93
     formatLevel(postLevel, salaryLevel, postLevelList, salaryLevelList) {
103
     formatLevel(postLevel, salaryLevel, postLevelList, salaryLevelList) {

+ 103
- 51
oa-ui/src/views/flowable/form/oa/carForm.vue Visa fil

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-29 11:44:28
3
  * @Date: 2024-02-29 11:44:28
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-05-22 18:54:31
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-05-23 19:22:26
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
46
                 </el-radio-group>
46
                 </el-radio-group>
47
               </el-form-item>
47
               </el-form-item>
48
               <el-form-item label="项目编号:" prop="projectId" v-if="form.carUsage == '0'">
48
               <el-form-item label="项目编号:" prop="projectId" v-if="form.carUsage == '0'">
49
-                <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
49
+                <el-button type="primary" size="mini" @click="openProject = true"
50
+                  v-if="taskName == '用车申请'">选择项目</el-button>
51
+                <!-- <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
50
                   :disabled="taskName != '用车申请'" clearable>
52
                   :disabled="taskName != '用车申请'" clearable>
51
                   <el-option v-for="item in projectList" :key="item.value" :label="item.projectNumber"
53
                   <el-option v-for="item in projectList" :key="item.value" :label="item.projectNumber"
52
                     :value="item.projectId">
54
                     :value="item.projectId">
53
                   </el-option>
55
                   </el-option>
54
-                </el-select>
56
+                </el-select> -->
55
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
57
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
56
                   <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
58
                   <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
57
-                  }}</el-descriptions-item>
59
+                    }}</el-descriptions-item>
58
                   <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
60
                   <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
59
-                  }}</el-descriptions-item>
61
+                    }}</el-descriptions-item>
60
                   <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
62
                   <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
61
-                    chooseProject.projectLeaderUser.nickName : ''
62
-                  }}</el-descriptions-item>
63
+    chooseProject.projectLeaderUser.nickName : ''
64
+                    }}</el-descriptions-item>
63
                   <el-descriptions-item label="承担部门" label-class-name="my-label">
65
                   <el-descriptions-item label="承担部门" label-class-name="my-label">
64
                     <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
66
                     <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
65
                   </el-descriptions-item>
67
                   </el-descriptions-item>
66
                   <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
68
                   <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
67
-                  }}</el-descriptions-item>
69
+                    }}</el-descriptions-item>
68
                 </el-descriptions>
70
                 </el-descriptions>
69
               </el-form-item>
71
               </el-form-item>
70
               <el-form-item label="用车事由:" prop="applyReason">
72
               <el-form-item label="用车事由:" prop="applyReason">
75
               <el-row>
77
               <el-row>
76
                 <el-col :span="7" :xs="24">
78
                 <el-col :span="7" :xs="24">
77
                   <el-form-item label="乘车人数:" prop="passengers">
79
                   <el-form-item label="乘车人数:" prop="passengers">
78
-                    <el-input-number v-model="form.passengers" :min="1" :disabled="taskName != '用车申请'"></el-input-number>
80
+                    <el-input-number v-model="form.passengers" :min="1"
81
+                      :disabled="taskName != '用车申请'"></el-input-number>
79
                   </el-form-item>
82
                   </el-form-item>
80
                 </el-col>
83
                 </el-col>
81
                 <el-col :span="6" :xs="24">
84
                 <el-col :span="6" :xs="24">
195
                 <el-checkbox-group v-model="form.cars" :disabled="taskName != '安排用车'">
198
                 <el-checkbox-group v-model="form.cars" :disabled="taskName != '安排用车'">
196
                   <el-checkbox :label="item.carId" v-for="item in carList" :key="item.carId" :value="item.carId"
199
                   <el-checkbox :label="item.carId" v-for="item in carList" :key="item.carId" :value="item.carId"
197
                     v-if="item.remark == null">
200
                     v-if="item.remark == null">
198
-                    {{ item.licensePlate }}
201
+                    {{ item.licensePlate + item.brand }}
199
                   </el-checkbox>
202
                   </el-checkbox>
200
                 </el-checkbox-group>
203
                 </el-checkbox-group>
201
               </el-form-item>
204
               </el-form-item>
202
               <el-form-item label="驾驶员:">
205
               <el-form-item label="驾驶员:">
203
-                <!-- <el-checkbox-group v-model="form.drivers" :disabled="taskName != '安排用车'"
204
-                  v-if="chooseOtherDrivers == false">
205
-                  <el-checkbox :label="item.userId" v-for="item in driverList" :key="item.userId" :value="item.userId">
206
-                    {{ item.nickName }}
207
-                  </el-checkbox>
208
-                </el-checkbox-group> -->
209
-                <el-select v-model="form.drivers" filterable multiple clearable style="width:220px"
210
-                  :disabled="taskName != '安排用车'">
206
+                <el-tag :key="'d' + index" class="mr10" v-for="item, index in chooseDriver">{{ item.nickName }}</el-tag>
207
+                <el-button v-if="taskName == '安排用车'" icon="el-icon-plus" @click="openCar = true"></el-button>
208
+                <el-select v-if="taskName != '安排用车'" v-model="form.drivers" filterable multiple clearable
209
+                  style="width:420px" :disabled="taskName != '安排用车'">
211
                   <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
210
                   <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
212
                     v-if="item.nickName != 'admin'">
211
                     v-if="item.nickName != 'admin'">
213
                   </el-option>
212
                   </el-option>
219
             </el-row>
218
             </el-row>
220
             <el-row style="text-align: center;" v-else>
219
             <el-row style="text-align: center;" v-else>
221
               <el-button type="primary" :disabled="taskName == ''" @click="completeApply">{{ taskName == '申请确认' ? "确认" :
220
               <el-button type="primary" :disabled="taskName == ''" @click="completeApply">{{ taskName == '申请确认' ? "确认" :
222
-                "完成审批" }}</el-button>
221
+    "完成审批" }}</el-button>
223
             </el-row>
222
             </el-row>
224
           </div>
223
           </div>
225
         </el-card>
224
         </el-card>
234
         </el-card>
233
         </el-card>
235
       </el-col>
234
       </el-col>
236
     </el-row>
235
     </el-row>
237
-
236
+    <el-dialog title="选择驾驶员" :visible.sync="openCar" width="700px" append-to-body>
237
+      <choose-user :deptId="200" @chooseUser="getChooseDriver"></choose-user>
238
+    </el-dialog>
239
+    <el-dialog title="选择项目" :visible.sync="openProject" width="70%" append-to-body>
240
+      <project-choose @chooseProject="confirmProject"></project-choose>
241
+    </el-dialog>
238
   </div>
242
   </div>
239
 </template>
243
 </template>
240
 
244
 
250
 import { flowXmlAndNode } from "@/api/flowable/definition";
254
 import { flowXmlAndNode } from "@/api/flowable/definition";
251
 import { listUser } from '@/api/system/user';
255
 import { listUser } from '@/api/system/user';
252
 import { getUserByRole } from "@/api/system/role";
256
 import { getUserByRole } from "@/api/system/role";
257
+import chooseUser from "@/views/flowable/form/budget/components/choosePeople.vue";
258
+import projectChoose from '@/views/flowable/form/components/chooseProject.vue';
253
 export default {
259
 export default {
254
   components: {
260
   components: {
255
-    flow
261
+    flow,
262
+    chooseUser,
263
+    projectChoose
256
   },
264
   },
257
   props: {
265
   props: {
258
     taskName: {
266
     taskName: {
348
       flowData: {},
356
       flowData: {},
349
       dept: 0,
357
       dept: 0,
350
       dgtAdvice: '审核意见',//党工团审核意见的label
358
       dgtAdvice: '审核意见',//党工团审核意见的label
351
-      userList: []
359
+      userList: [],
360
+      chooseDriver: [],
361
+      openCar: false,
362
+      openProject: false,
352
     }
363
     }
353
   },
364
   },
354
   mounted() {
365
   mounted() {
372
           let data = res.data;
383
           let data = res.data;
373
           // 初始化党工团审核意见的label
384
           // 初始化党工团审核意见的label
374
           if (data.carUsage == '2') {
385
           if (data.carUsage == '2') {
386
+            this.dept = 0;
375
             this.dgtAdvice = '工会审核意见'
387
             this.dgtAdvice = '工会审核意见'
376
           } else if (data.carUsage == '3') {
388
           } else if (data.carUsage == '3') {
389
+            this.dept = 0;
377
             this.dgtAdvice = '党委审核意见'
390
             this.dgtAdvice = '党委审核意见'
378
-          } else {
391
+          } else if (data.carUsage == '4') {
392
+            this.dept = 0;
379
             this.dgtAdvice = '团委审核意见'
393
             this.dgtAdvice = '团委审核意见'
380
           }
394
           }
381
           if (res.data.drivers == null || res.data.drivers == undefined || res.data.drivers == "") {
395
           if (res.data.drivers == null || res.data.drivers == undefined || res.data.drivers == "") {
399
             data.cars = arr;
413
             data.cars = arr;
400
           }
414
           }
401
           this.form = data;
415
           this.form = data;
416
+          console.log(this.form);
402
           if (data.projectId) {
417
           if (data.projectId) {
403
             getProject(data.projectId).then(response => {
418
             getProject(data.projectId).then(response => {
404
               this.chooseProject = response.data;
419
               this.chooseProject = response.data;
413
       this.$refs['carForm'].validate((valid) => {
428
       this.$refs['carForm'].validate((valid) => {
414
         if (valid) {
429
         if (valid) {
415
           this.form.carApplyId = this.taskForm.formId;
430
           this.form.carApplyId = this.taskForm.formId;
431
+          this.form.drivers = this.chooseDriver;
416
           let formData = new FormData();
432
           let formData = new FormData();
417
           let jsonForm = JSON.stringify(this.form);
433
           let jsonForm = JSON.stringify(this.form);
418
           formData.append("form", jsonForm);
434
           formData.append("form", jsonForm);
424
             this.form.drivers = '';
440
             this.form.drivers = '';
425
             addCarApproval(this.form);
441
             addCarApproval(this.form);
426
           }
442
           }
427
-          // 获取下一个流程节点
443
+          // // 获取下一个流程节点
428
           getNextFlowNode(params).then(res => {
444
           getNextFlowNode(params).then(res => {
429
             const data = res.data;
445
             const data = res.data;
430
             this.taskForm.formData = formData;
446
             this.taskForm.formData = formData;
451
     // 获取下一个审批人
467
     // 获取下一个审批人
452
     getNextFlowNodeApproval() {
468
     getNextFlowNodeApproval() {
453
       if (this.taskName == '用车申请') {
469
       if (this.taskName == '用车申请') {
454
-        getUsersDeptLeader({ userId: this.$store.getters.userId }).then(res => {
455
-          this.$set(this.taskForm.variables, "dept", this.dept);
456
-          if (res.data && this.dept != 0) {
457
-            this.$set(this.taskForm.variables, "approval", res.data.userId);
470
+        this.$set(this.taskForm.variables, "dept", this.dept);
471
+        if (this.dept == 102) {
472
+          getUserByPost({ postName: '总经理' }).then(result => {
473
+            this.$set(this.taskForm.variables, "approval", result.data[0].userId);
458
             complete(this.taskForm).then(response => {
474
             complete(this.taskForm).then(response => {
459
               this.$modal.msgSuccess(response.msg);
475
               this.$modal.msgSuccess(response.msg);
460
               this.$emit('goBack')
476
               this.$emit('goBack')
461
             })
477
             })
462
-          } else if (this.dept == 102) {
463
-            getUserByPost({ postName: '总经理' }).then(result => {
464
-              this.$set(this.taskForm.variables, "approval", result.data[0].userId);
465
-              complete(this.taskForm).then(response => {
466
-                this.$modal.msgSuccess(response.msg);
467
-                this.$emit('goBack')
468
-              })
478
+          })
479
+        }
480
+        else if (this.dept == 0) {
481
+          let postName = this.getChooseType()
482
+          getUserByPost({ postName: postName }).then(result => {
483
+            this.$set(this.taskForm.variables, "approval", result.data[0].userId);
484
+            complete(this.taskForm).then(response => {
485
+              this.$modal.msgSuccess(response.msg);
486
+              this.$emit('goBack')
469
             })
487
             })
470
-          } else {
471
-            let postName = this.getChooseType()
472
-            getUserByPost({ postName: postName }).then(result => {
473
-              this.$set(this.taskForm.variables, "approval", result.data[0].userId);
488
+          })
489
+        }
490
+        else {
491
+          getUsersDeptLeader({ userId: this.$store.getters.userId }).then(res => {
492
+            debugger
493
+            if (res.data) {
494
+              this.$set(this.taskForm.variables, "approval", res.data.userId);
474
               complete(this.taskForm).then(response => {
495
               complete(this.taskForm).then(response => {
475
                 this.$modal.msgSuccess(response.msg);
496
                 this.$modal.msgSuccess(response.msg);
476
                 this.$emit('goBack')
497
                 this.$emit('goBack')
477
               })
498
               })
478
-            })
479
-          }
480
-        })
499
+            }
500
+          })
501
+        }
481
       } else if (this.taskName == '部门审核') {
502
       } else if (this.taskName == '部门审核') {
482
         getUsersManageLeader({ userId: this.$store.getters.userId }).then(res => {
503
         getUsersManageLeader({ userId: this.$store.getters.userId }).then(res => {
483
           let userId = res.data.userId;
504
           let userId = res.data.userId;
556
         this.userList = res.rows
577
         this.userList = res.rows
557
       })
578
       })
558
     },
579
     },
580
+
581
+    getChooseDriver(val) {
582
+      this.chooseDriver = val;
583
+      if (val.length != 0) {
584
+        let drivers = []
585
+        for (let d of this.chooseDriver) {
586
+          drivers.push(d.userId)
587
+        }
588
+        this.form.drivers = drivers;
589
+      }
590
+      this.openCar = false;
591
+    },
592
+    confirmProject(val) {
593
+      if (val.length > 1) {
594
+        this.$message.error('请选择一个项目');
595
+        return
596
+      } else if (val.length == 1) {
597
+        this.chooseProject = val[0]
598
+        this.isSelect = true
599
+        this.form.projectId = val[0].projectId
600
+      }
601
+      this.openProject = false
602
+    },
559
     calculateDay() {
603
     calculateDay() {
560
       if (this.form.beginDate && this.form.endDate) {
604
       if (this.form.beginDate && this.form.endDate) {
561
         let y1 = new Date(this.form.beginDate);
605
         let y1 = new Date(this.form.beginDate);
591
     showFormItem(name) {
635
     showFormItem(name) {
592
       let isShow = false;
636
       let isShow = false;
593
       if (name == '部门审核')
637
       if (name == '部门审核')
594
-        isShow = (this.dept > 102 && this.taskName == '用车申请') || (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.deptUserId != null);
638
+        isShow = (this.dept > 102 && this.taskName == '用车申请') || (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.deptUserId != null)
639
+          || (this.dept > 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
595
       else if (name == '分管审核')
640
       else if (name == '分管审核')
596
-        isShow = (this.dept > 102 && this.taskName == '用车申请') || (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.managerUserId != null);
641
+        isShow = (this.dept > 102 && this.taskName == '用车申请') || (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.managerUserId != null)
642
+          || (this.dept > 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
597
       else if (name == '党工团审核')
643
       else if (name == '党工团审核')
598
-        isShow = (this.dept == 0 && this.taskName == '用车申请') || this.taskName == '党工团审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.unionUserId != null);
644
+        isShow = (this.dept == 0 && this.taskName == '用车申请') || this.taskName == '党工团审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.unionUserId != null)
645
+          || (this.dept == 0 && this.taskName == '' && (this.form.carUsage == 2 || this.form.carUsage == 3 || this.form.carUsage == 4));
599
       else if (name == '总经理审核')
646
       else if (name == '总经理审核')
600
-        isShow = (this.dept == 102 && this.taskName == '用车申请') || this.taskName == '总经理审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.gmUserId != null);
647
+        isShow = (this.dept == 102 && this.taskName == '用车申请') || this.taskName == '总经理审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.gmUserId != null)
648
+          || (this.dept == 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
601
       else if (name == '部门审核签名')
649
       else if (name == '部门审核签名')
602
-        isShow = (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.deptUserId != null);
650
+        isShow = (this.taskName == '部门审核' || this.taskName == '分管审核') || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.deptUserId != null)
651
+          || (this.dept > 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
603
       else if (name == '分管审核签名')
652
       else if (name == '分管审核签名')
604
-        isShow = this.taskName == '分管审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.managerUserId != null);
653
+        isShow = this.taskName == '分管审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.managerUserId != null)
654
+          || (this.dept > 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
605
       else if (name == '党工团审核签名')
655
       else if (name == '党工团审核签名')
606
-        isShow = this.taskName == '党工团审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.unionUserId != null);
656
+        isShow = this.taskName == '党工团审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.unionUserId != null)
657
+          || (this.dept == 0 && this.taskName == '' && (this.form.carUsage == 2 || this.form.carUsage == 3 || this.form.carUsage == 4));
607
       else if (name == '总经理审核签名')
658
       else if (name == '总经理审核签名')
608
-        isShow = this.taskName == '总经理审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.gmUserId != null);
659
+        isShow = this.taskName == '总经理审核' || ((this.taskName == '安排用车' || this.taskName == '申请确认') && this.form.gmUserId != null)
660
+          || (this.dept == 102 && this.taskName == '' && (this.form.carUsage == '0' || this.form.carUsage == '1'));
609
       return isShow;
661
       return isShow;
610
     },
662
     },
611
   },
663
   },

+ 12
- 16
oa-ui/src/views/flowable/form/projectProcess/addproject.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-18 11:00:04
3
  * @Date: 2024-03-18 11:00:04
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-22 13:51:57
5
+ * @LastEditTime: 2024-05-23 10:23:07
6
 -->
6
 -->
7
-<!--
8
- * @Author: ysh
9
- * @Date: 2024-02-27 14:49:15
10
- * @LastEditors: Please set LastEditors
11
- * @LastEditTime: 2024-05-22 11:00:26
12
--->
13
-
14
 <template>
7
 <template>
15
   <div class="project-wrapper">
8
   <div class="project-wrapper">
16
     <!-- 项目登记 -->
9
     <!-- 项目登记 -->
175
   },
168
   },
176
   data() {
169
   data() {
177
     return {
170
     return {
178
-      openContract:false,
171
+      openContract: false,
179
       registerTime: undefined,
172
       registerTime: undefined,
180
       // 查询参数
173
       // 查询参数
181
       queryParams: {
174
       queryParams: {
195
         projectRegistrant: "",
188
         projectRegistrant: "",
196
         projectSource: "0"
189
         projectSource: "0"
197
       },
190
       },
198
-      chooseContractInfo:{},
191
+      chooseContractInfo: {},
199
       contractCode: "",
192
       contractCode: "",
200
       contractNumber: "",
193
       contractNumber: "",
201
       rules: {
194
       rules: {
249
         this.loading = false;
242
         this.loading = false;
250
       });
243
       });
251
     },
244
     },
252
-    
245
+
253
     getProjectInfo() {
246
     getProjectInfo() {
254
       getProject(this.taskForm.formId).then(res => {
247
       getProject(this.taskForm.formId).then(res => {
255
         this.addForm = res.data;
248
         this.addForm = res.data;
282
         }
275
         }
283
       })
276
       })
284
     },
277
     },
285
-    setContract(val){
278
+    setContract(val) {
286
       this.chooseContractInfo = val;
279
       this.chooseContractInfo = val;
287
       this.openContract = false;
280
       this.openContract = false;
288
     },
281
     },
296
         this.$modal.msgSuccess("新增成功");
289
         this.$modal.msgSuccess("新增成功");
297
         this.getList();
290
         this.getList();
298
       });
291
       });
299
-      let pcobj = {projectId:this.taskForm.formId,contractId:this.chooseContractInfo.contractId}
300
-      addProjectContract(pcobj).then(response =>{
301
-        this.$modal.msgSuccess("合同关联成功");
302
-      })
292
+      let contractId = this.chooseContractInfo.contractId ? this.chooseContractInfo.contractId : ''
293
+      let pcobj = { projectId: this.taskForm.formId, contractId }
294
+      if (contractId != '') {
295
+        addProjectContract(pcobj).then(response => {
296
+          this.$modal.msgSuccess("合同关联成功");
297
+        })
298
+      }
303
       const params = { taskId: this.taskForm.taskId };
299
       const params = { taskId: this.taskForm.taskId };
304
       // 获取下一个流程节点
300
       // 获取下一个流程节点
305
       getNextFlowNode(params).then(res => {
301
       getNextFlowNode(params).then(res => {

+ 52
- 31
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-15 09:35:41
3
  * @Date: 2024-04-15 09:35:41
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-20 17:58:13
5
+ * @LastEditTime: 2024-05-23 17:41:35
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
9
-    <!-- <el-skeleton animated :rows="20" v-if="loading" class="app-container" /> -->
10
     <div class="app-container">
9
     <div class="app-container">
11
       <h2 style="text-align: center">项目运作情况</h2>
10
       <h2 style="text-align: center">项目运作情况</h2>
12
       <div class="headers">
11
       <div class="headers">
14
         <div class="line"></div>
13
         <div class="line"></div>
15
       </div>
14
       </div>
16
       <el-form ref="progress" :model="form" :disabled="disabled" label-width="100px">
15
       <el-form ref="progress" :model="form" :disabled="disabled" label-width="100px">
17
-        <el-row :gutter="20" v-if="!noBudget">
18
-          <el-col :span="11">
19
-            <el-form-item label="使用车辆(车牌号):" label-width="153px">
20
-              {{ form.licensePlate }}
21
-            </el-form-item>
22
-          </el-col>
23
-          <el-col :span="11">
24
-            <el-form-item label="驾驶员:">
25
-              <el-select v-model="form.driver" filterable multiple clearable style="width:220px">
26
-                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
27
-                  v-if="item.nickName != 'admin'">
28
-                </el-option>
29
-              </el-select>
30
-            </el-form-item>
31
-
32
-          </el-col>
33
-        </el-row>
34
-        <el-form-item label="参与人员:" v-if="!noBudget">
35
-          {{ form.staff }}
16
+        <el-form-item label="参与人员:">
17
+          <el-tag class="mr10" :key="item" v-for="item in participates">{{ item.nickName }}</el-tag>
18
+          <el-button class="ml10" @click="openPeople = true" type="primary" size="mini" icon="el-icon-plus"></el-button>
19
+        </el-form-item>
20
+        <el-form-item label="驾驶员:">
21
+          <el-tag class="mr10" :key="item" v-for="item in chooseDriver">{{ item.nickName }}</el-tag>
22
+          <el-button class="ml10" @click="openDriver = true" type="primary" size="mini" icon="el-icon-plus"></el-button>
23
+        </el-form-item>
24
+        <el-form-item label="使用车辆:">
25
+          <el-tag class="mr10" :key="item.licensePlate" v-for="item in chooseCar">{{ item.licensePlate + item.brand }}</el-tag>
26
+          <el-button class="ml10" @click="openCar = true" type="primary" size="mini" icon="el-icon-plus"></el-button>
36
         </el-form-item>
27
         </el-form-item>
37
-        <div v-if="noBudget" class="mb20">
38
-          <el-alert title="项目未做预算表,请先编制预算表" type="warning" :closable="false">
39
-          </el-alert>
40
-        </div>
41
         <el-row :gutter="20">
28
         <el-row :gutter="20">
42
           <el-col :span="11">
29
           <el-col :span="11">
43
             <el-form-item label="进场时间:">
30
             <el-form-item label="进场时间:">
56
           <table border="1">
43
           <table border="1">
57
             <tr>
44
             <tr>
58
               <td style="width: 80px">序号</td>
45
               <td style="width: 80px">序号</td>
59
-              <td>截日期</td>
46
+              <td>截日期</td>
60
               <td>累计总进度(%)</td>
47
               <td>累计总进度(%)</td>
61
               <td style="width: 300px">情况说明</td>
48
               <td style="width: 300px">情况说明</td>
62
             </tr>
49
             </tr>
104
         <el-button type="primary" @click="submitNextFlow()" :disabled="disabled">项目结束</el-button>
91
         <el-button type="primary" @click="submitNextFlow()" :disabled="disabled">项目结束</el-button>
105
       </div>
92
       </div>
106
     </div>
93
     </div>
94
+    <!-- 选择人员对话框 -->
95
+    <el-dialog title="选择人员" :visible.sync="openPeople" width="700px" append-to-body>
96
+      <choosePeople @chooseUser="getChooseUser"></choosePeople>
97
+    </el-dialog>
98
+    <!-- 选择车辆对话框 -->
99
+    <el-dialog title="选择车辆" :visible.sync="openCar" width="700px" append-to-body>
100
+      <choose-car @chooseList="getChooseCar"></choose-car>
101
+    </el-dialog>
102
+    <!-- 选择司机对话框 -->
103
+    <el-dialog title="选择驾驶员" :visible.sync="openDriver" width="700px" append-to-body>
104
+      <choosePeople @chooseUser="getChooseDriver"></choosePeople>
105
+    </el-dialog>
107
   </div>
106
   </div>
108
 </template>
107
 </template>
109
 
108
 
140
 import { listUser } from '@/api/system/user';
139
 import { listUser } from '@/api/system/user';
141
 import borrowData from '../inProgress/borrowData.vue';
140
 import borrowData from '../inProgress/borrowData.vue';
142
 import SettleData from '../inProgress/settleData.vue';
141
 import SettleData from '../inProgress/settleData.vue';
142
+import ChoosePeople from '../budget/components/choosePeople.vue';
143
+import ChooseCar from '../budget/components/chooseCar.vue';
144
+import ChooseDevice from "../budget/components/chooseDevice.vue";
143
 export default {
145
 export default {
144
   components: {
146
   components: {
145
     borrowData,
147
     borrowData,
146
-    SettleData
148
+    SettleData,
149
+    ChoosePeople,
150
+    ChooseCar
147
   },
151
   },
148
   computed: {
152
   computed: {
149
     ...mapGetters(["name", "userId"]),
153
     ...mapGetters(["name", "userId"]),
165
   data() {
169
   data() {
166
     return {
170
     return {
167
       loading: true,
171
       loading: true,
172
+      openPeople: false,
173
+      openDriver: false,
174
+      openCar: false,
168
       form: {
175
       form: {
169
         licensePlate: "",
176
         licensePlate: "",
170
         driver: [],
177
         driver: [],
183
         },
190
         },
184
       ],
191
       ],
185
       oldProgressList: [],
192
       oldProgressList: [],
186
-      noBudget: true,
187
       budgetId: "",
193
       budgetId: "",
188
-      userList: []
194
+      userList: [],
195
+      participates: [],
196
+      chooseCar: [],
197
+      chooseDriver: []
189
     };
198
     };
190
   },
199
   },
191
   watch: {
200
   watch: {
192
     taskName(newval, oldval) {
201
     taskName(newval, oldval) {
193
       if (newval == "项目生产") {
202
       if (newval == "项目生产") {
194
-        this.doesItExistBudget(this.taskForm.formId);
203
+        // this.doesItExistBudget(this.taskForm.formId);
195
       }
204
       }
196
     },
205
     },
197
   },
206
   },
198
   created() {
207
   created() {
199
     if (this.taskName == "项目生产") {
208
     if (this.taskName == "项目生产") {
200
-      this.doesItExistBudget(this.taskForm.formId);
209
+      // this.doesItExistBudget(this.taskForm.formId);
201
       this.initProgress();
210
       this.initProgress();
202
       this.getUserList();
211
       this.getUserList();
203
     }
212
     }
217
         }
226
         }
218
       });
227
       });
219
     },
228
     },
229
+    getChooseUser(val) {
230
+      this.participates = val;
231
+      this.openPeople = false;
232
+    },
233
+    getChooseCar(val) {
234
+      this.chooseCar = val;
235
+      this.openCar = false;
236
+    },
237
+    getChooseDriver(val) {
238
+      this.chooseDriver = val;
239
+      this.openDriver = false;
240
+    },
220
     // 查询是否有预算表
241
     // 查询是否有预算表
221
     doesItExistBudget(projectId) {
242
     doesItExistBudget(projectId) {
222
       listBudget({ projectId }).then(res => {
243
       listBudget({ projectId }).then(res => {

+ 37
- 6
oa-ui/src/views/flowable/form/projectProcess/technicalTab.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-19 15:32:00
3
  * @Date: 2024-04-19 15:32:00
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-19 17:33:30
5
+ * @LastEditTime: 2024-05-23 14:35:16
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
53
           </el-col>
53
           </el-col>
54
         </el-row>
54
         </el-row>
55
         <el-form-item label="技术方案" prop="technicalDocument">
55
         <el-form-item label="技术方案" prop="technicalDocument">
56
-          <el-input v-model="form.technicalDocument" placeholder="请输入技术方案" />
56
+          <el-link :href="`${baseUrl}${'/profile/upload' + form.technicalDocument}`" :underline="false" target="_blank">
57
+            <span class="el-icon-document" style="color:#00f"> {{ getFileName(form.technicalDocument) }} </span>
58
+          </el-link>
57
         </el-form-item>
59
         </el-form-item>
58
         <el-form-item label="方案说明" prop="designDescription">
60
         <el-form-item label="方案说明" prop="designDescription">
59
           <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明" />
61
           <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明" />
70
             </el-form-item>
72
             </el-form-item>
71
           </el-col>
73
           </el-col>
72
         </el-row>
74
         </el-row>
75
+        <el-form-item label="修改技术方案" prop="modifyDocument">
76
+          <el-link :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`" :underline="false" target="_blank">
77
+            <span class="el-icon-document" style="color:#00f"> {{ getFileName(form.modifyDocument) }} </span>
78
+          </el-link>
79
+        </el-form-item>
73
         <el-form-item label="技术部审核意见" prop="technicalComment">
80
         <el-form-item label="技术部审核意见" prop="technicalComment">
74
           <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见" />
81
           <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见" />
75
         </el-form-item>
82
         </el-form-item>
85
             </el-form-item>
92
             </el-form-item>
86
           </el-col>
93
           </el-col>
87
         </el-row>
94
         </el-row>
95
+        <el-form-item label="最终技术方案" prop="finalDocument">
96
+          <el-link :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`" :underline="false" target="_blank">
97
+            <span class="el-icon-document" style="color:#00f"> {{ getFileName(form.finalDocument) }} </span>
98
+          </el-link>
99
+        </el-form-item>
88
         <el-form-item label="总工程师审核意见" prop="manageComment">
100
         <el-form-item label="总工程师审核意见" prop="manageComment">
89
           <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见" />
101
           <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见" />
90
         </el-form-item>
102
         </el-form-item>
96
           </el-col>
108
           </el-col>
97
           <el-col :span="6">
109
           <el-col :span="6">
98
             <el-form-item label="日期:" label-width="120px">
110
             <el-form-item label="日期:" label-width="120px">
99
-              <span> {{ form.manageApprovalTime  }} </span>
111
+              <span> {{ form.manageApprovalTime }} </span>
100
             </el-form-item>
112
             </el-form-item>
101
           </el-col>
113
           </el-col>
102
         </el-row>
114
         </el-row>
131
       return this.$store.state.projectProcess.projectName;
143
       return this.$store.state.projectProcess.projectName;
132
     },
144
     },
133
   },
145
   },
134
-  watch:{
135
-    projectNumber(newval){
146
+  watch: {
147
+    projectNumber(newval) {
136
       this.$set(this.form, "projectNumber", newval);
148
       this.$set(this.form, "projectNumber", newval);
137
     },
149
     },
138
-    projectName(newval){
150
+    projectName(newval) {
139
       this.$set(this.form, "projectName", newval);
151
       this.$set(this.form, "projectName", newval);
140
     }
152
     }
141
   },
153
   },
142
   data() {
154
   data() {
143
     return {
155
     return {
156
+      baseUrl:process.env.VUE_APP_BASE_API,
144
       haveTechnical: false,
157
       haveTechnical: false,
145
       form: {},
158
       form: {},
146
       rules: {},
159
       rules: {},
160
           this.form = res.data;
173
           this.form = res.data;
161
           this.$set(this.form, "projectNumber", this.projectNumber);
174
           this.$set(this.form, "projectNumber", this.projectNumber);
162
           this.$set(this.form, "projectName", this.projectName);
175
           this.$set(this.form, "projectName", this.projectName);
176
+          let data = res.data;
177
+          if (res.data.qualityInspector == null || res.data.qualityInspector == undefined || res.data.qualityInspector == "") {
178
+            data.qualityInspector = []
179
+          } else {
180
+            let arr = []
181
+            data.qualityInspector = data.qualityInspector.split(',');
182
+            for (let inspector of data.qualityInspector) {
183
+              arr.push(parseInt(inspector))
184
+            }
185
+            data.qualityInspector = arr
186
+          }
187
+          this.$set(this.form, "qualityInspector", data.qualityInspector);
163
         }
188
         }
164
       });
189
       });
165
     },
190
     },
169
         this.userList = res.rows;
194
         this.userList = res.rows;
170
       });
195
       });
171
     },
196
     },
197
+    getFileName(name) {
198
+      if (name) {
199
+        let arr = name.split('/')
200
+        return arr[arr.length - 1];
201
+      }
202
+    },
172
   },
203
   },
173
 };
204
 };
174
 </script>
205
 </script>

+ 53
- 11
oa-ui/src/views/flowable/form/technicalForm.vue Visa fil

7
             <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目编号" disabled style="width: 300px" />
7
             <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目编号" disabled style="width: 300px" />
8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
9
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
9
               <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
10
-              }}</el-descriptions-item>
10
+                }}</el-descriptions-item>
11
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
11
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
12
-              }}</el-descriptions-item>
12
+                }}</el-descriptions-item>
13
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
13
               <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
14
-                chooseProject.projectLeaderUser.nickName : ''
15
-              }}</el-descriptions-item>
14
+      chooseProject.projectLeaderUser.nickName : ''
15
+                }}</el-descriptions-item>
16
               <el-descriptions-item label="承担部门" label-class-name="my-label">
16
               <el-descriptions-item label="承担部门" label-class-name="my-label">
17
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
17
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
18
               </el-descriptions-item>
18
               </el-descriptions-item>
19
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
19
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
20
-              }}</el-descriptions-item>
20
+                }}</el-descriptions-item>
21
             </el-descriptions>
21
             </el-descriptions>
22
           </el-form-item>
22
           </el-form-item>
23
           <el-row>
23
           <el-row>
53
             </el-col>
53
             </el-col>
54
           </el-row>
54
           </el-row>
55
           <el-form-item label="技术安排意见" prop="planComment">
55
           <el-form-item label="技术安排意见" prop="planComment">
56
-            <el-input type="textarea" v-model="form.planComment" placeholder="请输入技术安排意见" :disabled="taskName != '技术安排'" />
56
+            <el-input type="textarea" v-model="form.planComment" placeholder="请输入技术安排意见"
57
+              :disabled="taskName != '技术安排'" />
57
           </el-form-item>
58
           </el-form-item>
58
           <el-row>
59
           <el-row>
59
             <el-col :span="6" :xs="24" :offset="12">
60
             <el-col :span="6" :xs="24" :offset="12">
69
           </el-row>
70
           </el-row>
70
           <el-divider></el-divider>
71
           <el-divider></el-divider>
71
           <el-form-item label="技术方案" prop="technicalDocument">
72
           <el-form-item label="技术方案" prop="technicalDocument">
72
-            <el-input v-model="form.technicalDocument" placeholder="请输入技术方案" :disabled="taskName != '方案上传'" />
73
+            <FileUpload v-if="taskName == '方案上传'" ref="bsFile" :limit="1" :filePathName="'技术方案/初始'"
74
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getTechnicalDoc"></FileUpload>
75
+            <el-link v-if="taskName != '方案上传'" :href="`${baseUrl}${'/profile/upload' + form.technicalDocument}`"
76
+              :underline="false" target="_blank">
77
+              <span class="el-icon-document"> {{ getFileName(form.technicalDocument) }} </span>
78
+            </el-link>
73
           </el-form-item>
79
           </el-form-item>
74
           <el-form-item label="方案说明" prop="designDescription">
80
           <el-form-item label="方案说明" prop="designDescription">
75
             <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明"
81
             <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明"
89
           </el-row>
95
           </el-row>
90
           <el-divider></el-divider>
96
           <el-divider></el-divider>
91
           <el-form-item label="修改技术方案" prop="modifyDocument">
97
           <el-form-item label="修改技术方案" prop="modifyDocument">
92
-            <el-input v-model="form.modifyDocument" placeholder="请输入修改技术方案" :disabled="taskName != '技术审核'" />
98
+            <FileUpload v-if="taskName == '技术审核'" ref="jssh" :limit="1" :filePathName="'技术方案/修改'"
99
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getModifyDoc"></FileUpload>
100
+            <el-link v-if="taskName != '技术审核'" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
101
+              :underline="false" target="_blank">
102
+              <span class="el-icon-document"> {{ getFileName(form.modifyDocument) }} </span>
103
+            </el-link>
93
           </el-form-item>
104
           </el-form-item>
94
           <el-form-item label="技术部审核意见" prop="technicalComment">
105
           <el-form-item label="技术部审核意见" prop="technicalComment">
95
             <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见"
106
             <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见"
108
             </el-col>
119
             </el-col>
109
           </el-row>
120
           </el-row>
110
           <el-form-item label="最终技术方案" prop="finalDocument">
121
           <el-form-item label="最终技术方案" prop="finalDocument">
111
-            <el-input v-model="form.finalDocument" placeholder="请输入最终技术方案" :disabled="taskName != '总工审核'" />
122
+            <FileUpload v-if="taskName == '总工审核'" ref="final" :limit="1" :filePathName="'技术方案/最终'"
123
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getFinalDoc"></FileUpload>
124
+            <el-link v-if="taskName != '总工审核'" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
125
+              :underline="false" target="_blank">
126
+              <span class="el-icon-document"> {{ getFileName(form.finalDocument) }} </span>
127
+            </el-link>
112
           </el-form-item>
128
           </el-form-item>
113
           <el-form-item label="总工程师审核意见" prop="manageComment">
129
           <el-form-item label="总工程师审核意见" prop="manageComment">
114
             <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见"
130
             <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见"
117
           <el-row>
133
           <el-row>
118
             <el-col :span="6" :xs="24" :offset="12">
134
             <el-col :span="6" :xs="24" :offset="12">
119
               <el-form-item label="签名" prop="manager" v-if="showFormItem('总工审核')">
135
               <el-form-item label="签名" prop="manager" v-if="showFormItem('总工审核')">
120
-                <span class="auditor"> {{ managerUser }} </span>
136
+                <span class="auditor"> {{ form.managerUser ? form.managerUser.nickName : managerUser }} </span>
121
               </el-form-item>
137
               </el-form-item>
122
             </el-col>
138
             </el-col>
123
             <el-col :span="6">
139
             <el-col :span="6">
170
   },
186
   },
171
   data() {
187
   data() {
172
     return {
188
     return {
189
+      baseUrl: process.env.VUE_APP_BASE_API,
173
       planUser: '',
190
       planUser: '',
174
       managerUser: '',
191
       managerUser: '',
175
       designUser: '',
192
       designUser: '',
303
         this.loading = false;
320
         this.loading = false;
304
       });
321
       });
305
     },
322
     },
323
+    getTechnicalDoc(val) {
324
+      this.getDoc(val, 'technicalDocument')
325
+    },
326
+    getModifyDoc(val) {
327
+      this.getDoc(val, 'modifyDocument')
328
+    },
329
+    getFinalDoc(val) {
330
+      this.getDoc(val, 'finalDocument')
331
+    },
332
+    getDoc(val, name) {
333
+      if (val) {
334
+        let arr = val.split('/upload')
335
+        this.form[name] = arr[1]
336
+        if (val == "") {
337
+          this.form[name] = ""
338
+        }
339
+      }
340
+    },
341
+    getFileName(name) {
342
+      if (name) {
343
+        let arr = name.split('/')
344
+        return arr[arr.length - 1];
345
+      }
346
+    },
306
     // 取消按钮
347
     // 取消按钮
307
     cancel() {
348
     cancel() {
308
       this.open = false;
349
       this.open = false;
407
               }
448
               }
408
             })
449
             })
409
           } else {
450
           } else {
410
-            this.form.qualityInspector = '';
451
+            this.form.qualityInspector = this.form.qualityInspector.join(',');
411
             this.form.technicalId = this.taskForm.formId;
452
             this.form.technicalId = this.taskForm.formId;
412
             this.form.projectId = this.taskForm.formId;
453
             this.form.projectId = this.taskForm.formId;
413
             addTechnical(this.form).then(response => {
454
             addTechnical(this.form).then(response => {
465
   font-family: '华文行楷';
506
   font-family: '华文行楷';
466
   font-size: 20px;
507
   font-size: 20px;
467
 }
508
 }
509
+
468
 ::v-deep .el-input.is-disabled .el-input__inner {
510
 ::v-deep .el-input.is-disabled .el-input__inner {
469
   color: #686a6e;
511
   color: #686a6e;
470
 }
512
 }

Loading…
Avbryt
Spara