소스 검색

修改合同、项目数据列表界面可点击按钮发起流程;

新增合同在合同拟稿时候的保存按钮。
余思翰 10 달 전
부모
커밋
044cc3da31

+ 0
- 7
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcContractController.java 파일 보기

79
     @PostMapping
79
     @PostMapping
80
     public AjaxResult add(@RequestBody CmcContract cmcContract)
80
     public AjaxResult add(@RequestBody CmcContract cmcContract)
81
     {
81
     {
82
-        if (!cmcContract.getPartyAId().matches("-?\\d+(\\.\\d+)?")) {
83
-            CmcPartyA cmcPartyA = new CmcPartyA();
84
-            cmcPartyA.setPartyAId(String.valueOf(cmcPartyAService.selectCmcPartyAList(new CmcPartyA()).size() + 1));
85
-            cmcPartyA.setPartyAName(cmcContract.getPartyAId());
86
-            cmcPartyAService.insertCmcPartyA(cmcPartyA);
87
-            cmcContract.setPartyAId(cmcPartyA.getPartyAId());
88
-        }
89
         return toAjax(cmcContractService.insertCmcContract(cmcContract));
82
         return toAjax(cmcContractService.insertCmcContract(cmcContract));
90
     }
83
     }
91
 
84
 

+ 1
- 0
oa-back/ruoyi-admin/src/main/resources/application-druid.yml 파일 보기

9
                 url: jdbc:mysql://localhost:3306/cmc_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
9
                 url: jdbc:mysql://localhost:3306/cmc_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
10
                 username: root
10
                 username: root
11
                 password: 123456
11
                 password: 123456
12
+#                password: cmcroot
12
             # 从库数据源
13
             # 从库数据源
13
             slave:
14
             slave:
14
                 # 从数据源开关/默认关闭
15
                 # 从数据源开关/默认关闭

+ 2
- 1
oa-back/ruoyi-admin/src/main/resources/application.yml 파일 보기

18
 server:
18
 server:
19
   # 服务器的HTTP端口,默认为8080
19
   # 服务器的HTTP端口,默认为8080
20
   port: 8080
20
   port: 8080
21
+#  port: 8086
21
   servlet:
22
   servlet:
22
     # 应用的访问路径
23
     # 应用的访问路径
23
     context-path: /
24
     context-path: /
60
       # 单个文件大小
61
       # 单个文件大小
61
       max-file-size: 100MB
62
       max-file-size: 100MB
62
       # 设置总上传的文件大小
63
       # 设置总上传的文件大小
63
-      max-request-size: 20MB
64
+      max-request-size: 200MB
64
   # 服务模块
65
   # 服务模块
65
   devtools:
66
   devtools:
66
     restart:
67
     restart:

+ 0
- 2
oa-ui/src/components/Editor/index.vue 파일 보기

186
   },
186
   },
