|
@@ -2,7 +2,7 @@
|
2
|
2
|
* @Author: ysh
|
3
|
3
|
* @Date: 2024-05-10 15:31:57
|
4
|
4
|
* @LastEditors: Please set LastEditors
|
5
|
|
- * @LastEditTime: 2024-05-13 18:58:07
|
|
5
|
+ * @LastEditTime: 2024-05-14 17:46:47
|
6
|
6
|
-->
|
7
|
7
|
<template>
|
8
|
8
|
<div class="app-container">
|
|
@@ -10,11 +10,12 @@
|
10
|
10
|
<el-col :span="18" :xs="24">
|
11
|
11
|
<h2 class="text-center">承接合同评审表</h2>
|
12
|
12
|
<el-divider></el-divider>
|
13
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="130px">
|
|
13
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="130px" :disabled="formDisabled">
|
14
|
14
|
<el-row :gutter="20">
|
15
|
15
|
<el-col :span="12" :xs="24">
|
16
|
16
|
<el-form-item label="投标项目名称:" prop="tenderId">
|
17
|
|
- <el-button type="primary" size="mini" @click="tbOpen = true">选择投标项目</el-button>
|
|
17
|
+ <el-button type="primary" size="mini" @click="tbOpen = true"
|
|
18
|
+ v-if="taskName == '合同拟稿'">选择投标项目</el-button>
|
18
|
19
|
<!-- <el-select v-model="form.tenderId" filterable placeholder="请选择" @change="handleSelectTender"
|
19
|
20
|
:disabled="taskName != '合同拟稿'" clearable>
|
20
|
21
|
<el-option v-for="item in tenderList" :key="item.value" :label="item.projectName"
|
|
@@ -64,14 +65,14 @@
|
64
|
65
|
</el-col>
|
65
|
66
|
|
66
|
67
|
<el-col :span="12" :xs="24">
|
67
|
|
- <el-form-item label="关联项目编号:" prop="projectIds">
|
|
68
|
+ <el-form-item label="关联项目:" prop="projectIds">
|
68
|
69
|
<!-- <el-select v-model="projectContractForm.projectIds" multiple filterable placeholder="请选择"
|
69
|
70
|
@change="handleSelectProject" :disabled="taskName != '合同拟稿'" clearable>
|
70
|
71
|
<el-option v-for="item in projectList" :key="item.value"
|
71
|
72
|
:label="item.projectNumber + item.projectName" :value="item.projectId">
|
72
|
73
|
</el-option>
|
73
|
74
|
</el-select> -->
|
74
|
|
- <el-button type="primary" size="mini" @click="open = true">选择项目</el-button>
|
|
75
|
+ <el-button type="primary" size="mini" @click="open = true" v-if="taskName == '合同拟稿'">选择项目</el-button>
|
75
|
76
|
</el-form-item>
|
76
|
77
|
<el-table v-loading="loading" :data="chooseProjectList">
|
77
|
78
|
<el-table-column label="项目编号" align="center" prop="projectNumber"></el-table-column>
|
|
@@ -83,16 +84,17 @@
|
83
|
84
|
|
84
|
85
|
</el-row>
|
85
|
86
|
<el-form-item label="合同文件" prop="contractDocument">
|
86
|
|
- <FileUpload v-if="form.tenderId == null" ref="contractFile" :limit="1" :filePathName="'合同文件'"
|
|
87
|
+ <FileUpload v-if="taskName == '合同拟稿'" ref="contractFile" :limit="1" :filePathName="'合同文件'"
|
87
|
88
|
:fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath"></FileUpload>
|
88
|
|
- <div v-if="form.tenderId != null">
|
|
89
|
+ <div v-if="taskName != '合同拟稿'">
|
89
|
90
|
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
|
90
|
91
|
tag="ul">
|
91
|
92
|
<li key="li01" class="el-upload-list__item ele-upload-list__item-content">
|
92
|
93
|
<el-link :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`" :underline="false"
|
93
|
94
|
target="_blank">
|
94
|
|
- <span class="el-icon-document" style="color:#0011ff;text-decoration: underline;"> {{
|
95
|
|
- getFileName(form.contractDocument) }} </span>
|
|
95
|
+ <span class="el-icon-document" style="color:#0011ff;text-decoration: underline;">
|
|
96
|
+ {{ getFileName(form.contractDocument) }}
|
|
97
|
+ </span>
|
96
|
98
|
</el-link>
|
97
|
99
|
</li>
|
98
|
100
|
</transition-group>
|
|
@@ -102,7 +104,7 @@
|
102
|
104
|
<el-form-item label="合同计划工作量:">
|
103
|
105
|
<table border="1">
|
104
|
106
|
<tr>
|
105
|
|
- <td>序号</td>
|
|
107
|
+ <td style="width: 50px;">序号</td>
|
106
|
108
|
<td>工作内容</td>
|
107
|
109
|
<td>等级或比例尺</td>
|
108
|
110
|
<td>单位</td>
|
|
@@ -119,10 +121,16 @@
|
119
|
121
|
:disabled="taskName != '合同拟稿'"></el-input>
|
120
|
122
|
</td>
|
121
|
123
|
<td>
|
122
|
|
- <el-input v-model="work.scale" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
124
|
+ <el-select v-model="work.scale" placeholder="请选择" clearable :disabled="taskName != '合同拟稿'">
|
|
125
|
+ <el-option v-for="dict in dict.type.cmc_scale_grade" :key="dict.value" :label="dict.label"
|
|
126
|
+ :value="dict.label" />
|
|
127
|
+ </el-select>
|
123
|
128
|
</td>
|
124
|
129
|
<td>
|
125
|
|
- <el-input v-model="work.unit" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
130
|
+ <el-select v-model="work.unit" placeholder="请选择" clearable :disabled="taskName != '合同拟稿'">
|
|
131
|
+ <el-option v-for="dict in dict.type.cmc_unit" :key="dict.value" :label="dict.label"
|
|
132
|
+ :value="dict.label" />
|
|
133
|
+ </el-select>
|
126
|
134
|
</td>
|
127
|
135
|
<td>
|
128
|
136
|
<el-input v-model="work.workload" clearable :disabled="taskName != '合同拟稿'"></el-input>
|
|
@@ -148,7 +156,7 @@
|
148
|
156
|
<el-form-item label="合同回款计划:">
|
149
|
157
|
<table border="1">
|
150
|
158
|
<tr>
|
151
|
|
- <td>序号</td>
|
|
159
|
+ <td style="width: 50px;">序号</td>
|
152
|
160
|
<td>回款条件</td>
|
153
|
161
|
<td>回款比例(%)</td>
|
154
|
162
|
<td>回款金额(元)</td>
|
|
@@ -188,7 +196,7 @@
|
188
|
196
|
:disabled="taskName != '合同拟稿'"></el-button>
|
189
|
197
|
</el-form-item>
|
190
|
198
|
<el-form-item label="合同备注" prop="remark">
|
191
|
|
- <el-input v-model="form.remark" placeholder="请输入合同备注" :disabled="taskName != '合同拟稿'" />
|
|
199
|
+ <el-input v-model="form.remark" type="textarea" placeholder="请输入合同备注" :disabled="taskName != '合同拟稿'" />
|
192
|
200
|
</el-form-item>
|
193
|
201
|
<el-row>
|
194
|
202
|
<el-col :span="6" :xs="24" :offset="12">
|
|
@@ -217,9 +225,9 @@
|
217
|
225
|
<td>会审部门</td>
|
218
|
226
|
<td>会审人</td>
|
219
|
227
|
<td>会审意见</td>
|
220
|
|
- <td>会审附件</td>
|
|
228
|
+ <td style="width: 200px;">会审附件</td>
|
221
|
229
|
<td style="width: 90px;">签名</td>
|
222
|
|
- <td>日期</td>
|
|
230
|
+ <td style="width: 100px;">日期</td>
|
223
|
231
|
</tr>
|
224
|
232
|
<tr v-for="(comment, index) in commentList" :key="index">
|
225
|
233
|
<td>
|
|
@@ -241,14 +249,33 @@
|
241
|
249
|
</td>
|
242
|
250
|
<td>
|
243
|
251
|
<el-input v-model="comment.comment" type="textarea" clearable :autosize="{ minRows: 4, maxRows: 10 }"
|
244
|
|
- :disabled="taskName != '线上会审' || (taskName == '线上会审' && !comment.commentUser)"></el-input>
|
|
252
|
+ :disabled="taskName != '线上会审' || (taskName == '线上会审' && comment.userId != userId)"></el-input>
|
245
|
253
|
</td>
|
246
|
|
- <td style="text-align:left;">
|
247
|
|
- <FileUpload :limit="1" :filePathName="'合同文件'"
|
248
|
|
- :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input=""></FileUpload>
|
|
254
|
+ <td style="text-align:left;" @click="clickFile(comment)">
|
|
255
|
+ <FileUpload v-if="comment.document == ''" ref="hs" :limit="1" :filePathName="'合同文件'"
|
|
256
|
+ :disabled="taskName != '线上会审' || (taskName == '线上会审' && !comment.commentUser)"
|
|
257
|
+ :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setCommentDocument">
|
|
258
|
+ </FileUpload>
|
|
259
|
+
|
249
|
260
|
<!-- <el-input v-model="comment.document" clearable
|
250
|
261
|
:disabled="taskName != '线上会审' || (taskName == '线上会审' && !comment.commentUser)"></el-input> -->
|
251
|
|
-
|
|
262
|
+ <div v-if="comment.document != ''">
|
|
263
|
+ <transition-group class="upload-file-list el-upload-list el-upload-list--text"
|
|
264
|
+ name="el-fade-in-linear" tag="ul">
|
|
265
|
+ <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
|
|
266
|
+ <el-link :href="`${baseUrl}${'/profile/upload' + comment.document}`" :underline="false"
|
|
267
|
+ target="_blank">
|
|
268
|
+ <span class="el-icon-document" style="color:#0011ff;text-decoration: underline;">
|
|
269
|
+ {{ getFileName(comment.document) }}
|
|
270
|
+ </span>
|
|
271
|
+ </el-link>
|
|
272
|
+ <div class="ele-upload-list__item-content-action" v-if="comment.userId == userId">
|
|
273
|
+ <el-link :underline="false" @click="handleFileDelete(comment, 'document')"
|
|
274
|
+ type="danger">删除</el-link>
|
|
275
|
+ </div>
|
|
276
|
+ </li>
|
|
277
|
+ </transition-group>
|
|
278
|
+ </div>
|
252
|
279
|
</td>
|
253
|
280
|
<td>
|
254
|
281
|
<span class="auditor"> {{ comment.commentUser ? comment.commentUser.nickName : '' }} </span>
|
|
@@ -302,7 +329,9 @@
|
302
|
329
|
<tr>
|
303
|
330
|
<td>评审意见表</td>
|
304
|
331
|
<td colspan="5">
|
305
|
|
- <el-input v-model="meetingForm.document" clearable :disabled="taskName != '会议评审'"></el-input>
|
|
332
|
+ <FileUpload v-if="taskName == '会议评审'" ref="contractFile" :limit="1" :filePathName="'合同文件'"
|
|
333
|
+ :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getMeetingPath"></FileUpload>
|
|
334
|
+ <!-- <el-input v-model="meetingForm.document" clearable :disabled="taskName != '会议评审'"></el-input> -->
|
306
|
335
|
</td>
|
307
|
336
|
</tr>
|
308
|
337
|
<tr>
|
|
@@ -326,7 +355,8 @@
|
326
|
355
|
</table>
|
327
|
356
|
</el-form-item>
|
328
|
357
|
<el-form-item label="分管审批意见" prop="remark">
|
329
|
|
- <el-input v-model="form.managerComment" placeholder="请输入分管审批意见" :disabled="taskName != '分管审核'" />
|
|
358
|
+ <el-input v-model="form.managerComment" type="textarea" placeholder="请输入审批意见"
|
|
359
|
+ :disabled="taskName != '分管审核'" />
|
330
|
360
|
</el-form-item>
|
331
|
361
|
<el-row>
|
332
|
362
|
<el-col :span="6" :xs="24" :offset="12">
|
|
@@ -347,15 +377,33 @@
|
347
|
377
|
</el-date-picker>
|
348
|
378
|
</el-form-item>
|
349
|
379
|
<el-form-item label="签订备注" prop="signRemark">
|
350
|
|
- <el-input v-model="form.signRemark" placeholder="请输入签订备注" :disabled="taskName != '合同签订'" />
|
|
380
|
+ <el-input v-model="form.signRemark" type="textarea" placeholder="请输入签订备注" :disabled="taskName != '合同签订'" />
|
351
|
381
|
</el-form-item>
|
352
|
382
|
<el-form-item label="签订扫描件" prop="signScan">
|
353
|
|
- <el-input v-model="form.signScan" placeholder="请输入签订扫描件" :disabled="taskName != '合同签订'" />
|
|
383
|
+ <!-- <el-input v-model="form.signScan" placeholder="请输入签订扫描件" :disabled="taskName != '合同签订'" /> -->
|
|
384
|
+ <FileUpload v-if="form.signScan == null || form.signScan == ''" ref="contractFile" :limit="1"
|
|
385
|
+ :filePathName="'合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getSignScanPath">
|
|
386
|
+ </FileUpload>
|
|
387
|
+ <div v-if="form.signScan != null && form.signScan != ''">
|
|
388
|
+ <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
|
|
389
|
+ tag="ul">
|
|
390
|
+ <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
|
|
391
|
+ <el-link :href="`${baseUrl}${'/profile/upload' + form.signScan}`" :underline="false" target="_blank">
|
|
392
|
+ <span class="el-icon-document" style="color:#0011ff;text-decoration: underline;">
|
|
393
|
+ {{ getFileName(form.signScan) }}
|
|
394
|
+ </span>
|
|
395
|
+ </el-link>
|
|
396
|
+ <div class="ele-upload-list__item-content-action" v-if="taskName != ''">
|
|
397
|
+ <el-link :underline="false" @click="handleFileDelete(form, 'signScan')" type="danger">删除</el-link>
|
|
398
|
+ </div>
|
|
399
|
+ </li>
|
|
400
|
+ </transition-group>
|
|
401
|
+ </div>
|
354
|
402
|
</el-form-item>
|
355
|
403
|
</el-form>
|
356
|
404
|
<div style="text-align: center;">
|
357
|
|
- <el-button type="primary" @click="submitForm">确 定</el-button>
|
358
|
|
- <el-button @click="cancel">取 消</el-button>
|
|
405
|
+ <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
|
|
406
|
+ <!-- <el-button @click="cancel">取 消</el-button> -->
|
359
|
407
|
</div>
|
360
|
408
|
</el-col>` `
|
361
|
409
|
<el-col :span="6" :xs="24">
|
|
@@ -369,7 +417,7 @@
|
369
|
417
|
</el-row>
|
370
|
418
|
|
371
|
419
|
<el-dialog title="选择项目" :visible.sync="open" width="70%" append-to-body>
|
372
|
|
- <choose-project @chooseProject="confirmProject" :chooseList="chooseProjectList"></choose-project>
|
|
420
|
+ <choose-project @chooseProject="confirmProject"></choose-project>
|
373
|
421
|
</el-dialog>
|
374
|
422
|
<el-dialog title="选择投标项目" :visible.sync="tbOpen" width="70%" append-to-body>
|
375
|
423
|
<choose-tender @choose="confirmTender"></choose-tender>
|
|
@@ -395,7 +443,9 @@ import flow from '@/views/flowable/task/todo/detail/flow'
|
395
|
443
|
import { flowXmlAndNode } from "@/api/flowable/definition";
|
396
|
444
|
import ChooseProject from '../components/chooseProject.vue';
|
397
|
445
|
import ChooseTender from '../components/chooseTender.vue';
|
|
446
|
+import { mapGetters } from "vuex";
|
398
|
447
|
export default {
|
|
448
|
+ dicts: ['cmc_scale_grade', 'cmc_unit'],
|
399
|
449
|
components: {
|
400
|
450
|
flow,
|
401
|
451
|
ChooseProject,
|
|
@@ -409,8 +459,15 @@ export default {
|
409
|
459
|
taskForm: {
|
410
|
460
|
type: Object,
|
411
|
461
|
required: true
|
|
462
|
+ },
|
|
463
|
+ formDisabled: {
|
|
464
|
+ type: Boolean,
|
|
465
|
+ default: false
|
412
|
466
|
}
|
413
|
467
|
},
|
|
468
|
+ computed: {
|
|
469
|
+ ...mapGetters(["userId"]),
|
|
470
|
+ },
|
414
|
471
|
name: "Contract",
|
415
|
472
|
data() {
|
416
|
473
|
return {
|
|
@@ -533,6 +590,7 @@ export default {
|
533
|
590
|
isSelect: false,
|
534
|
591
|
formTotal: 0,
|
535
|
592
|
flowData: {},
|
|
593
|
+ clickTd: {},
|
536
|
594
|
};
|
537
|
595
|
},
|
538
|
596
|
created() {
|
|
@@ -752,6 +810,16 @@ export default {
|
752
|
810
|
arr.splice(index, 1);
|
753
|
811
|
}
|
754
|
812
|
},
|
|
813
|
+ setCommentDocument(val) {
|
|
814
|
+ let arr = val.split('/upload');
|
|
815
|
+ this.clickTd.document = arr[1];
|
|
816
|
+ },
|
|
817
|
+ handleFileDelete(key, val) {
|
|
818
|
+ key[val] = ''
|
|
819
|
+ },
|
|
820
|
+ clickFile(val) {
|
|
821
|
+ this.clickTd = val
|
|
822
|
+ },
|
755
|
823
|
deletCommentItem(index) {
|
756
|
824
|
let arr = this.commentList;
|
757
|
825
|
if (arr.length == 1) {
|
|
@@ -937,12 +1005,25 @@ export default {
|
937
|
1005
|
if (val == "") {
|
938
|
1006
|
this.form.contractDocument = ""
|
939
|
1007
|
}
|
|
1008
|
+ },
|
|
1009
|
+ getSignScanPath(val) {
|
|
1010
|
+ let arr = val.split('/upload')
|
|
1011
|
+ this.form.signScan = arr[1]
|
|
1012
|
+ if (val == "") {
|
|
1013
|
+ this.form.signScan = ""
|
|
1014
|
+ }
|
|
1015
|
+ },
|
|
1016
|
+ getMeetingPath(val){
|
|
1017
|
+
|
940
|
1018
|
},
|
941
|
1019
|
getFileName(name) {
|
942
|
|
- let arr = name.split('/')
|
943
|
|
- return arr[arr.length - 1];
|
|
1020
|
+ if (name) {
|
|
1021
|
+ let arr = name.split('/')
|
|
1022
|
+ return arr[arr.length - 1];
|
|
1023
|
+ }
|
|
1024
|
+
|
944
|
1025
|
},
|
945
|
|
- confirmProject(val) {
|
|
1026
|
+ confirmProject(val) {
|
946
|
1027
|
this.open = false
|
947
|
1028
|
for (let v of val) {
|
948
|
1029
|
this.projectContractForm.projectIds.push(v.projectId);
|
|
@@ -974,4 +1055,26 @@ table {
|
974
|
1055
|
padding: 5px;
|
975
|
1056
|
}
|
976
|
1057
|
}
|
|
1058
|
+
|
|
1059
|
+.upload-file-uploader {
|
|
1060
|
+ margin-bottom: 5px;
|
|
1061
|
+}
|
|
1062
|
+
|
|
1063
|
+.upload-file-list .el-upload-list__item {
|
|
1064
|
+ border: 1px solid #e4e7ed;
|
|
1065
|
+ line-height: 2;
|
|
1066
|
+ margin-bottom: 10px;
|
|
1067
|
+ position: relative;
|
|
1068
|
+}
|
|
1069
|
+
|
|
1070
|
+.upload-file-list .ele-upload-list__item-content {
|
|
1071
|
+ display: flex;
|
|
1072
|
+ justify-content: space-between;
|
|
1073
|
+ align-items: center;
|
|
1074
|
+ color: inherit;
|
|
1075
|
+}
|
|
1076
|
+
|
|
1077
|
+.ele-upload-list__item-content-action .el-link {
|
|
1078
|
+ margin-right: 10px;
|
|
1079
|
+}
|
977
|
1080
|
</style>
|