Bläddra i källkod

修改文件上传的在线预览,修改人员信息详情等

余思翰 1 år sedan
förälder
incheckning
098d4b2311
25 ändrade filer med 2387 tillägg och 1798 borttagningar
  1. 2
    0
      oa-back/ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/FlowTaskServiceImpl.java
  2. 1841
    1056
      oa-back/sql/cmc_oa(小余测试数据).sql
  3. 2
    1
      oa-ui/src/store/modules/user.js
  4. 2
    2
      oa-ui/src/views/flowable/form/budget/addBudget.vue
  5. 1
    4
      oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue
  6. 10
    53
      oa-ui/src/views/flowable/form/business/brandForm.vue
  7. 92
    110
      oa-ui/src/views/flowable/form/business/contractForm.vue
  8. 82
    37
      oa-ui/src/views/flowable/form/business/subContract.vue
  9. 12
    3
      oa-ui/src/views/flowable/form/components/conditionDisplay.vue
  10. 26
    4
      oa-ui/src/views/flowable/form/finance/borrowForm.vue
  11. 22
    5
      oa-ui/src/views/flowable/form/finance/depositForm.vue
  12. 10
    2
      oa-ui/src/views/flowable/form/oa/deviceForm.vue
  13. 11
    32
      oa-ui/src/views/flowable/form/projectProcess/addproject.vue
  14. 15
    16
      oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue
  15. 1
    2
      oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue
  16. 1
    1
      oa-ui/src/views/flowable/form/safeForm.vue
  17. 152
    410
      oa-ui/src/views/flowable/form/settleForm.vue
  18. 35
    8
      oa-ui/src/views/flowable/form/technicalForm.vue
  19. 3
    2
      oa-ui/src/views/flowable/task/myProcess/index.vue
  20. 7
    7
      oa-ui/src/views/oa/device/index.vue
  21. 13
    9
      oa-ui/src/views/oa/staff/index.vue
  22. 13
    6
      oa-ui/src/views/oa/staff/info.vue
  23. 3
    3
      oa-ui/src/views/oa/staff/salary.vue
  24. 6
    6
      oa-ui/src/views/oa/supply/index.vue
  25. 25
    19
      oa-ui/src/views/oa/tender/index.vue

+ 2
- 0
oa-back/ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/FlowTaskServiceImpl.java Visa fil

907
                     .desc().list();
907
                     .desc().list();
908
             List<FlowTaskDto> hisFlowList = new ArrayList<>();
908
             List<FlowTaskDto> hisFlowList = new ArrayList<>();
909
             for (HistoricActivityInstance histIns : list) {
909
             for (HistoricActivityInstance histIns : list) {
910
+                if (histIns.getDeleteReason() != null && histIns.getDeleteReason().startsWith("Change"))
911
+                    continue;
910
                 // 展示开始节点
912
                 // 展示开始节点
911
 //                if ("startEvent".equals(histIns.getActivityType())) {
913
 //                if ("startEvent".equals(histIns.getActivityType())) {
912
 //                    FlowTaskDto flowTask = new FlowTaskDto();
914
 //                    FlowTaskDto flowTask = new FlowTaskDto();

+ 1841
- 1056
oa-back/sql/cmc_oa(小余测试数据).sql
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 2
- 1
oa-ui/src/store/modules/user.js Visa fil

88
           listUser({ pageNum: 1, pageSize: 9999 }).then(result => {
88
           listUser({ pageNum: 1, pageSize: 9999 }).then(result => {
89
             commit('SET_USERLIST', result.rows)
89
             commit('SET_USERLIST', result.rows)
90
             listDept({ pageNum: 1, pageSize: 9999 }).then(response => {
90
             listDept({ pageNum: 1, pageSize: 9999 }).then(response => {
91
-              commit('SET_DEPTLIST', response.data)
91
+              let deptList = response.data.filter(item => item.deptName != '四川中水成勘院测绘工程有限责任公司')
92
+              commit('SET_DEPTLIST', deptList)
92
             })
93
             })
93
           })
94
           })
94
           resolve(res)
95
           resolve(res)

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

193
                   <td>
193
                   <td>
194
                     <el-input v-model="car.days" placeholder="请输入天数" @change="calculateCarTotal(car)"></el-input>
194
                     <el-input v-model="car.days" placeholder="请输入天数" @change="calculateCarTotal(car)"></el-input>
195
                   </td>
195
                   </td>
196
-                  <td class="carCost">{{ car.expense }}</td>
196
+                  <td class="carCost">{{ (car.expense).toFixed(2) }}</td>
197
                 </tr>
197
                 </tr>
198
                 <tr>
198
                 <tr>
199
                   <td colspan="5">合计</td>
199
                   <td colspan="5">合计</td>
232
                     <el-input v-model="device.days" placeholder="请输入天数"
232
                     <el-input v-model="device.days" placeholder="请输入天数"
233
                       @change="calculateDeviceTotal(device)"></el-input>
233
                       @change="calculateDeviceTotal(device)"></el-input>
234
                   </td>
234
                   </td>
235
-                  <td class="deviceCost">{{ device.depreciation }}</td>
235
+                  <td class="deviceCost">{{ (device.depreciation).toFixed(2) }}</td>
236
                 </tr>
236
                 </tr>
237
                 <tr>
237
                 <tr>
238
                   <td colspan="5">合计</td>
238
                   <td colspan="5">合计</td>

+ 1
- 4
oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue Visa fil

92
               {{ work.price }}
92
               {{ work.price }}
93
             </td>
93
             </td>
94
             <td>
94
             <td>
95
-              <el-select v-model="work.unit" placeholder="请选择" clearable>
96
-                <el-option v-for="dict in dict.type.cmc_unit" :key="dict.value" :label="dict.label"
97
-                  :value="dict.label" />
98
-              </el-select>
95
+              {{ work.unit }}
99
             </td>
96
             </td>
100
             <td>
97
             <td>
101
               <el-input v-model="work.workload" @change="getTotal(work)"></el-input>
98
               <el-input v-model="work.workload" @change="getTotal(work)"></el-input>

+ 10
- 53
oa-ui/src/views/flowable/form/business/brandForm.vue Visa fil

26
               :disabled="taskName != '支付申请'" />
26
               :disabled="taskName != '支付申请'" />
27
           </el-form-item>
27
           </el-form-item>
28
           <el-form-item label="审核文件" prop="approvalDocument">
28
           <el-form-item label="审核文件" prop="approvalDocument">
29
-            <FileUpload v-if="form.approvalDocument == '' || form.approvalDocument == null" :disabled="taskName != '支付申请'"
29
+            <FileUpload v-if="formTotal == 0" :disabled="taskName != '支付申请'"
30
               :limit="1" :filePathName="'品牌项目支付/审核文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
30
               :limit="1" :filePathName="'品牌项目支付/审核文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
31
               @input="getBrandPath"></FileUpload>
31
               @input="getBrandPath"></FileUpload>
32
-            <div v-if="form.approvalDocument != '' && form.approvalDocument != null">
33
-              <file-item :document="form.approvalDocument"></file-item>
32
+            <div v-if="formTotal == 1">
33
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.approvalDocument}`)">
34
+                {{ getFileName(form.approvalDocument) }}
35
+              </el-link>
36
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.approvalDocument}`"
37
+                :underline="false" target="_blank">
38
+                <span class="el-icon-download">下载文件</span>
39
+              </el-link>
34
             </div>
40
             </div>
35
           </el-form-item>
41
           </el-form-item>
36
           <el-row>
42
           <el-row>
334
       };
340
       };
335
       this.resetForm("form");
341
       this.resetForm("form");
336
     },
342
     },
337
-    /** 搜索按钮操作 */
338
-    handleQuery() {
339
-      this.queryParams.pageNum = 1;
340
-      this.getList();
341
-    },
342
-    /** 重置按钮操作 */
343
-    resetQuery() {
344
-      this.resetForm("queryForm");
345
-      this.handleQuery();
346
-    },
347
-    // 多选框选中数据
348
-    handleSelectionChange(selection) {
349
-      this.ids = selection.map(item => item.brandId)
350
-      this.single = selection.length !== 1
351
-      this.multiple = !selection.length
352
-    },
353
-    /** 新增按钮操作 */
354
-    handleAdd() {
355
-      this.reset();
356
-      this.open = true;
357
-      this.title = "添加cmc品牌项目支付审批";
358
-    },
359
-    /** 修改按钮操作 */
360
-    handleUpdate(row) {
361
-      this.reset();
362
-      const brandId = row.brandId || this.ids
363
-      getBrand(brandId).then(response => {
364
-        this.form = response.data;
365
-        this.open = true;
366
-        this.title = "修改cmc品牌项目支付审批";
367
-      });
368
-    },
369
     /** 提交按钮 */
343
     /** 提交按钮 */
370
     submitForm() {
344
     submitForm() {
371
       this.$refs["form"].validate(valid => {
345
       this.$refs["form"].validate(valid => {
409
         }
383
         }
410
       });
384
       });
411
     },
385
     },
412
-    /** 删除按钮操作 */
413
-    handleDelete(row) {
414
-      const brandIds = row.brandId || this.ids;
415
-      this.$modal.confirm('是否确认删除cmc品牌项目支付审批编号为"' + brandIds + '"的数据项?').then(function () {
416
-        return delBrand(brandIds);
417
-      }).then(() => {
418
-        this.getList();
419
-        this.$modal.msgSuccess("删除成功");
420
-      }).catch(() => { });
421
-    },
422
-    /** 导出按钮操作 */
423
-    handleExport() {
424
-      this.download('oa/brand/export', {
425
-        ...this.queryParams
426
-      }, `brand_${new Date().getTime()}.xlsx`)
427
-    },
428
     getBrandPath(val) {
386
     getBrandPath(val) {
429
       let arr = val.split('/upload')
387
       let arr = val.split('/upload')
430
       this.form.approvalDocument = arr[1]
388
       this.form.approvalDocument = arr[1]
442
 };
400
 };
443
 </script>
401
 </script>
444
 <style lang="scss" scoped>
402
 <style lang="scss" scoped>
403
+@import "@/assets/styles/element-reset.scss";
445
 table {
404
 table {
446
-  /*居中*/
447
-  margin: 0 auto;
448
   /*边框*/
405
   /*边框*/
449
   /* border: 1px solid black; */
406
   /* border: 1px solid black; */
450
   text-align: center;
407
   text-align: center;

+ 92
- 110
oa-ui/src/views/flowable/form/business/contractForm.vue Visa fil

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-06-04 16:33:59
5
+ * @LastEditTime: 2024-06-07 10:43:03
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
17
                 <el-button type="primary" size="mini" @click="tbOpen = true"
17
                 <el-button type="primary" size="mini" @click="tbOpen = true"
18
                   v-if="taskName == '合同拟稿'">选择投标项目</el-button>
18
                   v-if="taskName == '合同拟稿'">选择投标项目</el-button>
19
-                <!-- <el-select v-model="form.tenderId" filterable placeholder="请选择" @change="handleSelectTender"
20
-                  :disabled="taskName != '合同拟稿'" clearable>
21
-                  <el-option v-for="item in tenderList" :key="item.value" :label="item.projectName"
22
-                    :value="item.tenderId">
23
-                  </el-option>
24
-                </el-select> -->
25
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
19
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
26
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="2">{{ chooseTender.projectName
20
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="2">{{ chooseTender.projectName
27
                     }}</el-descriptions-item>
21
                     }}</el-descriptions-item>
35
                     }}</el-descriptions-item>
29
                     }}</el-descriptions-item>
36
                 </el-descriptions>
30
                 </el-descriptions>
37
               </el-form-item>
31
               </el-form-item>
38
-
39
-              <el-row :gutter="20">
40
-                <el-col :span="10" :xs="24">
41
-                  <el-form-item label="合同编码" prop="contractCode">
42
-                    <el-input style="width: 150px;" v-model="form.contractCode" placeholder="请输入合同编码"
43
-                      :disabled="taskName != '合同拟稿'"></el-input>
44
-                  </el-form-item>
45
-                </el-col>
46
-                <el-col :span="14" :xs="24">
47
-                  <el-form-item label="合同编号" prop="contractNumber">
48
-                    <el-input style="width: 180px;" v-model="form.contractNumber" placeholder="请输入合同编号"
49
-                      :disabled="taskName != '合同拟稿'"></el-input>
50
-                  </el-form-item>
51
-                </el-col>
52
-              </el-row>
53
-              <el-row :gutter="20">
54
-                <el-col :span="12" :xs="24">
55
-                  <el-form-item label="合同金额" prop="amount">
56
-                    <el-input style="width:100px;" v-model="form.amount" placeholder="请输入合同金额"
57
-                      :disabled="taskName != '合同拟稿'" />
58
-                    <span>元</span>
59
-                  </el-form-item>
60
-                </el-col>
61
-                <el-col :span="12" :xs="24">
62
-                  <el-form-item style="text-align: left;" label="履约保证金" prop="deposit">
63
-                    <el-input style="width:100px;" v-model="form.deposit" placeholder="请输入履约保证金"
64
-                      :disabled="taskName != '合同拟稿'" />
65
-                    <span>元</span>
66
-                  </el-form-item>
67
-                </el-col>
68
-              </el-row>
32
+              <el-form-item label="合同编码" prop="contractCode">
33
+                <el-input style="width: 100%;" v-model="form.contractCode" placeholder="请输入合同编码"
34
+                  :disabled="taskName != '合同拟稿'"></el-input>
35
+              </el-form-item>
36
+              <el-form-item label="合同编号" prop="contractNumber">
37
+                <el-input style="width:  100%;" v-model="form.contractNumber" placeholder="请输入合同编号"
38
+                  :disabled="taskName != '合同拟稿'"></el-input>
39
+              </el-form-item>
40
+              <el-form-item label="合同金额" prop="amount">
41
+                <el-input style="width:100%;" v-model="form.amount" placeholder="请输入合同金额"
42
+                  :disabled="taskName != '合同拟稿'">
43
+                  <template slot="append">元</template>
44
+                </el-input>
45
+              </el-form-item>
46
+              <el-form-item style="text-align: left;" label="履约保证金" prop="deposit">
47
+                <el-input style="width:100%;" v-model="form.deposit" placeholder="请输入履约保证金"
48
+                  :disabled="taskName != '合同拟稿'">
49
+                  <template slot="append">元</template>
50
+                </el-input>
51
+              </el-form-item>
69
             </el-col>
52
             </el-col>
70
 
53
 
71
             <el-col :span="12" :xs="24">
54
             <el-col :span="12" :xs="24">
55
+              <el-alert title="院外项目,不选关联项目;院内项目,必选关联项目" type="warning">
56
+              </el-alert>
72
               <el-form-item label="关联项目:" prop="projectIds">
57
               <el-form-item label="关联项目:" prop="projectIds">
73
-                <!-- <el-select v-model="projectContractForm.projectIds" multiple filterable placeholder="请选择"
74
-                  @change="handleSelectProject" :disabled="taskName != '合同拟稿'" clearable>
75
-                  <el-option v-for="item in projectList" :key="item.value"
76
-                    :label="item.projectNumber + item.projectName" :value="item.projectId">
77
-                  </el-option>
78
-                </el-select> -->
79
                 <el-button type="primary" size="mini" @click="open = true" v-if="taskName == '合同拟稿'">选择项目</el-button>
58
                 <el-button type="primary" size="mini" @click="open = true" v-if="taskName == '合同拟稿'">选择项目</el-button>
80
               </el-form-item>
59
               </el-form-item>
81
-              <el-table v-loading="loading" :data="chooseProjectList">
60
+              <el-table v-loading="projectloading" :data="chooseProjectList">
82
                 <el-table-column label="项目编号" align="center" prop="projectNumber"></el-table-column>
