|
@@ -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-09-02 11:24:50
|
|
5
|
+ * @LastEditTime: 2024-09-04 17:29:54
|
6
|
6
|
-->
|
7
|
7
|
<template>
|
8
|
8
|
<div class="app-container">
|
|
@@ -11,78 +11,75 @@
|
11
|
11
|
<h2 class="text-center">分包合同评审表</h2>
|
12
|
12
|
<el-form ref="form" :model="form" :rules="rules" label-width="130px" :formDisabled="formDisabled">
|
13
|
13
|
<el-divider></el-divider>
|
14
|
|
- <el-row :gutter="20">
|
15
|
|
- <el-col :span="16" :xs="24">
|
16
|
|
- <el-form-item label="分包合同名称" prop="subContractName">
|
17
|
|
- <el-input type="textarea" :rows="3" v-model="form.subContractName" placeholder="请输入分包合同名称"
|
18
|
|
- :disabled="taskName != '合同拟稿'" />
|
19
|
|
- </el-form-item>
|
20
|
|
- </el-col>
|
21
|
|
- <el-col :span="8" :xs="24">
|
22
|
|
- <el-form-item label="分包合同金额(元)" prop="subAmount" label-width="160px">
|
23
|
|
- <el-input-number :controls="false" v-model="form.subAmount" placeholder="请输入分包合同金额"
|
24
|
|
- :disabled="taskName != '合同拟稿'" />
|
25
|
|
- </el-form-item>
|
26
|
|
- </el-col>
|
27
|
|
- </el-row>
|
28
|
|
- <el-row :gutter="20">
|
29
|
|
- <el-col :span="16" :xs="24">
|
30
|
|
- <el-form-item label="承接单位" prop="partnerId">
|
31
|
|
- <el-select allow-create v-model="form.partnerId" multiple filterable placeholder="请选择"
|
32
|
|
- :style="taskName == '合同拟稿' ? { width: '84%' } : { width: '100%' }" disabled clearable>
|
33
|
|
- <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
|
34
|
|
- :value="item.partnerId">
|
35
|
|
- </el-option>
|
36
|
|
- </el-select>
|
37
|
|
- <el-button type="primary" @click="partnerOpen = true" size="mini"
|
38
|
|
- v-if="taskName == '合同拟稿'">选择单位</el-button>
|
39
|
|
- </el-form-item>
|
40
|
|
- </el-col>
|
41
|
|
- <el-col :span="8" :xs="24">
|
42
|
|
- <el-form-item label="联系人" prop="contactPerson">
|
43
|
|
- <el-input v-model="form.contactPerson" placeholder="请输入联系人" :disabled="taskName != '合同拟稿'" />
|
44
|
|
- </el-form-item>
|
45
|
|
- </el-col>
|
46
|
|
- </el-row>
|
47
|
|
-
|
48
|
|
- <el-row :gutter="20">
|
49
|
|
- <el-col :span="16" :xs="24">
|
50
|
|
- <el-form-item label="合同文件" prop="contractDocument">
|
51
|
|
- <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
|
52
|
|
- :filePathName="'分包合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
|
53
|
|
- @input="getContractPath">
|
54
|
|
- </FileUpload>
|
55
|
|
- <div v-if="form.contractDocument">
|
56
|
|
- <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
|
57
|
|
- {{ getFileName(form.contractDocument) }}
|
58
|
|
- </el-link>
|
59
|
|
- <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`"
|
60
|
|
- :underline="false" target="_blank">
|
61
|
|
- <span class="el-icon-download">下载文件</span>
|
62
|
|
- </el-link>
|
63
|
|
- </div>
|
64
|
|
- </el-form-item>
|
65
|
|
- </el-col>
|
66
|
|
- <el-col :span="8" :xs="24">
|
67
|
|
- <el-form-item label="联系电话" prop="telephone">
|
68
|
|
- <el-input v-model="form.telephone" placeholder="请输入联系电话" :disabled="taskName != '合同拟稿'" />
|
69
|
|
- </el-form-item>
|
70
|
|
- </el-col>
|
71
|
|
- </el-row>
|
|
14
|
+ <el-form-item label="分包合同名称" prop="subContractName">
|
|
15
|
+ <el-input type="textarea" :rows="3" v-model="form.subContractName" placeholder="请输入分包合同名称"
|
|
16
|
+ :disabled="taskName != '合同拟稿'" />
|
|
17
|
+ </el-form-item>
|
|
18
|
+ <el-form-item label="分包合同金额" prop="subAmount">
|
|
19
|
+ <el-input-number :controls="false" v-model="form.subAmount" placeholder="请输入分包合同金额"
|
|
20
|
+ :disabled="taskName != '合同拟稿'" />(元)
|
|
21
|
+ </el-form-item>
|
|
22
|
+ <el-form-item label="承接单位" prop="partnerId">
|
|
23
|
+ <el-select allow-create v-model="form.partnerId" multiple filterable placeholder="请选择"
|
|
24
|
+ :style="taskName == '合同拟稿' ? { width: '84%' } : { width: '100%' }" disabled clearable>
|
|
25
|
+ <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
|
|
26
|
+ :value="item.partnerId">
|
|
27
|
+ </el-option>
|
|
28
|
+ </el-select>
|
|
29
|
+ <el-button type="primary" @click="partnerOpen = true" size="mini" v-if="taskName == '合同拟稿'">选择单位</el-button>
|
|
30
|
+ </el-form-item>
|
|
31
|
+ <el-form-item label="联系人" prop="contactPerson">
|
|
32
|
+ <el-input v-model="form.contactPerson" placeholder="请输入联系人" :disabled="taskName != '合同拟稿'" />
|
|
33
|
+ </el-form-item>
|
|
34
|
+ <el-form-item label="联系电话" prop="telephone">
|
|
35
|
+ <el-input v-model="form.telephone" placeholder="请输入联系电话" :disabled="taskName != '合同拟稿'" />
|
|
36
|
+ </el-form-item>
|
|
37
|
+ <el-form-item label="合同文件" prop="contractDocument">
|
|
38
|
+ <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
|
|
39
|
+ :filePathName="'分包合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
|
|
40
|
+ @input="getContractPath">
|
|
41
|
+ </FileUpload>
|
|
42
|
+ <div v-if="form.contractDocument">
|
|
43
|
+ <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
|
|
44
|
+ {{ getFileName(form.contractDocument) }}
|
|
45
|
+ </el-link>
|
|
46
|
+ <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`"
|
|
47
|
+ :underline="false" target="_blank">
|
|
48
|
+ <span class="el-icon-download">下载文件</span>
|
|
49
|
+ </el-link>
|
|
50
|
+ </div>
|
|
51
|
+ </el-form-item>
|
72
|
52
|
<el-form-item label="关联项目" prop="projectId">
|
73
|
53
|
<el-button type="primary" size="mini" @click="open = true" v-if="taskName == '合同拟稿'">选择项目</el-button>
|
74
|
|
- <el-table :data="chooseProjectList" border v-if="isSelect">
|
|
54
|
+ <el-table :data="chooseProjectList" border>
|
75
|
55
|
<el-table-column type="index" width="50" label="序号" />
|
76
|
56
|
<el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" />
|
77
|
57
|
<el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
|
78
|
58
|
<el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName" />
|
79
|
59
|
<el-table-column label="承担部门" align="center" prop="undertakingDeptName"></el-table-column>
|
80
|
|
- <!-- <el-table-column label="主合同编码" align="center" key="contractCode" prop="contractCode" />
|
81
|
|
- <el-table-column label="主合同编号" align="center" key="contractNumber" prop="contractNumber" />
|
82
|
|
- <el-table-column label="主合同金额" align="center" key="amount" prop="amount" /> -->
|
|
60
|
+ <el-table-column label="操作" align="center">
|
|
61
|
+ <template slot-scope="scope">
|
|
62
|
+ <el-button type="text" icon="el-icon-view" @click="clickProjectFn(scope.row)">查看</el-button>
|
|
63
|
+ </template>
|
|
64
|
+ </el-table-column>
|
|
65
|
+ </el-table>
|
|
66
|
+ </el-form-item>
|
|
67
|
+ <el-form-item label="关联主合同:">
|
|
68
|
+ <el-button type="primary" size="mini" @click="contractOpen = true" icon="el-icon-plus"
|
|
69
|
+ v-if="taskName == '合同拟稿'">新增关联主合同</el-button>
|
|
70
|
+ <el-table v-loading="contractloading" :data="connectContractList" border>
|
|
71
|
+ <el-table-column label="合同名称" align="center" prop="contractName" width="220px" />
|
|
72
|
+ <el-table-column label="合同金额" align="center" prop="amount" />
|
|
73
|
+ <el-table-column label="甲方单位" align="center" prop="partyA.partyAName" width="220px" />
|
|
74
|
+ <el-table-column label="合同编码" align="center" prop="contractCode" />
|
|
75
|
+ <el-table-column label="合同编号" align="center" prop="contractNumber" />
|
|
76
|
+ <el-table-column label="操作" align="center">
|
|
77
|
+ <template slot-scope="scope">
|
|
78
|
+ <el-button type="text" icon="el-icon-view" @click="clickContractFn(scope.row)">查看</el-button>
|
|
79
|
+ </template>
|
|
80
|
+ </el-table-column>
|
83
|
81
|
</el-table>
|
84
|
82
|
</el-form-item>
|
85
|
|
-
|
86
|
83
|
<el-divider></el-divider>
|
87
|
84
|
<!-- 表1:合同计划工作量 -->
|
88
|
85
|
<work-table ref="workTableRef" :contractId="taskForm.formId" :taskName="taskName"></work-table>
|
|
@@ -343,6 +340,12 @@
|
343
|
340
|
<el-dialog title="选择合作单位" :visible.sync="partnerOpen" width="70%" append-to-body>
|
344
|
341
|
<choose-partner @confirm="confirmPartners"></choose-partner>
|
345
|
342
|
</el-dialog>
|
|
343
|
+ <el-drawer :visible.sync="drawerOpen" title="" :size="'70%'" append-to-body>
|
|
344
|
+ <projectInfo :needReturn="false"></projectInfo>
|
|
345
|
+ </el-drawer>
|
|
346
|
+ <el-drawer :visible.sync="formOpen" title="" :size="'55%'" append-to-body>
|
|
347
|
+ <contract-form :taskForm="contractId" :taskName="''" :formDisabled="true" :flowDisabled="false"></contract-form>
|
|
348
|
+ </el-drawer>
|
346
|
349
|
</div>
|
347
|
350
|
</template>
|
348
|
351
|
|
|
@@ -359,6 +362,7 @@ import { getContractMeeting, addContractMeeting, updateContractMeeting, delContr
|
359
|
362
|
import { listProjectContract } from "@/api/oa/contract/projectContract";
|
360
|
363
|
import { getContract } from "@/api/oa/contract/contract";
|
361
|
364
|
import { listSubContract, getSubContract, delSubContract, addSubContract, updateSubContract } from "@/api/oa/contract/subContract";
|
|
365
|
+import { listContractSubcontract, delContractSubcontract, addContractSubcontract } from "@/api/oa/contract/contractSubcontract"
|
362
|
366
|
import { listProjectSubcontract, addProjectSubcontract, delProjectSubcontract } from '@/api/oa/contract/projectSubcontract'
|
363
|
367
|
import { getUsersDeptLeader, getUsersManageLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept, getUserByPost } from '@/api/system/post.js'
|
364
|
368
|
import flow from '@/views/flowable/task/todo/detail/flow'
|
|
@@ -370,6 +374,8 @@ import { mapGetters } from "vuex";
|
370
|
374
|
import ChoosePartner from '../components/choosePartner.vue';
|
371
|
375
|
import workTable from './components/workTable.vue';
|
372
|
376
|
import paymentTable from './components/paymentTable.vue';
|
|
377
|
+import contractForm from '@/views/flowable/form/business/contractForm.vue';
|
|
378
|
+import projectInfo from '@/views/oa/project/info'
|
373
|
379
|
export default {
|
374
|
380
|
dicts: ['cmc_scale_grade', 'cmc_unit'],
|
375
|
381
|
components: {
|
|
@@ -378,7 +384,9 @@ export default {
|
378
|
384
|
FileItem,
|
379
|
385
|
ChoosePartner,
|
380
|
386
|
workTable,
|
381
|
|
- paymentTable
|
|
387
|
+ paymentTable,
|
|
388
|
+ contractForm,
|
|
389
|
+ projectInfo,
|
382
|
390
|
},
|
383
|
391
|
props: {
|
384
|
392
|
taskName: {
|
|
@@ -515,7 +523,15 @@ export default {
|
515
|
523
|
isSelect: false,
|
516
|
524
|
formTotal: 0,
|
517
|
525
|
flowData: {},
|
518
|
|
- clickTd: {}
|
|
526
|
+ clickTd: {},
|
|
527
|
+ contractOpen: false,
|
|
528
|
+ connectContractList: [],
|
|
529
|
+ contractloading: true,
|
|
530
|
+ formOpen: false,
|
|
531
|
+ contractId: {
|
|
532
|
+ formId: ''
|
|
533
|
+ },
|
|
534
|
+ drawerOpen: false,
|
519
|
535
|
};
|
520
|
536
|
},
|
521
|
537
|
created() {
|
|
@@ -576,6 +592,7 @@ export default {
|
576
|
592
|
},
|
577
|
593
|
initForm() {
|
578
|
594
|
getSubContract(this.taskForm.formId).then(res => {
|
|
595
|
+ this.getContractSubcontractList();
|
579
|
596
|
if (this.isEmptyObject(res.data)) {
|
580
|
597
|
this.formTotal = 0;
|
581
|
598
|
this.form.drafter = this.$store.getters.userId;
|
|
@@ -689,6 +706,20 @@ export default {
|
689
|
706
|
this.loading = false;
|
690
|
707
|
});
|
691
|
708
|
},
|
|
709
|
+ // 获取关联承接合同
|
|
710
|
+ getContractSubcontractList() {
|
|
711
|
+ this.contractloading = true;
|
|
712
|
+ const subContractId = this.taskForm.formId;
|
|
713
|
+ listContractSubcontract({ subContractId: subContractId }).then(async res => {
|
|
714
|
+ let list = []
|
|
715
|
+ for (let r of res.rows) {
|
|
716
|
+ let obj = await getContract(r.contractId)
|
|
717
|
+ list.push(obj.data)
|
|
718
|
+ }
|
|
719
|
+ this.connectContractList = list
|
|
720
|
+ this.contractloading = false;
|
|
721
|
+ })
|
|
722
|
+ },
|
692
|
723
|
// 查询承接单位列表
|
693
|
724
|
getPartnerList() {
|
694
|
725
|
this.loading = true
|
|
@@ -786,7 +817,8 @@ export default {
|
786
|
817
|
this.workList = this.$refs.workTableRef.workList;
|
787
|
818
|
this.paymentList = this.$refs.paymentRef.paymentList;
|
788
|
819
|
if (this.formTotal != 0) {
|
789
|
|
- if (this.form.partnerId)
|
|
820
|
+ console.log(this.form.partnerId);
|
|
821
|
+ if (this.form.partnerId && this.form.partnerId instanceof Array)
|
790
|
822
|
this.form.partnerId = this.form.partnerId.join(',')
|
791
|
823
|
updateSubContract(this.form).then(response => {
|
792
|
824
|
this.$modal.msgSuccess("修改成功");
|
|
@@ -796,12 +828,13 @@ export default {
|
796
|
828
|
});
|
797
|
829
|
} else {
|
798
|
830
|
this.form.subContractId = this.taskForm.formId;
|
799
|
|
- if (this.form.partnerId)
|
|
831
|
+ if (this.form.partnerId && this.form.partnerId.length)
|
800
|
832
|
this.form.partnerId = this.form.partnerId.join(',')
|
801
|
833
|
addSubContract(this.form).then(response => {
|
802
|
834
|
this.$modal.msgSuccess("新增成功");
|
803
|
835
|
this.open = false;
|
804
|
836
|
this.getList();
|
|
837
|
+ this.initForm();
|
805
|
838
|
});
|
806
|
839
|
const subContractId = this.form.subContractId;
|
807
|
840
|
this.chooseProjectList.forEach(item => {
|
|
@@ -1117,6 +1150,14 @@ export default {
|
1117
|
1150
|
}
|
1118
|
1151
|
return true;
|
1119
|
1152
|
},
|
|
1153
|
+ clickContractFn(row) {
|
|
1154
|
+ this.formOpen = true;
|
|
1155
|
+ this.contractId.formId = row.contractId
|
|
1156
|
+ },
|
|
1157
|
+ clickProjectFn(row) {
|
|
1158
|
+ this.$router.replace({ query: { ...this.$route.query, projectId: row.projectId } });
|
|
1159
|
+ this.drawerOpen = true;
|
|
1160
|
+ },
|
1120
|
1161
|
}
|
1121
|
1162
|
};
|
1122
|
1163
|
</script>
|