187
   methods: {
187
   methods: {
188
     init() {
188
     init() {
189
-      debugger
190
       const editor = this.$refs.editor;
189
       const editor = this.$refs.editor;
191
       this.Quill = new Quill(editor, this.options);
190
       this.Quill = new Quill(editor, this.options);
192
       var Size = Quill.import("formats/size");
191
       var Size = Quill.import("formats/size");
285
       return true;
284
       return true;
286
     },
285
     },
287
     handleUploadSuccess(res, file) {
286
     handleUploadSuccess(res, file) {
288
-      debugger
289
       // 如果上传成功
287
       // 如果上传成功
290
       if (res.code == 200) {
288
       if (res.code == 200) {
291
         // 获取富文本组件实例
289
         // 获取富文本组件实例

+ 58
- 24
oa-ui/src/views/flowable/form/business/contractForm.vue 파일 보기

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-05-10 15:31:57
3
  * @Date: 2024-05-10 15:31:57
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-09 17:42:01
5
+ * @LastEditTime: 2024-07-24 16:09:37
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
14
           <el-row :gutter="20">
14
           <el-row :gutter="20">
15
             <el-col :span="12" :xs="24">
15
             <el-col :span="12" :xs="24">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
17
-                <el-button type="primary" size="mini" @click="tbOpen = true" v-if="taskName == '合同拟稿'">选择投标项目</el-button>
17
+                <el-button type="primary" size="mini" @click="tbOpen = true"
18
+                  v-if="taskName == '合同拟稿'">选择投标项目</el-button>
18
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="3" direction="vertical">
19
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="3" direction="vertical">
19
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="3">{{ chooseTender.projectName
20
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="3">{{ chooseTender.projectName
20
-                  }}</el-descriptions-item>
21
+                    }}</el-descriptions-item>
21
                   <el-descriptions-item label="项目来源" label-class-name="my-label">{{ getProjectSource(chooseTender)
22
                   <el-descriptions-item label="项目来源" label-class-name="my-label">{{ getProjectSource(chooseTender)
22
-                  }}</el-descriptions-item>
23
+                    }}</el-descriptions-item>
23
                   <el-descriptions-item label="联系人" label-class-name="my-label">{{ chooseTender.aPerson
24
                   <el-descriptions-item label="联系人" label-class-name="my-label">{{ chooseTender.aPerson
24
-                  }}</el-descriptions-item>
25
+                    }}</el-descriptions-item>
25
                   <el-descriptions-item label="联系电话" label-class-name="my-label">{{ chooseTender.aPhone
26
                   <el-descriptions-item label="联系电话" label-class-name="my-label">{{ chooseTender.aPhone
26
-                  }}</el-descriptions-item>
27
+                    }}</el-descriptions-item>
27
                 </el-descriptions>
28
                 </el-descriptions>
28
               </el-form-item>
29
               </el-form-item>
29
               <el-form-item label="合同名称" prop="contractName">
30
               <el-form-item label="合同名称" prop="contractName">
30
-                <el-input type="textarea" :rows="3" style="width: 100%;" v-model="form.contractName" placeholder="请输入合同名称"
31
-                  :disabled="taskName != '合同拟稿'"></el-input>
31
+                <el-input type="textarea" :rows="3" style="width: 100%;" v-model="form.contractName"
32
+                  placeholder="请输入合同名称" :disabled="taskName != '合同拟稿'"></el-input>
32
               </el-form-item>
33
               </el-form-item>
33
               <el-form-item label="甲方单位" prop="partyAId">
34
               <el-form-item label="甲方单位" prop="partyAId">
34
                 <el-select v-model="form.partyAId" filterable placeholder="请选择" disabled style="width: 100%;">
35
                 <el-select v-model="form.partyAId" filterable placeholder="请选择" disabled style="width: 100%;">
35
-                  <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName" :value="item.partyAId"
36
-                    :disabled="taskName != '合同拟稿'">
36
+                  <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName"
37
+                    :value="item.partyAId" :disabled="taskName != '合同拟稿'">
37
                   </el-option>
38
                   </el-option>
38
                 </el-select>
39
                 </el-select>
39
                 <el-button type="primary" @click="partyAOpen = true" size="mini"
40
                 <el-button type="primary" @click="partyAOpen = true" size="mini"
48
                   :disabled="taskName != '合同拟稿'"></el-input>
49
                   :disabled="taskName != '合同拟稿'"></el-input>
49
               </el-form-item>
50
               </el-form-item>
50
               <el-form-item label="合同金额" prop="amount">
51
               <el-form-item label="合同金额" prop="amount">
51
-                <el-input style="width:100%;" v-model="form.amount" placeholder="请输入合同金额" :disabled="taskName != '合同拟稿'">
52
+                <el-input style="width:100%;" v-model="form.amount" placeholder="请输入合同金额"
53
+                  :disabled="taskName != '合同拟稿'">
52
                   <template slot="append">元</template>
54
                   <template slot="append">元</template>
53
                 </el-input>
55
                 </el-input>
54
               </el-form-item>
56
               </el-form-item>
77
           </el-row>
79
           </el-row>
78
           <el-form-item label="合同文件" prop="contractDocument">
80
           <el-form-item label="合同文件" prop="contractDocument">
79
             <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
81
             <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
80
-              :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getContractPath">
82
+              :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
83
+              @input="getContractPath">
81
             </FileUpload>
84
             </FileUpload>
82
             <div v-if="form.contractDocument && taskName != '合同拟稿'">
85
             <div v-if="form.contractDocument && taskName != '合同拟稿'">
83
               <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
86
               <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
134
                     :disabled="taskName != '合同拟稿'"></el-input>
137
                     :disabled="taskName != '合同拟稿'"></el-input>
135
                 </td>
138
                 </td>
136
                 <td>
139
                 <td>
137
-                  <el-button type="danger" icon="el-icon-minus" size="mini" circle @click="deletWorkItem(index)"
138
-                    :disabled="taskName != '合同拟稿'"></el-button>
140
+                  <el-button type="text" style="color:#F56C6C" size="mini" circle @click="deletWorkItem(index)"
141
+                    :disabled="taskName != '合同拟稿'">删除行</el-button>
139
                 </td>
142
                 </td>
140
               </tr>
143
               </tr>
141
             </table>
144
             </table>
169
                     clearable :disabled="taskName != '合同拟稿'"></el-input-number>
172
                     clearable :disabled="taskName != '合同拟稿'"></el-input-number>
170
                 </td>
173
                 </td>
171
                 <td>
174
                 <td>
172
-                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd" type="date"
173
-                    placeholder="选择日期" :disabled="taskName != '合同拟稿'">
175
+                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
176
+                    type="date" placeholder="选择日期" :disabled="taskName != '合同拟稿'">
174
                   </el-date-picker>
177
                   </el-date-picker>
175
                 </td>
178
                 </td>
176
                 <td>
179
                 <td>
392
           </el-row>
395
           </el-row>
393
           <el-divider></el-divider>
396
           <el-divider></el-divider>
394
           <el-form-item label="签订日期" prop="signDate">
397
           <el-form-item label="签订日期" prop="signDate">
395
-            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期"
396
-              :disabled="taskName != '合同签订'">
398
+            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd"
399
+              placeholder="请选择签订日期" :disabled="taskName != '合同签订'">
397
             </el-date-picker>
400
             </el-date-picker>
398
           </el-form-item>
401
           </el-form-item>
399
           <el-form-item label="签订备注" prop="signRemark">
402
           <el-form-item label="签订备注" prop="signRemark">
403
           <el-form-item label="签订扫描件" prop="signScan">
406
           <el-form-item label="签订扫描件" prop="signScan">
404
             <!-- <el-input v-model="form.signScan" placeholder="请输入签订扫描件" :disabled="taskName != '合同签订'" /> -->
407
             <!-- <el-input v-model="form.signScan" placeholder="请输入签订扫描件" :disabled="taskName != '合同签订'" /> -->
405
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''"
408
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''"
406
-              ref="contractFile" :limit="1" :filePathName="'承接合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
407
-              @input="getSignScanPath">
409
+              ref="contractFile" :limit="1" :filePathName="'承接合同文件'"
410
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getSignScanPath">
408
             </FileUpload>
411
             </FileUpload>
409
             <div v-if="form.signScan && taskName != '合同签订'">
412
             <div v-if="form.signScan && taskName != '合同签订'">
410
               <!-- <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
413
               <!-- <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
433
           </el-form-item>
436
           </el-form-item>
434
         </el-form>
437
         </el-form>
435
         <div style="text-align: center;" v-if="taskName">
438
         <div style="text-align: center;" v-if="taskName">
439
+          <el-button type="warning" @click="saves()" :disabled="formDisabled" v-if="taskName == '合同拟稿'">保 存</el-button>
436
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
440
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
437
         </div>
441
         </div>
438
       </el-col>` `
442
       </el-col>` `
698
               this.isSelect = true
702
               this.isSelect = true
699
             })
703
             })
700
           }
704
           }