61
                 <el-table-column label="项目编号" align="center" prop="projectNumber"></el-table-column>
83
                 <el-table-column label="项目名称" align="center" prop="projectName"></el-table-column>
62
                 <el-table-column label="项目名称" align="center" prop="projectName"></el-table-column>
84
                 <el-table-column label="项目负责人" align="center" prop="projectLeaderUser.nickName"></el-table-column>
63
                 <el-table-column label="项目负责人" align="center" prop="projectLeaderUser.nickName"></el-table-column>
92
               v-if="form.contractDocument == '' || form.contractDocument == null" ref="contractFile" :limit="1"
71
               v-if="form.contractDocument == '' || form.contractDocument == null" ref="contractFile" :limit="1"
93
               :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
72
               :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
94
             </FileUpload>
73
             </FileUpload>
95
-            <div v-if="form.contractDocument != '' && form.contractDocument != null">
96
-              <file-item :document="form.contractDocument"></file-item>
97
-              <button class="preview-btn" type="primary" size="mini" plain
98
-                @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</button>
74
+            <div v-if="form.contractDocument && taskName != '合同拟稿'">
75
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
76
+                {{ getFileName(form.contractDocument) }}
77
+              </el-link>
78
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`"
79
+                :underline="false" target="_blank">
80
+                <span class="el-icon-download">下载文件</span>
81
+              </el-link>
99
             </div>
82
             </div>
100
           </el-form-item>
83
           </el-form-item>
101
-          <el-divider></el-divider>
102
           <el-form-item label="合同计划工作量:">
84
           <el-form-item label="合同计划工作量:">
103
             <table border="1">
85
             <table border="1">
104
               <tr>
86
               <tr>
170
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
152
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
171
                 </td>
153
                 </td>
172
                 <td>
154
                 <td>
173
-                  <el-input v-model="payment.paymentPercentage" clearable :disabled="taskName != '合同拟稿'"></el-input>
155
+                  <el-input-number :controls="false" v-model="payment.paymentPercentage" clearable
156
+                    :disabled="taskName != '合同拟稿'" @change="calculatePaymentAmount(payment)"></el-input-number>
174
                 </td>
157
                 </td>
175
                 <td>
158
                 <td>
176
-                  <el-input v-model="payment.paymentAmount" clearable :disabled="taskName != '合同拟稿'"></el-input>
159
+                  <el-input-number :controls="false" :precision="2" v-model="payment.paymentAmount" clearable
160
+                    :disabled="taskName != '合同拟稿'"></el-input-number>
177
                 </td>
161
                 </td>
178
                 <td>
162
                 <td>
179
                   <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
163
                   <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
208
               </el-form-item>
192
               </el-form-item>
209
             </el-col>
193
             </el-col>
210
           </el-row>
194
           </el-row>
211
-          <el-divider></el-divider>
212
           <el-form-item label="评审方式" prop="commentType">
195
           <el-form-item label="评审方式" prop="commentType">
213
             <el-radio-group v-model="form.commentType" @change="changeCommentType" :disabled="taskName != '合同拟稿'">
196
             <el-radio-group v-model="form.commentType" @change="changeCommentType" :disabled="taskName != '合同拟稿'">
214
               <el-radio :label="'0'">无须评审</el-radio>
197
               <el-radio :label="'0'">无须评审</el-radio>
360
               </tr>
343
               </tr>
361
             </table>
344
             </table>
362
           </el-form-item>
345
           </el-form-item>
346
+          <el-divider></el-divider>
363
           <el-form-item label="分管审批意见" prop="remark">
347
           <el-form-item label="分管审批意见" prop="remark">
364
             <el-input v-model="form.managerComment" type="textarea" placeholder="请输入审批意见"
348
             <el-input v-model="form.managerComment" type="textarea" placeholder="请输入审批意见"
365
               :disabled="taskName != '分管审核'" />
349
               :disabled="taskName != '分管审核'" />
391
               ref="contractFile" :limit="1" :filePathName="'承接合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
375
               ref="contractFile" :limit="1" :filePathName="'承接合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
392
               @input="getSignScanPath">
376
               @input="getSignScanPath">
393
             </FileUpload>
377
             </FileUpload>
394
-            <div v-if="form.signScan != null && form.signScan != ''">
395
-              <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
378
+            <div v-if="form.signScan && taskName != '合同签订'">
379
+              <!-- <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
396
                 tag="ul">
380
                 tag="ul">
397
                 <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
381
                 <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
398
                   <el-link :href="`${baseUrl}${'/profile/upload' + form.signScan}`" :underline="false" target="_blank">
382
                   <el-link :href="`${baseUrl}${'/profile/upload' + form.signScan}`" :underline="false" target="_blank">
406
                   <button class="preview-btn" type="primary" size="mini" plain
390
                   <button class="preview-btn" type="primary" size="mini" plain
407
                     @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">在线预览</button>
391
                     @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">在线预览</button>
408
                 </li>
392
                 </li>
409
-              </transition-group>
393
+              </transition-group> -->
394
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">
395
+                {{ getFileName(form.signScan) }}
396
+              </el-link>
397
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.signScan}`"
398
+                :underline="false" target="_blank">
399
+                <span class="el-icon-download">下载文件</span>
400
+              </el-link>
410
             </div>
401
             </div>
411
           </el-form-item>
402
           </el-form-item>
412
         </el-form>
403
         </el-form>
413
         <div style="text-align: center;">
404
         <div style="text-align: center;">
414
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
405
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
415
-          <!-- <el-button @click="cancel">取 消</el-button> -->
416
         </div>
406
         </div>
417
       </el-col>` `
407
       </el-col>` `
418
       <el-col :span="6" :xs="24">
408
       <el-col :span="6" :xs="24">
483
   data() {
473
   data() {
484
     return {
474
     return {
485
       baseUrl: process.env.VUE_APP_BASE_API,
475
       baseUrl: process.env.VUE_APP_BASE_API,
476
+      isTenderIdValid: true, // 用于跟踪tenderId是否有效 
477
+      isDocumentValid: true,
486
       draftUser: '',
478
       draftUser: '',
487
       draftTime: undefined,
479
       draftTime: undefined,
488
       managerUser: '',
480
       managerUser: '',
491
       commentTime: undefined,
483
       commentTime: undefined,
492
       // 遮罩层
484
       // 遮罩层
493
       loading: true,
485
       loading: true,
494
-      // 选中数组
495
-      ids: [],
496
-      // 非单个禁用
497
-      single: true,
498
-      // 非多个禁用
499
-      multiple: true,
500
-      // 显示搜索条件
501
-      showSearch: true,
502
-      // 总条数
503
-      total: 0,
504
-      // cmc合同评审表格数据
505
-      contractList: [],
486
+      projectloading: true,
506
       // 弹出层标题
487
       // 弹出层标题
507
       title: "",
488
       title: "",
508
       // 是否显示弹出层
489
       // 是否显示弹出层
509
       open: false,
490
       open: false,
510
       tbOpen: false,
491
       tbOpen: false,
511
-      // 查询参数
512
-      queryParams: {
513
-        pageNum: 1,
514
-        pageSize: 10,
515
-        contractNumber: null,
516
-        amount: null,
517
-        deposit: null,
518
-        contractDocument: null,
519
-        drafter: null,
520
-        draftTime: null,
521
-        signDate: null,
522
-        signRemark: null,
523
-        signScan: null,
524
-        commentType: ''
525
-      },
526
       // 表单参数
492
       // 表单参数
527
-      form: {},
493
+      form: {
494
+        amount: 0,
495
+        deposit: 0
496
+      },
528
       meetingForm: {
497
       meetingForm: {
529
         users: [],
498
         users: [],
530
       },
499
       },
611
     this.getDeptList();
580
     this.getDeptList();
612
     this.getTenderList();
581
     this.getTenderList();
613
     this.getUserList();
582
     this.getUserList();
614
-    this.getList();
615
     flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
583
     flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
616
       this.flowData = res.data;
584
       this.flowData = res.data;
617
     })
585
     })
624
     initRules() {
592
     initRules() {
625
       if (this.taskName == '合同拟稿') {
593
       if (this.taskName == '合同拟稿') {
626
         this.rules = {
594
         this.rules = {
627
-          tenderId: [
628
-            { required: true, message: '请选择投标项目', trigger: 'blur' },
629
-          ],
630
           contractCode: [
595
           contractCode: [
631
             { required: true, message: '请输入合同编码', trigger: 'blur' },
596
             { required: true, message: '请输入合同编码', trigger: 'blur' },
632
           ],
597
           ],
633
-          contractDocument: [
634
-            { required: true, message: '请上传合同文件', trigger: 'blur' },
635
-          ],
636
           commentType: [
598
           commentType: [
637
-            { required: true, message: '请选择评审方式', trigger: 'blur' },
638
-          ],
599
+            { required: true, message: '请选择评审方式', trigger: 'change' },
600
+          ]
639
         }
601
         }
640
       } else if (this.taskName == '分管审核') {
602
       } else if (this.taskName == '分管审核') {
641
         this.rules = {
603
         this.rules = {
651
           this.formTotal = 0;
613
           this.formTotal = 0;
652
           this.form.drafter = this.$store.getters.userId;
614
           this.form.drafter = this.$store.getters.userId;
653
           this.form.draftTime = parseTime(new Date(), '{y}-{m}-{d}');
615
           this.form.draftTime = parseTime(new Date(), '{y}-{m}-{d}');
616
+          this.projectloading = false;
654
         }
617
         }
655
         else {
618
         else {
656
           this.formTotal = 1;
619
           this.formTotal = 1;
719
                   this.chooseProjectList.push(response.data)
682
                   this.chooseProjectList.push(response.data)
720
                 })
683
                 })
721
               }
684
               }
685
+              this.projectloading = false;
722
             }
686
             }
723
           })
687
           })
724
         }
688
         }
725
       })
689
       })
726
     },
690
     },
727
-    /** 查询cmc合同评审列表 */
728
-    getList() {
729
-      this.loading = true;
730
-      listContract(this.queryParams).then(response => {
731
-        this.contractList = response.rows;
732
-        this.total = response.total;
733
-        this.loading = false;
734
-      });
735
-    },
736
     // 查询项目列表
691
     // 查询项目列表
737
     getProjectList() {
692
     getProjectList() {
738
       this.loading = true
693
       this.loading = true
774
         this.isSelect = false
729
         this.isSelect = false
775
       }
730
       }
776
     },
731
     },
