浏览代码

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

余思翰 1年前
父节点
当前提交
098d4b2311
共有 25 个文件被更改,包括 2387 次插入1798 次删除
  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 查看文件

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

+ 1841
- 1056
oa-back/sql/cmc_oa(小余测试数据).sql
文件差异内容过多而无法显示
查看文件


+ 2
- 1
oa-ui/src/store/modules/user.js 查看文件

@@ -88,7 +88,8 @@ const user = {
88 88
           listUser({ pageNum: 1, pageSize: 9999 }).then(result => {
89 89
             commit('SET_USERLIST', result.rows)
90 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 95
           resolve(res)

+ 2
- 2
oa-ui/src/views/flowable/form/budget/addBudget.vue 查看文件

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

+ 1
- 4
oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue 查看文件

@@ -92,10 +92,7 @@
92 92
               {{ work.price }}
93 93
             </td>
94 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 96
             </td>
100 97
             <td>
101 98
               <el-input v-model="work.workload" @change="getTotal(work)"></el-input>

+ 10
- 53
oa-ui/src/views/flowable/form/business/brandForm.vue 查看文件

@@ -26,11 +26,17 @@
26 26
               :disabled="taskName != '支付申请'" />
27 27
           </el-form-item>
28 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 30
               :limit="1" :filePathName="'品牌项目支付/审核文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
31 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 40
             </div>
35 41
           </el-form-item>
36 42
           <el-row>
@@ -334,38 +340,6 @@ export default {
334 340
       };
335 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 344
     submitForm() {
371 345
       this.$refs["form"].validate(valid => {
@@ -409,22 +383,6 @@ export default {
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 386
     getBrandPath(val) {
429 387
       let arr = val.split('/upload')
430 388
       this.form.approvalDocument = arr[1]
@@ -442,9 +400,8 @@ export default {
442 400
 };
443 401
 </script>
444 402
 <style lang="scss" scoped>
403
+@import "@/assets/styles/element-reset.scss";
445 404
 table {
446
-  /*居中*/
447
-  margin: 0 auto;
448 405
   /*边框*/
449 406
   /* border: 1px solid black; */
450 407
   text-align: center;

+ 92
- 110
oa-ui/src/views/flowable/form/business/contractForm.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-05-10 15:31:57
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-04 16:33:59
5
+ * @LastEditTime: 2024-06-07 10:43:03
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -16,12 +16,6 @@
16 16
               <el-form-item label="投标项目名称:" prop="tenderId">
17 17
                 <el-button type="primary" size="mini" @click="tbOpen = true"
18 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 19
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
26 20
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="2">{{ chooseTender.projectName
27 21
                     }}</el-descriptions-item>
@@ -35,50 +29,35 @@
35 29
                     }}</el-descriptions-item>
36 30
                 </el-descriptions>
37 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 52
             </el-col>
70 53
 
71 54
             <el-col :span="12" :xs="24">
55
+              <el-alert title="院外项目,不选关联项目;院内项目,必选关联项目" type="warning">
56
+              </el-alert>
72 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 58
                 <el-button type="primary" size="mini" @click="open = true" v-if="taskName == '合同拟稿'">选择项目</el-button>
80 59
               </el-form-item>
81
-              <el-table v-loading="loading" :data="chooseProjectList">
60
+              <el-table v-loading="projectloading" :data="chooseProjectList">
82 61
                 <el-table-column label="项目编号" align="center" prop="projectNumber"></el-table-column>
83 62
                 <el-table-column label="项目名称" align="center" prop="projectName"></el-table-column>
84 63
                 <el-table-column label="项目负责人" align="center" prop="projectLeaderUser.nickName"></el-table-column>
@@ -92,13 +71,16 @@
92 71
               v-if="form.contractDocument == '' || form.contractDocument == null" ref="contractFile" :limit="1"
93 72
               :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
94 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 82
             </div>
100 83
           </el-form-item>
101
-          <el-divider></el-divider>
102 84
           <el-form-item label="合同计划工作量:">
103 85
             <table border="1">
104 86
               <tr>
@@ -170,10 +152,12 @@
170 152
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
171 153
                 </td>
172 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 157
                 </td>
175 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 161
                 </td>
178 162
                 <td>
179 163
                   <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
@@ -208,7 +192,6 @@
208 192
               </el-form-item>
209 193
             </el-col>
210 194
           </el-row>
211
-          <el-divider></el-divider>
212 195
           <el-form-item label="评审方式" prop="commentType">
213 196
             <el-radio-group v-model="form.commentType" @change="changeCommentType" :disabled="taskName != '合同拟稿'">
214 197
               <el-radio :label="'0'">无须评审</el-radio>
@@ -360,6 +343,7 @@
360 343
               </tr>
361 344
             </table>
362 345
           </el-form-item>
346
+          <el-divider></el-divider>
363 347
           <el-form-item label="分管审批意见" prop="remark">
364 348
             <el-input v-model="form.managerComment" type="textarea" placeholder="请输入审批意见"
365 349
               :disabled="taskName != '分管审核'" />
@@ -391,8 +375,8 @@
391 375
               ref="contractFile" :limit="1" :filePathName="'承接合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
392 376
               @input="getSignScanPath">
393 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 380
                 tag="ul">
397 381
                 <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
398 382
                   <el-link :href="`${baseUrl}${'/profile/upload' + form.signScan}`" :underline="false" target="_blank">
@@ -406,13 +390,19 @@
406 390
                   <button class="preview-btn" type="primary" size="mini" plain
407 391
                     @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">在线预览</button>
408 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 401
             </div>
411 402
           </el-form-item>
412 403
         </el-form>
413 404
         <div style="text-align: center;">
414 405
           <el-button type="primary" @click="submitForm" :disabled="formDisabled">提 交</el-button>
415
-          <!-- <el-button @click="cancel">取 消</el-button> -->
416 406
         </div>
417 407
       </el-col>` `
418 408
       <el-col :span="6" :xs="24">
@@ -483,6 +473,8 @@ export default {
483 473
   data() {
484 474
     return {
485 475
       baseUrl: process.env.VUE_APP_BASE_API,
476
+      isTenderIdValid: true, // 用于跟踪tenderId是否有效 
477
+      isDocumentValid: true,
486 478
       draftUser: '',
487 479
       draftTime: undefined,
488 480
       managerUser: '',
@@ -491,40 +483,17 @@ export default {
491 483
       commentTime: undefined,
492 484
       // 遮罩层
493 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 488
       title: "",
508 489
       // 是否显示弹出层
509 490
       open: false,
510 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 497
       meetingForm: {
529 498
         users: [],
530 499
       },
@@ -611,7 +580,6 @@ export default {
611 580
     this.getDeptList();
612 581
     this.getTenderList();
613 582
     this.getUserList();
614
-    this.getList();
615 583
     flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
616 584
       this.flowData = res.data;
617 585
     })
@@ -624,18 +592,12 @@ export default {
624 592
     initRules() {
625 593
       if (this.taskName == '合同拟稿') {
626 594
         this.rules = {
627
-          tenderId: [
628
-            { required: true, message: '请选择投标项目', trigger: 'blur' },
629
-          ],
630 595
           contractCode: [
631 596
             { required: true, message: '请输入合同编码', trigger: 'blur' },
632 597
           ],
633
-          contractDocument: [
634
-            { required: true, message: '请上传合同文件', trigger: 'blur' },
635
-          ],
636 598
           commentType: [
637
-            { required: true, message: '请选择评审方式', trigger: 'blur' },
638
-          ],
599
+            { required: true, message: '请选择评审方式', trigger: 'change' },
600
+          ]
639 601
         }
640 602
       } else if (this.taskName == '分管审核') {
641 603
         this.rules = {
@@ -651,6 +613,7 @@ export default {
651 613
           this.formTotal = 0;
652 614
           this.form.drafter = this.$store.getters.userId;
653 615
           this.form.draftTime = parseTime(new Date(), '{y}-{m}-{d}');
616
+          this.projectloading = false;
654 617
         }
655 618
         else {
656 619
           this.formTotal = 1;
@@ -719,20 +682,12 @@ export default {
719 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 692
     getProjectList() {
738 693
       this.loading = true
@@ -774,11 +729,6 @@ export default {
774 729
         this.isSelect = false
775 730
       }
776 731
     },
777
-    // 取消按钮
778
-    cancel() {
779
-      this.open = false;
780
-      this.reset();
781
-    },
782 732
     isEmptyObject(obj) {
783 733
       for (var key in obj) {
784 734
         if (obj.hasOwnProperty(key)) {
@@ -909,15 +859,42 @@ export default {
909 859
       };
910 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 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 892
       this.$refs["form"].validate(valid => {
915 893
         if (valid) {
916 894
           if (this.formTotal != 0) {
917 895
             updateContract(this.form).then(response => {
918 896
               this.$modal.msgSuccess("修改成功");
919 897
               this.open = false;
920
-              this.getList();
921 898
             });
922 899
             const params = { taskId: this.taskForm.taskId };
923 900
             getNextFlowNode(params).then(res => {
@@ -969,7 +946,6 @@ export default {
969 946
               if (response.code == 200) {
970 947
                 this.$modal.msgSuccess("新增成功");
971 948
                 this.open = false;
972
-                this.getList();
973 949
                 for (let work of this.workList) {
974 950
                   work.contractId = this.form.contractId
975 951
                   addContractWork(work);
@@ -1063,10 +1039,16 @@ export default {
1063 1039
     },
1064 1040
     confirmTender(val) {
1065 1041
       this.tbOpen = false
1042
+      this.form.amount = val.quote
1043
+      this.form.deposit = val.deposit
1066 1044
       this.form.tenderId = val.tenderId
1067 1045
       this.chooseTender = val
1068 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 1052
     reviewWord(url) {
1071 1053
       this.$router.push({
1072 1054
         path: '/preview',

+ 82
- 37
oa-ui/src/views/flowable/form/business/subContract.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 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 7
 <template>
8 8
   <div class="app-container">
@@ -23,14 +23,14 @@
23 23
               <el-descriptions-item label="项目编号" label-class-name="my-label">
24 24
                 {{ chooseProject.projectNumber }}</el-descriptions-item>
25 25
               <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
26
-              }}</el-descriptions-item>
26
+                }}</el-descriptions-item>
27 27
               <el-descriptions-item label="甲方单位" label-class-name="my-label">{{ chooseProject.partyA
28
-              }}</el-descriptions-item>
28
+                }}</el-descriptions-item>
29 29
               <el-descriptions-item label="承担部门" label-class-name="my-label">
30 30
                 <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
31 31
               </el-descriptions-item>
32 32
               <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
33
-              }}</el-descriptions-item>
33
+                }}</el-descriptions-item>
34 34
             </el-descriptions>
35 35
           </el-form-item>
36 36
           <el-row :gutter="20">
@@ -66,7 +66,7 @@
66 66
           <el-row :gutter="20">
67 67
             <el-col :span="16" :xs="24">
68 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 70
                   :disabled="taskName != '合同拟稿'" clearable @change="handleSelectPartner">
71 71
                   <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
72 72
                     :value="item.partnerId">
@@ -82,12 +82,18 @@
82 82
           </el-row>
83 83
 
84 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 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 97
             </div>
92 98
           </el-form-item>
93 99
           <el-form-item label="合同计划工作量:">
@@ -134,8 +140,8 @@
134 140
                     :disabled="taskName != '合同拟稿'"></el-input>
135 141
                 </td>
136 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 145
                 </td>
140 146
               </tr>
141 147
             </table>
@@ -145,10 +151,10 @@
145 151
           <el-form-item label="合同付款计划:">
146 152
             <table border="1">
147 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 158
                 <td>预计时间</td>
153 159
                 <td>备注</td>
154 160
               </tr>
@@ -161,14 +167,16 @@
161 167
                     :autosize="{ minRows: 4, maxRows: 10 }" :disabled="taskName != '合同拟稿'"></el-input>
162 168
                 </td>
163 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 172
                 </td>
166 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 176
                 </td>
169 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 180
                   </el-date-picker>
173 181
                 </td>
174 182
                 <td>
@@ -176,8 +184,8 @@
176 184
                     :disabled="taskName != '合同拟稿'"></el-input>
177 185
                 </td>
178 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 189
                 </td>
182 190
               </tr>
183 191
             </table>
@@ -271,8 +279,8 @@
271 279
                   <span> {{ comment.commentTime }} </span>
272 280
                 </td>
273 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 284
                 </td>
277 285
               </tr>
278 286
             </table>
@@ -362,8 +370,8 @@
362 370
           </el-row>
363 371
           <el-divider></el-divider>
364 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 375
             </el-date-picker>
368 376
           </el-form-item>
369 377
           <el-form-item label="签订备注" prop="signRemark">
@@ -373,8 +381,14 @@
373 381
             <FileUpload :disabled="taskName != '合同签订'" v-if="form.signScan == null || form.signScan == ''" :limit="1"
374 382
               :filePathName="'分包合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getSignScanPath">
375 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 392
             </div>
379 393
           </el-form-item>
380 394
         </el-form>
@@ -591,23 +605,17 @@ export default {
591 605
     initRules() {
592 606
       if (this.taskName == '合同拟稿') {
593 607
         this.rules = {
594
-          projectId: [
595
-            { required: true, message: '请选择登记项目', trigger: 'blur' },
596
-          ],
597 608
           partnerId: [
598
-            { required: true, message: '请选择承接单位', trigger: 'blur' },
609
+            { required: true, message: '请选择承接单位', trigger: 'change' },
599 610
           ],
600 611
           subContractName: [
601 612
             { required: true, message: '请输入分包合同名称', trigger: 'blur' },
602 613
           ],
603
-          contractDocument: [
604
-            { required: true, message: '请上传合同文件', trigger: 'blur' },
605
-          ],
606 614
           subAmount: [
607 615
             { required: true, message: '请输入分包合同额', trigger: 'blur' },
608 616
           ],
609 617
           commentType: [
610
-            { required: true, message: '请选择评审方式', trigger: 'blur' },
618
+            { required: true, message: '请选择评审方式', trigger: 'change' },
611 619
           ],
612 620
         }
613 621
       } else if (this.taskName == '分管审核') {
@@ -889,8 +897,23 @@ export default {
889 897
       };
890 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 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 917
       this.$refs["form"].validate(valid => {
895 918
         if (valid) {
896 919
           if (this.formTotal != 0) {
@@ -1011,6 +1034,14 @@ export default {
1011 1034
         this.chooseProject = val[0]
1012 1035
         this.isSelect = true
1013 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 1045
         listProjectContract({ projectId: this.form.projectId }).then(response => {
1015 1046
           if (response.rows) {
1016 1047
             for (let row of response.rows) {
@@ -1066,6 +1097,20 @@ export default {
1066 1097
     clickFile(val) {
1067 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 1116
 </script>

+ 12
- 3
oa-ui/src/views/flowable/form/components/conditionDisplay.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-23 17:08:16
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 09:40:19
5
+ * @LastEditTime: 2024-06-07 16:13:25
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -15,7 +15,7 @@
15 15
     <project-process :key="'pro'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '项目流转'"></project-process>
16 16
     <car-form :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '用车审批'"></car-form>
17 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 19
     <settle-form :key="'fb'+taskForm.taskId" :taskForm="taskForm" :taskName="''" :disabled="true"
20 20
       v-else-if="taskForm.procDefName == '项目结算'"></settle-form>
21 21
     <!-- <budget-in :key="'budget'+taskForm.taskId" :taskForm="taskForm" v-else-if="taskForm.procDefName == '项目预算'"></budget-in> -->
@@ -26,6 +26,9 @@
26 26
       v-else-if="taskForm.procDefName == '分包合同评审'"></sub-contract>
27 27
     <archive-form :key="'arc'+taskForm.taskId" :taskForm="taskForm" :taskName="''" v-else-if="taskForm.procDefName == '成果归档'"></archive-form>
28 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 32
   </div>
30 33
 </template>
31 34
 
@@ -47,6 +50,9 @@ import SubContract from '../business/subContract.vue';
47 50
 import ArchiveForm from '../archiveForm.vue';
48 51
 import BorrowForm from '../finance/borrowForm.vue';
49 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 56
 export default {
51 57
   props: {
52 58
     passingParam: {
@@ -75,7 +81,10 @@ export default {
75 81
     SubContract,
76 82
     ArchiveForm,
77 83
     BorrowForm,
78
-    BudgetTab
84
+    BudgetTab,
85
+    BrandForm,
86
+    DepositForm,
87
+    DeviceForm
79 88
   },
80 89
   data() {
81 90
     return {

+ 26
- 4
oa-ui/src/views/flowable/form/finance/borrowForm.vue 查看文件

@@ -130,8 +130,15 @@
130 130
             <FileUpload v-if="form.borrowDocument == null || form.borrowDocument == ''" :disabled="taskName != '借款申请'"
131 131
               :limit="1" :filePathName="'借款/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
132 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 142
             </div>
136 143
           </el-form-item>
137 144
           <el-divider></el-divider>
@@ -226,8 +233,15 @@
226 233
             <FileUpload v-if="form.lendDocument == null || form.lendDocument == ''" :disabled="taskName != '财务处理'"
227 234
               :limit="1" :filePathName="'借款/支付凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getLendPath">
228 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 245
             </div>
232 246
           </el-form-item>
233 247
           <el-form-item label="财务部支付备注" prop="cwComment">
@@ -670,6 +684,14 @@ export default {
670 684
         this.chooseProject = val[0]
671 685
         this.isSelect = true
672 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 696
       this.openProject = false
675 697
     },

+ 22
- 5
oa-ui/src/views/flowable/form/finance/depositForm.vue 查看文件

@@ -91,8 +91,15 @@
91 91
             <FileUpload v-if="form.applyDocument == null || form.applyDocument == ''" :disabled="taskName != '保证金申请'"
92 92
               :limit="1" :filePathName="'保证金/申请附件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
93 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 103
             </div>
97 104
           </el-form-item>
98 105
           <el-row :gutter="20">
@@ -129,8 +136,15 @@
129 136
             <FileUpload v-if="form.remitDocument == null || form.remitDocument == ''" :disabled="taskName != '财务处理'"
130 137
               :limit="1" :filePathName="'保证金/汇款凭证'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
131 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 148
             </div>
135 149
           </el-form-item>
136 150
           <el-form-item label="财务打款备注" prop="cwComment">
@@ -318,7 +332,7 @@ export default {
318 332
             { required: true, message: '请输入银行卡号', trigger: 'blur' },
319 333
           ],
320 334
           depositWay: [
321
-            { required: true, message: '请选择保证金形式', trigger: 'blur' },
335
+            { required: true, message: '请选择保证金形式', trigger: 'change' },
322 336
           ],
323 337
         }
324 338
       } else if (this.taskName == '分管审批') {
@@ -592,3 +606,6 @@ export default {
592 606
   }
593 607
 };
594 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 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 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 8
 <template>
@@ -501,6 +501,14 @@ export default {
501 501
         this.chooseProject = val[0]
502 502
         this.isSelect = true
503 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 513
       this.openProject = false
506 514
     },

+ 11
- 32
oa-ui/src/views/flowable/form/projectProcess/addproject.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 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 7
 <template>
8 8
   <div class="project-wrapper">
@@ -116,9 +116,13 @@
116 116
         <FileUpload v-if="$route.query.taskName == '项目登记'" ref="orz" :limit="1" :filePathName="'项目任务书'"
117 117
           :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setProjectDocument">
118 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 126
           </el-link>
123 127
         </div>
124 128
       </el-form-item>
@@ -139,11 +143,6 @@
139 143
         </el-col>
140 144
       </el-row>
141 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 146
     <div slot="footer" class="dialog-footer" style="text-align: center">
148 147
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
149 148
       <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
@@ -165,9 +164,8 @@ import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
165 164
 import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
166 165
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
167 166
 import chooseContract from '../components/chooseContract.vue';
168
-import changeData from '../inProgress/changeData.vue';
169 167
 export default {
170
-  components: { chooseContract, changeData },
168
+  components: { chooseContract },
171 169
   dicts: ['cmc_scale_grade', 'cmc_unit'],
172 170
   props: {
173 171
     disabled: {
@@ -184,7 +182,7 @@ export default {
184 182
   },
185 183
   data() {
186 184
     return {
187
-      baseUrl:process.env.VUE_APP_BASE_API,
185
+      baseUrl: process.env.VUE_APP_BASE_API,
188 186
       openContract: false,
189 187
       registerTime: undefined,
190 188
       // 查询参数
@@ -429,23 +427,4 @@ table {
429 427
 .el-radio__input.is-disabled.is-checked .el-radio__inner {
430 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 430
 </style>

+ 15
- 16
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-19 09:24:06
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-04 17:38:50
5
+ * @LastEditTime: 2024-06-07 10:55:28
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -21,7 +21,8 @@
21 21
         <el-col :span="12" :xs="24">
22 22
           <el-form-item label="部门负责人:" prop="deptLeader">
23 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 26
               </el-option>
26 27
             </el-select>
27 28
           </el-form-item>
@@ -39,8 +40,8 @@
39 40
         <el-col :span="12" :xs="24">
40 41
           <el-form-item label="现场负责人:" prop="siteLeader">
41 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 45
               </el-option>
45 46
             </el-select>
46 47
           </el-form-item>
@@ -56,16 +57,18 @@
56 57
         </el-col>
57 58
         <el-col :span="12" :xs="24">
58 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 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 70
               </el-link>
67 71
             </div>
68
-            <!-- <button class="preview-btn" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</button> -->
69 72
           </el-form-item>
70 73
         </el-col>
71 74
       </el-row>
@@ -147,7 +150,6 @@ export default {
147 150
     initForm() {
148 151
       getProject(this.taskForm.formId).then(res => {
149 152
         this.form = res.data;
150
-        console.log( this.form);
151 153
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
152 154
           this.form.deptId = this.form.undertakingDeptName.split(',')
153 155
         }
@@ -253,7 +255,6 @@ export default {
253 255
 
254 256
     },
255 257
     handleFileDelete() {
256
-      console.log(this);
257 258
       // this.$refs.orz.handleDelete(0);
258 259
     },
259 260
   }
@@ -261,7 +262,5 @@ export default {
261 262
 </script>
262 263
 
263 264
 <style lang="scss" scoped>
264
-.upload-list {
265
-  
266
-}
265
+.upload-list {}
267 266
 </style>

+ 1
- 2
oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue 查看文件

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

+ 1
- 1
oa-ui/src/views/flowable/form/safeForm.vue 查看文件

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

+ 152
- 410
oa-ui/src/views/flowable/form/settleForm.vue 查看文件

@@ -2,26 +2,14 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-30 09:03:14
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 17:06:45
5
+ * @LastEditTime: 2024-06-07 10:00:28
6 6
 -->
7 7
 <template>
8 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 13
     </el-dialog>
26 14
     <el-row :gutter="20">
27 15
       <el-col :span="19" :xs="24">
@@ -30,117 +18,53 @@
30 18
           项目信息
31 19
           <div class="line"></div>
32 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 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 26
                 {{ chooseProject.projectNumber }}
65 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 29
                 {{ chooseProject.projectName }}
71 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 32
                 {{ chooseProject.contractCode }}
77 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 35
                 {{ chooseProject.contractNumber }}
83 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 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 41
                 {{ chooseProject.partyA }}
99 42
               </el-descriptions-item>
100 43
               <el-descriptions-item label="联系人" label-class-name="my-label">
101 44
                 {{ chooseProject.contactPerson }}
102 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 47
                 {{ chooseProject.telephone }}
108 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 50
                 {{ chooseProject.projectType }}
114 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 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 58
                 {{ chooseProject.undertakingDeptName }}
128 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 62
               </el-descriptions-item>
135 63
             </el-descriptions>
136 64
           </el-form-item>
137 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 68
           </el-form-item>
145 69
           <el-row>
146 70
             <el-col :span="6" :xs="24" :offset="12">
@@ -157,44 +81,32 @@
157 81
             </el-col>
158 82
           </el-row>
159 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 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 90
                 <span class="el-icon-document" style="color: #00f">
175 91
                   {{ getFileName(form.settleDocument) }}
176 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 100
               </el-link>
178 101
             </div>
179 102
           </el-form-item>
180 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 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 110
                 <span class="el-icon-document" style="color: #00f">
199 111
                   {{ getFileName(form.modifyDocument) }}
200 112
                 </span>
@@ -202,23 +114,11 @@
202 114
             </div>
203 115
           </el-form-item>
204 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 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 122
                 <span class="el-icon-document" style="color: #00f">
223 123
                   {{ getFileName(form.finalDocument) }}
224 124
                 </span>
@@ -249,117 +149,68 @@
249 149
                   {{ index + 1 }}
250 150
                 </td>
251 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 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 156
                 </td>
157
+              </tr>
158
+              <tr>
333 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 162
                 </td>
342 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 204
               <tr>
344 205
                 <td :colspan="8">结算费用合计</td>
345 206
                 <td>{{ settleSumTr.amount }}</td>
346 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 210
                 </td>
354 211
               </tr>
355 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 214
           </el-form-item>
364 215
 
365 216
           <!-- 结算汇总 -->
@@ -382,53 +233,25 @@
382 233
                   {{ index + 1 }}
383 234
                 </td>
384 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 237
                   </el-input>
392 238
                 </td>
393 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 242
                   <!-- {{ work.amount }} -->
404 243
                 </td>
405 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 246
                   </el-input>
413 247
                 </td>
414 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 251
                 </td>
423 252
               </tr>
424 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 255
             <h3>表2:部门结算金额</h3>
433 256
             <table border="1">
434 257
               <tr>
@@ -441,77 +264,43 @@
441 264
               </tr>
442 265
               <tr v-for="(dept, index) in deptSettleList" :key="index">
443 266
                 <td :rowspan="deptSettleList.length" v-if="index == 0">
444
-                  {{ actualSumSettle }}
267
+                  {{ Number(actualSumSettle).toFixed(2) }}
445 268
                 </td>
446 269
                 <td>
447 270
                   {{ index + 1 }}
448 271
                 </td>
449 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 280
                 </td>
458 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 284
                 </td>
468 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 287
                   </el-input>
476 288
                 </td>
477 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 292
                 </td>
486 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 294
               <tr>
496 295
                 <td :colspan="2">结算说明</td>
497 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 299
                   </el-input>
505 300
                 </td>
506 301
               </tr>
507 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 304
           </el-form-item>
516 305
 
517 306
           <!-- 结算审核情况 -->
@@ -521,13 +310,8 @@
521 310
               <div class="line"></div>
522 311
             </div>
523 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 315
               </el-input>
532 316
             </el-form-item>
533 317
             <el-row>
@@ -543,13 +327,8 @@
543 327
               </el-col>
544 328
             </el-row>
545 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 332
               </el-input>
554 333
             </el-form-item>
555 334
             <el-row>
@@ -565,13 +344,8 @@
565 344
               </el-col>
566 345
             </el-row>
567 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 349
               </el-input>
576 350
             </el-form-item>
577 351
             <el-row>
@@ -587,13 +361,8 @@
587 361
               </el-col>
588 362
             </el-row>
589 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 366
               </el-input>
598 367
             </el-form-item>
599 368
             <el-row>
@@ -609,13 +378,8 @@
609 378
               </el-col>
610 379
             </el-row>
611 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 383
               </el-input>
620 384
             </el-form-item>
621 385
             <el-row>
@@ -631,13 +395,8 @@
631 395
               </el-col>
632 396
             </el-row>
633 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 400
               </el-input>
642 401
             </el-form-item>
643 402
             <el-row>
@@ -653,13 +412,8 @@
653 412
               </el-col>
654 413
             </el-row>
655 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 417
               </el-input>
664 418
             </el-form-item>
665 419
             <el-row>
@@ -678,9 +432,7 @@
678 432
         </el-form>
679 433
         <div style="text-align: center" v-if="!disabled">
680 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 436
         </div>
685 437
       </el-col>
686 438
       <el-col :span="5" :xs="24">
@@ -694,19 +446,10 @@
694 446
     </el-row>
695 447
 
696 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 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 453
       <choose-project @chooseProject="confirmProject"></choose-project>
711 454
     </el-dialog>
712 455
   </div>
@@ -840,6 +583,7 @@ export default {
840 583
       actualSumSettle: "",
841 584
       clickWork: {},
842 585
       deptId: undefined,
586
+      deptList: []
843 587
     };
844 588
   },
845 589
   created() {
@@ -893,6 +637,7 @@ export default {
893 637
         }
894 638
         setTimeout(() => {
895 639
           this.loading = false;
640
+          this.deptList = this.$store.state.user.deptList
896 641
         }, 500);
897 642
       });
898 643
     },
@@ -980,7 +725,7 @@ export default {
980 725
             this.addSettleFn();
981 726
             this.$message.success("保存成功");
982 727
           }
983
-        }else{
728
+        } else {
984 729
           this.$message.error('请完善表单必填项')
985 730
         }
986 731
       });
@@ -1010,7 +755,7 @@ export default {
1010 755
           } else if (this.taskName == "总经理审批") {
1011 756
             this.getNextFlowNodeFn();
1012 757
           }
1013
-        }else{
758
+        } else {
1014 759
           this.$message.error('请完善表单必填项')
1015 760
         }
1016 761
       });
@@ -1078,20 +823,6 @@ export default {
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 827
       } else {
1097 828
         this.isSelect = false;
@@ -1168,6 +899,8 @@ export default {
1168 899
       if (index >= 0 && index < arr.length) {
1169 900
         arr.splice(index, 1);
1170 901
       }
902
+      this.calculateSumSettle();
903
+      this.calculateActualSumSettle();
1171 904
     },
1172 905
     calculateSettle(work) {
1173 906
       let sum = work.workload * work.coefficient * work.price;
@@ -1336,7 +1069,16 @@ export default {
1336 1069
       if (val.length == 1) {
1337 1070
         this.prOpen = false;
1338 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 1082
         this.isSelect = true;
1341 1083
       } else {
1342 1084
         this.$message.error("项目只能选择一个!");

+ 35
- 8
oa-ui/src/views/flowable/form/technicalForm.vue 查看文件

@@ -2,7 +2,7 @@
2 2
   <div class="app-container">
3 3
     <el-row :gutter="20">
4 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 6
           <el-form-item label="项目编号:" prop="projectId" v-if="taskForm.procDefName == '技术交底'">
7 7
             <el-input v-model="chooseProject.projectNumber" placeholder="请输入项目编号" disabled style="width: 300px" />
8 8
             <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
@@ -72,10 +72,19 @@
72 72
           <el-form-item label="初始技术方案" prop="technicalDocument">
73 73
             <FileUpload v-if="taskName == '方案上传'" ref="bsFile" :limit="1" :filePathName="'技术方案/初始'"
74 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 76
               :underline="false" target="_blank">
77 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 88
           </el-form-item>
80 89
           <el-form-item label="方案说明" prop="designDescription">
81 90
             <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明"
@@ -97,10 +106,19 @@
97 106
           <el-form-item label="修改技术方案" prop="modifyDocument">
98 107
             <FileUpload v-if="taskName == '技术审核'" ref="jssh" :limit="1" :filePathName="'技术方案/修改'"
99 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 110
               :underline="false" target="_blank">
102 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 122
           </el-form-item>
105 123
           <el-form-item label="技术部审核意见" prop="technicalComment">
106 124
             <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见"
@@ -121,10 +139,19 @@
121 139
           <el-form-item label="最终技术方案" prop="finalDocument">
122 140
             <FileUpload v-if="taskName == '总工审核'" ref="final" :limit="1" :filePathName="'技术方案/最终'"
123 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 143
               :underline="false" target="_blank">
126 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 155
           </el-form-item>
129 156
           <el-form-item label="总工程师审核意见" prop="manageComment">
130 157
             <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见"
@@ -334,7 +361,7 @@ export default {
334 361
     },
335 362
     // 查询项目
336 363
     getProjectById() {
337
-      getProject(this.$route.query.formId).then(response => {
364
+      getProject(this.taskForm.formId).then(response => {
338 365
         this.chooseProject = response.data;
339 366
         this.isSelect = true
340 367
       });

+ 3
- 2
oa-ui/src/views/flowable/task/myProcess/index.vue 查看文件

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

+ 7
- 7
oa-ui/src/views/oa/device/index.vue 查看文件

@@ -50,7 +50,7 @@
50 50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
51 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 54
       <el-table-column type="selection" width="55" align="center" />
55 55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
56 56
       <el-table-column label="设备状态" align="center" prop="status">
@@ -58,21 +58,21 @@
58 58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
59 59
         </template>
60 60
       </el-table-column>
61
-      <el-table-column label="出厂编号" align="center" prop="code" />
61
+      <el-table-column label="设备品牌" align="center" prop="brand" />
62 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 64
       <el-table-column label="规格型号" align="center" prop="series" />
65
+      <el-table-column label="出厂编号" align="center" prop="code" />
65 66
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
66 67
         <template slot-scope="scope">
67 68
           <span>{{ parseTime(scope.row.acquisitionTime, '{y}-{m}-{d}') }}</span>
68 69
         </template>
69 70
       </el-table-column>
70 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 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 76
       <el-table-column label="备注" align="center" prop="remark" />
77 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 查看文件

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

+ 13
- 6
oa-ui/src/views/oa/staff/info.vue 查看文件

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

+ 3
- 3
oa-ui/src/views/oa/staff/salary.vue 查看文件

@@ -67,9 +67,9 @@
67 67
         </template>
68 68
       </el-table-column>
69 69
     </el-table>
70
-
70
+<!-- 
71 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 74
     <!-- 添加或修改cmc岗位工资对话框 -->
75 75
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -124,7 +124,7 @@ export default {
124 124
       // 查询参数
125 125
       queryParams: {
126 126
         pageNum: 1,
127
-        pageSize: 10,
127
+        pageSize: 999,
128 128
         postLevel: null,
129 129
         salaryLevel: null,
130 130
         salary: null

+ 6
- 6
oa-ui/src/views/oa/supply/index.vue 查看文件

@@ -50,7 +50,7 @@
50 50
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
51 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 54
       <el-table-column type="selection" width="55" align="center" />
55 55
       <!-- <el-table-column label="设备id" align="center" prop="deviceId" /> -->
56 56
       <el-table-column label="设备状态" align="center" prop="status">
@@ -58,10 +58,10 @@
58 58
           <el-tag :type="statusTypeStyle(scope.row.status)">{{ statusTypeText(scope.row.status) }}</el-tag>
59 59
         </template>
60 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 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 65
       <el-table-column label="规格型号" align="center" prop="series" />
66 66
       <el-table-column label="购置时间" align="center" prop="acquisitionTime" width="180">
67 67
         <template slot-scope="scope">
@@ -69,10 +69,10 @@
69 69
         </template>
70 70
       </el-table-column>
71 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 73
       <el-table-column label="单日成本(元)" align="center" prop="dayCost" />
74 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 76
       <el-table-column label="备注" align="center" prop="remark" />
77 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 查看文件

@@ -253,15 +253,18 @@
253 253
             <FileUpload v-if="form.tenderId == null" ref="zbFile" :limit="1" :filePathName="'投标文件'"
254 254
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathBidDocument"></FileUpload>
255 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 268
             </div>
266 269
           </el-descriptions-item>
267 270
           <el-descriptions-item :span="3">
@@ -354,15 +357,18 @@
354 357
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
355 358
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
356 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 372
             </div>
367 373
           </el-descriptions-item>
368 374
         </el-descriptions>
@@ -403,7 +409,7 @@ export default {
403 409
       title: "",
404 410
       // 是否显示弹出层
405 411
       open: false,
406
-      isView:true,
412
+      isView: true,
407 413
       // 对话框属性
408 414
       dialogProperty: {
409 415
         dialogWidth: '1200px',

正在加载...
取消
保存