701
-          listContractWork({ contractId: this.taskForm.formId }).then(res => {
705
+          listContractWork({ pageNum: 1, pageSize: 100, contractId: this.taskForm.formId }).then(res => {
702
             if (res.rows)
706
             if (res.rows)
703
               this.workList = res.rows;
707
               this.workList = res.rows;
704
           });
708
           });
705
-          listContractPayment({ contractId: this.taskForm.formId }).then(res => {
709
+          listContractPayment({ pageNum: 1, pageSize: 100, contractId: this.taskForm.formId }).then(res => {
706
             if (res.rows)
710
             if (res.rows)
707
               this.paymentList = res.rows;
711
               this.paymentList = res.rows;
708
           });
712
           });
978
     validateTenderId(tenderId) {
982
     validateTenderId(tenderId) {
979
       // 这里添加你的验证逻辑  
983
       // 这里添加你的验证逻辑  
980
       // 例如,检查tenderId是否为空或者是否符合其他规则  
984
       // 例如,检查tenderId是否为空或者是否符合其他规则  
981
-      if (!tenderId || tenderId.trim() === '') {
985
+      if (!tenderId) {
982
         this.$message.error('请选择一个有效的投标项目');
986
         this.$message.error('请选择一个有效的投标项目');
983
         return false;
987
         return false;
984
       }
988
       }
993
       }
997
       }
994
       return true;
998
       return true;
995
     },
999
     },
1000
+    // 保存信息
1001
+    saves() {
1002
+      if (this.formTotal != 0) {
1003
+        this.updateContractData();
1004
+        this.updateRelatedProject();
1005
+      } else {
1006
+        this.form.contractId = this.taskForm.formId;
1007
+        addContract(this.form).then(response => {
1008
+          if (response.code == 200) {
1009
+            this.$modal.msgSuccess("新增成功");
1010
+            this.open = false;
1011
+            for (let work of this.workList) {
1012
+              work.contractId = this.form.contractId
1013
+              addContractWork(work);
1014
+            }
1015
+            for (let payment of this.paymentList) {
1016
+              payment.contractId = this.form.contractId
1017
+              addContractPayment(payment);
1018
+            }
1019
+            for (let projectId of this.projectContractForm.projectIds) {
1020
+              addProjectContract({ projectId: projectId, contractId: this.form.contractId });
1021
+            }
1022
+          } else {
1023
+            this.$message.error("新增失败,请确认合同编码是否唯一");
1024
+          }
1025
+        });
1026
+      }
1027
+    },
996
     /** 提交按钮 */
1028
     /** 提交按钮 */
997
     submitForm() {
1029
     submitForm() {
998
       this.isTenderIdValid = this.validateTenderId(this.form.tenderId);
1030
       this.isTenderIdValid = this.validateTenderId(this.form.tenderId);
1091
               }
1123
               }
1092
             });
1124
             });
1093
           }
1125
           }
1126
+        } else {
1127
+          this.$message.error('请完善必填项')
1094
         }
1128
         }
1095
       });
1129
       });
1096
     },
1130
     },