777
-    // 取消按钮
778
-    cancel() {
779
-      this.open = false;
780
-      this.reset();
781
-    },
782
     isEmptyObject(obj) {
732
     isEmptyObject(obj) {
783
       for (var key in obj) {
733
       for (var key in obj) {
784
         if (obj.hasOwnProperty(key)) {
734
         if (obj.hasOwnProperty(key)) {
909
       };
859
       };
910
       this.resetForm("form");
860
       this.resetForm("form");
911
     },
861
     },
862
+    // 手动验证tenderId的方法  
863
+    validateTenderId(tenderId) {
864
+      // 这里添加你的验证逻辑  
865
+      // 例如,检查tenderId是否为空或者是否符合其他规则  
866
+      if (!tenderId || tenderId.trim() === '') {
867
+        this.$message.error('请选择一个有效的投标项目');
868
+        return false;
869
+      }
870
+      return true;
871
+    },
872
+    validateDocument(doc) {
873
+      // 这里添加你的验证逻辑  
874
+      // 例如,检查tenderId是否为空或者是否符合其他规则  
875
+      if (!doc || doc.trim() === '') {
876
+        this.$message.error('请上传合同文件');
877
+        return false;
878
+      }
879
+      return true;
880
+    },
912
     /** 提交按钮 */
881
     /** 提交按钮 */
913
     submitForm() {
882
     submitForm() {
883
+      this.isTenderIdValid = this.validateTenderId(this.form.tenderId);
884
+      this.isDocumentValid = this.validateDocument(this.form.contractDocument)
885
+      if (!this.isTenderIdValid) {
886
+        // tenderId无效,阻止提交  
887
+        return;
888
+      }
889
+      if (!this.isDocumentValid) {
890
+        return;
891
+      }
914
       this.$refs["form"].validate(valid => {
892
       this.$refs["form"].validate(valid => {
915
         if (valid) {
893
         if (valid) {
916
           if (this.formTotal != 0) {
894
           if (this.formTotal != 0) {
917
             updateContract(this.form).then(response => {
895
             updateContract(this.form).then(response => {
918
               this.$modal.msgSuccess("修改成功");
896
               this.$modal.msgSuccess("修改成功");
919
               this.open = false;
897
               this.open = false;
920
-              this.getList();
921
             });
898
             });
922
             const params = { taskId: this.taskForm.taskId };
899
             const params = { taskId: this.taskForm.taskId };
923
             getNextFlowNode(params).then(res => {
900
             getNextFlowNode(params).then(res => {
969
               if (response.code == 200) {
946
               if (response.code == 200) {
970
                 this.$modal.msgSuccess("新增成功");
947
                 this.$modal.msgSuccess("新增成功");
971
                 this.open = false;
948
                 this.open = false;
972
-                this.getList();
973
                 for (let work of this.workList) {
949
                 for (let work of this.workList) {
974
                   work.contractId = this.form.contractId
950
                   work.contractId = this.form.contractId
975
                   addContractWork(work);
951
                   addContractWork(work);
1063
     },
1039
     },
1064
     confirmTender(val) {
1040
     confirmTender(val) {
1065
       this.tbOpen = false
1041
       this.tbOpen = false
1042
+      this.form.amount = val.quote
1043
+      this.form.deposit = val.deposit
1066
       this.form.tenderId = val.tenderId
1044
       this.form.tenderId = val.tenderId
1067
       this.chooseTender = val
1045
       this.chooseTender = val
1068
       this.isSelect = true
1046
       this.isSelect = true
1069
     },
1047
     },
1048
+    calculatePaymentAmount(payment) {
1049
+      let amount = (payment.paymentPercentage / 100) * this.form.amount
1050
+      this.$set(payment, 'paymentAmount', Number(amount))
1051
+    },
1070
     reviewWord(url) {
1052
     reviewWord(url) {
1071
       this.$router.push({
1053
       this.$router.push({
1072
         path: '/preview',
1054
         path: '/preview',

+ 82
- 37
oa-ui/src/views/flowable/form/business/subContract.vue Visa fil

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-06-04 09:18:40
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-07 10:40:11
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
23
               <el-descriptions-item label="项目编号" label-class-name="my-label">
23
               <el-descriptions-item label="项目编号" label-class-name="my-label">
24
                 {{ chooseProject.projectNumber }}</el-descriptions-item>
24
                 {{ chooseProject.projectNumber }}</el-descriptions-item>
25
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
25
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
26
-              }}</el-descriptions-item>
26
+                }}</el-descriptions-item>
27
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA
27
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA
28
-              }}</el-descriptions-item>
28
+                }}</el-descriptions-item>
29
               <el-descriptions-item label="承担部门" label-class-name="my-label">
29
               <el-descriptions-item label="承担部门" label-class-name="my-label">
30
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
30
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
31
               </el-descriptions-item>
31
               </el-descriptions-item>
32
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
32
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
33
-              }}</el-descriptions-item>
33
+                }}</el-descriptions-item>
34
             </el-descriptions>
34
             </el-descriptions>
35
           </el-form-item>
35
           </el-form-item>
36
           <el-row :gutter="20">
36
           <el-row :gutter="20">
66
           <el-row :gutter="20">
66
           <el-row :gutter="20">
67
             <el-col :span="16" :xs="24">
67
             <el-col :span="16" :xs="24">
68
               <el-form-item label="承接单位" prop="partnerId">
68
               <el-form-item label="承接单位" prop="partnerId">
69
-                <el-select allow-create v-model="form.partnerId" filterable placeholder="请选择"
69
+                <el-select allow-create v-model="form.partnerId" filterable placeholder="请选择" style="width: 100%;"
70
                   :disabled="taskName != '合同拟稿'" clearable @change="handleSelectPartner">
70
                   :disabled="taskName != '合同拟稿'" clearable @change="handleSelectPartner">
71
                   <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
71
                   <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
72
                     :value="item.partnerId">
72
                     :value="item.partnerId">
82
           </el-row>
82
           </el-row>
83
 
83
 
84
           <el-form-item label="合同文件" prop="contractDocument">
84
           <el-form-item label="合同文件" prop="contractDocument">
85
-            <FileUpload v-if="form.contractDocument == '' || form.contractDocument == null" :disabled="taskName != '合同拟稿'"
86
-              ref="contractFile" :limit="1" :filePathName="'分包合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
87
-              @input="getContractPath">
85
+            <FileUpload v-if="formTotal == 0"
86
+              :disabled="taskName != '合同拟稿'" ref="contractFile" :limit="1" :filePathName="'分包合同/合同文件'"
87
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
88
             </FileUpload>
88
             </FileUpload>
89
-            <div v-if="form.contractDocument != '' && form.contractDocument != null">
90
-              <file-item :document="form.contractDocument"></file-item>
89
+            <div v-if="formTotal == 1">
90
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">
91
+                {{ getFileName(form.contractDocument) }}
92
+              </el-link>
93
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`"
94
+                :underline="false" target="_blank">
95
+                <span class="el-icon-download">下载文件</span>
96
+              </el-link>
91
             </div>
97
             </div>
92
           </el-form-item>
98
           </el-form-item>
93
           <el-form-item label="合同计划工作量:">
99
           <el-form-item label="合同计划工作量:">
134
                     :disabled="taskName != '合同拟稿'"></el-input>
140
                     :disabled="taskName != '合同拟稿'"></el-input>
135
                 </td>
141
                 </td>
136
                 <td>
142
                 <td>
137
-                  <el-button type="danger" icon="el-icon-minus" size="mini" circle @click="deletWorkItem(index)"
138
-                    :disabled="taskName != '合同拟稿'"></el-button>
143
+                  <el-button type="text" style="color:#F56C6C" size="mini" circle @click="deletWorkItem(index)"
144
+                    :disabled="taskName != '合同拟稿'">删除行</el-button>
139
                 </td>
145
                 </td>
140
               </tr>
146
               </tr>
141
             </table>
147
             </table>
145
           <el-form-item label="合同付款计划:">
151
           <el-form-item label="合同付款计划:">
146
             <table border="1">
152
             <table border="1">
147
               <tr>
153
               <tr>
148
-                <td style="width:50px;">序号</td>
149
-                <td>付款条件</td>
150
-                <td>付款比例(%)</td>
151
-                <td>付款金额(元)</td>
154
+                <td style="min-width:50px;">序号</td>
155
+                <td style="min-width:200px;">付款条件</td>
156
+                <td style="max-width:100px;">付款比例(%)</td>
157
+                <td style="max-width:100px;">付款金额(元)</td>
152
                 <td>预计时间</td>
158
                 <td>预计时间</td>
153
                 <td>备注</td>
159
                 <td>备注</td>
154
               </tr>
160
               </tr>
161
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
167
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
162
                 </td>
168
                 </td>
163
                 <td>
169
                 <td>
164
-                  <el-input v-model="payment.paymentPercentage" clearable :disabled="taskName != '合同拟稿'"></el-input>
170
+                  <el-input-number :controls="false" style="width:100%" v-model="payment.paymentPercentage" clearable
171
+                    @change="calculatePaymentAmount(payment)" :disabled="taskName != '合同拟稿'"></el-input-number>
165
                 </td>
172
                 </td>
166
                 <td>
173
                 <td>
167
-                  <el-input v-model="payment.paymentAmount" clearable :disabled="taskName != '合同拟稿'"></el-input>
174
+                  <el-input-number :controls="false" style="width:100%" v-model="payment.paymentAmount" clearable
175
+                    :disabled="taskName != '合同拟稿'"></el-input-number>
168
                 </td>
176
                 </td>
169
                 <td>
177
                 <td>
170
-                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd" type="date"
171
-                    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 != '合同拟稿'">
172
                   </el-date-picker>
180
                   </el-date-picker>
173
                 </td>
181
                 </td>
174
                 <td>
182
                 <td>
176
                     :disabled="taskName != '合同拟稿'"></el-input>
184
                     :disabled="taskName != '合同拟稿'"></el-input>
177
                 </td>
185
                 </td>
178
                 <td>
186
                 <td>
179
-                  <el-button type="danger" icon="el-icon-minus" size="mini" circle @click="deletPaymentItem(index)"
180
-                    :disabled="taskName != '合同拟稿'"></el-button>
187
+                  <el-button type="text" style="color:#F56C6C" size="mini" @click="deletPaymentItem(index)"
188
+                    :disabled="taskName != '合同拟稿'">删除行</el-button>
181
                 </td>
189
                 </td>
182
               </tr>
190
               </tr>
183
             </table>
191
             </table>
271
                   <span> {{ comment.commentTime }} </span>
279
                   <span> {{ comment.commentTime }} </span>
272
                 </td>
280
                 </td>
273
                 <td>
281
                 <td>
274
-                  <el-button type="danger" icon="el-icon-minus" size="mini" circle @click="deletCommentItem(index)"
275
-                    :disabled="taskName != '合同拟稿'"></el-button>
282
+                  <el-button type="text" style="color:#F56C6C" size="mini" circle @click="deletCommentItem(index)"
283
+                    :disabled="taskName != '合同拟稿'">删除行</el-button>
276
                 </td>
284
                 </td>
277
               </tr>
285
               </tr>
278
             </table>
286
             </table>
362
           </el-row>
370
           </el-row>
363
           <el-divider></el-divider>
371
           <el-divider></el-divider>
364
           <el-form-item label="签订日期" prop="signDate">
372
           <el-form-item label="签订日期" prop="signDate">
365
-            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期"
366
-              :disabled="taskName != '合同签订'">
373
+            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd"
374
+              placeholder="请选择签订日期" :disabled="taskName != '合同签订'">
367
             </el-date-picker>
375
             </el-date-picker>
368
           </el-form-item>
376
           </el-form-item>
369
           <el-form-item label="签订备注" prop="signRemark">
377
           <el-form-item label="签订备注" prop="signRemark">
373
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''" :limit="1"
381
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''" :limit="1"
374
               :filePathName="'分包合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getSignScanPath">
382
               :filePathName="'分包合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getSignScanPath">
375
             </FileUpload>
383
             </FileUpload>
376
-            <div v-if="form.signScan != null && form.signScan != ''">
377
-              <file-item :document="form.signScan"></file-item>
384
+            <div v-if="form.signScan && taskName != '合同签订'">
385
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">
386
+                {{ getFileName(form.signScan) }}
387
+              </el-link>
388
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.signScan}`"
389
+                :underline="false" target="_blank">
390
+                <span class="el-icon-download">下载文件</span>
391
+              </el-link>
378
             </div>
392
             </div>
379
           </el-form-item>
393
           </el-form-item>
380
         </el-form>
394
         </el-form>
591
     initRules() {
605
     initRules() {
592
       if (this.taskName == '合同拟稿') {
606
       if (this.taskName == '合同拟稿') {
593
         this.rules = {
607
         this.rules = {
594
-          projectId: [
595
-            { required: true, message: '请选择登记项目', trigger: 'blur' },
596
-          ],
597
           partnerId: [
608
           partnerId: [
598
-            { required: true, message: '请选择承接单位', trigger: 'blur' },
609
+            { required: true, message: '请选择承接单位', trigger: 'change' },
599
           ],
610
           ],
600
           subContractName: [
611
           subContractName: [
601
             { required: true, message: '请输入分包合同名称', trigger: 'blur' },
612
             { required: true, message: '请输入分包合同名称', trigger: 'blur' },
602
           ],
613
           ],
603
-          contractDocument: [
604
-            { required: true, message: '请上传合同文件', trigger: 'blur' },
605
-          ],
606
           subAmount: [
614
           subAmount: [
607
             { required: true, message: '请输入分包合同额', trigger: 'blur' },
615
             { required: true, message: '请输入分包合同额', trigger: 'blur' },
608
           ],
616
           ],
609
           commentType: [
617
           commentType: [
610
-            { required: true, message: '请选择评审方式', trigger: 'blur' },
618
+            { required: true, message: '请选择评审方式', trigger: 'change' },
611
           ],
619
           ],
612
         }
620
         }
613
       } else if (this.taskName == '分管审核') {
621
       } else if (this.taskName == '分管审核') {
889
       };
897
       };
890
       this.resetForm("form");
898
       this.resetForm("form");
891
     },
899
     },
900
+    validateDocument(doc) {
901
+      // 这里添加你的验证逻辑  
902
+      // 例如,检查tenderId是否为空或者是否符合其他规则  
903
+      if (!doc || doc.trim() === '') {
904
+        this.$message.error('请上传合同文件');
905
+        return false;
906
+      }
907
+      return true;
908
+    },
892
     /** 提交按钮 */
909
     /** 提交按钮 */
893
     submitForm() {
910
     submitForm() {
911
+      let isProjectValid = this.validateManual(this.form.projectId);
912
+      let isDocValid = this.validateDocument(this.form.contractDocument)
913
+      if (!(isProjectValid || isDocValid)) {
914
+        // 无效,阻止提交  
915
+        return;
916
+      }
894
       this.$refs["form"].validate(valid => {
917
       this.$refs["form"].validate(valid => {
895
         if (valid) {
918
         if (valid) {
896
           if (this.formTotal != 0) {
919
           if (this.formTotal != 0) {
1011
         this.chooseProject = val[0]
1034
         this.chooseProject = val[0]
1012
         this.isSelect = true
1035
         this.isSelect = true
1013
         this.form.projectId = val[0].projectId
1036
         this.form.projectId = val[0].projectId
1037
+        let undertakingDeptName = []
1038
+        if (val[0].undertakingDept) {
1039
+          let deptArr = val[0].undertakingDept.split(',');
1040
+          for (let dept of deptArr) {
1041
+            undertakingDeptName.push(this.getDeptName(dept))
1042
+          }
1043
+        }
1044
+        this.chooseProject.undertakingDeptName = undertakingDeptName.join(',');
1014
         listProjectContract({ projectId: this.form.projectId }).then(response => {
1045
         listProjectContract({ projectId: this.form.projectId }).then(response => {
1015
           if (response.rows) {
1046
           if (response.rows) {
1016
             for (let row of response.rows) {
1047
             for (let row of response.rows) {
1066
     clickFile(val) {
1097
     clickFile(val) {
1067
       this.clickTd = val
1098
       this.clickTd = val
1068
     },
1099
     },
1100
+    // 手动验证tenderId的方法  
1101
+    validateManual(name) {
1102
+      // 这里添加你的验证逻辑  
1103
+      // 例如,检查tenderId是否为空或者是否符合其他规则  
1104
+      if (!name || name.trim() === '') {
1105
+        this.$message.error('请选择一个有效项目');
1106
+        return false;
1107
+      }
1108
+      return true;
1109
+    },
1110
+    calculatePaymentAmount(payment) {
1111
+      let amount = (payment.paymentPercentage / 100) * this.form.subAmount
1112
+      this.$set(payment, 'paymentAmount', Number(amount))
1113
+    },
1069
   }
1114
   }
1070
 };
1115
 };
1071
 </script>
1116
 </script>

+ 12
- 3
oa-ui/src/views/flowable/form/components/conditionDisplay.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-23 17:08:16
3
  * @Date: 2024-04-23 17:08:16
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 09:40:19
5
+ * @LastEditTime: 2024-06-07 16:13:25
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
15
     <project-process :key="'pro'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '项目流转'"></project-process>
15
     <project-process :key="'pro'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '项目流转'"></project-process>
16
     <car-form :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '用车审批'"></car-form>
16
     <car-form :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '用车审批'"></car-form>
17
     <technical-form :key="'tec'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '技术交底'"></technical-form>
17
     <technical-form :key="'tec'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '技术交底'"></technical-form>
18
-    <safe-form :key="'safe'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '安全交底'"></safe-form>
18
+    <safe-form :key="'safe'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '安全交底'"></safe-form>
19
     <settle-form :key="'fb'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :disabled="true"
19
     <settle-form :key="'fb'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :disabled="true"
20
       v-else-if="taskForm.procDefName == '项目结算'"></settle-form>
20
       v-else-if="taskForm.procDefName == '项目结算'"></settle-form>
21
     <!-- <budget-in :key="'budget'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目预算'"></budget-in> -->
21
     <!-- <budget-in :key="'budget'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目预算'"></budget-in> -->
26
       v-else-if="taskForm.procDefName == '分包合同评审'"></sub-contract>
26
       v-else-if="taskForm.procDefName == '分包合同评审'"></sub-contract>
27
     <archive-form :key="'arc'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '成果归档'"></archive-form>
27
     <archive-form :key="'arc'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '成果归档'"></archive-form>
28
     <borrow-form :key="'bor'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '借款审批'"></borrow-form>
28
     <borrow-form :key="'bor'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '借款审批'"></borrow-form>
29
+    <brand-form :key="'brand'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '品牌项目支付'"></brand-form>
30
+    <deposit-form :key="'deposit'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '保证金审批'"></deposit-form>
31
+    <device-form :key="'device'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '设备审批'"></device-form>
29
   </div>
32
   </div>
30
 </template>
33
 </template>
31
 
34
 
47
 import ArchiveForm from '../archiveForm.vue';
50
 import ArchiveForm from '../archiveForm.vue';
48
 import BorrowForm from '../finance/borrowForm.vue';
51
 import BorrowForm from '../finance/borrowForm.vue';
49
 import BudgetTab from '../projectProcess/budgetTab.vue';
52
 import BudgetTab from '../projectProcess/budgetTab.vue';
53
+import BrandForm from '../business/brandForm.vue';
54
+import DepositForm from '../finance/depositForm.vue';
55
+import DeviceForm from '../oa/deviceForm.vue';
50
 export default {
56
 export default {
51
   props: {
57
   props: {
52
     passingParam: {
58
     passingParam: {
75
     SubContract,
81
     SubContract,
76
     ArchiveForm,
82
     ArchiveForm,
77
     BorrowForm,
83
     BorrowForm,
78
-    BudgetTab
84
+    BudgetTab,
85
+    BrandForm,
86
+    DepositForm,
87
+    DeviceForm
79
   },
88
   },
80
   data() {
89
   data() {
81
     return {
90
     return {

+ 26
- 4
oa-ui/src/views/flowable/form/finance/borrowForm.vue Visa fil

130
             <FileUpload v-if="form.borrowDocument == null || form.borrowDocument == ''" :disabled="taskName != '借款申请'"
130
             <FileUpload v-if="form.borrowDocument == null || form.borrowDocument == ''" :disabled="taskName != '借款申请'"
131
               :limit="1" :filePathName="'借款/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
131
               :limit="1" :filePathName="'借款/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
132
               @input="getBorrowPath"></FileUpload>
132
               @input="getBorrowPath"></FileUpload>
133
-            <div v-if="form.borrowDocument != null && form.borrowDocument != ''">
134
-              <file-item :document="form.borrowDocument"></file-item>
133
+            <div v-if="form.borrowDocument && taskName != '借款申请'">
134
+              <!-- <file-item :document="form.borrowDocument"></file-item> -->
135
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.borrowDocument}`)">
136
+                {{ getFileName(form.borrowDocument) }}
137
+              </el-link>
138
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.borrowDocument}`"
139
+                :underline="false" target="_blank">
140
+                <span class="el-icon-download">下载文件</span>
141
+              </el-link>
135
             </div>
142
             </div>
136
           </el-form-item>
143
           </el-form-item>
137
           <el-divider></el-divider>
144
           <el-divider></el-divider>
226
             <FileUpload v-if="form.lendDocument == null || form.lendDocument == ''" :disabled="taskName != '财务处理'"
233
             <FileUpload v-if="form.lendDocument == null || form.lendDocument == ''" :disabled="taskName != '财务处理'"
227
               :limit="1" :filePathName="'借款/支付凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getLendPath">
234
               :limit="1" :filePathName="'借款/支付凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getLendPath">
228
             </FileUpload>
235
             </FileUpload>
229
-            <div v-if="form.lendDocument != null && form.lendDocument != ''">
230
-              <file-item :document="form.lendDocument"></file-item>
236
+            <div v-if="form.lendDocument && taskName != '财务处理'">
237
+              <!-- <file-item :document="form.lendDocument"></file-item> -->
238
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.lendDocument}`)">
239
+                {{ getFileName(form.lendDocument) }}
240
+              </el-link>
241
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.lendDocument}`"
242
+                :underline="false" target="_blank">
243
+                <span class="el-icon-download">下载文件</span>
244
+              </el-link>
231
             </div>
245
             </div>
232
           </el-form-item>
246
           </el-form-item>
233
           <el-form-item label="财务部支付备注" prop="cwComment">
247
           <el-form-item label="财务部支付备注" prop="cwComment">
670
         this.chooseProject = val[0]
684
         this.chooseProject = val[0]
671
         this.isSelect = true
685
         this.isSelect = true
672
         this.form.projectId = val[0].projectId
686
         this.form.projectId = val[0].projectId
687
+        let undertakingDeptName = []
688
+        if (val[0].undertakingDept) {
689
+          let deptArr = val[0].undertakingDept.split(',');
690
+          for (let dept of deptArr) {
691
+            undertakingDeptName.push(this.getDeptName(dept))
692
+          }
693
+        }
694
+        this.chooseProject.undertakingDeptName = undertakingDeptName.join(',');
673
       }
695
       }
674
       this.openProject = false
696
       this.openProject = false
675
     },
697
     },

+ 22
- 5
oa-ui/src/views/flowable/form/finance/depositForm.vue Visa fil

91
             <FileUpload v-if="form.applyDocument == null || form.applyDocument == ''" :disabled="taskName != '保证金申请'"
91
             <FileUpload v-if="form.applyDocument == null || form.applyDocument == ''" :disabled="taskName != '保证金申请'"
92
               :limit="1" :filePathName="'保证金/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
92
               :limit="1" :filePathName="'保证金/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
93
               @input="getApplyPath"></FileUpload>
93
               @input="getApplyPath"></FileUpload>
94
-            <div v-if="form.applyDocument != null && form.applyDocument != ''">
95
-              <file-item :document="form.applyDocument"></file-item>
94
+            <div v-if="form.applyDocument && taskName != '保证金申请'">
95
+              <!-- <file-item :document="form.applyDocument"></file-item> -->
96
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.applyDocument}`)">
97
+                {{ getFileName(form.applyDocument) }}
98
+              </el-link>
99
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.applyDocument}`"
100
+                :underline="false" target="_blank">
101
+                <span class="el-icon-download">下载文件</span>
102
+              </el-link>
96
             </div>
103
             </div>
97
           </el-form-item>
104
           </el-form-item>
98
           <el-row :gutter="20">
105
           <el-row :gutter="20">
129
             <FileUpload v-if="form.remitDocument == null || form.remitDocument == ''" :disabled="taskName != '财务处理'"
136
             <FileUpload v-if="form.remitDocument == null || form.remitDocument == ''" :disabled="taskName != '财务处理'"
130
               :limit="1" :filePathName="'保证金/汇款凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
137
               :limit="1" :filePathName="'保证金/汇款凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
131
               @input="getRemitPath"></FileUpload>
138
               @input="getRemitPath"></FileUpload>
132
-            <div v-if="form.remitDocument != null && form.remitDocument != ''">
133
-              <file-item :document="form.remitDocument"></file-item>
139
+            <div v-if="form.remitDocument && taskName != '财务处理'">
140
+              <!-- <file-item :document="form.remitDocument"></file-item> -->
141
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.remitDocument}`)">
142
+                {{ getFileName(form.remitDocument) }}
143
+              </el-link>
144
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.remitDocument}`"
145
+                :underline="false" target="_blank">
146
+                <span class="el-icon-download">下载文件</span>
147
+              </el-link>
134
             </div>
148
             </div>
135
           </el-form-item>
149
           </el-form-item>
136
           <el-form-item label="财务打款备注" prop="cwComment">
150
           <el-form-item label="财务打款备注" prop="cwComment">
318
             { required: true, message: '请输入银行卡号', trigger: 'blur' },
332
             { required: true, message: '请输入银行卡号', trigger: 'blur' },
319
           ],
333
           ],
320
           depositWay: [
334
           depositWay: [
321
-            { required: true, message: '请选择保证金形式', trigger: 'blur' },
335
+            { required: true, message: '请选择保证金形式', trigger: 'change' },
322
           ],
336
           ],
323
         }
337
         }
324
       } else if (this.taskName == '分管审批') {
338
       } else if (this.taskName == '分管审批') {
592
   }
606
   }
593
 };
607
 };
594
 </script>
608
 </script>
609
+<style lang="scss" scoped>
610
+@import "@/assets/styles/element-reset.scss";
611
+</style>

+ 10
- 2
oa-ui/src/views/flowable/form/oa/deviceForm.vue Visa fil

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-07 13:44:39
3
  * @Date: 2024-03-07 13:44:39
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-04 13:51:00
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-07 14:14:52
6
 -->
6
 -->
7
 
7
 
8
 <template>
8
 <template>
501
         this.chooseProject = val[0]
501
         this.chooseProject = val[0]
502
         this.isSelect = true
502
         this.isSelect = true
503
         this.form.projectId = val[0].projectId
503
         this.form.projectId = val[0].projectId
504
+        let undertakingDeptName = []
505
+        if (val[0].undertakingDept) {
506
+          let deptArr = val[0].undertakingDept.split(',');
507
+          for (let dept of deptArr) {
508
+            undertakingDeptName.push(this.getDeptName(dept))
509
+          }
510
+        }
511
+        this.chooseProject.undertakingDeptName = undertakingDeptName.join(',');
504
       }
512
       }
505
       this.openProject = false
513
       this.openProject = false
506
     },
514
     },

+ 11
- 32
oa-ui/src/views/flowable/form/projectProcess/addproject.vue Visa fil

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-18 11:00:04
3
  * @Date: 2024-03-18 11:00:04
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-06 09:08:51
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-07 10:53:47
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
116
         <FileUpload v-if="$route.query.taskName == '项目登记'" ref="orz" :limit="1" :filePathName="'项目任务书'"
116
         <FileUpload v-if="$route.query.taskName == '项目登记'" ref="orz" :limit="1" :filePathName="'项目任务书'"
117
           :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setProjectDocument">
117
           :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setProjectDocument">
118
         </FileUpload>
118
         </FileUpload>
119
-        <div v-if="$route.query.taskName != '项目登记'" class="upload-list">
120
-          <el-link type="primary" :href="`${baseUrl}${'/profile/upload' + addForm.taskDocument}`" :underline="false" target="_blank">
121
-            <span class="el-icon-document"> {{ getFileName(addForm.taskDocument) }} </span>
119
+        <div v-if="addForm.taskDocument && $route.query.taskName != '项目登记'" class="upload-list">
120
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + addForm.taskDocument}`)">
121
+            {{ getFileName(addForm.taskDocument) }}
122
+          </el-link>
123
+          <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + addForm.taskDocument}`"
124
+            :underline="false" target="_blank">
125
+            <span class="el-icon-download">下载文件</span>
122
           </el-link>
126
           </el-link>
123
         </div>
127
         </div>
124
       </el-form-item>
128
       </el-form-item>
139
         </el-col>
143
         </el-col>
140
       </el-row>
144
       </el-row>
141
     </el-form>
145
     </el-form>
142
-      <div class="headers">
143
-        项目变更
144
-        <div class="line"></div>
145
-        <change-data :taskForm="taskForm" :taskName="$route.query.taskName"></change-data>
146
-      </div>
147
     <div slot="footer" class="dialog-footer" style="text-align: center">
146
     <div slot="footer" class="dialog-footer" style="text-align: center">
148
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
147
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
149
       <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
148
       <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
165
 import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
164
 import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
166
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
165
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
167
 import chooseContract from '../components/chooseContract.vue';
166
 import chooseContract from '../components/chooseContract.vue';
168
-import changeData from '../inProgress/changeData.vue';
169
 export default {
167
 export default {
170
-  components: { chooseContract, changeData },
168
+  components: { chooseContract },
171
   dicts: ['cmc_scale_grade', 'cmc_unit'],
169
   dicts: ['cmc_scale_grade', 'cmc_unit'],
172
   props: {
170
   props: {
173
     disabled: {
171
     disabled: {
184
   },
182
   },
185
   data() {
183
   data() {
186
     return {
184
     return {
187
-      baseUrl:process.env.VUE_APP_BASE_API,
185
+      baseUrl: process.env.VUE_APP_BASE_API,
188
       openContract: false,
186
       openContract: false,
189
       registerTime: undefined,
187
       registerTime: undefined,
190
       // 查询参数
188
       // 查询参数
429
 .el-radio__input.is-disabled.is-checked .el-radio__inner {
427
 .el-radio__input.is-disabled.is-checked .el-radio__inner {
430
   border-color: var(--current-color);
428
   border-color: var(--current-color);
431
 }
429
 }
432
-
433
-.headers {
434
-  position: relative;
435
-  font-weight: bold;
436
-  font-size: 18px;
437
-  padding-left: 40px;
438
-  padding-bottom: 40px;
439
-
440
-  .line {
441
-    position: absolute;
442
-    left: 22px;
443
-    top: 5px;
444
-    width: 5px;
445
-    height: 14px;
446
-    border-radius: 10px;
447
-    background-color: #2893e5;
448
-  }
449
-}
450
-
451
 </style>
430
 </style>

+ 15
- 16
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue Visa fil

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-06-04 17:38:50
5
+ * @LastEditTime: 2024-06-07 10:55:28
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
21
         <el-col :span="12" :xs="24">
21
         <el-col :span="12" :xs="24">
22
           <el-form-item label="部门负责人:" prop="deptLeader">
22
           <el-form-item label="部门负责人:" prop="deptLeader">
23
             <el-select v-model="form.deptLeader" multiple clearable style="width:100%">
23
             <el-select v-model="form.deptLeader" multiple clearable style="width:100%">
24
-              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId">
24
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
25
+                :value="item.userId">
25
               </el-option>
26
               </el-option>
26
             </el-select>
27
             </el-select>
27
           </el-form-item>
28
           </el-form-item>
39
         <el-col :span="12" :xs="24">
40
         <el-col :span="12" :xs="24">
40
           <el-form-item label="现场负责人:" prop="siteLeader">
41
           <el-form-item label="现场负责人:" prop="siteLeader">
41
             <el-select v-model="form.siteLeader" filterable clearable style="width:100%">
42
             <el-select v-model="form.siteLeader" filterable clearable style="width:100%">
42
-              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId"
43
-                v-if="item.nickName != 'admin'">
43
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
44
+                :value="item.userId" v-if="item.nickName != 'admin'">
44
               </el-option>
45
               </el-option>
45
             </el-select>
46
             </el-select>
46
           </el-form-item>
47
           </el-form-item>
56
         </el-col>
57
         </el-col>
57
         <el-col :span="12" :xs="24">
58
         <el-col :span="12" :xs="24">
58
           <el-form-item label="组织交底文档:" prop="organizeDocument">
59
           <el-form-item label="组织交底文档:" prop="organizeDocument">
59
-            <FileUpload v-if="$route.query.taskName == '项目安排'" ref="orz" :limit="1" :filePathName="'组织交底文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
60
-              @input="setOrganizeDocument">
60
+            <FileUpload v-if="$route.query.taskName == '项目安排'" ref="orz" :limit="1" :filePathName="'组织交底文件'"
61
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setOrganizeDocument">
61
             </FileUpload>
62
             </FileUpload>
62
-            <div v-if="$route.query.taskName != '项目安排'" class="upload-list">
63
-              <el-link type="primary" :href="`${baseUrl}${'/profile/upload' + form.organizeDocument}`" :underline="false"
64
-                target="_blank">
65
-                <span class="el-icon-document"> {{ getFileName(form.organizeDocument) }} </span>
63
+            <div v-if="form.organizeDocument && $route.query.taskName != '项目安排'" class="upload-list">
64
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.organizeDocument}`)">
65
+                {{ getFileName(form.organizeDocument) }}
66
+              </el-link>
67
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.organizeDocument}`"
68
+                :underline="false" target="_blank">
69
+                <span class="el-icon-download">下载文件</span>
66
               </el-link>
70
               </el-link>
67
             </div>
71
             </div>
68
-            <!-- <button class="preview-btn" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</button> -->
69
           </el-form-item>
72
           </el-form-item>
70
         </el-col>
73
         </el-col>
71
       </el-row>
74
       </el-row>
147
     initForm() {
150
     initForm() {
148
       getProject(this.taskForm.formId).then(res => {
151
       getProject(this.taskForm.formId).then(res => {
149
         this.form = res.data;
152
         this.form = res.data;
150
-        console.log( this.form);
151
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
153
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
152
           this.form.deptId = this.form.undertakingDeptName.split(',')
154
           this.form.deptId = this.form.undertakingDeptName.split(',')
153
         }
155
         }
253
 
255
 
254
     },
256
     },
255
     handleFileDelete() {
257
     handleFileDelete() {
256
-      console.log(this);
257
       // this.$refs.orz.handleDelete(0);
258
       // this.$refs.orz.handleDelete(0);
258
     },
259
     },
259
   }
260
   }
261
 </script>
262
 </script>
262
 
263
 
263
 <style lang="scss" scoped>
264
 <style lang="scss" scoped>
264
-.upload-list {
265
-  
266
-}
265
+.upload-list {}
267
 </style>
266
 </style>

+ 1
- 2
oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
3
  * @Date: 2024-04-08 13:56:14
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 16:10:57
5
+ * @LastEditTime: 2024-06-07 11:49:08
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
151
             this.$modal.msgError('请签名');
151
             this.$modal.msgError('请签名');
152
             return
152
             return
153
           }
153
           }
154
-
155
         }
154
         }
156
         updateProjectComment(this.form)
155
         updateProjectComment(this.form)
157
         const params = { taskId: this.taskForm.taskId };
156
         const params = { taskId: this.taskForm.taskId };

+ 1
- 1
oa-ui/src/views/flowable/form/safeForm.vue Visa fil

183
     },
183
     },
184
     // 查询项目
184
     // 查询项目
185
     getProjectById() {
185
     getProjectById() {
186
-      getProject(this.$route.query.formId).then(response => {
186
+      getProject(this.taskForm.formId).then(response => {
187
         this.chooseProject = response.data;
187
         this.chooseProject = response.data;
188
         this.isSelect = true;
188
         this.isSelect = true;
189
         this.form.disclosureAccepter = response.data.projectLeader;
189
         this.form.disclosureAccepter = response.data.projectLeader;

+ 152
- 410
oa-ui/src/views/flowable/form/settleForm.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-30 09:03:14
3
  * @Date: 2024-04-30 09:03:14
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 17:06:45
5
+ * @LastEditTime: 2024-06-07 10:00:28
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container" v-loading="loading">
8
   <div class="app-container" v-loading="loading">
9
-    <el-button type="warning" icon="el-icon-printer" @click="printOpen = true"
10
-      >打印</el-button
11
-    >
12
-    <el-dialog
13
-      title="结算表格预览"
14
-      :visible.sync="printOpen"
15
-      width="65%"
16
-      append-to-body
17
-    >
18
-      <settle-print
19
-        :form="form"
20
-        :chooseProject="chooseProject"
21
-        :workList="settleWorkList"
22
-        :settleList="oldSettleSumList"
23
-        @cancel="printOpen = false"
24
-      ></settle-print>
9
+    <el-button type="warning" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
10
+    <el-dialog title="结算表格预览" :visible.sync="printOpen" width="65%" append-to-body>
11
+      <settle-print :form="form" :chooseProject="chooseProject" :workList="settleWorkList"
12
+        :settleList="oldSettleSumList" @cancel="printOpen = false"></settle-print>
25
     </el-dialog>
13
     </el-dialog>
26
     <el-row :gutter="20">
14
     <el-row :gutter="20">
27
       <el-col :span="19" :xs="24">
15
       <el-col :span="19" :xs="24">
30
           项目信息
18
           项目信息
31
           <div class="line"></div>
19
           <div class="line"></div>
32
         </div>
20
         </div>
33
-        <el-form
34
-          ref="settleForm"
35
-          :model="form"
36
-          :rules="rules"
37
-          label-width="160px"
38
-          :disabled="disabled"
39
-        >
21
+        <el-form ref="settleForm" :model="form" :rules="rules" label-width="160px" :disabled="disabled">
40
           <el-form-item label="项目编号" prop="projectId">
22
           <el-form-item label="项目编号" prop="projectId">
41
-            <el-button
42
-              icon="el-icon-plus"
43
-              size="mini"
44
-              type="primary"
45
-              @click="prOpen = true"
46
-              >选择项目</el-button
47
-            >
48
-            <!-- <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
49
-              :disabled="taskName != '结算发起'" clearable style="width: 100%">
50
-              <el-option v-for="item in projectList" :key="item.value"
51
-                :label="item.projectNumber + '-' + item.projectName" :value="item.projectId">
52
-              </el-option>
53
-            </el-select> -->
54
-            <el-descriptions
55
-              border
56
-              v-if="isSelect"
57
-              style="margin-top: 10px"
58
-              :column="2"
59
-            >
60
-              <el-descriptions-item
61
-                label="项目编号"
62
-                label-class-name="my-label"
63
-              >
23
+            <el-button icon="el-icon-plus" size="mini" type="primary" @click="prOpen = true">选择项目</el-button>
24
+            <el-descriptions border v-if="isSelect" style="margin-top: 10px" :column="2">
25
+              <el-descriptions-item label="项目编号" label-class-name="my-label">
64
                 {{ chooseProject.projectNumber }}
26
                 {{ chooseProject.projectNumber }}
65
               </el-descriptions-item>
27
               </el-descriptions-item>
66
-              <el-descriptions-item
67
-                label="项目名称"
68
-                label-class-name="my-label"
69
-              >
28
+              <el-descriptions-item label="项目名称" label-class-name="my-label">
70
                 {{ chooseProject.projectName }}
29
                 {{ chooseProject.projectName }}
71
               </el-descriptions-item>
30
               </el-descriptions-item>
72
-              <el-descriptions-item
73
-                label="合同编码"
74
-                label-class-name="my-label"
75
-              >
31
+              <el-descriptions-item label="合同编码" label-class-name="my-label">
76
                 {{ chooseProject.contractCode }}
32
                 {{ chooseProject.contractCode }}
77
               </el-descriptions-item>
33
               </el-descriptions-item>
78
-              <el-descriptions-item
79
-                label="合同编号"
80
-                label-class-name="my-label"
81
-              >
34
+              <el-descriptions-item label="合同编号" label-class-name="my-label">
82
                 {{ chooseProject.contractNumber }}
35
                 {{ chooseProject.contractNumber }}
83
               </el-descriptions-item>
36
               </el-descriptions-item>
84
-              <el-descriptions-item
85
-                label="项目负责人"
86
-                label-class-name="my-label"
87
-              >
88
-                {{
89
-                  chooseProject.projectLeaderUser
90
-                    ? chooseProject.projectLeaderUser.nickName
91
-                    : ""
92
-                }}
37
+              <el-descriptions-item label="项目负责人" label-class-name="my-label">
38
+                {{ chooseProject.projectLeaderUser ? chooseProject.projectLeaderUser.nickName : "" }}
93
               </el-descriptions-item>
39
               </el-descriptions-item>
94
-              <el-descriptions-item
95
-                label="甲方单位"
96
-                label-class-name="my-label"
97
-              >
40
+              <el-descriptions-item label="甲方单位" label-class-name="my-label">
98
                 {{ chooseProject.partyA }}
41
                 {{ chooseProject.partyA }}
99
               </el-descriptions-item>
42
               </el-descriptions-item>
100
               <el-descriptions-item label="联系人" label-class-name="my-label">
43
               <el-descriptions-item label="联系人" label-class-name="my-label">
101
                 {{ chooseProject.contactPerson }}
44
                 {{ chooseProject.contactPerson }}
102
               </el-descriptions-item>
45
               </el-descriptions-item>
103
-              <el-descriptions-item
104
-                label="联系电话"
105
-                label-class-name="my-label"
106
-              >
46
+              <el-descriptions-item label="联系电话" label-class-name="my-label">
107
                 {{ chooseProject.telephone }}
47
                 {{ chooseProject.telephone }}
108
               </el-descriptions-item>
48
               </el-descriptions-item>
109
-              <el-descriptions-item
110
-                label="项目类型"
111
-                label-class-name="my-label"
112
-              >
49
+              <el-descriptions-item label="项目类型" label-class-name="my-label">
113
                 {{ chooseProject.projectType }}
50
                 {{ chooseProject.projectType }}
114
               </el-descriptions-item>
51
               </el-descriptions-item>
115
-              <el-descriptions-item
116
-                label="项目级别"
117
-                label-class-name="my-label"
118
-              >
52
+              <el-descriptions-item label="项目级别" label-class-name="my-label">
119
                 {{
53
                 {{
120
-                  chooseProject.projectLevel == "0" ? " 一般项目" : "重大项目"
121
-                }}
54
+    chooseProject.projectLevel == "0" ? " 一般项目" : "重大项目"
55
+  }}
122
               </el-descriptions-item>
56
               </el-descriptions-item>
123
-              <el-descriptions-item
124
-                label="承担部门"
125
-                label-class-name="my-label"
126
-              >
57
+              <el-descriptions-item label="承担部门" label-class-name="my-label">
127
                 {{ chooseProject.undertakingDeptName }}
58
                 {{ chooseProject.undertakingDeptName }}
128
               </el-descriptions-item>
59
               </el-descriptions-item>
129
-              <el-descriptions-item
130
-                label="项目登记人"
131
-                label-class-name="my-label"
132
-              >
133
-                {{ chooseProject.projectRegistrantName }}
60
+              <el-descriptions-item label="项目登记人" label-class-name="my-label">
61
+                {{ chooseProject.projectRegistrantUser ? chooseProject.projectRegistrantUser.nickName:"" }}
134
               </el-descriptions-item>
62
               </el-descriptions-item>
135
             </el-descriptions>
63
             </el-descriptions>
136
           </el-form-item>
64
           </el-form-item>
137
           <el-form-item label="工作量上报说明" prop="workloadReport">
65
           <el-form-item label="工作量上报说明" prop="workloadReport">
138
-            <el-input
139
-              v-model="form.workloadReport"
140
-              type="textarea"
141
-              :disabled="taskName != '结算发起'"
142
-              placeholder="请输入工作量上报说明"
143
-            />
66
+            <el-input v-model="form.workloadReport" type="textarea" :disabled="taskName != '结算发起'"
67
+              placeholder="请输入工作量上报说明" />
144
           </el-form-item>
68
           </el-form-item>
145
           <el-row>
69
           <el-row>
146
             <el-col :span="6" :xs="24" :offset="12">
70
             <el-col :span="6" :xs="24" :offset="12">
157
             </el-col>
81
             </el-col>
158
           </el-row>
82
           </el-row>
159
           <el-form-item label="原始上报数据" prop="">
83
           <el-form-item label="原始上报数据" prop="">
160
-            <FileUpload
161
-              v-if="taskName == '结算发起'"
162
-              :limit="1"
163
-              :filePathName="'项目结算/原始数据'"
164
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
165
-              @input="setSettleDocument"
166
-            >
84
+            <FileUpload v-if="taskName == '结算发起'" :limit="1" :filePathName="'项目结算/原始数据'"
85
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setSettleDocument">
167
             </FileUpload>
86
             </FileUpload>
168
-            <div v-if="taskName != '结算发起'" class="upload-list">
169
-              <el-link
170
-                :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`"
171
-                :underline="false"
172
-                target="_blank"
173
-              >
87
+            <div v-if="form.settleDocument && taskName != '结算发起'" class="upload-list">
88
+              <!-- <el-link :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`" :underline="false"
89
+                target="_blank">
174
                 <span class="el-icon-document" style="color: #00f">
90
                 <span class="el-icon-document" style="color: #00f">
175
                   {{ getFileName(form.settleDocument) }}
91
                   {{ getFileName(form.settleDocument) }}
176
                 </span>
92
                 </span>
93
+              </el-link> -->
94
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.settleDocument}`)">
95
+                {{ getFileName(form.settleDocument) }}
96
+              </el-link>
97
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.settleDocument}`"
98
+                :underline="false" target="_blank">
99
+                <span class="el-icon-download">下载文件</span>
177
               </el-link>
100
               </el-link>
178
             </div>
101
             </div>
179
           </el-form-item>
102
           </el-form-item>
180
           <el-form-item label="项目管理部审核结算单" prop="">
103
           <el-form-item label="项目管理部审核结算单" prop="">
181
-            <FileUpload
182
-              v-if="taskName == '项目管理部结算'"
183
-              :limit="1"
184
-              :filePathName="'项目结算/项目管理部审核结算单'"
185
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
186
-              @input="setModifyDocument"
187
-            >
104
+            <FileUpload v-if="taskName == '项目管理部结算'" :limit="1" :filePathName="'项目结算/项目管理部审核结算单'"
105
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setModifyDocument">
188
             </FileUpload>
106
             </FileUpload>
189
-            <div
190
-              v-if="taskName != '项目管理部结算' && form.modifyDocument"
191
-              class="upload-list"
192
-            >
193
-              <el-link
194
-                :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
195
-                :underline="false"
196
-                target="_blank"
197
-              >
107
+            <div v-if="taskName != '项目管理部结算' && form.modifyDocument" class="upload-list">
108
+              <el-link :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`" :underline="false"
109
+                target="_blank">
198
                 <span class="el-icon-document" style="color: #00f">
110
                 <span class="el-icon-document" style="color: #00f">
199
                   {{ getFileName(form.modifyDocument) }}
111
                   {{ getFileName(form.modifyDocument) }}
200
                 </span>
112
                 </span>
202
             </div>
114
             </div>
203
           </el-form-item>
115
           </el-form-item>
204
           <el-form-item label="分管领导审核结算单" prop="">
116
           <el-form-item label="分管领导审核结算单" prop="">
205
-            <FileUpload
206
-              v-if="taskName == '分管审核'"
207
-              :limit="1"
208
-              :filePathName="'项目结算/分管领导审核结算单'"
209
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
210
-              @input="setFinalDocument"
211
-            >
117
+            <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
118
+              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setFinalDocument">
212
             </FileUpload>
119
             </FileUpload>
213
-            <div
214
-              v-if="taskName != '分管审核' && form.finalDocument"
215
-              class="upload-list"
216
-            >
217
-              <el-link
218
-                :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
219
-                :underline="false"
220
-                target="_blank"
221
-              >
120
+            <div v-if="taskName != '分管审核' && form.finalDocument" class="upload-list">
121
+              <el-link :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`" :underline="false" target="_blank">
222
                 <span class="el-icon-document" style="color: #00f">
122
                 <span class="el-icon-document" style="color: #00f">
223
                   {{ getFileName(form.finalDocument) }}
123
                   {{ getFileName(form.finalDocument) }}
224
                 </span>
124
                 </span>
249
                   {{ index + 1 }}
149
                   {{ index + 1 }}
250
                 </td>
150
                 </td>
251
                 <td>
151
                 <td>
252
-                  <tr>
253
-                    <td>
254
-                      <el-button
255
-                        size="mini"
256
-                        type="primary"
257
-                        icon="el-icon-plus"
258
-                        @click="handleChoosePrice(work, index)"
259
-                        >选择工作内容</el-button
260
-                      >
261
-                    </td>
262
-                  </tr>
263
-                  <tr>
264
-                    <td>
265
-                      <el-input
266
-                        v-model="work.content"
267
-                        type="textarea"
268
-                        clearable
269
-                        :autosize="{ minRows: 4, maxRows: 10 }"
270
-                      ></el-input>
271
-                    </td>
272
-                  </tr>
273
-                </td>
274
-                <td>
275
-                  {{ work.scale == "" ? "无" : work.scale }}
276
-                </td>
277
-                <td>
278
-                  {{ work.unit }}
279
-                </td>
280
-                <td>
281
-                  {{ work.groundType == "0" ? "一般地类" : "复杂地类" }}
282
-                </td>
283
-                <td>
284
-                  {{ work.price }}
285
-                </td>
286
-                <td>
287
-                  <el-input-number
288
-                    :precision="2"
289
-                    style="width: 100px"
290
-                    v-model="work.workload"
291
-                    clearable
292
-                    @blur="calculateSettle(work)"
293
-                    :controls="false"
294
-                  ></el-input-number>
295
-                </td>
296
-                <td>
297
-                  <div style="display: flex">
298
-                    <el-input-number
299
-                      :precision="2"
300
-                      style="width: 100px"
301
-                      v-model="work.coefficient"
302
-                      clearable
303
-                      @blur="calculateSettle(work)"
304
-                      :controls="false"
305
-                    ></el-input-number>
306
-                    <el-popover
307
-                      placement="top-start"
308
-                      title="系数备注"
309
-                      width="200"
310
-                      trigger="click"
311
-                    >
312
-                      <div v-html="work.noteTip"></div>
313
-                      <i
314
-                        class="el-icon-info"
315
-                        slot="reference"
316
-                        @click="getCoefficientRemark(work, work.workType)"
317
-                      ></i>
318
-                    </el-popover>
319
-                  </div>
320
-                </td>
321
-                <td>
322
-                  <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
323
-                  {{ work.settle }}
324
-                </td>
152
+              <tr>
325
                 <td>
153
                 <td>
326
-                  <el-input
327
-                    v-model="work.remark"
328
-                    type="textarea"
329
-                    clearable
330
-                    :autosize="{ minRows: 4, maxRows: 10 }"
331
-                  ></el-input>
154
+                  <el-button size="mini" type="primary" icon="el-icon-plus"
155
+                    @click="handleChoosePrice(work, index)">选择工作内容</el-button>
332
                 </td>
156
                 </td>
157
+              </tr>
158
+              <tr>
333
                 <td>
159
                 <td>
334
-                  <el-button
335
-                    type="text"
336
-                    size="mini"
337
-                    style="color: #f56c6c"
338
-                    @click="deletWorkItem(index, settleWorkList)"
339
-                    >删除行</el-button
340
-                  >
160
+                  <el-input v-model="work.content" type="textarea" clearable
161
+                    :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
341
                 </td>
162
                 </td>
342
               </tr>
163
               </tr>
164
+              </td>
165
+              <td>
166
+                {{ work.scale == "" ? "无" : work.scale }}
167
+              </td>
168
+              <td>
169
+                {{ work.unit }}
170
+              </td>
171
+              <td>
172
+                {{ work.groundType == "0" ? "一般地类" : "复杂地类" }}
173
+              </td>
174
+              <td>
175
+                {{ work.price }}
176
+              </td>
177
+              <td>
178
+                <el-input-number :precision="2" style="width: 100px" v-model="work.workload" clearable
179
+                  @blur="calculateSettle(work)" :controls="false"></el-input-number>
180
+              </td>
181
+              <td>
182
+                <div style="display: flex">
183
+                  <el-input-number :precision="2" style="width: 100px" v-model="work.coefficient" clearable
184
+                    @blur="calculateSettle(work)" :controls="false"></el-input-number>
185
+                  <el-popover placement="top-start" title="系数备注" width="200" trigger="click">
186
+                    <div v-html="work.noteTip"></div>
187
+                    <i class="el-icon-info" slot="reference" @click="getCoefficientRemark(work, work.workType)"></i>
188
+                  </el-popover>
189
+                </div>
190
+              </td>
191
+              <td>
192
+                <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
193
+                {{ work.settle }}
194
+              </td>
195
+              <td>
196
+                <el-input v-model="work.remark" type="textarea" clearable
197
+                  :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
198
+              </td>
199
+              <td>
200
+                <el-button type="text" size="mini" style="color: #f56c6c"
201
+                  @click="deletWorkItem(index, settleWorkList)">删除行</el-button>
202
+              </td>
203
+              </tr>
343
               <tr>
204
               <tr>
344
                 <td :colspan="8">结算费用合计</td>
205
                 <td :colspan="8">结算费用合计</td>
345
                 <td>{{ settleSumTr.amount }}</td>
206
                 <td>{{ settleSumTr.amount }}</td>
346
                 <td>
207
                 <td>
347
-                  <el-input
348
-                    v-model="settleSumTr.remark"
349
-                    type="textarea"
350
-                    clearable
351
-                    :autosize="{ minRows: 2, maxRows: 10 }"
352
-                  ></el-input>
208
+                  <el-input v-model="settleSumTr.remark" type="textarea" clearable
209
+                    :autosize="{ minRows: 2, maxRows: 10 }"></el-input>
353
                 </td>
210
                 </td>
354
               </tr>
211
               </tr>
355
             </table>
212
             </table>
356
-            <el-button
357
-              icon="el-icon-plus"
358
-              type="primary"
359
-              plain
360
-              size="mini"
361
-              @click="addWorkList"
362
-            ></el-button>
213
+            <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addWorkList"></el-button>
363
           </el-form-item>
214
           </el-form-item>
364
 
215
 
365
           <!-- 结算汇总 -->
216
           <!-- 结算汇总 -->
382
                   {{ index + 1 }}
233
                   {{ index + 1 }}
383
                 </td>
234
                 </td>
384
                 <td>
235
                 <td>
385
-                  <el-input
386
-                    v-model="work.content"
387
-                    type="textarea"
388
-                    clearable
389
-                    :autosize="{ minRows: 2, maxRows: 10 }"
390
-                  >
236
+                  <el-input v-model="work.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
391
                   </el-input>
237
                   </el-input>
392
                 </td>
238
                 </td>
393
                 <td>
239
                 <td>
394
-                  <el-input-number
395
-                    :min="0"
396
-                    :precision="2"
397
-                    style="width: 200px"
398
-                    v-model="work.amount"
399
-                    clearable
400
-                    :controls="false"
401
-                    @blur="calculateActualSumSettle()"
402
-                  ></el-input-number>
240
+                  <el-input-number :min="0" :precision="2" style="width: 200px" v-model="work.amount" clearable
241
+                    :controls="false" @blur="calculateActualSumSettle()"></el-input-number>
403
                   <!-- {{ work.amount }} -->
242
                   <!-- {{ work.amount }} -->
404
                 </td>
243
                 </td>
405
                 <td>
244
                 <td>
406
-                  <el-input
407
-                    v-model="work.remark"
408
-                    type="textarea"
409
-                    clearable
410
-                    :autosize="{ minRows: 2, maxRows: 10 }"
411
-                  >
245
+                  <el-input v-model="work.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
412
                   </el-input>
246
                   </el-input>
413
                 </td>
247
                 </td>
414
                 <td>
248
                 <td>
415
-                  <el-button
416
-                    type="text"
417
-                    size="mini"
418
-                    style="color: #f56c6c"
419
-                    @click="deletWorkItem(index, settleSumList)"
420
-                    >删除行</el-button
421
-                  >
249
+                  <el-button type="text" size="mini" style="color: #f56c6c"
250
+                    @click="deletWorkItem(index, settleSumList)">删除行</el-button>
422
                 </td>
251
                 </td>
423
               </tr>
252
               </tr>
424
             </table>
253
             </table>
425
-            <el-button
426
-              icon="el-icon-plus"
427
-              type="primary"
428
-              plain
429
-              size="mini"
430
-              @click="addSumWorkList"
431
-            ></el-button>
254
+            <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addSumWorkList"></el-button>
432
             <h3>表2:部门结算金额</h3>
255
             <h3>表2:部门结算金额</h3>
433
             <table border="1">
256
             <table border="1">
434
               <tr>
257
               <tr>
441
               </tr>
264
               </tr>
442
               <tr v-for="(dept, index) in deptSettleList" :key="index">
265
               <tr v-for="(dept, index) in deptSettleList" :key="index">
443
                 <td :rowspan="deptSettleList.length" v-if="index == 0">
266
                 <td :rowspan="deptSettleList.length" v-if="index == 0">
444
-                  {{ actualSumSettle }}
267
+                  {{ Number(actualSumSettle).toFixed(2) }}
445
                 </td>
268
                 </td>
446
                 <td>
269
                 <td>
447
                   {{ index + 1 }}
270
                   {{ index + 1 }}
448
                 </td>
271
                 </td>
449
                 <td>
272
                 <td>
450
-                  <el-input
451
-                    v-model="dept.content"
452
-                    type="textarea"
453
-                    clearable
454
-                    :autosize="{ minRows: 2, maxRows: 10 }"
455
-                  >
456
-                  </el-input>
273
+                  <!-- <el-input v-model="dept.content" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
274
+                  </el-input> -->
275
+                  <el-select v-model="dept.content" placeholder="请选择" filterable clearable style="width:100%;">
276
+                    <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName"
277
+                      :value="item.deptName">
278
+                    </el-option>
279
+                  </el-select>
457
                 </td>
280
                 </td>
458
                 <td>
281
                 <td>
459
-                  <el-input-number
460
-                    :precision="2"
461
-                    style="width: 200px"
462
-                    v-model="dept.amount"
463
-                    clearable
464
-                    :controls="false"
465
-                    @blur="calculateDeptAmount(index)"
466
-                  ></el-input-number>
282
+                  <el-input-number :precision="2" style="width: 200px" v-model="dept.amount" clearable :controls="false"
283
+                    @blur="calculateDeptAmount(index)"></el-input-number>
467
                 </td>
284
                 </td>
468
                 <td>
285
                 <td>
469
-                  <el-input
470
-                    v-model="dept.remark"
471
-                    type="textarea"
472
-                    clearable
473
-                    :autosize="{ minRows: 2, maxRows: 10 }"
474
-                  >
286
+                  <el-input v-model="dept.remark" type="textarea" clearable :autosize="{ minRows: 2, maxRows: 10 }">
475
                   </el-input>
287
                   </el-input>
476
                 </td>
288
                 </td>
477
                 <td>
289
                 <td>
478
-                  <el-button
479
-                    type="text"
480
-                    size="mini"
481
-                    style="color: #f56c6c"
482
-                    @click="deletWorkItem(index, deptSettleList)"
483
-                    >删除行</el-button
484
-                  >
290
+                  <el-button type="text" size="mini" style="color: #f56c6c"
291
+                    @click="deletWorkItem(index, deptSettleList)">删除行</el-button>
485
                 </td>
292
                 </td>
486
               </tr>
293
               </tr>
487
-              <!-- <tr>
488
-                <td :colspan="2">实际结算总金额</td>
489
-                <td :colspan="3">
490
-                  {{actualSumSettle}}
491
-                  <el-input-number :precision="2" style="width: 100%" v-model="actualSumSettle" clearable
492
-                    :controls="false"></el-input-number>
493
-                </td>
494
-              </tr> -->
495
               <tr>
294
               <tr>
496
                 <td :colspan="2">结算说明</td>
295
                 <td :colspan="2">结算说明</td>
497
                 <td :colspan="3">
296
                 <td :colspan="3">
498
-                  <el-input
499
-                    v-model="form.settleComment"
500
-                    type="textarea"
501
-                    clearable
502
-                    :autosize="{ minRows: 2, maxRows: 10 }"
503
-                  >
297
+                  <el-input v-model="form.settleComment" type="textarea" clearable placeholder="请输入说明"
298
+                    :autosize="{ minRows: 2, maxRows: 10 }">
504
                   </el-input>
299
                   </el-input>
505
                 </td>
300
                 </td>
506
               </tr>
301
               </tr>
507
             </table>
302
             </table>
508
-            <el-button
509
-              icon="el-icon-plus"
510
-              type="primary"
511
-              plain
512
-              size="mini"
513
-              @click="addDeptSettleList"
514
-            ></el-button>
303
+            <el-button icon="el-icon-plus" type="primary" plain size="mini" @click="addDeptSettleList"></el-button>
515
           </el-form-item>
304
           </el-form-item>
516
 
305
 
517
           <!-- 结算审核情况 -->
306
           <!-- 结算审核情况 -->
521
               <div class="line"></div>
310
               <div class="line"></div>
522
             </div>
311
             </div>
523
             <el-form-item label="综合事务部(设备领用情况)">
312
             <el-form-item label="综合事务部(设备领用情况)">
524
-              <el-input
525
-                v-model="form.zhComment"
526
-                type="textarea"
527
-                :disabled="taskName != '综合事务部处理'"
528
-                clearable
529
-                :autosize="{ minRows: 4, maxRows: 10 }"
530
-              >
313
+              <el-input v-model="form.zhComment" type="textarea" :disabled="taskName != '综合事务部处理'" clearable
314
+                :autosize="{ minRows: 4, maxRows: 10 }">
531
               </el-input>
315
               </el-input>
532
             </el-form-item>
316
             </el-form-item>
533
             <el-row>
317
             <el-row>
543
               </el-col>
327
               </el-col>
544
             </el-row>
328
             </el-row>
545
             <el-form-item label="技术质量部(质量及工作量)">
329
             <el-form-item label="技术质量部(质量及工作量)">
546
-              <el-input
547
-                v-model="form.jsComment"
548
-                type="textarea"
549
-                :disabled="taskName != '技术质量部审核'"
550
-                clearable
551
-                :autosize="{ minRows: 4, maxRows: 10 }"
552
-              >
330
+              <el-input v-model="form.jsComment" type="textarea" :disabled="taskName != '技术质量部审核'" clearable
331
+                :autosize="{ minRows: 4, maxRows: 10 }">
553
               </el-input>
332
               </el-input>
554
             </el-form-item>
333
             </el-form-item>
555
             <el-row>
334
             <el-row>
565
               </el-col>
344
               </el-col>
566
             </el-row>
345
             </el-row>
567
             <el-form-item label="项目管理部(结算)">
346
             <el-form-item label="项目管理部(结算)">
568
-              <el-input
569
-                v-model="form.xmComment"
570
-                type="textarea"
571
-                :disabled="taskName != '项目管理部结算'"
572
-                clearable
573
-                :autosize="{ minRows: 4, maxRows: 10 }"
574
-              >
347
+              <el-input v-model="form.xmComment" type="textarea" :disabled="taskName != '项目管理部结算'" clearable
348
+                :autosize="{ minRows: 4, maxRows: 10 }">
575
               </el-input>
349
               </el-input>
576
             </el-form-item>
350
             </el-form-item>
577
             <el-row>
351
             <el-row>
587
               </el-col>
361
               </el-col>
588
             </el-row>
362
             </el-row>
589
             <el-form-item label="项目承担部门(确认)">
363
             <el-form-item label="项目承担部门(确认)">
590
-              <el-input
591
-                v-model="form.deptComment"
592
-                type="textarea"
593
-                :disabled="taskName != '结算发起人确认'"
594
-                clearable
595
-                :autosize="{ minRows: 4, maxRows: 10 }"
596
-              >
364
+              <el-input v-model="form.deptComment" type="textarea" :disabled="taskName != '结算发起人确认'" clearable
365
+                :autosize="{ minRows: 4, maxRows: 10 }">
597
               </el-input>
366
               </el-input>
598
             </el-form-item>
367
             </el-form-item>
599
             <el-row>
368
             <el-row>
609
               </el-col>
378
               </el-col>
610
             </el-row>
379
             </el-row>
611
             <el-form-item label="经营发展部(校核)">
380
             <el-form-item label="经营发展部(校核)">
612
-              <el-input
613
-                v-model="form.jyComment"
614
-                type="textarea"
615
-                :disabled="taskName != '经营发展部校核'"
616
-                clearable
617
-                :autosize="{ minRows: 4, maxRows: 10 }"
618
-              >
381
+              <el-input v-model="form.jyComment" type="textarea" :disabled="taskName != '经营发展部校核'" clearable
382
+                :autosize="{ minRows: 4, maxRows: 10 }">
619
               </el-input>
383
               </el-input>
620
             </el-form-item>
384
             </el-form-item>
621
             <el-row>
385
             <el-row>
631
               </el-col>
395
               </el-col>
632
             </el-row>
396
             </el-row>
633
             <el-form-item label="分管领导(审核)">
397
             <el-form-item label="分管领导(审核)">
634
-              <el-input
635
-                v-model="form.managerComment"
636
-                type="textarea"
637
-                :disabled="taskName != '分管审核'"
638
-                clearable
639
-                :autosize="{ minRows: 4, maxRows: 10 }"
640
-              >
398
+              <el-input v-model="form.managerComment" type="textarea" :disabled="taskName != '分管审核'" clearable
399
+                :autosize="{ minRows: 4, maxRows: 10 }">
641
               </el-input>
400
               </el-input>
642
             </el-form-item>
401
             </el-form-item>
643
             <el-row>
402
             <el-row>
653
               </el-col>
412
               </el-col>
654
             </el-row>
413
             </el-row>
655
             <el-form-item label="总经理(审批)">
414
             <el-form-item label="总经理(审批)">
656
-              <el-input
657
-                v-model="form.gmComment"
658
-                type="textarea"
659
-                :disabled="taskName != '总经理审批'"
660
-                clearable
661
-                :autosize="{ minRows: 4, maxRows: 10 }"
662
-              >
415
+              <el-input v-model="form.gmComment" type="textarea" :disabled="taskName != '总经理审批'" clearable
416
+                :autosize="{ minRows: 4, maxRows: 10 }">
663
               </el-input>
417
               </el-input>
664
             </el-form-item>
418
             </el-form-item>
665
             <el-row>
419
             <el-row>
678
         </el-form>
432
         </el-form>
679
         <div style="text-align: center" v-if="!disabled">
433
         <div style="text-align: center" v-if="!disabled">
680
           <el-button type="warning" @click="preserve">保存</el-button>
434
           <el-button type="warning" @click="preserve">保存</el-button>
681
-          <el-button type="primary" @click="submitNextFlow"
682
-            >提交下一个流程</el-button
683
-          >
435
+          <el-button type="primary" @click="submitNextFlow">提交下一个流程</el-button>
684
         </div>
436
         </div>
685
       </el-col>
437
       </el-col>
686
       <el-col :span="5" :xs="24">
438
       <el-col :span="5" :xs="24">
694
     </el-row>
446
     </el-row>
695
 
447
 
696
     <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
448
     <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
697
-      <choose-price
698
-        :row="clickWork"
699
-        @getPrice="getPrice"
700
-        @cancel="drawer = false"
701
-      ></choose-price>
449
+      <choose-price :row="clickWork" @getPrice="getPrice" @cancel="drawer = false"></choose-price>
702
     </el-drawer>
450
     </el-drawer>
703
 
451
 
704
-    <el-dialog
705
-      title="选择项目"
706
-      :visible.sync="prOpen"
707
-      width="70%"
708
-      append-to-body
709
-    >
452
+    <el-dialog title="选择项目" :visible.sync="prOpen" width="70%" append-to-body>
710
       <choose-project @chooseProject="confirmProject"></choose-project>
453
       <choose-project @chooseProject="confirmProject"></choose-project>
711
     </el-dialog>
454
     </el-dialog>
712
   </div>
455
   </div>
840
       actualSumSettle: "",
583
       actualSumSettle: "",
841
       clickWork: {},
584
       clickWork: {},
842
       deptId: undefined,
585
       deptId: undefined,
586
+      deptList: []
843
     };
587
     };
844
   },
588
   },
845
   created() {
589
   created() {
893
         }
637
         }
894
         setTimeout(() => {
638
         setTimeout(() => {
895
           this.loading = false;
639
           this.loading = false;
640
+          this.deptList = this.$store.state.user.deptList
896
         }, 500);
641
         }, 500);
897
       });
642
       });
898
     },
643
     },
980
             this.addSettleFn();
725
             this.addSettleFn();
981
             this.$message.success("保存成功");
726
             this.$message.success("保存成功");
982
           }
727
           }
983
-        }else{
728
+        } else {
984
           this.$message.error('请完善表单必填项')
729
           this.$message.error('请完善表单必填项')
985
         }
730
         }
986
       });
731
       });
1010
           } else if (this.taskName == "总经理审批") {
755
           } else if (this.taskName == "总经理审批") {
1011
             this.getNextFlowNodeFn();
756
             this.getNextFlowNodeFn();
1012
           }
