|
@@ -3,11 +3,12 @@
|
3
|
3
|
<el-row :gutter="20">
|
4
|
4
|
<el-col :span="18" :xs="24">
|
5
|
5
|
<h2 class="text-center">分包合同评审表</h2>
|
6
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
6
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="130px">
|
|
7
|
+ <el-divider></el-divider>
|
7
|
8
|
<el-form-item label="项目编号:" prop="projectId">
|
8
|
9
|
<el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
|
9
|
10
|
:disabled="taskName != '合同拟稿'" clearable>
|
10
|
|
- <el-option v-for="item in projectList" :key="item.value" :label="item.projectNumber"
|
|
11
|
+ <el-option v-for="item in projectList" :key="item.value" :label="item.projectNumber + item.projectName"
|
11
|
12
|
:value="item.projectId">
|
12
|
13
|
</el-option>
|
13
|
14
|
</el-select>
|
|
@@ -16,8 +17,7 @@
|
16
|
17
|
}}</el-descriptions-item>
|
17
|
18
|
<el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
|
18
|
19
|
}}</el-descriptions-item>
|
19
|
|
- <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
|
20
|
|
- chooseProject.projectLeaderUser.nickName : ''
|
|
20
|
+ <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA
|
21
|
21
|
}}</el-descriptions-item>
|
22
|
22
|
<el-descriptions-item label="承担部门" label-class-name="my-label">
|
23
|
23
|
<el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
|
|
@@ -26,22 +26,146 @@
|
26
|
26
|
}}</el-descriptions-item>
|
27
|
27
|
</el-descriptions>
|
28
|
28
|
</el-form-item>
|
29
|
|
- <el-form-item label="合同名称" prop="subContractName">
|
30
|
|
- <el-input v-model="form.subContractName" placeholder="请输入合同名称" />
|
31
|
|
- </el-form-item>
|
32
|
|
- <el-form-item label="分包合同金额" prop="subAmount">
|
33
|
|
- <el-input v-model="form.subAmount" placeholder="请输入分包合同金额" />
|
|
29
|
+ <el-row :gutter="20">
|
|
30
|
+ <el-col :span="8" :xs="24">
|
|
31
|
+ <el-form-item label="主合同金额" prop="amount">
|
|
32
|
+ <el-input v-model="chooseContract.amount" :disabled="true" />
|
|
33
|
+ </el-form-item>
|
|
34
|
+ </el-col>
|
|
35
|
+ <el-col :span="8" :xs="24">
|
|
36
|
+ <el-form-item label="合同编码" prop="contractCode">
|
|
37
|
+ <el-input v-model="chooseContract.contractCode" :disabled="true" />
|
|
38
|
+ </el-form-item>
|
|
39
|
+ </el-col>
|
|
40
|
+ <el-col :span="8" :xs="24">
|
|
41
|
+ <el-form-item label="合同编号" prop="contractNumber">
|
|
42
|
+ <el-input v-model="chooseContract.contractNumber" :disabled="true" />
|
|
43
|
+ </el-form-item>
|
|
44
|
+ </el-col>
|
|
45
|
+ </el-row>
|
|
46
|
+ <el-divider></el-divider>
|
|
47
|
+ <el-row :gutter="20">
|
|
48
|
+ <el-col :span="16" :xs="24">
|
|
49
|
+ <el-form-item label="分包合同名称" prop="subContractName">
|
|
50
|
+ <el-input v-model="form.subContractName" placeholder="请输入分包合同名称" :disabled="taskName != '合同拟稿'" />
|
|
51
|
+ </el-form-item>
|
|
52
|
+ </el-col>
|
|
53
|
+ <el-col :span="8" :xs="24">
|
|
54
|
+ <el-form-item label="分包合同金额" prop="subAmount">
|
|
55
|
+ <el-input v-model="form.subAmount" placeholder="请输入分包合同金额" :disabled="taskName != '合同拟稿'" />
|
|
56
|
+ </el-form-item>
|
|
57
|
+ </el-col>
|
|
58
|
+ </el-row>
|
|
59
|
+ <el-row :gutter="20">
|
|
60
|
+ <el-col :span="16" :xs="24">
|
|
61
|
+ <el-form-item label="承接单位" prop="partnerId">
|
|
62
|
+ <el-select v-model="form.partnerId" filterable placeholder="请选择" :disabled="taskName != '合同拟稿'" clearable>
|
|
63
|
+ <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
|
|
64
|
+ :value="item.partnerId">
|
|
65
|
+ </el-option>
|
|
66
|
+ </el-select>
|
|
67
|
+ </el-form-item>
|
|
68
|
+ </el-col>
|
|
69
|
+ <el-col :span="8" :xs="24">
|
|
70
|
+ <el-form-item label="联系人" prop="contactPerson">
|
|
71
|
+ <el-input v-model="form.contactPerson" placeholder="请输入联系人" :disabled="taskName != '合同拟稿'" />
|
|
72
|
+ </el-form-item>
|
|
73
|
+ </el-col>
|
|
74
|
+ </el-row>
|
|
75
|
+
|
|
76
|
+ <el-form-item label="合同计划工作量:">
|
|
77
|
+ <table border="1">
|
|
78
|
+ <tr>
|
|
79
|
+ <td>序号</td>
|
|
80
|
+ <td>工作内容</td>
|
|
81
|
+ <td>等级或比例尺</td>
|
|
82
|
+ <td>单位</td>
|
|
83
|
+ <td>工作量</td>
|
|
84
|
+ <td>要求完成时间</td>
|
|
85
|
+ <td>备注</td>
|
|
86
|
+ </tr>
|
|
87
|
+ <tr v-for="(work, index) in workList" :key="index">
|
|
88
|
+ <td>
|
|
89
|
+ {{ index + 1 }}
|
|
90
|
+ </td>
|
|
91
|
+ <td>
|
|
92
|
+ <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
|
|
93
|
+ :disabled="taskName != '合同拟稿'"></el-input>
|
|
94
|
+ </td>
|
|
95
|
+ <td>
|
|
96
|
+ <el-input v-model="work.scale" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
97
|
+ </td>
|
|
98
|
+ <td>
|
|
99
|
+ <el-input v-model="work.unit" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
100
|
+ </td>
|
|
101
|
+ <td>
|
|
102
|
+ <el-input v-model="work.workload" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
103
|
+ </td>
|
|
104
|
+ <td>
|
|
105
|
+ <el-date-picker style="width: 140px" v-model="work.deadline" value-format="yyyy-MM-dd" type="date"
|
|
106
|
+ placeholder="选择日期" :disabled="taskName != '合同拟稿'">
|
|
107
|
+ </el-date-picker>
|
|
108
|
+ </td>
|
|
109
|
+ <td>
|
|
110
|
+ <el-input v-model="work.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
|
|
111
|
+ :disabled="taskName != '合同拟稿'"></el-input>
|
|
112
|
+ </td>
|
|
113
|
+ <td>
|
|
114
|
+ <el-button type="danger" icon="el-icon-minus" size="mini" circle
|
|
115
|
+ @click="deletWorkItem(index)" :disabled="taskName != '合同拟稿'"></el-button>
|
|
116
|
+ </td>
|
|
117
|
+ </tr>
|
|
118
|
+ </table>
|
|
119
|
+ <el-button icon="el-icon-plus" size="mini" @click="addWorkList()" type="primary" plain :disabled="taskName != '合同拟稿'"></el-button>
|
34
|
120
|
</el-form-item>
|
35
|
|
- <el-form-item label="承接单位id" prop="partnerId">
|
36
|
|
- <el-input v-model="form.partnerId" placeholder="请输入承接单位id" />
|
|
121
|
+ <el-form-item label="合同付款计划:">
|
|
122
|
+ <table border="1">
|
|
123
|
+ <tr>
|
|
124
|
+ <td>序号</td>
|
|
125
|
+ <td>付款条件</td>
|
|
126
|
+ <td>付款比例(%)</td>
|
|
127
|
+ <td>付款金额(元)</td>
|
|
128
|
+ <td>预计时间</td>
|
|
129
|
+ <td>备注</td>
|
|
130
|
+ </tr>
|
|
131
|
+ <tr v-for="(payment, index) in paymentList" :key="index">
|
|
132
|
+ <td>
|
|
133
|
+ {{ index + 1 }}
|
|
134
|
+ </td>
|
|
135
|
+ <td>
|
|
136
|
+ <el-input v-model="payment.paymentCondition" type="textarea" clearable
|
|
137
|
+ :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
|
|
138
|
+ </td>
|
|
139
|
+ <td>
|
|
140
|
+ <el-input v-model="payment.paymentPercentage" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
141
|
+ </td>
|
|
142
|
+ <td>
|
|
143
|
+ <el-input v-model="payment.paymentAmount" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
144
|
+ </td>
|
|
145
|
+ <td>
|
|
146
|
+ <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd" type="date"
|
|
147
|
+ placeholder="选择日期" :disabled="taskName != '合同拟稿'">
|
|
148
|
+ </el-date-picker>
|
|
149
|
+ </td>
|
|
150
|
+ <td>
|
|
151
|
+ <el-input v-model="payment.remark" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
|
|
152
|
+ :disabled="taskName != '合同拟稿'"></el-input>
|
|
153
|
+ </td>
|
|
154
|
+ <td>
|
|
155
|
+ <el-button type="danger" icon="el-icon-minus" size="mini" circle
|
|
156
|
+ @click="deletPaymentItem(index)" :disabled="taskName != '合同拟稿'"></el-button>
|
|
157
|
+ </td>
|
|
158
|
+ </tr>
|
|
159
|
+ </table>
|
|
160
|
+ <el-button icon="el-icon-plus" size="mini" @click="addPaymentList()" type="primary" plain :disabled="taskName != '合同拟稿'"></el-button>
|
37
|
161
|
</el-form-item>
|
38
|
|
- <el-form-item label="承接单位联系人" prop="contactPerson">
|
39
|
|
- <el-input v-model="form.contactPerson" placeholder="请输入承接单位联系人" />
|
|
162
|
+ <el-form-item label="合同备注" prop="remark">
|
|
163
|
+ <el-input v-model="form.remark" placeholder="请输入合同备注" :disabled="taskName != '合同拟稿'" />
|
40
|
164
|
</el-form-item>
|
41
|
165
|
<el-row>
|
42
|
166
|
<el-col :span="6" :xs="24" :offset="12">
|
43
|
167
|
<el-form-item label="拟稿人:" label-width="120px">
|
44
|
|
- <span class="auditor"> {{ form.draftUser ? form.draftUser.nickName : drafter }} </span>
|
|
168
|
+ <span class="auditor"> {{ form.draftUser ? form.draftUser.nickName : draftUser }} </span>
|
45
|
169
|
</el-form-item>
|
46
|
170
|
</el-col>
|
47
|
171
|
<el-col :span="6">
|
|
@@ -50,21 +174,153 @@
|
50
|
174
|
</el-form-item>
|
51
|
175
|
</el-col>
|
52
|
176
|
</el-row>
|
53
|
|
- <el-form-item label="合同备注" prop="remark">
|
54
|
|
- <el-input v-model="form.remark" placeholder="请输入合同备注" />
|
|
177
|
+ <el-form-item label="评审方式" prop="commentType">
|
|
178
|
+ <el-radio-group v-model="form.commentType" @change="changeCommentType" :disabled="taskName != '合同拟稿'">
|
|
179
|
+ <el-radio :label="'0'">无须评审</el-radio>
|
|
180
|
+ <el-radio :label="'1'">会议评审</el-radio>
|
|
181
|
+ <el-radio :label="'2'">线上会审</el-radio>
|
|
182
|
+ </el-radio-group>
|
55
|
183
|
</el-form-item>
|
|
184
|
+ <el-form-item label="线上会审:" v-if="commentOpen">
|
|
185
|
+ <table border="1">
|
|
186
|
+ <tr>
|
|
187
|
+ <td>序号</td>
|
|
188
|
+ <td>会审部门</td>
|
|
189
|
+ <td>会审人</td>
|
|
190
|
+ <td>会审意见</td>
|
|
191
|
+ <td>会审附件</td>
|
|
192
|
+ <td>签名</td>
|
|
193
|
+ <td>日期</td>
|
|
194
|
+ </tr>
|
|
195
|
+ <tr v-for="(comment, index) in commentList" :key="index">
|
|
196
|
+ <td>
|
|
197
|
+ {{ index + 1 }}
|
|
198
|
+ </td>
|
|
199
|
+ <td>
|
|
200
|
+ <el-select v-model="comment.deptId" clearable style="width:120px"
|
|
201
|
+ :disabled="(index < 4 && taskName == '合同拟稿') || taskName != '合同拟稿'" @change="getDeptLeader">
|
|
202
|
+ <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId">
|
|
203
|
+ </el-option>
|
|
204
|
+ </el-select>
|
|
205
|
+ </td>
|
|
206
|
+ <td>
|
|
207
|
+ <el-select v-model="comment.userId" clearable style="width:120px"
|
|
208
|
+ :disabled="(index < 4 && taskName == '合同拟稿') || taskName != '合同拟稿'">
|
|
209
|
+ <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
|
|
210
|
+ </el-option>
|
|
211
|
+ </el-select>
|
|
212
|
+ </td>
|
|
213
|
+ <td>
|
|
214
|
+ <el-input v-model="comment.comment" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
|
|
215
|
+ :disabled="taskName != '线上会审' || (taskName == '线上会审' && !comment.commentUser)"></el-input>
|
|
216
|
+ </td>
|
|
217
|
+ <td>
|
|
218
|
+ <el-input v-model="comment.document" clearable
|
|
219
|
+ :disabled="taskName != '线上会审' || (taskName == '线上会审' && !comment.commentUser)"></el-input>
|
|
220
|
+ </td>
|
|
221
|
+ <td>
|
|
222
|
+ <span class="auditor"> {{ comment.commentUser ? comment.commentUser.nickName : '' }} </span>
|
|
223
|
+ </td>
|
|
224
|
+ <td>
|
|
225
|
+ <span> {{ comment.commentTime }} </span>
|
|
226
|
+ </td>
|
|
227
|
+ <td>
|
|
228
|
+ <el-button type="danger" icon="el-icon-minus" size="mini" circle
|
|
229
|
+ @click="deletCommentItem(index)" :disabled="taskName != '合同拟稿'"></el-button>
|
|
230
|
+ </td>
|
|
231
|
+ </tr>
|
|
232
|
+ </table>
|
|
233
|
+ <el-button icon="el-icon-plus" size="mini" @click="addCommentList()" type="primary" plain :disabled="taskName != '合同拟稿'"></el-button>
|
|
234
|
+ </el-form-item>
|
|
235
|
+ <el-form-item label="会议评审:" v-if="meetingOpen">
|
|
236
|
+ <table border="1">
|
|
237
|
+ <tr>
|
|
238
|
+ <td>评审时间</td>
|
|
239
|
+ <td>
|
|
240
|
+ <el-date-picker clearable v-model="meetingForm.meetingTime" type="date" value-format="yyyy-MM-dd"
|
|
241
|
+ placeholder="请选择评审日期" :disabled="taskName != '合同拟稿'">
|
|
242
|
+ </el-date-picker>
|
|
243
|
+ </td>
|
|
244
|
+ <td>评审地点</td>
|
|
245
|
+ <td>
|
|
246
|
+ <el-select v-model="meetingForm.place" clearable style="width:120px" :disabled="taskName != '合同拟稿'">
|
|
247
|
+ <el-option v-for="item in placeList" :key="item.id" :label="item.name" :value="item.id">
|
|
248
|
+ </el-option>
|
|
249
|
+ </el-select>
|
|
250
|
+ </td>
|
|
251
|
+ <td>评审主持人</td>
|
|
252
|
+ <td>
|
|
253
|
+ <el-select v-model="meetingForm.hostId" clearable style="width:120px" :disabled="taskName != '合同拟稿'">
|
|
254
|
+ <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
|
|
255
|
+ </el-option>
|
|
256
|
+ </el-select>
|
|
257
|
+ </td>
|
|
258
|
+ </tr>
|
|
259
|
+ <tr>
|
|
260
|
+ <td>参与评审人员</td>
|
|
261
|
+ <td colspan="5">
|
|
262
|
+ <el-select v-model="meetingForm.users" multiple clearable style="width:600px"
|
|
263
|
+ :disabled="taskName != '合同拟稿'">
|
|
264
|
+ <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
|
|
265
|
+ </el-option>
|
|
266
|
+ </el-select>
|
|
267
|
+ </td>
|
|
268
|
+ </tr>
|
|
269
|
+ <tr>
|
|
270
|
+ <td>评审意见表</td>
|
|
271
|
+ <td colspan="5">
|
|
272
|
+ <el-input v-model="meetingForm.document" clearable :disabled="taskName != '会议评审'"></el-input>
|
|
273
|
+ </td>
|
|
274
|
+ </tr>
|
|
275
|
+ <tr>
|
|
276
|
+ <td>评审结论</td>
|
|
277
|
+ <td colspan="5">
|
|
278
|
+ <el-input type="textarea" v-model="meetingForm.conclusion" clearable
|
|
279
|
+ :disabled="taskName != '会议评审'"></el-input>
|
|
280
|
+ </td>
|
|
281
|
+ </tr>
|
|
282
|
+ <tr>
|
|
283
|
+ <td colspan="2"></td>
|
|
284
|
+ <td>主持人签名</td>
|
|
285
|
+ <td>
|
|
286
|
+ <span class="auditor"> {{ meetingForm.hostUser ? meetingForm.hostUser.nickName : hostUser }} </span>
|
|
287
|
+ </td>
|
|
288
|
+ <td>日期</td>
|
|
289
|
+ <td>
|
|
290
|
+ <span> {{ meetingForm.commentTime ? meetingForm.commentTime : commentTime }} </span>
|
|
291
|
+ </td>
|
|
292
|
+ </tr>
|
|
293
|
+ </table>
|
|
294
|
+ </el-form-item>
|
|
295
|
+ <el-form-item label="分管审批意见" prop="remark">
|
|
296
|
+ <el-input v-model="form.managerComment" placeholder="请输入分管审批意见" :disabled="taskName != '分管审核'" />
|
|
297
|
+ </el-form-item>
|
|
298
|
+ <el-row>
|
|
299
|
+ <el-col :span="6" :xs="24" :offset="12">
|
|
300
|
+ <el-form-item label="签名:" label-width="120px" v-if="taskName == '分管审核'">
|
|
301
|
+ <span class="auditor"> {{ form.managerUser ? form.managerUser.nickName : managerUser }} </span>
|
|
302
|
+ </el-form-item>
|
|
303
|
+ </el-col>
|
|
304
|
+ <el-col :span="6">
|
|
305
|
+ <el-form-item label="日期:" label-width="120px" v-if="taskName == '分管审核'">
|
|
306
|
+ <span> {{ form.managerTime ? form.managerTime : managerTime }} </span>
|
|
307
|
+ </el-form-item>
|
|
308
|
+ </el-col>
|
|
309
|
+ </el-row>
|
|
310
|
+ <el-divider></el-divider>
|
56
|
311
|
<el-form-item label="签订日期" prop="signDate">
|
57
|
|
- <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期">
|
|
312
|
+ <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期"
|
|
313
|
+ :disabled="taskName != '合同签订'">
|
58
|
314
|
</el-date-picker>
|
59
|
315
|
</el-form-item>
|
60
|
316
|
<el-form-item label="签订备注" prop="signRemark">
|
61
|
|
- <el-input v-model="form.signRemark" placeholder="请输入签订备注" />
|
|
317
|
+ <el-input v-model="form.signRemark" placeholder="请输入签订备注" :disabled="taskName != '合同签订'" />
|
62
|
318
|
</el-form-item>
|
63
|
319
|
<el-form-item label="签订扫描件" prop="signScan">
|
64
|
|
- <el-input v-model="form.signScan" placeholder="请输入签订扫描件" />
|
|
320
|
+ <el-input v-model="form.signScan" placeholder="请输入签订扫描件" :disabled="taskName != '合同签订'" />
|
65
|
321
|
</el-form-item>
|
66
|
322
|
</el-form>
|
67
|
|
- <div slot="footer" class="dialog-footer">
|
|
323
|
+ <div style="text-align: center;">
|
68
|
324
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
69
|
325
|
<el-button @click="cancel">取 消</el-button>
|
70
|
326
|
</div>
|
|
@@ -84,9 +340,20 @@
|
84
|
340
|
<script>
|
85
|
341
|
import { parseTime } from "@/utils/ruoyi";
|
86
|
342
|
import { listProject, getProject } from "@/api/oa/project/project";
|
|
343
|
+import { listDept } from '@/api/system/dept'
|
|
344
|
+import { listUser } from '@/api/system/user'
|
|
345
|
+import { listPartner } from "@/api/oa/partner/partner";
|
|
346
|
+import { getContractWork, addContractWork } from "@/api/oa/contract/contractWork";
|
|
347
|
+import { getContractPayment, addContractPayment } from "@/api/oa/contract/contractPayment";
|
|
348
|
+import { getContractComment, addContractComment, updateContractComment } from "@/api/oa/contract/contractComment";
|
|
349
|
+import { getContractMeeting, addContractMeeting, updateContractMeeting } from "@/api/oa/contract/contractMeeting";
|
|
350
|
+import { getProjectContract } from "@/api/oa/contract/projectContract";
|
|
351
|
+import { getContract } from "@/api/oa/contract/contract";
|
87
|
352
|
import { listSubContract, getSubContract, delSubContract, addSubContract, updateSubContract } from "@/api/oa/contract/subContract";
|
|
353
|
+import { getUsersDeptLeader, getUsersManageLeader, getUsersDeptLeaderByDept } from '@/api/system/post.js'
|
88
|
354
|
import flow from '@/views/flowable/task/todo/detail/flow'
|
89
|
355
|
import { flowXmlAndNode } from "@/api/flowable/definition";
|
|
356
|
+import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm, } from "@/api/flowable/todo";
|
90
|
357
|
export default {
|
91
|
358
|
components: {
|
92
|
359
|
flow
|
|
@@ -104,8 +371,12 @@ export default {
|
104
|
371
|
name: "SubContract",
|
105
|
372
|
data() {
|
106
|
373
|
return {
|
107
|
|
- drafter: '',
|
|
374
|
+ draftUser: '',
|
108
|
375
|
draftTime: undefined,
|
|
376
|
+ managerUser: '',
|
|
377
|
+ managerTime: undefined,
|
|
378
|
+ hostUser: '',
|
|
379
|
+ commentTime: undefined,
|
109
|
380
|
// 遮罩层
|
110
|
381
|
loading: true,
|
111
|
382
|
// 选中数组
|
|
@@ -142,10 +413,82 @@ export default {
|
142
|
413
|
},
|
143
|
414
|
// 表单参数
|
144
|
415
|
form: {},
|
|
416
|
+ meetingForm: {
|
|
417
|
+ users: [],
|
|
418
|
+ },
|
145
|
419
|
// 表单校验
|
146
|
420
|
rules: {
|
|
421
|
+ projectId: [
|
|
422
|
+ { required: true, message: '请选择登记项目', trigger: 'blur' },
|
|
423
|
+ ],
|
|
424
|
+ partnerId: [
|
|
425
|
+ { required: true, message: '请选择承接单位', trigger: 'blur' },
|
|
426
|
+ ],
|
|
427
|
+ subContractName: [
|
|
428
|
+ { required: true, message: '请输入分包合同名称', trigger: 'blur' },
|
|
429
|
+ ],
|
|
430
|
+ subAmount: [
|
|
431
|
+ { required: true, message: '请输入分包合同额', trigger: 'blur' },
|
|
432
|
+ ],
|
|
433
|
+ commentType: [
|
|
434
|
+ { required: true, message: '请选择评审方式', trigger: 'blur' },
|
|
435
|
+ ],
|
147
|
436
|
},
|
|
437
|
+ meetingOpen: false,
|
|
438
|
+ commentOpen: false,
|
|
439
|
+ projectList: [],
|
|
440
|
+ partnerList: [],
|
148
|
441
|
chooseProject: {},
|
|
442
|
+ chooseContract: {},
|
|
443
|
+ deptList: [],
|
|
444
|
+ userList: [],
|
|
445
|
+ users: undefined,
|
|
446
|
+ workList: [{
|
|
447
|
+ content: "",
|
|
448
|
+ scale: "",
|
|
449
|
+ unit: "",
|
|
450
|
+ workload: "",
|
|
451
|
+ deadline: undefined,
|
|
452
|
+ remark: "",
|
|
453
|
+ }],
|
|
454
|
+ paymentList: [{
|
|
455
|
+ paymentCondition: "",
|
|
456
|
+ paymentPercentage: "",
|
|
457
|
+ paymentAmount: "",
|
|
458
|
+ paymentTime: undefined,
|
|
459
|
+ remark: "",
|
|
460
|
+ }],
|
|
461
|
+ placeList: [{ id: '0', name: '301会议室' }, { id: '1', name: '216会议室' }],
|
|
462
|
+ commentList: [
|
|
463
|
+ {
|
|
464
|
+ deptId: 105,
|
|
465
|
+ userId: '',
|
|
466
|
+ comment: '',
|
|
467
|
+ document: '',
|
|
468
|
+ commentTime: undefined
|
|
469
|
+ },
|
|
470
|
+ {
|
|
471
|
+ deptId: 110,
|
|
472
|
+ userId: '',
|
|
473
|
+ comment: '',
|
|
474
|
+ document: '',
|
|
475
|
+ commentTime: undefined
|
|
476
|
+ },
|
|
477
|
+ {
|
|
478
|
+ deptId: 107,
|
|
479
|
+ userId: '',
|
|
480
|
+ comment: '',
|
|
481
|
+ document: '',
|
|
482
|
+ commentTime: undefined
|
|
483
|
+ },
|
|
484
|
+ {
|
|
485
|
+ deptId: 106,
|
|
486
|
+ userId: '',
|
|
487
|
+ comment: '',
|
|
488
|
+ document: '',
|
|
489
|
+ commentTime: undefined
|
|
490
|
+ },
|
|
491
|
+ ],
|
149
|
492
|
isSelect: false,
|
150
|
493
|
formTotal: 0,
|
151
|
494
|
flowData: {},
|
|
@@ -153,16 +496,107 @@ export default {
|
153
|
496
|
},
|
154
|
497
|
created() {
|
155
|
498
|
if (this.taskName == '合同拟稿') {
|
156
|
|
- this.drafter = this.$store.getters.name;
|
|
499
|
+ this.draftUser = this.$store.getters.name;
|
157
|
500
|
this.draftTime = parseTime(new Date(), '{y}-{m}-{d}')
|
158
|
501
|
}
|
|
502
|
+ else if (this.taskName == '会议评审') {
|
|
503
|
+ this.hostUser = this.$store.getters.name;
|
|
504
|
+ this.commentTime = parseTime(new Date(), '{y}-{m}-{d}')
|
|
505
|
+ }
|
|
506
|
+ else if (this.taskName == '分管审核') {
|
|
507
|
+ this.managerUser = this.$store.getters.name;
|
|
508
|
+ this.managerTime = parseTime(new Date(), '{y}-{m}-{d}')
|
|
509
|
+ }
|
159
|
510
|
this.getProjectList();
|
|
511
|
+ this.getPartnerList();
|
|
512
|
+ this.getDeptList();
|
|
513
|
+ this.getUserList();
|
160
|
514
|
this.getList();
|
161
|
515
|
flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
|
162
|
516
|
this.flowData = res.data;
|
163
|
517
|
})
|
164
|
518
|
},
|
|
519
|
+ mounted() {
|
|
520
|
+ this.initForm();
|
|
521
|
+ },
|
165
|
522
|
methods: {
|
|
523
|
+ initForm() {
|
|
524
|
+ getSubContract(this.taskForm.formId).then(res => {
|
|
525
|
+ if (this.isEmptyObject(res.data)) {
|
|
526
|
+ this.formTotal = 0;
|
|
527
|
+ this.form.drafter = this.$store.getters.userId;
|
|
528
|
+ this.form.draftTime = parseTime(new Date(), '{y}-{m}-{d}');
|
|
529
|
+ }
|
|
530
|
+ else {
|
|
531
|
+ this.formTotal = 1;
|
|
532
|
+ this.form = res.data;
|
|
533
|
+ if (this.form.commentType == '0') {
|
|
534
|
+ this.commentOpen = false;
|
|
535
|
+ this.meetingOpen = false;
|
|
536
|
+ }
|
|
537
|
+ else if (this.form.commentType == '1') {
|
|
538
|
+ this.commentOpen = false;
|
|
539
|
+ this.meetingOpen = true;
|
|
540
|
+ }
|
|
541
|
+ else if (this.form.commentType == '2') {
|
|
542
|
+ this.commentOpen = true;
|
|
543
|
+ this.meetingOpen = false;
|
|
544
|
+ }
|
|
545
|
+ if (res.data.projectId) {
|
|
546
|
+ getProject(res.data.projectId).then(res => {
|
|
547
|
+ this.chooseProject = res.data;
|
|
548
|
+ this.isSelect = true
|
|
549
|
+ getProjectContract(this.chooseProject.projectId).then(response => {
|
|
550
|
+ if (response.data)
|
|
551
|
+ getContract(response.data.contractId).then(r => {
|
|
552
|
+ this.chooseContract = r.data;
|
|
553
|
+ });
|
|
554
|
+ else
|
|
555
|
+ this.chooseContract = {};
|
|
556
|
+ })
|
|
557
|
+ })
|
|
558
|
+ }
|
|
559
|
+ getContractWork(this.taskForm.formId).then(res => {
|
|
560
|
+ if (res.data)
|
|
561
|
+ this.workList = res.data;
|
|
562
|
+ });
|
|
563
|
+ getContractPayment(this.taskForm.formId).then(res => {
|
|
564
|
+ if (res.data)
|
|
565
|
+ this.paymentList = res.data;
|
|
566
|
+ });
|
|
567
|
+ getContractComment(this.taskForm.formId).then(res => {
|
|
568
|
+ if (res.data)
|
|
569
|
+ this.commentList = res.data;
|
|
570
|
+ for (let comment of this.commentList) {
|
|
571
|
+ if (comment.commentTime == undefined) {
|
|
572
|
+ if (comment.userId != this.$store.getters.userId) {
|
|
573
|
+ comment.commentUser = undefined;
|
|
574
|
+ }
|
|
575
|
+ else {
|
|
576
|
+ comment.commentTime = parseTime(new Date(), '{y}-{m}-{d}');
|
|
577
|
+ }
|
|
578
|
+ }
|
|
579
|
+ }
|
|
580
|
+ });
|
|
581
|
+ getContractMeeting(this.taskForm.formId).then(res => {
|
|
582
|
+ if (res.data) {
|
|
583
|
+ let data = res.data;
|
|
584
|
+ if (res.data.users == null || res.data.users == undefined || res.data.users == "") {
|
|
585
|
+ data.users = []
|
|
586
|
+ } else {
|
|
587
|
+ data.users = data.users.split(',');
|
|
588
|
+ let arr = []
|
|
589
|
+ for (let d of data.users) {
|
|
590
|
+ arr.push(parseInt(d))
|
|
591
|
+ }
|
|
592
|
+ data.users = arr;
|
|
593
|
+ }
|
|
594
|
+ this.meetingForm = data;
|
|
595
|
+ }
|
|
596
|
+ });
|
|
597
|
+ }
|
|
598
|
+ })
|
|
599
|
+ },
|
166
|
600
|
/** 查询cmc分包合同评审列表 */
|
167
|
601
|
getList() {
|
168
|
602
|
this.loading = true;
|
|
@@ -172,6 +606,16 @@ export default {
|
172
|
606
|
this.loading = false;
|
173
|
607
|
});
|
174
|
608
|
},
|
|
609
|
+ // 查询承接单位列表
|
|
610
|
+ getPartnerList() {
|
|
611
|
+ this.loading = true
|
|
612
|
+ listPartner({
|
|
613
|
+ pageNum: 1,
|
|
614
|
+ pageSize: 99999999
|
|
615
|
+ }).then(response => {
|
|
616
|
+ this.partnerList = response.rows;
|
|
617
|
+ })
|
|
618
|
+ },
|
175
|
619
|
// 查询项目列表
|
176
|
620
|
getProjectList() {
|
177
|
621
|
this.loading = true
|
|
@@ -182,23 +626,130 @@ export default {
|
182
|
626
|
this.projectList = response.rows;
|
183
|
627
|
})
|
184
|
628
|
},
|
|
629
|
+ getUserList() {
|
|
630
|
+ listUser({ pageSize: 9999, pageNum: 1 }).then(res => {
|
|
631
|
+ this.userList = res.rows
|
|
632
|
+ })
|
|
633
|
+ },
|
|
634
|
+ getDeptList() {
|
|
635
|
+ listDept({ pageSize: 9999, pageNum: 1 }).then(res => {
|
|
636
|
+ this.deptList = res.data
|
|
637
|
+ })
|
|
638
|
+ },
|
185
|
639
|
// 选择项目
|
186
|
640
|
handleSelectProject(val) {
|
187
|
641
|
if (val != "" && val != undefined && val != null) {
|
188
|
642
|
getProject(val).then(res => {
|
189
|
643
|
this.chooseProject = res.data;
|
190
|
|
- this.isSelect = true
|
|
644
|
+ this.isSelect = true;
|
|
645
|
+ getProjectContract(this.chooseProject.projectId).then(response => {
|
|
646
|
+ if (response.data)
|
|
647
|
+ getContract(response.data.contractId).then(r => {
|
|
648
|
+ this.chooseContract = r.data;
|
|
649
|
+ });
|
|
650
|
+ else
|
|
651
|
+ this.chooseContract = {};
|
|
652
|
+ })
|
191
|
653
|
})
|
192
|
654
|
} else {
|
193
|
655
|
this.isSelect = false
|
194
|
656
|
}
|
195
|
|
-
|
196
|
657
|
},
|
197
|
658
|
// 取消按钮
|
198
|
659
|
cancel() {
|
199
|
660
|
this.open = false;
|
200
|
661
|
this.reset();
|
201
|
662
|
},
|
|
663
|
+ isEmptyObject(obj) {
|
|
664
|
+ for (var key in obj) {
|
|
665
|
+ if (obj.hasOwnProperty(key)) {
|
|
666
|
+ return false;
|
|
667
|
+ }
|
|
668
|
+ }
|
|
669
|
+ return true;
|
|
670
|
+ },
|
|
671
|
+ addWorkList() {
|
|
672
|
+ this.workList.push({
|
|
673
|
+ content: "",
|
|
674
|
+ scale: "",
|
|
675
|
+ unit: "",
|
|
676
|
+ workload: "",
|
|
677
|
+ deadline: undefined,
|
|
678
|
+ remark: "",
|
|
679
|
+ });
|
|
680
|
+ },
|
|
681
|
+ addPaymentList() {
|
|
682
|
+ this.paymentList.push({
|
|
683
|
+ paymentCondition: "",
|
|
684
|
+ paymentPercentage: "",
|
|
685
|
+ paymentAmount: "",
|
|
686
|
+ paymentTime: undefined,
|
|
687
|
+ remark: "",
|
|
688
|
+ });
|
|
689
|
+ },
|
|
690
|
+ addCommentList() {
|
|
691
|
+ this.commentList.push({
|
|
692
|
+ deptId: "",
|
|
693
|
+ userId: "",
|
|
694
|
+ comment: "",
|
|
695
|
+ document: "",
|
|
696
|
+ commentTime: undefined,
|
|
697
|
+ });
|
|
698
|
+ },
|
|
699
|
+ deletWorkItem(index) {
|
|
700
|
+ let arr = this.workList;
|
|
701
|
+ if (arr.length == 1) {
|
|
702
|
+ return;
|
|
703
|
+ }
|
|
704
|
+ if (index >= 0 && index < arr.length) {
|
|
705
|
+ arr.splice(index, 1);
|
|
706
|
+ }
|
|
707
|
+ },
|
|
708
|
+ deletPaymentItem(index) {
|
|
709
|
+ let arr = this.paymentList;
|
|
710
|
+ if (arr.length == 1) {
|
|
711
|
+ return;
|
|
712
|
+ }
|
|
713
|
+ if (index >= 0 && index < arr.length) {
|
|
714
|
+ arr.splice(index, 1);
|
|
715
|
+ }
|
|
716
|
+ },
|
|
717
|
+ deletCommentItem(index) {
|
|
718
|
+ let arr = this.commentList;
|
|
719
|
+ if (arr.length == 1) {
|
|
720
|
+ return;
|
|
721
|
+ }
|
|
722
|
+ if (index >= 0 && index < arr.length) {
|
|
723
|
+ arr.splice(index, 1);
|
|
724
|
+ }
|
|
725
|
+ },
|
|
726
|
+ changeCommentType(val) {
|
|
727
|
+ if (val == '0') {
|
|
728
|
+ this.commentOpen = false;
|
|
729
|
+ this.meetingOpen = false;
|
|
730
|
+ }
|
|
731
|
+ else if (val == '1') {
|
|
732
|
+ this.commentOpen = false;
|
|
733
|
+ this.meetingOpen = true;
|
|
734
|
+ }
|
|
735
|
+ else if (val == '2') {
|
|
736
|
+ this.commentOpen = true;
|
|
737
|
+ this.meetingOpen = false;
|
|
738
|
+ for (let comment of this.commentList) {
|
|
739
|
+ getUsersDeptLeaderByDept({ deptId: comment.deptId }).then(res => {
|
|
740
|
+ comment.userId = res.data.userId;
|
|
741
|
+ })
|
|
742
|
+ }
|
|
743
|
+ }
|
|
744
|
+ },
|
|
745
|
+ getDeptLeader(val) {
|
|
746
|
+ getUsersDeptLeaderByDept({ deptId: Number(val) }).then(res => {
|
|
747
|
+ for (let comment of this.commentList) {
|
|
748
|
+ if (comment.deptId == val)
|
|
749
|
+ comment.userId = res.data.userId;
|
|
750
|
+ }
|
|
751
|
+ })
|
|
752
|
+ },
|
202
|
753
|
// 表单重置
|
203
|
754
|
reset() {
|
204
|
755
|
this.form = {
|
|
@@ -254,18 +805,112 @@ export default {
|
254
|
805
|
submitForm() {
|
255
|
806
|
this.$refs["form"].validate(valid => {
|
256
|
807
|
if (valid) {
|
257
|
|
- if (this.form.subContractId != null) {
|
|
808
|
+ if (this.formTotal != 0) {
|
258
|
809
|
updateSubContract(this.form).then(response => {
|
259
|
810
|
this.$modal.msgSuccess("修改成功");
|
260
|
811
|
this.open = false;
|
261
|
812
|
this.getList();
|
262
|
813
|
});
|
|
814
|
+ const params = { taskId: this.taskForm.taskId };
|
|
815
|
+ getNextFlowNode(params).then(res => {
|
|
816
|
+ updateSubContract(this.form);
|
|
817
|
+ if (this.taskName == '分管审核') {
|
|
818
|
+ complete(this.taskForm).then(response => {
|
|
819
|
+ this.$modal.msgSuccess(response.msg);
|
|
820
|
+ this.$emit('goBack')
|
|
821
|
+ });
|
|
822
|
+ }
|
|
823
|
+ else if (this.taskName == '线上会审') {
|
|
824
|
+ for (let comment of this.commentList) {
|
|
825
|
+ updateContractComment(comment);
|
|
826
|
+ }
|
|
827
|
+ getUsersManageLeader({ userId: this.form.drafter }).then(res => {
|
|
828
|
+ let userId = res.data.userId;
|
|
829
|
+ this.$set(this.taskForm.variables, "approval", userId);
|
|
830
|
+ complete(this.taskForm).then(response => {
|
|
831
|
+ this.$modal.msgSuccess(response.msg);
|
|
832
|
+ this.$emit('goBack')
|
|
833
|
+ });
|
|
834
|
+ })
|
|
835
|
+ }
|
|
836
|
+ else if (this.taskName == '会议评审') {
|
|
837
|
+ this.meetingForm.contractId = this.form.subContractId;
|
|
838
|
+ let formData = new FormData();
|
|
839
|
+ let jsonForm = JSON.stringify(this.meetingForm);
|
|
840
|
+ formData.append("form", jsonForm);
|
|
841
|
+ updateContractMeeting(formData);
|
|
842
|
+ getUsersManageLeader({ userId: this.form.drafter }).then(res => {
|
|
843
|
+ let userId = res.data.userId;
|
|
844
|
+ this.$set(this.taskForm.variables, "approval", userId);
|
|
845
|
+ complete(this.taskForm).then(response => {
|
|
846
|
+ this.$modal.msgSuccess(response.msg);
|
|
847
|
+ this.$emit('goBack')
|
|
848
|
+ });
|
|
849
|
+ })
|
|
850
|
+ }
|
|
851
|
+ else if (this.taskName == '合同签订') {
|
|
852
|
+ complete(this.taskForm).then(response => {
|
|
853
|
+ this.$modal.msgSuccess(response.msg);
|
|
854
|
+ this.$emit('goBack')
|
|
855
|
+ });
|
|
856
|
+ }
|
|
857
|
+ })
|
263
|
858
|
} else {
|
|
859
|
+ this.form.subContractId = this.taskForm.formId;
|
264
|
860
|
addSubContract(this.form).then(response => {
|
265
|
861
|
this.$modal.msgSuccess("新增成功");
|
266
|
862
|
this.open = false;
|
267
|
863
|
this.getList();
|
268
|
864
|
});
|
|
865
|
+ for (let work of this.workList) {
|
|
866
|
+ work.contractId = this.form.subContractId
|
|
867
|
+ addContractWork(work);
|
|
868
|
+ }
|
|
869
|
+ for (let payment of this.paymentList) {
|
|
870
|
+ payment.contractId = this.form.subContractId
|
|
871
|
+ addContractPayment(payment);
|
|
872
|
+ }
|
|
873
|
+ const params = { taskId: this.taskForm.taskId };
|
|
874
|
+ getNextFlowNode(params).then(res => {
|
|
875
|
+ if (this.commentOpen == false && this.meetingOpen == false) {
|
|
876
|
+ getUsersManageLeader({ userId: this.$store.getters.userId }).then(res => {
|
|
877
|
+ let userId = res.data.userId;
|
|
878
|
+ this.$set(this.taskForm.variables, "approval", userId);
|
|
879
|
+ this.$set(this.taskForm.variables, "commentType", '0');
|
|
880
|
+ complete(this.taskForm).then(response => {
|
|
881
|
+ this.$modal.msgSuccess(response.msg);
|
|
882
|
+ this.$emit('goBack')
|
|
883
|
+ });
|
|
884
|
+ })
|
|
885
|
+ }
|
|
886
|
+ else if (this.commentOpen == true && this.meetingOpen == false) {
|
|
887
|
+ let approvalList = [];
|
|
888
|
+ for (let comment of this.commentList) {
|
|
889
|
+ comment.contractId = this.form.subContractId
|
|
890
|
+ addContractComment(comment);
|
|
891
|
+ approvalList.push(comment.userId)
|
|
892
|
+ }
|
|
893
|
+ this.$set(this.taskForm.variables, "approvalList", approvalList);
|
|
894
|
+ this.$set(this.taskForm.variables, "commentType", '2');
|
|
895
|
+ complete(this.taskForm).then(response => {
|
|
896
|
+ this.$modal.msgSuccess(response.msg);
|
|
897
|
+ this.$emit('goBack')
|
|
898
|
+ });
|
|
899
|
+ }
|
|
900
|
+ else if (this.commentOpen == false && this.meetingOpen == true) {
|
|
901
|
+ this.meetingForm.contractId = this.form.subContractId;
|
|
902
|
+ let formData = new FormData();
|
|
903
|
+ let jsonForm = JSON.stringify(this.meetingForm);
|
|
904
|
+ formData.append("form", jsonForm);
|
|
905
|
+ addContractMeeting(formData);
|
|
906
|
+ this.$set(this.taskForm.variables, "approval", this.meetingForm.hostId);
|
|
907
|
+ this.$set(this.taskForm.variables, "commentType", '1');
|
|
908
|
+ complete(this.taskForm).then(response => {
|
|
909
|
+ this.$modal.msgSuccess(response.msg);
|
|
910
|
+ this.$emit('goBack')
|
|
911
|
+ });
|
|
912
|
+ }
|
|
913
|
+ })
|
269
|
914
|
}
|
270
|
915
|
}
|
271
|
916
|
});
|
|
@@ -290,9 +935,15 @@ export default {
|
290
|
935
|
};
|
291
|
936
|
</script>
|
292
|
937
|
|
293
|
|
-<style>
|
294
|
|
-.auditor {
|
295
|
|
- font-family: '华文行楷';
|
296
|
|
- font-size: 20px;
|
|
938
|
+<style lang="scss" scoped>
|
|
939
|
+table {
|
|
940
|
+ /*居中*/
|
|
941
|
+ margin: 0 auto;
|
|
942
|
+ /*边框*/
|
|
943
|
+ /* border: 1px solid black; */
|
|
944
|
+ text-align: center;
|
|
945
|
+ border-collapse: collapse;
|
|
946
|
+ /*设置背景颜色*/
|
|
947
|
+ /* background-color: #bfa; */
|
297
|
948
|
}
|
298
|
949
|
</style>
|