1097
     updateContractData() {
1131
     updateContractData() {
1098
       updateContract(this.form).then(response => {
1132
       updateContract(this.form).then(response => {
1099
-        this.$modal.msgSuccess("数据添加成功");
1133
+        this.$modal.msgSuccess("修改成功");
1100
         this.open = false;
1134
         this.open = false;
1101
         delContractWork(this.form.contractId).then(res => {
1135
         delContractWork(this.form.contractId).then(res => {
1102
           for (let work of this.workList) {
1136
           for (let work of this.workList) {

+ 57
- 15
oa-ui/src/views/flowable/form/business/subContract.vue 파일 보기

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-05-10 15:31:57
3
  * @Date: 2024-05-10 15:31:57
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-12 17:03:07
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-07-24 15:56:52
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
55
           <el-row :gutter="20">
55
           <el-row :gutter="20">
56
             <el-col :span="16" :xs="24">
56
             <el-col :span="16" :xs="24">
57
               <el-form-item label="承接单位" prop="partnerId">
57
               <el-form-item label="承接单位" prop="partnerId">
58
-                <el-select allow-create v-model="form.partnerId" multiple filterable placeholder="请选择" style="width: 84%;"
59
-                  disabled clearable>
58
+                <el-select allow-create v-model="form.partnerId" multiple filterable placeholder="请选择"
59
+                  style="width: 84%;" disabled clearable>
60
                   <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
60
                   <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
61
                     :value="item.partnerId">
61
                     :value="item.partnerId">
62
                   </el-option>
62
                   </el-option>
75
           <el-row :gutter="20">
75
           <el-row :gutter="20">
76
             <el-col :span="16" :xs="24">
76
             <el-col :span="16" :xs="24">
77
               <el-form-item label="合同文件" prop="contractDocument">
77
               <el-form-item label="合同文件" prop="contractDocument">
78
-                <FileUpload v-if="formTotal == 0" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
79
-                  :filePathName="'分包合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getContractPath">
78
+                <FileUpload v-if="taskName == '合同拟稿'" :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1"
79
+                  :filePathName="'分包合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
80
+                  @input="getContractPath">
80
                 </FileUpload>
81
                 </FileUpload>
81
-                <div v-if="taskName != '合同拟稿' && form.contractDocument">
82
+                <div v-if="form.contractDocument">
82
                   <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
83
                   <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
83
                     {{ getFileName(form.contractDocument) }}
84
                     {{ getFileName(form.contractDocument) }}
84
                   </el-link>
85
                   </el-link>
174
                     :disabled="taskName != '合同拟稿'"></el-input-number>
175
                     :disabled="taskName != '合同拟稿'"></el-input-number>
175
                 </td>
176
                 </td>
176
                 <td>
177
                 <td>
177
-                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd" type="date"
178
-                    placeholder="选择日期" :disabled="taskName != '合同拟稿'">
178
+                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
179
+                    type="date" placeholder="选择日期" :disabled="taskName != '合同拟稿'">
179
                   </el-date-picker>
180
                   </el-date-picker>
180
                 </td>
181
                 </td>
181
                 <td>
182
                 <td>
325
                 <td colspan="5" style="text-align:left;">
326
                 <td colspan="5" style="text-align:left;">
326
                   <FileUpload v-if="meetingForm.document == null || meetingForm.document == ''" ref="contractFile"
327
                   <FileUpload v-if="meetingForm.document == null || meetingForm.document == ''" ref="contractFile"
327
                     :limit="1" :filePathName="'分包合同/会议评审意见'" :disabled="taskName != '会议评审'"
328
                     :limit="1" :filePathName="'分包合同/会议评审意见'" :disabled="taskName != '会议评审'"
328
-                    :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getMeetingPath"></FileUpload>
329
+                    :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getMeetingPath">
330
+                  </FileUpload>
329
                   <div v-if="meetingForm.document != null && meetingForm.document != ''">
331
                   <div v-if="meetingForm.document != null && meetingForm.document != ''">
330
                     <file-item :document="meetingForm.document"></file-item>
332
                     <file-item :document="meetingForm.document"></file-item>
331
                   </div>
333
                   </div>
389
           </el-row>
391
           </el-row>
390
           <el-divider></el-divider>
392
           <el-divider></el-divider>
391
           <el-form-item label="签订日期" prop="signDate">
393
           <el-form-item label="签订日期" prop="signDate">
392
-            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期"
393
-              :disabled="taskName != '合同签订'">
394
+            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd"
395
+              placeholder="请选择签订日期" :disabled="taskName != '合同签订'">
394
             </el-date-picker>
396
             </el-date-picker>
395
           </el-form-item>
397
           </el-form-item>
396
           <el-form-item label="签订备注" prop="signRemark">
398
           <el-form-item label="签订备注" prop="signRemark">
398
           </el-form-item>
400
           </el-form-item>
399
           <el-form-item label="签订扫描件" prop="signScan">
401
           <el-form-item label="签订扫描件" prop="signScan">
400
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''" :limit="1"
402
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''" :limit="1"
401
-              :filePathName="'分包合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getSignScanPath">
403
+              :filePathName="'分包合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
404
+              @input="getSignScanPath">
402
             </FileUpload>
405
             </FileUpload>
403
             <div v-if="form.signScan && taskName != '合同签订'">
406
             <div v-if="form.signScan && taskName != '合同签订'">
404
               <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">
407
               <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">
412
           </el-form-item>
415
           </el-form-item>
413
         </el-form>
416
         </el-form>
414
         <div style="text-align: center;" v-if="flowDisabled">
417
         <div style="text-align: center;" v-if="flowDisabled">
418
+          <el-button type="warning" @click="saves()" :disabled="formDisabled" v-if="taskName == '合同拟稿'">保 存</el-button>
415
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
419
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
416
         </div>
420
         </div>
417
       </el-col>
421
       </el-col>
706
               })
710
               })
707
             }
711
             }
708
           })
712
           })
709
-          listContractWork({ contractId: this.taskForm.formId }).then(res => {
713
+          listContractWork({ pageNum: 1, pageSize: 100, contractId: this.taskForm.formId }).then(res => {
710
             if (res.rows)
714
             if (res.rows)
711
               this.workList = res.rows;
715
               this.workList = res.rows;
712
           });
716
           });
713
-          listContractPayment({ contractId: this.taskForm.formId }).then(res => {
717
+          listContractPayment({ pageNum: 1, pageSize: 100, contractId: this.taskForm.formId }).then(res => {
714
             if (res.rows)
718
             if (res.rows)
715
               this.paymentList = res.rows;
719
               this.paymentList = res.rows;
716
           });
720
           });
923
       }
927
       }
924
       return true;
928
       return true;
925
     },
929
     },
930
+    // 保存信息
931
+    saves() {
932
+      if (this.formTotal != 0) {
933
+        if (this.form.partnerId)
934
+          this.form.partnerId = this.form.partnerId.join(',')
935
+        updateSubContract(this.form).then(response => {
936
+          this.$modal.msgSuccess("修改成功");
937
+          this.open = false;
938
+          this.getList();
939
+          this.updateChooseProjectList()
940
+        });
941
+      } else {
942
+        this.form.subContractId = this.taskForm.formId;
943
+        if (this.form.partnerId)
944
+          this.form.partnerId = this.form.partnerId.join(',')
945
+        addSubContract(this.form).then(response => {
946
+          this.$modal.msgSuccess("新增成功");
947
+          this.open = false;
948
+          this.getList();
949
+        });
950
+        const subContractId = this.form.subContractId;
951
+        this.chooseProjectList.forEach(item => {
952
+          addProjectSubcontract({ subContractId: subContractId, projectId: item.projectId })
953
+        })
954
+        for (let work of this.workList) {
955
+          work.contractId = subContractId;
956
+          addContractWork(work);
957
+        }
958
+        for (let payment of this.paymentList) {
959
+          payment.contractId = subContractId;
960
+          addContractPayment(payment);
961
+        }
962
+        const params = { taskId: this.taskForm.taskId };
963
+        getNextFlowNode(params).then(res => {
964
+          this.contractDraftSubmit(handleComplete)
965
+        })
966
+      }
967
+    },
926
     /** 提交按钮 */