757
           }
1013
-        }else{
758
+        } else {
1014
           this.$message.error('请完善表单必填项')
759
           this.$message.error('请完善表单必填项')
1015
         }
760
         }
1016
       });
761
       });
1078
               );
823
               );
1079
             }
824
             }
1080
           });
825
           });
1081
-          let deptArr = this.chooseProject.undertakingDept.split(",");
1082
-          let undertakingDept = [];
1083
-          for (let dept of deptArr) {
1084
-            getDept(dept).then((res) => {
1085
-              if (res.data) {
1086
-                undertakingDept.push(res.data.deptName);
1087
-                this.$set(
1088
-                  this.chooseProject,
1089
-                  "undertakingDeptName",
1090
-                  undertakingDept.join(",")
1091
-                );
1092
-              }
1093
-            });
1094
-          }
1095
         });
826
         });
1096
       } else {
827
       } else {
1097
         this.isSelect = false;
828
         this.isSelect = false;
1168
       if (index >= 0 && index < arr.length) {
899
       if (index >= 0 && index < arr.length) {
1169
         arr.splice(index, 1);
900
         arr.splice(index, 1);
1170
       }
901
       }
902
+      this.calculateSumSettle();
903
+      this.calculateActualSumSettle();
1171
     },
904
     },
1172
     calculateSettle(work) {
905
     calculateSettle(work) {
1173
       let sum = work.workload * work.coefficient * work.price;
906
       let sum = work.workload * work.coefficient * work.price;
1336
       if (val.length == 1) {
1069
       if (val.length == 1) {
1337
         this.prOpen = false;
1070
         this.prOpen = false;
1338
         this.chooseProject = val[0];
1071
         this.chooseProject = val[0];
1339
-        this.$set(this.form,'projectId',val[0].projectId)
1072
+        console.log(val[0]);
1073
+        let undertakingDeptName = []
1074
+        if (val[0].undertakingDept) {
1075
+          let deptArr = val[0].undertakingDept.split(',');
1076
+          for (let dept of deptArr) {
1077
+            undertakingDeptName.push(this.getDeptName(dept))
1078
+          }
1079
+        }
1080
+        this.chooseProject.undertakingDeptName = undertakingDeptName.join(',');
1081
+        this.$set(this.form, 'projectId', val[0].projectId)
1340
         this.isSelect = true;
1082
         this.isSelect = true;
1341
       } else {
1083
       } else {
1342
         this.$message.error("项目只能选择一个!");
1084
         this.$message.error("项目只能选择一个!");

+ 35
- 8
oa-ui/src/views/flowable/form/technicalForm.vue Visa fil

2
   <div class="app-container">
2
   <div class="app-container">
3
     <el-row :gutter="20">
3
     <el-row :gutter="20">
4
       <el-col :span="18" :xs="24">
4
       <el-col :span="18" :xs="24">
5
-        <el-form ref="form" :model="form" :rules="rules" label-width="125px">
5
+        <el-form ref="form" :model="form" :rules="rules" label-width="130px">
6
           <el-form-item label="项目编号:" prop="projectId" v-if="taskForm.procDefName == '技术交底'">
6
           <el-form-item label="项目编号:" prop="projectId" v-if="taskForm.procDefName == '技术交底'">
7
             <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目编号" disabled style="width: 300px" />
7
             <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目编号" disabled style="width: 300px" />
8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
72
           <el-form-item label="初始技术方案" prop="technicalDocument">
72
           <el-form-item label="初始技术方案" prop="technicalDocument">
73
             <FileUpload v-if="taskName == '方案上传'" ref="bsFile" :limit="1" :filePathName="'技术方案/初始'"
73
             <FileUpload v-if="taskName == '方案上传'" ref="bsFile" :limit="1" :filePathName="'技术方案/初始'"
74
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getTechnicalDoc"></FileUpload>
74
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getTechnicalDoc"></FileUpload>
75
-            <el-link v-if="taskName != '方案上传'" :href="`${baseUrl}${'/profile/upload' + form.technicalDocument}`"
75
+            <!-- <el-link v-if="taskName != '方案上传'" :href="`${baseUrl}${'/profile/upload' + form.technicalDocument}`"
76
               :underline="false" target="_blank">
76
               :underline="false" target="_blank">
77
               <span class="el-icon-document"> {{ getFileName(form.technicalDocument) }} </span>
77
               <span class="el-icon-document"> {{ getFileName(form.technicalDocument) }} </span>
78
-            </el-link>
78
+            </el-link> -->
79
+            <div v-if="form.technicalDocument && taskName != '方案上传'">
80
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.technicalDocument}`)">
81
+                {{ getFileName(form.technicalDocument) }}
82
+              </el-link>
83
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.technicalDocument}`"
84
+                :underline="false" target="_blank">
85
+                <span class="el-icon-download">下载文件</span>
86
+              </el-link>
87
+            </div>
79
           </el-form-item>
88
           </el-form-item>
80
           <el-form-item label="方案说明" prop="designDescription">
89
           <el-form-item label="方案说明" prop="designDescription">
81
             <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明"
90
             <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明"
97
           <el-form-item label="修改技术方案" prop="modifyDocument">
106
           <el-form-item label="修改技术方案" prop="modifyDocument">
98
             <FileUpload v-if="taskName == '技术审核'" ref="jssh" :limit="1" :filePathName="'技术方案/修改'"
107
             <FileUpload v-if="taskName == '技术审核'" ref="jssh" :limit="1" :filePathName="'技术方案/修改'"
99
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getModifyDoc"></FileUpload>
108
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getModifyDoc"></FileUpload>
100
-            <el-link v-if="taskName != '技术审核'" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
109
+            <!-- <el-link v-if="taskName != '技术审核'" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
101
               :underline="false" target="_blank">
110
               :underline="false" target="_blank">
102
               <span class="el-icon-document"> {{ getFileName(form.modifyDocument) }} </span>
111
               <span class="el-icon-document"> {{ getFileName(form.modifyDocument) }} </span>
103
-            </el-link>
112
+            </el-link> -->
113
+            <div v-if="form.modifyDocument && taskName != '技术审核'">
114
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.modifyDocument}`)">
115
+                {{ getFileName(form.modifyDocument) }}
116
+              </el-link>
117
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
118
+                :underline="false" target="_blank">
119
+                <span class="el-icon-download">下载文件</span>
120
+              </el-link>
121
+            </div>
104
           </el-form-item>
122
           </el-form-item>
105
           <el-form-item label="技术部审核意见" prop="technicalComment">
123
           <el-form-item label="技术部审核意见" prop="technicalComment">
106
             <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见"
124
             <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见"
121
           <el-form-item label="最终技术方案" prop="finalDocument">
139
           <el-form-item label="最终技术方案" prop="finalDocument">
122
             <FileUpload v-if="taskName == '总工审核'" ref="final" :limit="1" :filePathName="'技术方案/最终'"
140
             <FileUpload v-if="taskName == '总工审核'" ref="final" :limit="1" :filePathName="'技术方案/最终'"
123
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getFinalDoc"></FileUpload>
141
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getFinalDoc"></FileUpload>
124
-            <el-link v-if="taskName != '总工审核'" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
142
+            <!-- <el-link v-if="taskName != '总工审核'" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
125
               :underline="false" target="_blank">
143
               :underline="false" target="_blank">
126
               <span class="el-icon-document"> {{ getFileName(form.finalDocument) }} </span>
144
               <span class="el-icon-document"> {{ getFileName(form.finalDocument) }} </span>
127
-            </el-link>
145
+            </el-link> -->
146
+            <div v-if="form.finalDocument && taskName != '总工审核'">
147
+              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.finalDocument}`)">
148
+                {{ getFileName(form.finalDocument) }}
149
+              </el-link>
150
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
151
+                :underline="false" target="_blank">
152
+                <span class="el-icon-download">下载文件</span>
153
+              </el-link>
154
+            </div>
128
           </el-form-item>
155
           </el-form-item>
129
           <el-form-item label="总工程师审核意见" prop="manageComment">
156
           <el-form-item label="总工程师审核意见" prop="manageComment">
130
             <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见"
157
             <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见"
334
     },
361
     },
335
     // 查询项目
362
     // 查询项目
336
     getProjectById() {
363
     getProjectById() {
337
-      getProject(this.$route.query.formId).then(response => {
364
+      getProject(this.taskForm.formId).then(response => {
338
         this.chooseProject = response.data;
365
         this.chooseProject = response.data;
339
         this.isSelect = true
366
         this.isSelect = true
340
       });
367
       });

+ 3
- 2
oa-ui/src/views/flowable/task/myProcess/index.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 17:07:45
5
+ * @LastEditTime: 2024-06-06 15:45:51
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
451
     },
451
     },
452
     /** 删除按钮操作 */
452
     /** 删除按钮操作 */
453
     handleDelete(row) {
453
     handleDelete(row) {
454
+        console.log(row);
454
       const ids = row.procInsId || this.ids;// 暂不支持删除多个流程
455
       const ids = row.procInsId || this.ids;// 暂不支持删除多个流程
455
-      this.$confirm('是否确认删除流程定义编号为"' + ids + '"的数据项?', "警告", {
456
+      this.$confirm('删除后,流程将会取消,是否确定删除?', "警告", {
456
         confirmButtonText: "确定",
457
         confirmButtonText: "确定",
457
         cancelButtonText: "取消",
458
         cancelButtonText: "取消",
458
         type: "warning"
459
         type: "warning"

+ 7
- 7
oa-ui/src/views/oa/device/index.vue Visa fil

50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
51
     </el-row>
51
     </el-row>
52
 
52
 
53
-    <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
53
+    <el-table v-loading="loading" border :data="deviceList" @selection-change="handleSelectionChange">
54
       <el-table-column type="selection" width="55" align="center" />
54
       <el-table-column type="selection" width="55" align="center" />
55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
56
       <el-table-column label="设备状态" align="center" prop="status">
56
       <el-table-column label="设备状态" align="center" prop="status">
58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
59
         </template>
59
         </template>
60
       </el-table-column>
60
       </el-table-column>
61
-      <el-table-column label="出厂编号" align="center" prop="code" />
61
+      <el-table-column label="设备品牌" align="center" prop="brand" />
62
       <el-table-column label="设备名称" align="center" prop="name" />
62
       <el-table-column label="设备名称" align="center" prop="name" />
63
-      <el-table-column label="设备类别" align="center" prop="type" />
63
+      <!-- <el-table-column label="设备类别" align="center" prop="type" /> -->
64
       <el-table-column label="规格型号" align="center" prop="series" />
64
       <el-table-column label="规格型号" align="center" prop="series" />
65
+      <el-table-column label="出厂编号" align="center" prop="code" />
65
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
66
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
66
         <template slot-scope="scope">
67
         <template slot-scope="scope">
67
           <span>{{ parseTime(scope.row.acquisitionTime, '{y}-{m}-{d}') }}</span>
68
           <span>{{ parseTime(scope.row.acquisitionTime, '{y}-{m}-{d}') }}</span>
68
         </template>
69
         </template>
69
       </el-table-column>
70
       </el-table-column>
70
       <el-table-column label="购买价格(元)" align="center" prop="cost" />
71
       <el-table-column label="购买价格(元)" align="center" prop="cost" />
71
-      <el-table-column label="预计使用年限" align="center" prop="expectLife" />
72
-      <el-table-column label="设备品牌" align="center" prop="brand" />
73
-      <el-table-column label="单日成本(元)" align="center" prop="dayCost" />
72
+      <!-- <el-table-column label="预计使用年限" align="center" prop="expectLife" /> -->
73
+      <!-- <el-table-column label="单日成本(元)" align="center" prop="dayCost" />
74
       <el-table-column label="存放地点" align="center" prop="place" />
74
       <el-table-column label="存放地点" align="center" prop="place" />
75
-      <el-table-column label="管理部门" align="center" prop="dept.deptName" />
75
+      <el-table-column label="管理部门" align="center" prop="dept.deptName" /> -->
76
       <el-table-column label="备注" align="center" prop="remark" />
76
       <el-table-column label="备注" align="center" prop="remark" />
77
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
77
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
78
 
78
 

+ 13
- 9
oa-ui/src/views/oa/staff/index.vue Visa fil

12
             @keyup.enter.native="handleQuery" />
12
             @keyup.enter.native="handleQuery" />
13
         </el-form-item>
13
         </el-form-item>
14
         <el-form-item label="部门">
14
         <el-form-item label="部门">
15
-          <el-select v-model="queryParams.deptId" clearable>
15
+          <el-select v-model="queryParams.deptId" clearable @change="handleQuery">
16
             <el-option v-for="item in deptList" :key="item.id" :label="item.label" :value="item.id">
16
             <el-option v-for="item in deptList" :key="item.id" :label="item.label" :value="item.id">
17
             </el-option>
17
             </el-option>
18
           </el-select>
18
           </el-select>
36
           <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
36
           <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
37
             v-hasPermi="['system:user:remove']">删除</el-button>
37
             v-hasPermi="['system:user:remove']">删除</el-button>
38
         </el-col>
38
         </el-col>
39
-        <el-col :span="1.5">
39
+        <!-- <el-col :span="1.5">
40
           <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
40
           <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
41
             v-hasPermi="['system:user:import']">导入</el-button>
41
             v-hasPermi="['system:user:import']">导入</el-button>
42
-        </el-col>
42
+        </el-col> -->
43
         <el-col :span="1.5">
43
         <el-col :span="1.5">
44
           <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
44
           <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
45
             v-hasPermi="['system:user:export']">导出</el-button>
45
             v-hasPermi="['system:user:export']">导出</el-button>
47
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
47
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
48
       </el-row>
48
       </el-row>
49
 
49
 
50
-      <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
50
+      <el-table v-loading="loading" border :data="userList" @selection-change="handleSelectionChange">
51
         <el-table-column type="selection" width="50" align="center" />
51
         <el-table-column type="selection" width="50" align="center" />
52
         <el-table-column label="序号" width="50" align="center" prop="userId">
52
         <el-table-column label="序号" width="50" align="center" prop="userId">
53
           <template slot-scope="scope">
53
           <template slot-scope="scope">
75
         <el-table-column label="岗级" align="center" key="postLevel" v-if="columns[5].visible"
75
         <el-table-column label="岗级" align="center" key="postLevel" v-if="columns[5].visible"
76
           :show-overflow-tooltip="true">
76
           :show-overflow-tooltip="true">
77
           <template slot-scope="scope">
77
           <template slot-scope="scope">
78
-              {{ selectDictLabel(dict.type.sys_user_postlevel,scope.row.postLevel) +  selectDictLabel(dict.type.sys_user_salarylevel,scope.row.salaryLevel)}}
78
+            {{ selectDictLabel(dict.type.sys_user_postlevel, scope.row.postLevel) +
79
+      selectDictLabel(dict.type.sys_user_salarylevel, scope.row.salaryLevel) }}
79
           </template>
80
           </template>
80
         </el-table-column>
81
         </el-table-column>
81
         <el-table-column label="职称" align="center" key="titles" prop="titles" v-if="columns[6].visible"
82
         <el-table-column label="职称" align="center" key="titles" prop="titles" v-if="columns[6].visible"
82
           :show-overflow-tooltip="true">
83
           :show-overflow-tooltip="true">
83
           <template slot-scope="scope">
84
           <template slot-scope="scope">
84
-            {{ selectDictLabel(dict.type.sys_user_titles,scope.row.titles) }}
85
+            {{ selectDictLabel(dict.type.sys_user_titles, scope.row.titles) }}
85
           </template>
86
           </template>
86
         </el-table-column>
87
         </el-table-column>
87
         <el-table-column label="执业证书" align="center" key="certificates" prop="certificates" v-if="columns[7].visible"
88
         <el-table-column label="执业证书" align="center" key="certificates" prop="certificates" v-if="columns[7].visible"
102
             <span>{{ parseTime(scope.row.contractSign, '{y}-{m}-{d}') }}</span>
103
             <span>{{ parseTime(scope.row.contractSign, '{y}-{m}-{d}') }}</span>
103
           </template>
104
           </template>
104
         </el-table-column>
105
         </el-table-column>
105
-        <el-table-column label="合同期满" align="center" key="contractExpire" prop="contractExpire" v-if="columns[8].visible"
106
-          :show-overflow-tooltip="true">
106
+        <el-table-column label="合同期满" align="center" key="contractExpire" prop="contractExpire"
107
+          v-if="columns[8].visible" :show-overflow-tooltip="true">
107
           <template slot-scope="scope">
108
           <template slot-scope="scope">
108
             <span>{{ parseTime(scope.row.contractExpire, '{y}-{m}-{d}') }}</span>
109
             <span>{{ parseTime(scope.row.contractExpire, '{y}-{m}-{d}') }}</span>
109
           </template>
110
           </template>
217
                 value-format="yyyy-MM" />
218
                 value-format="yyyy-MM" />
218
             </el-form-item>
219
             </el-form-item>
219
             <el-form-item label="政治面貌" prop="politicalAffiliation">
220
             <el-form-item label="政治面貌" prop="politicalAffiliation">
220
-              <el-select v-model="form.politicalAffiliation" multiple clearable placeholder="请选择政治面貌" style="width:100%;">
221
+              <el-select v-model="form.politicalAffiliation" multiple clearable placeholder="请选择政治面貌"
222
+                style="width:100%;">
221
                 <el-option v-for="dict in dict.type.sys_user_political" :key="dict.value" :label="dict.label"
223
                 <el-option v-for="dict in dict.type.sys_user_political" :key="dict.value" :label="dict.label"
222
                   :value="dict.value" />
224
                   :value="dict.value" />
223
               </el-select>
225
               </el-select>
632
               this.getList();
634
               this.getList();
633
             });
635
             });
634
           } else {
636
           } else {
637
+            this.form.certificates = this.form.certificates.length == 0? '' : this.form.certificates;
638
+            this.form.politicalAffiliation = this.form.politicalAffiliation.length == 0 ? '' : this.form.politicalAffiliation;
635
             addUser(this.form).then(response => {
639
             addUser(this.form).then(response => {
636
               this.$modal.msgSuccess("新增成功");
640
               this.$modal.msgSuccess("新增成功");
637
               this.open = false;
641
               this.open = false;

+ 13
- 6
oa-ui/src/views/oa/staff/info.vue Visa fil

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-22 14:50:46
3
  * @Date: 2024-03-22 14:50:46
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-20 15:17:11
5
+ * @LastEditTime: 2024-06-07 16:03:41
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="bg" v-loading="loading">
8
   <div class="bg" v-loading="loading">
15
       </div>
15
       </div>
16
     </div>
16
     </div>
17
     <el-row class="app-container">
17
     <el-row class="app-container">
18
-      <el-col :span="6" class="userInfo">
18
+      <el-col :span="8" class="userInfo">
19
         <div class="text-center">
19
         <div class="text-center">
20
           <div class="avatar">
20
           <div class="avatar">
21
             <img :src="avatar" class="user-avatar" />
21
             <img :src="avatar" class="user-avatar" />
22
           </div>
22
           </div>
23
-          <div class="user-name">{{ this.form.nickName }}</div>
23
+          <div class="user-name">{{ form.nickName }}</div>
24
           <div class="user-sex">
24
           <div class="user-sex">
25
-            {{ getAgeByIdCard(this.form.idCard) + '岁' }} {{ this.form.sex == '0' ? ' 男' : ' 女' }}
25
+            {{ getAgeByIdCard(form.idCard) + '岁' }} {{ form.sex == '0' ? ' 男' : ' 女' }}
26
             <el-tag :type="form.status == '在职' ? 'success' : 'warning'">{{ form.status }}</el-tag>
26
             <el-tag :type="form.status == '在职' ? 'success' : 'warning'">{{ form.status }}</el-tag>
27
           </div>
27
           </div>
28
         </div>
28
         </div>
31
             <svg-icon icon-class="dept" class="info-icon"></svg-icon>
31
             <svg-icon icon-class="dept" class="info-icon"></svg-icon>
32
             <div class="item-label">部门:</div>
32
             <div class="item-label">部门:</div>
33
           </div>
33
           </div>
34
+          <div>{{ form.dept ? form.dept.deptName : '' }}</div>
35
+        </div>
36
+        <div class="info-item">
37
+          <div class="item-label">
38
+            <svg-icon icon-class="post" class="info-icon"></svg-icon>
39
+            <div class="item-label">职务:</div>
40
+          </div>
34
           <div>{{ postData }}</div>
41
           <div>{{ postData }}</div>
35
         </div>
42
         </div>
36
         <div class="info-item">
43
         <div class="info-item">
72
           <div>{{ form.homePlace }}</div>
79
           <div>{{ form.homePlace }}</div>
73
         </div>
80
         </div>
74
       </el-col>
81
       </el-col>
75
-      <el-col :span="17" class="stateInfo">
82
+      <el-col :span="15" class="stateInfo">
76
         <el-tabs v-model="activeName" @tab-click="handleClick">
83
         <el-tabs v-model="activeName" @tab-click="handleClick">
77
           <!-- <el-tab-pane label="负责项目" name="1">
84
           <!-- <el-tab-pane label="负责项目" name="1">
78
             <projectInfo></projectInfo>
85
             <projectInfo></projectInfo>
213
           }
220
           }
214
         }
221
         }
215
       }
222
       }