968
     /** 提交按钮 */
927
     submitForm() {
969
     submitForm() {
928
       let isProjectValid = this.validateManual(this.chooseProjectList);
970
       let isProjectValid = this.validateManual(this.chooseProjectList);

+ 0
- 1
oa-ui/src/views/flowable/form/oa/deviceForm.vue 파일 보기

441
         });
441
         });
442
       } else if (this.taskName == '安排设备') {
442
       } else if (this.taskName == '安排设备') {
443
         getUsersManageLeader({ userId: this.form.applier }).then(res => {
443
         getUsersManageLeader({ userId: this.form.applier }).then(res => {
444
-          debugger
445
           let userId = [];
444
           let userId = [];
446
           res.data.forEach(user => {
445
           res.data.forEach(user => {
447
             userId.push(user.userId)
446
             userId.push(user.userId)

+ 0
- 1
oa-ui/src/views/flowable/form/projectProcess/addproject.vue 파일 보기

301
       // 获取下一个流程节点
301
       // 获取下一个流程节点
302
       this.$refs['projectAdd'].validate((vaild) => {
302
       this.$refs['projectAdd'].validate((vaild) => {
303
         if (vaild) {
303
         if (vaild) {
304
-          console.log(vaild);
305
           const params = { taskId: this.taskForm.taskId };
304
           const params = { taskId: this.taskForm.taskId };
306
           getNextFlowNode(params).then(res => {
305
           getNextFlowNode(params).then(res => {
307
             complete(this.taskForm).then(response => {
306
             complete(this.taskForm).then(response => {

+ 20
- 13
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue 파일 보기

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-19 09:24:06
3
  * @Date: 2024-03-19 09:24:06
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-10 17:51:06
5
+ * @LastEditTime: 2024-07-24 11:04:44
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
32
         <el-col :span="12" :xs="24">
32
         <el-col :span="12" :xs="24">
33
           <el-form-item label="项目负责人:" prop="projectLeader">
33
           <el-form-item label="项目负责人:" prop="projectLeader">
34
             <el-select v-model="form.projectLeader" placeholder="请选择项目负责人" size="large" disabled>
34
             <el-select v-model="form.projectLeader" placeholder="请选择项目负责人" size="large" disabled>
35
-              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
35
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
36
+                :value="item.userId" />
36
             </el-select>
37
             </el-select>
37
             <!-- <el-tag effect="plain" type="warning" style="margin-right: 10px;"
38
             <!-- <el-tag effect="plain" type="warning" style="margin-right: 10px;"
38
               v-if="form.projectLeader != '' && form.projectLeader != undefined">{{
39
               v-if="form.projectLeader != '' && form.projectLeader != undefined">{{
258
         if (resData.data) {
259
         if (resData.data) {
259
           approvalId = resData.data[0].userId;
260
           approvalId = resData.data[0].userId;
260
         }
261
         }
261
-        const params = { taskId: this.taskForm.taskId };
262
-        // 获取下一个流程节点
263
-        getNextFlowNode(params).then(res => {
264
-          this.$set(this.taskForm.variables, "formId", this.taskForm.formId);
265
-          this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId || this.form.projectLeader);
266
-          this.$set(this.taskForm.variables, "planInitiator", this.peopleForm.userId || this.form.projectLeader);
267
-          this.$set(this.taskForm.variables, "approval", approvalId);
268
-          complete(this.taskForm).then(response => {
269
-            this.$modal.msgSuccess(response.msg);
270
-            this.$emit('goBack');
271
-          });
262
+        this.$refs['arrangeForm'].validate((vaild) => {
263
+          if (vaild) {
264
+            const params = { taskId: this.taskForm.taskId };
265
+            // 获取下一个流程节点
266
+            getNextFlowNode(params).then(res => {
267
+              this.$set(this.taskForm.variables, "formId", this.taskForm.formId);
268
+              this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId || this.form.projectLeader);
269
+              this.$set(this.taskForm.variables, "planInitiator", this.peopleForm.userId || this.form.projectLeader);
270
+              this.$set(this.taskForm.variables, "approval", approvalId);
271
+              complete(this.taskForm).then(response => {
272
+                this.$modal.msgSuccess(response.msg);
273
+                this.$emit('goBack');
274
+              });
275
+            })
276
+          }else{
277
+            this.$message.error('请完善必填项')
278
+          }
272
         })
279
         })
273
       })
280
       })
274
 
281
 

+ 2
- 2
oa-ui/src/views/flowable/task/myProcess/index.vue 파일 보기

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-04 13:06:15
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-07-24 10:21:34
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">

+ 22
- 7
oa-ui/src/views/oa/contract/index.vue 파일 보기

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-18 09:05:41
3
  * @Date: 2024-03-18 09:05:41
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-23 17:11:21
5
+ * @LastEditTime: 2024-07-24 15:01:08
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
54
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
54
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
55
           v-hasPermi="['oa:contract:remove']">删除</el-button>
55
           v-hasPermi="['oa:contract:remove']">删除</el-button>
56
       </el-col> -->
56
       </el-col> -->
57
-      <!-- <el-col :span="1.5">
58
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleRegister"
59
-          v-hasPermi="['oa:contract:add']">登记合同</el-button>
60
-      </el-col> -->
57
+      <el-col :span="1.5">
58
+        <el-button type="success" plain icon="el-icon-plus" size="mini" @click="handleRegister"
59
+          v-hasPermi="['oa:contract:add']">登记承接合同</el-button>
60
+      </el-col>
61
       <el-col :span="1.5">
61
       <el-col :span="1.5">
62
         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
62
         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
63
           v-hasPermi="['oa:contract:export']">导出</el-button>
63
           v-hasPermi="['oa:contract:export']">导出</el-button>
322
       });
322
       });
323
     },
323
     },
324
     // 登记合同
324
     // 登记合同
325
-    handleRegister(row) {
326
-      // this.handleStartProcess(row)
325
+    async handleRegister() {
326
+      let response = await listDefinition({
327
+        pageNum: 1,
328
+        pageSize: 9999,
329
+        name: "承接合同评审",
330
+        category: "business",
331
+      })
332
+      if (response.data.total == 1) {
333
+        let obj = response.data.records[0]
334
+        this.$confirm("是否发起承接合同评审流程?", '提示', {
335
+          confirmButtonText: '确定',
336
+          cancelButtonText: '取消',
337
+          type: 'warning'
338
+        }).then(() => {
339
+          this.handleStartProcess(obj)
340
+        }).catch(() => { });
341
+      }
327
     },
342
     },
328
     handleStartProcess(row) {
343
     handleStartProcess(row) {
329
       let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
344
       let formId = new Snowflake(1n, 1n, 0n).nextId().toString();

+ 82
- 2
oa-ui/src/views/oa/contract/subContract.vue 파일 보기

27
     </el-form>
27
     </el-form>
28
 
28
 
29
     <el-row :gutter="10" class="mb8">
29
     <el-row :gutter="10" class="mb8">
30
+      <el-col :span="1.5">
31
+        <el-button type="success" plain icon="el-icon-plus" size="mini" @click="handleRegister"
32
+          v-hasPermi="['oa:contract:add']">登记分包合同</el-button>
33
+      </el-col>
30
       <el-col :span="1.5">
34
       <el-col :span="1.5">
31
         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
35
         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
32
           v-hasPermi="['oa:subContract:export']">导出</el-button>
36
           v-hasPermi="['oa:subContract:export']">导出</el-button>
112
           <el-input v-model="form.drafter" placeholder="请输入拟稿人" />
116
           <el-input v-model="form.drafter" placeholder="请输入拟稿人" />
113
         </el-form-item>
117
         </el-form-item>
114
         <el-form-item label="拟稿日期" prop="draftTime">
118
         <el-form-item label="拟稿日期" prop="draftTime">
115
-          <el-date-picker clearable v-model="form.draftTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择拟稿日期">
119
+          <el-date-picker clearable v-model="form.draftTime" type="date" value-format="yyyy-MM-dd"
120
+            placeholder="请选择拟稿日期">
116
           </el-date-picker>
121
           </el-date-picker>
117
         </el-form-item>
122
         </el-form-item>
118
         <el-form-item label="合同备注" prop="remark">
123
         <el-form-item label="合同备注" prop="remark">
145
 import { listSubContract, getSubContract, delSubContract, addSubContract, updateSubContract } from "@/api/oa/contract/subContract";
150
 import { listSubContract, getSubContract, delSubContract, addSubContract, updateSubContract } from "@/api/oa/contract/subContract";
146
 import { listPartner } from "@/api/oa/partner/partner";
151
 import { listPartner } from "@/api/oa/partner/partner";
147
 import subContract from '../../flowable/form/business/subContract.vue';
152
 import subContract from '../../flowable/form/business/subContract.vue';
153
+import { listDefinition } from "@/api/flowable/definition";
154
+import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
155
+import { todoList, getNextFlowNodeByStart } from "@/api/flowable/todo";
156
+import { Snowflake } from '@/utils/snowFlake.js'
148
 
157
 
149
 export default {
158
 export default {
150
   components: { subContract },
159
   components: { subContract },
214
     remoteMethod(val) {
223
     remoteMethod(val) {
215
       listPartner({
224
       listPartner({
216
         pageNum: 1,
225
         pageNum: 1,
217
-        pageSize: 20, 
226
+        pageSize: 20,
218
         partnerName: val
227
         partnerName: val
219
       }).then(res => {
228
       }).then(res => {
220
         this.partnerList = res.rows;
229
         this.partnerList = res.rows;
282
         this.title = "修改cmc分包合同评审";
291
         this.title = "修改cmc分包合同评审";
283
       });
292
       });
284
     },
293
     },
294
+    async handleRegister() {
295
+      let response = await listDefinition({
296
+        pageNum: 1,
297
+        pageSize: 9999,
298
+        name: "分包合同评审",
299
+        category: "business",
300
+      })
301
+      if (response.data.total == 1) {
302
+        let obj = response.data.records[0]
303
+        this.$confirm("是否发起分包合同评审流程?", '提示', {
304
+          confirmButtonText: '确定',
305
+          cancelButtonText: '取消',
306
+          type: 'warning'
307
+        }).then(() => {
308
+          this.handleStartProcess(obj)
309
+        }).catch(() => { });
310
+      }
311
+    },
312
+    handleStartProcess(row) {
313
+      let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
314
+      getNextFlowNodeByStart({ deploymentId: row.deploymentId, variables: { formId: formId } }).then(res => {
315
+        let data = res.data;
316
+        const variables = {};
317
+        const formData = {};
318
+        formData.disabled = true;
319
+        formData.formBtns = false;
320
+        formData.formId = formId
321
+        if (row.id) {
322
+          variables.variables = formData;
323
+          let routePath = this.getRoutePath(row);
324
+          definitionStart(row.id, JSON.stringify(variables)).then(res => {
325
+            this.$modal.msgSuccess(res.msg);
326
+            let procInstanceId = res.data;
327
+            todoList({
328
+              pageNum: 1,
329
+              pageSize: 99999999, processInsId: procInstanceId
330
+            }).then(toDoRes => {
331
+              let records = toDoRes.data.records;
332
+              if (records.length == 1) {
333
+                records = records[0]
334
+              }
335
+              this.$router.push({
336
+                path: routePath,
337
+                query: {
338
+                  procInsId: records.procInsId,
339
+                  executionId: records.executionId,
340
+                  deployId: records.deployId,
341
+                  taskId: records.taskId,
342
+                  taskName: records.taskName,
343
+                  startUser: records.startUserName + '-' + records.startDeptName,
344
+                  formId: formData.formId,
345
+                  procDefName: records.procDefName
346
+                }
347
+              })
348
+            })
349
+          })
350
+        }
351
+      })
352
+    },
285
     /** 提交按钮 */
353
     /** 提交按钮 */
286
     submitForm() {
354
     submitForm() {
287
       this.$refs["form"].validate(valid => {
355
       this.$refs["form"].validate(valid => {
302
         }
370
         }
303
       });
371
       });
304
     },
372
     },
373
+    getRoutePath(row) {
374
+      let path;
375
+      for (let p of this.publicData.pathRoute) {
376
+        if (p.name == row.name) {
377
+          path = p.path
378
+          break
379
+        } else {
380
+          path = '/flowable/task/todo/detail/index'
381
+        }
382
+      }
383
+      return path
384
+    },
305
     /** 删除按钮操作 */
385
     /** 删除按钮操作 */
306
     handleDelete(row) {
386
     handleDelete(row) {
307
       const subContractIds = row.subContractId || this.ids;
387
       const subContractIds = row.subContractId || this.ids;

+ 85
- 9
oa-ui/src/views/oa/project/index.vue 파일 보기

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-18 13:54:18
5
+ * @LastEditTime: 2024-07-24 16:28:58
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
72
     <el-card style="margin-top: 20px;">
72
     <el-card style="margin-top: 20px;">
73
       <div slot="header" class="card-header">
73
       <div slot="header" class="card-header">
74
         <div style="font-weight: bold;font-size: 20px;">项目列表</div>
74
         <div style="font-weight: bold;font-size: 20px;">项目列表</div>
75
-        <!-- <div>
76
-          <el-button style="float: right;margin-right: 10px;" type="warning" size="mini" icon="el-icon-plus"
77
-            @click="handleAdd">新增项目</el-button>
78
-        </div> -->
75
+        <div>
76
+          <el-button style="float: right;margin-right: 10px;" type="success" size="mini" icon="el-icon-plus"
77
+            @click="handleRegister">登记项目</el-button>
78
+        </div>
79
       </div>
79
       </div>
80
       <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;">
80
       <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;">
81
         <el-table-column type="index" width="50">
81
         <el-table-column type="index" width="50">
93
               :percentage="scope.row.percentage" text-color="#fff"></el-progress>
93
               :percentage="scope.row.percentage" text-color="#fff"></el-progress>
94
           </template>
94
           </template>
95
         </el-table-column>
95
         </el-table-column>
96
-        <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px"/>
96
+        <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" />
97
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
97
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
98
-        <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName" width="120px" />
98
+        <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName"
99
+          width="120px" />
99
         <el-table-column label="项目级别" align="center" key="projectLevel" prop="projectLevel" width="120px">
100
         <el-table-column label="项目级别" align="center" key="projectLevel" prop="projectLevel" width="120px">
100
           <template slot-scope="scope">
101
           <template slot-scope="scope">
101
             <el-tag :type="scope.row.projectLevel ? (scope.row.projectLevel === '0' ? 'info' : 'danger') : 'info'"
102
             <el-tag :type="scope.row.projectLevel ? (scope.row.projectLevel === '0' ? 'info' : 'danger') : 'info'"
104
             </el-tag>
105
             </el-tag>
105
           </template>
106
           </template>
106
         </el-table-column>
107
         </el-table-column>
107
-        <el-table-column label="项目类型" align="center" key="projectType" prop="projectType" width="120px"/>
108
+        <el-table-column label="项目类型" align="center" key="projectType" prop="projectType" width="120px" />
108
         <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
109
         <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
109
           <template slot-scope="scope" v-if="scope.row.userId !== 1">
110
           <template slot-scope="scope" v-if="scope.row.userId !== 1">
110
             <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
111
             <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
246
 import { listUser, getUser } from '@/api/system/user';
247
 import { listUser, getUser } from '@/api/system/user';
247
 import { mapGetters } from 'vuex';
248
 import { mapGetters } from 'vuex';
248
 import { checkPermi } from '@/utils/permission';
249
 import { checkPermi } from '@/utils/permission';
250
+import { listDefinition } from "@/api/flowable/definition";
251
+import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
252
+import { todoList, getNextFlowNodeByStart } from "@/api/flowable/todo";
253
+import { Snowflake } from '@/utils/snowFlake.js'
249
 
254
 
250
 export default {
255
 export default {
251
   computed: {
256
   computed: {
455
       } else {
460
       } else {
456
         return 'success'
461
         return 'success'
457
       }
462
       }
458
-    }
463
+    },
464
+    async handleRegister() {
465
+      let response = await listDefinition({
466
+        pageNum: 1,
467
+        pageSize: 9999,
468
+        name: "项目流转",
469
+        category: "project",
470
+      })
471
+      if (response.data.total == 1) {
472
+        let obj = response.data.records[0]
473
+        this.$confirm("是否发起项目流转?", '提示', {
474
+          confirmButtonText: '确定',
475
+          cancelButtonText: '取消',
476
+          type: 'warning'
477
+        }).then(() => {
478
+          this.handleStartProcess(obj)
479
+        }).catch(() => { });
480
+      }
481
+    },
482
+    handleStartProcess(row) {
483
+      let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
484
+      getNextFlowNodeByStart({ deploymentId: row.deploymentId, variables: { formId: formId } }).then(res => {
485
+        let data = res.data;
486
+        const variables = {};
487
+        const formData = {};
488
+        formData.disabled = true;
489
+        formData.formBtns = false;
490
+        formData.formId = formId
491
+        if (row.id) {
492
+          variables.variables = formData;
493
+          let routePath = this.getRoutePath(row);
494
+          definitionStart(row.id, JSON.stringify(variables)).then(res => {
495
+            this.$modal.msgSuccess(res.msg);
496
+            let procInstanceId = res.data;
497
+            todoList({
498
+              pageNum: 1,
499
+              pageSize: 99999999, processInsId: procInstanceId
500
+            }).then(toDoRes => {
501
+              let records = toDoRes.data.records;
502
+              if (records.length == 1) {
503
+                records = records[0]
504
+              }
505
+              this.$router.push({
506
+                path: routePath,
507
+                query: {
508
+                  procInsId: records.procInsId,
509
+                  executionId: records.executionId,
510
+                  deployId: records.deployId,
511
+                  taskId: records.taskId,
512
+                  taskName: records.taskName,
513
+                  startUser: records.startUserName + '-' + records.startDeptName,
514
+                  formId: formData.formId,
515
+                  procDefName: records.procDefName
516
+                }
517
+              })
518
+            })
519
+          })
520
+        }
521
+      })
522
+    },
523
+    getRoutePath(row) {
524
+      let path;
525
+      for (let p of this.publicData.pathRoute) {
526
+        if (p.name == row.name) {
527
+          path = p.path
528
+          break
529
+        } else {
530
+          path = '/flowable/task/todo/detail/index'
531
+        }
532
+      }
533
+      return path
534
+    },
459
   },
535
   },
460
 }
536
 }
461
 </script>
537
 </script>

+ 5
- 20
oa-ui/src/views/oa/project/info.vue 파일 보기

160
                 <svg-icon slot="prefix" icon-class="dept" />
160
                 <svg-icon slot="prefix" icon-class="dept" />
161
                 承担部门
161
                 承担部门
162
               </template>
162
               </template>
163
-              <div style="display: flex;" class="ml20">
163
+              <div style="display: flex;" class="ml20" v-if="project.undertakingDept">
164
                 <div>{{ getDeptNames(project.undertakingDept) }}</div>
164
                 <div>{{ getDeptNames(project.undertakingDept) }}</div>
165
                 <div>
165
                 <div>
166
                   <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
166
                   <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
183
                 <svg-icon slot="prefix" icon-class="user" />
183
                 <svg-icon slot="prefix" icon-class="user" />
184
                 项目负责人
184
                 项目负责人
185
               </template>
185
               </template>
186
-              <div style="display: flex;" class="ml20">
186
+              <div style="display: flex;" class="ml20" v-if="project.projectLeader">
187
                 <div>{{ project.projectLeaderUser ? project.projectLeaderUser.nickName : "" }}</div>
187
                 <div>{{ project.projectLeaderUser ? project.projectLeaderUser.nickName : "" }}</div>
188
                 <div>
188
                 <div>
189
                   <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
189
                   <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
517
     this.getUserList();
517
     this.getUserList();
518
     this.getDeviceList();
518
     this.getDeviceList();
519
     this.getCarList();
519
     this.getCarList();
520
-    if (this.$route.query) {
520
+    if (this.$route.query.projectId) {
521
       this.taskForm.formId = this.$route.query.projectId;
521
       this.taskForm.formId = this.$route.query.projectId;
522
       let projectId = this.$route.query.projectId;
522
       let projectId = this.$route.query.projectId;
523
       this.getProjectInfo(projectId);
523
       this.getProjectInfo(projectId);
526
       this.getContractDataList(projectId);
526
       this.getContractDataList(projectId);
527
       this.getProjectProgressList(projectId);
527
       this.getProjectProgressList(projectId);
528
       this.getProjectChangeList(projectId);
528
       this.getProjectChangeList(projectId);
529
+    }else{
530
+      this.goBack();
529
     }
531
     }
530
   },
532
   },
531
   data() {
533
   data() {
659
         }
661
         }
660
       })
662
       })
661
     },
663
     },
662
-    getUserName(userId) {
663
-      if (userId) {
664
-        let arr = this.userList.filter(item => item.userId == userId)
665
-        if (arr.length == 1) {
666
-          let name = arr[0].nickName
667
-          return name
668
-        }
669
-
670
-      }
671
-    },
672
-    getUserListName(userIdArr) {
673
-      if (userIdArr) {
674
-        for (let user of userIdArr) {
675
-
676
-        }
677
-      }
678
-    },
679
     getFileName(name) {
664
     getFileName(name) {
680
       if (name != null) {
665
       if (name != null) {
681
         let arr = name.split('/')
666
         let arr = name.split('/')

Loading…
취소
저장