216
-      this.postData = '中水成勘测绘公司-' + postArr.join('-')
223
+      this.postData = postArr.join('/')
217
 
224
 
218
       if (this.form.status == '0') {
225
       if (this.form.status == '0') {
219
         this.form.status = '在职'
226
         this.form.status = '在职'

+ 3
- 3
oa-ui/src/views/oa/staff/salary.vue Visa fil

67
         </template>
67
         </template>
68
       </el-table-column>
68
       </el-table-column>
69
     </el-table>
69
     </el-table>
70
-
70
+<!-- 
71
     <pagination v-if="tabelOpen" v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
71
     <pagination v-if="tabelOpen" v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
72
-      :limit.sync="queryParams.pageSize" @pagination="getList" />
72
+      :limit.sync="queryParams.pageSize" @pagination="getList" /> -->
73
 
73
 
74
     <!-- 添加或修改cmc岗位工资对话框 -->
74
     <!-- 添加或修改cmc岗位工资对话框 -->
75
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
75
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
124
       // 查询参数
124
       // 查询参数
125
       queryParams: {
125
       queryParams: {
126
         pageNum: 1,
126
         pageNum: 1,
127
-        pageSize: 10,
127
+        pageSize: 999,
128
         postLevel: null,
128
         postLevel: null,
129
         salaryLevel: null,
129
         salaryLevel: null,
130
         salary: null
130
         salary: null

+ 6
- 6
oa-ui/src/views/oa/supply/index.vue Visa fil

50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
51
     </el-row>
51
     </el-row>
52
 
52
 
53
-    <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
53
+    <el-table v-loading="loading" border :data="deviceList" @selection-change="handleSelectionChange">
54
       <el-table-column type="selection" width="55" align="center" />
54
       <el-table-column type="selection" width="55" align="center" />
55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
56
       <el-table-column label="设备状态" align="center" prop="status">
56
       <el-table-column label="设备状态" align="center" prop="status">
58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
59
         </template>
59
         </template>
60
       </el-table-column>
60
       </el-table-column>
61
-      <el-table-column label="出厂编号" align="center" prop="code" />
62
-      <el-table-column label="设备名称" align="center" prop="name" />
63
-      <el-table-column label="设备类别" align="center" prop="type" />
61
+      <!-- <el-table-column label="出厂编号" align="center" prop="code" /> -->
64
       <el-table-column label="设备品牌" align="center" prop="brand" />
62
       <el-table-column label="设备品牌" align="center" prop="brand" />
63
+      <el-table-column label="设备名称" align="center" prop="name" />
64
+      <!-- <el-table-column label="设备类别" align="center" prop="type" /> -->
65
       <el-table-column label="规格型号" align="center" prop="series" />
65
       <el-table-column label="规格型号" align="center" prop="series" />
66
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
66
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
67
         <template slot-scope="scope">
67
         <template slot-scope="scope">
69
         </template>
69
         </template>
70
       </el-table-column>
70
       </el-table-column>
71
       <el-table-column label="购买价格(元)" align="center" prop="cost" />
71
       <el-table-column label="购买价格(元)" align="center" prop="cost" />
72
-      <el-table-column label="预计使用年限" align="center" prop="expectLife" />
72
+      <!-- <el-table-column label="预计使用年限" align="center" prop="expectLife" />
73
       <el-table-column label="单日成本(元)" align="center" prop="dayCost" />
73
       <el-table-column label="单日成本(元)" align="center" prop="dayCost" />
74
       <el-table-column label="存放地点" align="center" prop="place" />
74
       <el-table-column label="存放地点" align="center" prop="place" />
75
-      <el-table-column label="管理部门" align="center" prop="dept.deptName" />
75
+      <el-table-column label="管理部门" align="center" prop="dept.deptName" /> -->
76
       <el-table-column label="备注" align="center" prop="remark" />
76
       <el-table-column label="备注" align="center" prop="remark" />
77
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
77
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
78
 
78
 

+ 25
- 19
oa-ui/src/views/oa/tender/index.vue Visa fil

253
             <FileUpload v-if="form.tenderId == null" ref="zbFile" :limit="1" :filePathName="'投标文件'"
253
             <FileUpload v-if="form.tenderId == null" ref="zbFile" :limit="1" :filePathName="'投标文件'"
254
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathBidDocument"></FileUpload>
254
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathBidDocument"></FileUpload>
255
             <div v-if="form.tenderId != null">
255
             <div v-if="form.tenderId != null">
256
-              <FileUpload v-if="!isView" ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
257
-                :filePathName="'投标文件'" :isModify="true" @input="getUploadPathBidDocument"></FileUpload>
258
-              <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.bidDocument}`)">
259
-                {{ getFileName(form.bidDocument) }}
260
-              </el-link>
261
-              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.bidDocument}`"
262
-                :underline="false" target="_blank">
263
-                <span class="el-icon-download">下载文件</span>
264
-              </el-link>
256
+              <FileUpload v-if="!isView" ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
257
+                :isShowTip="false" :filePathName="'投标文件'" :isModify="true" @input="getUploadPathBidDocument">
258
+              </FileUpload>
259
+              <div v-if="form.bidDocument">
260
+                <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.bidDocument}`)">
261
+                  {{ getFileName(form.bidDocument) }}
262
+                </el-link>
263
+                <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.bidDocument}`"
264
+                  :underline="false" target="_blank">
265
+                  <span class="el-icon-download">下载文件</span>
266
+                </el-link>
267
+              </div>
265
             </div>
268
             </div>
266
           </el-descriptions-item>
269
           </el-descriptions-item>
267
           <el-descriptions-item :span="3">
270
           <el-descriptions-item :span="3">
354
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
357
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
355
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
358
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
356
             <div v-if="form.tenderId != null">
359
             <div v-if="form.tenderId != null">
357
-              <FileUpload v-if="!isView" ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
358
-                :filePathName="'投标文件'" :isModify="true" @input="getUploadPathTenderDocument"></FileUpload>
359
-              <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.tenderDocument}`)">
360
-                {{ getFileName(form.tenderDocument) }}
361
-              </el-link>
362
-              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.tenderDocument}`"
363
-                :underline="false" target="_blank">
364
-                <span class="el-icon-download">下载文件</span>
365
-              </el-link>
360
+              <FileUpload v-if="!isView" ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
361
+                :isShowTip="false" :filePathName="'投标文件'" :isModify="true" @input="getUploadPathTenderDocument">
362
+              </FileUpload>
363
+              <div v-if="form.tenderDocument">
364
+                <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.tenderDocument}`)">
365
+                  {{ getFileName(form.tenderDocument) }}
366
+                </el-link>
367
+                <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.tenderDocument}`"
368
+                  :underline="false" target="_blank">
369
+                  <span class="el-icon-download">下载文件</span>
370
+                </el-link>
371
+              </div>
366
             </div>
372
             </div>
367
           </el-descriptions-item>
373
           </el-descriptions-item>
368
         </el-descriptions>
374
         </el-descriptions>
403
       title: "",
409
       title: "",
404
       // 是否显示弹出层
410
       // 是否显示弹出层
405
       open: false,
411
       open: false,
406
-      isView:true,
412
+      isView: true,
407
       // 对话框属性
413
       // 对话框属性
408
       dialogProperty: {
414
       dialogProperty: {
409
         dialogWidth: '1200px',
415
         dialogWidth: '1200px',

Loading…
Avbryt
Spara