Browse Source

查询设备检定证书;结算审批相关人员

lamphua 1 year ago
parent
commit
e215108db3

+ 13
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcDevice.java View File

71
     @Excel(name = "存放地点")
71
     @Excel(name = "存放地点")
72
     private String place;
72
     private String place;
73
 
73
 
74
+    /** 检定证书 */
75
+    private String document;
76
+
74
     /** 管理部门id */
77
     /** 管理部门id */
75
     @Excel(name = "管理部门")
78
     @Excel(name = "管理部门")
76
     private String deptName;
79
     private String deptName;
215
         return status;
218
         return status;
216
     }
219
     }
217
 
220
 
221
+    public void setDocument(String document)
222
+    {
223
+        this.document = document;
224
+    }
225
+
226
+    public String getDocument()
227
+    {
228
+        return document;
229
+    }
230
+
218
     @Override
231
     @Override
219
     public String toString() {
232
     public String toString() {
220
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
233
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 4
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcDeviceMapper.xml View File

20
         <result property="remark"    column="remark"    />
20
         <result property="remark"    column="remark"    />
21
         <result property="manageDept"    column="manage_dept"    />
21
         <result property="manageDept"    column="manage_dept"    />
22
         <result property="status"    column="status"    />
22
         <result property="status"    column="status"    />
23
+        <result property="document"    column="document"    />
23
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
24
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
24
     </resultMap>
25
     </resultMap>
25
 
26
 
29
     </resultMap>
30
     </resultMap>
30
 
31
 
31
     <sql id="selectCmcDeviceVo">
32
     <sql id="selectCmcDeviceVo">
32
-        select d.device_id, d.device_number, d.code, d.name, d.type, d.acquisition_time, d.cost, d.expect_life, d.series, d.brand, d.day_cost, d.place, d.remark, d.manage_dept, d.status, dept.dept_name from cmc_device as d left join sys_dept as dept on dept.dept_id = d.manage_dept
33
+        select d.device_id, d.device_number, d.code, d.name, d.type, d.acquisition_time, d.cost, d.expect_life, d.series, d.brand, d.day_cost, d.place, d.remark, d.manage_dept, d.status, dept.dept_name, de.document from cmc_device as d
34
+        left join sys_dept as dept on dept.dept_id = d.manage_dept
35
+        left join (select * from cmc_device_expense as cde where cde.expense_type = '3') as de on de.device_id = d.device_id
33
     </sql>
36
     </sql>
34
 
37
 
35
     <select id="selectCmcDeviceList" parameterType="CmcDevice" resultMap="CmcDeviceResult">
38
     <select id="selectCmcDeviceList" parameterType="CmcDevice" resultMap="CmcDeviceResult">

+ 83
- 55
oa-ui/src/views/file/index.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-21 18:51:49
3
  * @Date: 2024-06-21 18:51:49
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-23 17:20:57
5
+ * @LastEditTime: 2024-09-03 16:08:10
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="warpper-container">
8
   <div class="warpper-container">
11
     <!-- 鼠标移动坐标 -->
11
     <!-- 鼠标移动坐标 -->
12
     <div id="mouse-position"></div>
12
     <div id="mouse-position"></div>
13
     <!-- 项目信息弹出框 -->
13
     <!-- 项目信息弹出框 -->
14
-    <info-box :datas="datas" :maps="map" @closePopup="closePopup" @open="openAchiList"></info-box>
14
+    <info-box :datas="clickFeature" :maps="map" @closePopup="closePopup" @open="openProject"></info-box>
15
     <!-- 工具栏列表 -->
15
     <!-- 工具栏列表 -->
16
     <div class="tool-box">
16
     <div class="tool-box">
17
       <div class="item">
17
       <div class="item">
35
         </el-tooltip>
35
         </el-tooltip>
36
       </div>
36
       </div>
37
     </div>
37
     </div>
38
+    <transition-group appear name="animate__animated animate__bounce" enter-active-class="animate__fadeInLeft"
39
+      leave-active-class="animate__fadeOutLeft">
40
+      <div class="layer-type dialog_wrap" v-if="layersOpen" @mousedown.stop="move">
41
+        <div class="layer-content">
42
+          <div>
43
+            <el-icon class="close" @click="layersOpen = false">
44
+              <CloseBold />
45
+            </el-icon>
46
+          </div>
47
+          <el-tabs v-model="activeName" class="demo-tabs">
48
+            <el-tab-pane label="项目图层" name="first">
49
+              <project-layer :proTree="projectList" :maps="map"></project-layer>
50
+            </el-tab-pane>
51
+          </el-tabs>
52
+        </div>
53
+      </div>
54
+    </transition-group>
38
     <!-- 项目信息弹出框 -->
55
     <!-- 项目信息弹出框 -->
39
-    <div id="popup" class="ol-popup">
56
+    <div id="popup" class="ol-popup" v-if="clickFeature != null">
40
       <span id="popup-closer" class="ol-popup-closer" @click="closePopup"></span>
57
       <span id="popup-closer" class="ol-popup-closer" @click="closePopup"></span>
41
       <div id="popup-content">
58
       <div id="popup-content">
42
-        <el-descriptions :column="1" border v-if="clickFeacture.type == 'projectPoint'">
59
+        <el-descriptions :column="1" border v-if="clickFeature.type == 'projectPoint'">
43
           <el-descriptions-item label="项目编号" width="130px">
60
           <el-descriptions-item label="项目编号" width="130px">
44
-            {{ clickFeacture.projectNumber }}
61
+            {{ clickFeature.projectNumber }}
45
           </el-descriptions-item>
62
           </el-descriptions-item>
46
           <el-descriptions-item label="项目名称" width="130px">
63
           <el-descriptions-item label="项目名称" width="130px">
47
-            {{ clickFeacture.projectName }}
64
+            {{ clickFeature.projectName }}
48
           </el-descriptions-item>
65
           </el-descriptions-item>
49
           <el-descriptions-item label="项目负责人" width="130px">
66
           <el-descriptions-item label="项目负责人" width="130px">
50
-            {{ getUserName(clickFeacture.projectLeader) }}
67
+            {{ getUserName(clickFeature.projectLeader) }}
51
           </el-descriptions-item>
68
           </el-descriptions-item>
52
           <el-descriptions-item label="存放地址" width="130px">
69
           <el-descriptions-item label="存放地址" width="130px">
53
-            {{ clickFeacture.storageAddress == '' || clickFeacture.storageAddress == null ? '暂无' :
54
-              clickFeacture.storageAddress }}
70
+            {{ clickFeature.storageAddress == '' || clickFeature.storageAddress == null ? '暂无' :
71
+              clickFeature.storageAddress }}
55
           </el-descriptions-item>
72
           </el-descriptions-item>
56
         </el-descriptions>
73
         </el-descriptions>
57
 
74
 
58
-        <div v-if="clickFeacture.type == 'featurePoint'">
59
-          <div class="title">项目编号:{{ clickFeacture.projectNumber }}</div>
75
+        <div v-if="clickFeature.type == 'featurePoint'">
76
+          <div class="title">项目编号:{{ clickFeature.projectNumber }}</div>
60
           <el-descriptions :column="1" border>
77
           <el-descriptions :column="1" border>
61
             <el-descriptions-item label="名称" width="130px">
78
             <el-descriptions-item label="名称" width="130px">
62
-              <!-- {{ clickFeacture.selectFeatures.values_.name }} -->
79
+              <!-- {{ clickFeature.selectFeatures.values_.name }} -->
63
             </el-descriptions-item>
80
             </el-descriptions-item>
64
           </el-descriptions>
81
           </el-descriptions>
65
         </div>
82
         </div>
66
       </div>
83
       </div>
67
-      <div class="look-achi" @click="" v-if="clickFeacture.type == 'projectPoint'">成果目录>></div>
84
+      <div class="look-achi" @click="" v-if="clickFeature.type == 'projectPoint'">成果目录>></div>
68
     </div>
85
     </div>
69
     <!-- 项目目录 -->
86
     <!-- 项目目录 -->
70
     <div class="right-project" :class="{ closeProBox: isOpenPro }">
87
     <div class="right-project" :class="{ closeProBox: isOpenPro }">
243
 import { Tianditu, ZhongKe, ArcGISBlue, Autonavi, google, terrain, vect } from '@/utils/maps'
260
 import { Tianditu, ZhongKe, ArcGISBlue, Autonavi, google, terrain, vect } from '@/utils/maps'
244
 import { listProject, getProject } from '@/api/oa/project/project'
261
 import { listProject, getProject } from '@/api/oa/project/project'
245
 import infoBox from './index/infoBox.vue';
262
 import infoBox from './index/infoBox.vue';
263
+import ProjectLayer from './index/projectLayer.vue';
246
 import sjxActive from '@/assets/images/gis/sjd.png';
264
 import sjxActive from '@/assets/images/gis/sjd.png';
247
 // ---------------------------------ol引用------------------------------------------------
265
 // ---------------------------------ol引用------------------------------------------------
248
 import 'ol/ol.css'
266
 import 'ol/ol.css'
267
 import { MousePosition, ScaleLine, defaults as defaultControls } from 'ol/control';
285
 import { MousePosition, ScaleLine, defaults as defaultControls } from 'ol/control';
268
 import { getAchievementByProject, listAchievement } from "@/api/file/achievement";
286
 import { getAchievementByProject, listAchievement } from "@/api/file/achievement";
269
 export default {
287
 export default {
270
-  components: { infoBox },
288
+  components: { infoBox, ProjectLayer },
271
   dicts: ['cmc_achi_type', 'cmc_scale_grade'],
289
   dicts: ['cmc_achi_type', 'cmc_scale_grade'],
272
   data() {
290
   data() {
273
     return {
291
     return {
282
       popup: null,
300
       popup: null,
283
       clusters: null,
301
       clusters: null,
284
       drawBox: null,
302
       drawBox: null,
285
-
303
+      activeName: 'first',
286
       isDrawing: false,
304
       isDrawing: false,
287
       viewCenter: [105.55, 34.18],
305
       viewCenter: [105.55, 34.18],
288
       layersOpen: false,
306
       layersOpen: false,
291
       searchType: '',
309
       searchType: '',
292
       projectList: [],
310
       projectList: [],
293
       allproTableData: [],
311
       allproTableData: [],
312
+      clusters: null,
294
       total: 0,
313
       total: 0,
295
       loading: true,
314
       loading: true,
296
       tableHeight: 0,
315
       tableHeight: 0,
297
-      clickFeacture: {},
316
+      clickFeature: {},
298
       clickDatas: {
317
       clickDatas: {
299
         selectFeatures: null,
318
         selectFeatures: null,
300
         selectProjectNumber: "",
319
         selectProjectNumber: "",
303
       seletctedCluters: [],
322
       seletctedCluters: [],
304
       dialogTitle: '',
323
       dialogTitle: '',
305
       dialogTableVisible: false,
324
       dialogTableVisible: false,
306
-      datas: {
307
-        clickFeacture: {},
308
-        selectFeatures: null,
309
-        selectProjectNumber: "",
310
-        type: '',
311
-        infoData: {}
312
-      }
313
     }
325
     }
314
   },
326
   },
315
   mounted() {
327
   mounted() {
316
     this.setTableDomHeight();
328
     this.setTableDomHeight();
317
     this.initMap();
329
     this.initMap();
318
     this.observer();
330
     this.observer();
319
-    this.getProjectList();
331
+    let param = {
332
+      pageNum: 1,
333
+      pageSize: 10000,
334
+    }
335
+    this.getProjectCluster(param); //地图数据集cluster对应allproTableData,此值不变    
336
+    this.getProjectList(this.queryParams); //项目列表对应projectList,此值随搜索变化
320
   },
337
   },
321
   methods: {
338
   methods: {
322
     // 设置侧边项目目录的高度
339
     // 设置侧边项目目录的高度
375
       })
392
       })
376
       this.map.addOverlay(this.popup);
393
       this.map.addOverlay(this.popup);
377
       this.mapClick(this.map);
394
       this.mapClick(this.map);
378
-      // this.clickFeacturePopInfo();
395
+      // this.clickFeaturePopInfo();
379
       this.addKeyDownFun()
396
       this.addKeyDownFun()
380
     },
397
     },
381
     observer() {
398
     observer() {
420
           let features = map.forEachFeatureAtPixel(evt.pixel, function (feature) {
437
           let features = map.forEachFeatureAtPixel(evt.pixel, function (feature) {
421
             // 如果只需要知道有特征,而不关心具体是哪个,这里可以返回 true  
438
             // 如果只需要知道有特征,而不关心具体是哪个,这里可以返回 true  
422
             // OpenLayers 会继续查找更多特征,但我们不需要  
439
             // OpenLayers 会继续查找更多特征,但我们不需要  
423
-            return true;
440
+            return feature.get('features');
424
           });
441
           });
425
-
426
           // features 现在是一个数组,包含了在点击像素位置找到的所有特征  
442
           // features 现在是一个数组,包含了在点击像素位置找到的所有特征  
427
           if (features && features.length > 0) {
443
           if (features && features.length > 0) {
428
             // 如果只有一个特征  
444
             // 如果只有一个特征  
429
             if (features.length === 1) {
445
             if (features.length === 1) {
430
-              let feature = features[0]; // 直接从数组中取第一个特征  
431
-              let num = feature.get('name'); // 使用 get 方法来获取属性  
432
-              let projectId = feature.get('projectId');
433
-
446
+              let feature = features[0]; // 直接从数组中取第一个特征
447
+              let projectId = feature.projectId;
434
               // 假设 getProject 是一个返回 Promise 的函数  
448
               // 假设 getProject 是一个返回 Promise 的函数  
435
               getProject(projectId).then(res => {
449
               getProject(projectId).then(res => {
436
                 if (res.data) {
450
                 if (res.data) {
437
                   // 假设 this 在这里指向 Vue 组件实例或其他上下文  
451
                   // 假设 this 在这里指向 Vue 组件实例或其他上下文  
438
                   that.clickFeature = res.data;
452
                   that.clickFeature = res.data;
439
                   that.clickFeature.type = 'projectPoint';
453
                   that.clickFeature.type = 'projectPoint';
440
-                  this.popup.setPosition(coordinate);
454
+                  that.popup.setPosition(coordinate);
441
                 }
455
                 }
442
               })
456
               })
443
             } else {
457
             } else {
444
               // 如果有多个特征,这里可以根据需要处理  
458
               // 如果有多个特征,这里可以根据需要处理  
445
-              this.popup.setPosition(undefined);
459
+              that.popup.setPosition(undefined);
446
             }
460
             }
447
           } else {
461
           } else {
448
-            this.popup.setPosition(undefined);
462
+            that.popup.setPosition(undefined);
449
           }
463
           }
450
 
464
 
451
 
465
 
464
         }
478
         }
465
       })
479
       })
466
     },
480
     },
467
-    clickFeacturePopInfo() {
481
+    clickFeaturePopInfo() {
468
       let that = this;
482
       let that = this;
469
       if (that.select !== null) {
483
       if (that.select !== null) {
470
         that.map.removeInteraction(that.select);
484
         that.map.removeInteraction(that.select);
476
         that.map.addInteraction(that.select);
490
         that.map.addInteraction(that.select);
477
         that.select.on('select', function (e) {
491
         that.select.on('select', function (e) {
478
           if (e.target.getFeatures().getArray().length == 1) {
492
           if (e.target.getFeatures().getArray().length == 1) {
479
-            that.clickFeacture = e.target.getFeatures().getArray()[0];
480
-            let properties = that.clickFeacture.getProperties();
493
+            that.clickFeature = e.target.getFeatures().getArray()[0];
494
+            let properties = that.clickFeature.getProperties();
481
             if (!properties.features) {
495
             if (!properties.features) {
482
               let fatherLayers = e.target.featureLayerAssociation_;
496
               let fatherLayers = e.target.featureLayerAssociation_;
483
               // for (let layers in fatherLayers) {
497
               // for (let layers in fatherLayers) {
485
               // }
499
               // }
486
               let coordinate = e.mapBrowserEvent.coordinate;
500
               let coordinate = e.mapBrowserEvent.coordinate;
487
               that.popup.setPosition(coordinate);
501
               that.popup.setPosition(coordinate);
488
-              that.clickFeacture.type = 'featurePoint';
502
+              that.clickFeature.type = 'featurePoint';
489
             }
503
             }
490
           }
504
           }
491
         })
505
         })
495
     closePopup() {
509
     closePopup() {
496
       this.popup.setPosition(undefined);
510
       this.popup.setPosition(undefined);
497
     },
511
     },
498
-    openAchiList() {
512
+    openProject() {
499
       this.dialogTableVisible = true;
513
       this.dialogTableVisible = true;
500
-      // let projectId = datas.clickFeacture.id;
501
-      // this.dialogTitle = datas.clickFeacture.projectNumber
514
+      // let projectId = datas.clickFeature.id;
515
+      // this.dialogTitle = datas.clickFeature.projectNumber
502
       listAchievement({ projectId }).then(res => {
516
       listAchievement({ projectId }).then(res => {
503
         if (res.total == 0) {
517
         if (res.total == 0) {
504
           this.$message.error('暂无成果,请添加');
518
           this.$message.error('暂无成果,请添加');
596
       }
610
       }
597
       return layer;
611
       return layer;
598
     },
612
     },
599
-    getProjectList() {
613
+    getProjectCluster(queryParams) {
600
       this.loading = true
614
       this.loading = true
601
-      listProject(this.queryParams).then(res => {
615
+      listProject(queryParams).then(res => {
602
         let data = res.rows;
616
         let data = res.rows;
603
         this.total = res.total;
617
         this.total = res.total;
604
-        this.projectList = data;
605
         this.allproTableData = data;
618
         this.allproTableData = data;
606
-        this.loading = false
619
+        this.loading = false;
607
         this.addProjectCluster(data);
620
         this.addProjectCluster(data);
608
       })
621
       })
609
     },
622
     },
623
+    getProjectList(queryParams) {
624
+      this.loading = true
625
+      listProject(queryParams).then(res => {
626
+        let data = res.rows;
627
+        this.total = res.total;
628
+        this.projectList = data;
629
+        this.loading = false
630
+      })
631
+    },
610
     /* 格式化表格显示 */
632
     /* 格式化表格显示 */
611
     formatterKmlurl(row, cloumn) {
633
     formatterKmlurl(row, cloumn) {
612
       if (row.projectKml == "" || row.projectKml == null) {
634
       if (row.projectKml == "" || row.projectKml == null) {
617
     },
639
     },
618
     // 添加项目点在地图上
640
     // 添加项目点在地图上
619
     addProjectCluster(data) {
641
     addProjectCluster(data) {
620
-      let features = [], projectPoints = []
642
+      let features = []
621
       for (let d of data) {
643
       for (let d of data) {
622
         if (d.kmlLat && d.kmlLng) {
644
         if (d.kmlLat && d.kmlLng) {
623
           let f = new Feature(new Point([Number(d.kmlLng), Number(d.kmlLat)]));
645
           let f = new Feature(new Point([Number(d.kmlLng), Number(d.kmlLat)]));
624
           f.name = d.projectNumber;
646
           f.name = d.projectNumber;
625
           f.projectId = d.projectId;
647
           f.projectId = d.projectId;
626
           features.push(f);
648
           features.push(f);
627
-          projectPoints.push(d);
628
         }
649
         }
629
       }
650
       }
630
       let source = new VectorSource({
651
       let source = new VectorSource({
641
         zIndex: 99
662
         zIndex: 99
642
       })
663
       })
643
       this.map.addLayer(this.clusters);
664
       this.map.addLayer(this.clusters);
665
+      this.map.on('click', (e) => {
666
+        this.clusters.getFeatures(e.pixel).then((clickedFeatures) => {
667
+          if (clickedFeatures.length) {
668
+            // Get clustered Coordinates
669
+            const features = clickedFeatures[0].get('features');
670
+            if (features.length > 1) {
671
+              const extent = boundingExtent(
672
+                features.map((r) => r.getGeometry().getCoordinates())
673
+              );
674
+              this.map.getView().fit(extent, { duration: 1000, padding: [100, 100, 100, 100] });
675
+            }
676
+          }
677
+        });
678
+      });
644
     },
679
     },
645
     handleCurrentChange(val) {
680
     handleCurrentChange(val) {
646
       this.queryParams.pageNum = val
681
       this.queryParams.pageNum = val
647
-      this.getProjectList()
682
+      this.getProjectList(this.queryParams)
648
     },
683
     },
649
     /* 得到项目的点位绘制到地图上 */
684
     /* 得到项目的点位绘制到地图上 */
650
     clusterStyle(feature, resolution) {
685
     clusterStyle(feature, resolution) {
811
       }
846
       }
812
       listProject(param).then(res => {
847
       listProject(param).then(res => {
813
         let data = res.rows;
848
         let data = res.rows;
814
-        let datas = [];
815
-        for (let d of data) {
816
-          if (d.kmlLat && d.kmlLng) {
817
-            datas.push(d);
818
-          }
819
-        }
820
         this.projectList = data;
849
         this.projectList = data;
821
       })
850
       })
822
     },
851
     },
877
         document.onmouseup = null;
906
         document.onmouseup = null;
878
         document.body.onselectstart = document.body.ondrag = () => { return true }
907
         document.body.onselectstart = document.body.ondrag = () => { return true }
879
       }
908
       }
880
-
881
     },
909
     },
882
   }
910
   }
883
 }
911
 }

+ 17
- 5
oa-ui/src/views/flowable/form/budget/components/chooseDevice.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-21 18:51:51
3
  * @Date: 2024-06-21 18:51:51
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-01 17:00:21
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-09-04 09:40:26
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
33
         <el-button @click="getList" type="primary">搜索</el-button>
33
         <el-button @click="getList" type="primary">搜索</el-button>
34
       </el-form-item>
34
       </el-form-item>
35
     </el-form>
35
     </el-form>
36
-    <el-table ref="chooseDeviceRef" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKeys"
36
+    <el-table border ref="chooseDeviceRef" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKeys"
37
       @current-change="handleCurrentChange" @row-dblclick="confirmChooseBySingle" :highlight-current-row="!multiple">
37
       @current-change="handleCurrentChange" @row-dblclick="confirmChooseBySingle" :highlight-current-row="!multiple">
38
       <el-table-column type="selection" width="50" align="center" :reserve-selection="true" v-if="multiple" />
38
       <el-table-column type="selection" width="50" align="center" :reserve-selection="true" v-if="multiple" />
39
       <el-table-column label="设备状态" align="center" prop="status">
39
       <el-table-column label="设备状态" align="center" prop="status">
48
       <el-table-column label="设备名称" align="center" prop="name" />
48
       <el-table-column label="设备名称" align="center" prop="name" />
49
       <el-table-column label="规格型号" align="center" prop="series" />
49
       <el-table-column label="规格型号" align="center" prop="series" />
50
       <el-table-column label="存放地址" align="center" prop="place" />
50
       <el-table-column label="存放地址" align="center" prop="place" />
51
-      <el-table-column label="单日成本" align="center" prop="dayCost" />
51
+      <!-- <el-table-column label="单日成本" align="center" prop="dayCost" /> -->
52
+      <el-table-column label="检定证书" align="center" width="200" prop="document">
53
+        <template slot-scope="scope">
54
+          <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + scope.row.document}`" v-if="scope.row.document"
55
+            :underline="false" target="_blank">
56
+            <el-button type="warning" plain icon="el-icon-download" size="mini"></el-button>
57
+          </el-link>
58
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' +  scope.row.document}`)">
59
+            {{ getFileName(scope.row.document) }}
60
+          </el-link>
61
+        </template>
62
+      </el-table-column>
52
     </el-table>
63
     </el-table>
53
     <div style="text-align: right;">
64
     <div style="text-align: right;">
54
       <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum"
65
       <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum"
92
   },
103
   },
93
   data() {
104
   data() {
94
     return {
105
     return {
106
+      baseUrl: process.env.VUE_APP_BASE_API,
95
       queryParams: {
107
       queryParams: {
96
         pageNum: 1,
108
         pageNum: 1,
97
         pageSize: 10,
109
         pageSize: 10,
98
         type: '仪器设备',
110
         type: '仪器设备',
99
-        status: '1'
111
+        status: '1',
100
       },
112
       },
101
       list: [],
113
       list: [],
102
       form: {},
114
       form: {},

+ 8
- 4
oa-ui/src/views/flowable/form/projectProcess/manageReview.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-08 13:56:14
3
  * @Date: 2024-04-08 13:56:14
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-30 09:28:03
5
+ * @LastEditTime: 2024-09-03 11:01:13
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
111
     },
111
     },
112
     getDeptLeader(val) {
112
     getDeptLeader(val) {
113
       this.deptLeaderList = [this.projectLeader];
113
       this.deptLeaderList = [this.projectLeader];
114
-      for (let v of val) {
115
-        getUsersDeptLeaderByDept({ deptId: Number(v) }).then(res => {
116
-          this.deptLeaderList.push(res.data.userId);
114
+      for (let i = 0; i < val.length; i++) {
115
+        getUsersDeptLeaderByDept({ deptId: Number(val[i]) }).then(res => {
116
+          if (res.data) {
117
+            this.deptLeaderList.push(res.data.userId);
118
+            if (i == val.length - 1)
119
+              this.deptLeaderList.shift();
120
+          }
117
           this.$store.commit('SET_UNDERLEADERID', this.deptLeaderList)
121
           this.$store.commit('SET_UNDERLEADERID', this.deptLeaderList)
118
         })
122
         })
119
       }
123
       }

+ 7
- 34
oa-ui/src/views/flowable/form/settleForm.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-30 09:03:14
3
  * @Date: 2024-04-30 09:03:14
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-30 14:00:09
5
+ * @LastEditTime: 2024-09-02 15:41:43
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container" v-loading="loading">
8
   <div class="app-container" v-loading="loading">
67
             <el-col :span="6" :xs="24" :offset="12">
67
             <el-col :span="6" :xs="24" :offset="12">
68
               <el-form-item label="工作上报人:" prop="reporterName">
68
               <el-form-item label="工作上报人:" prop="reporterName">
69
                 <span class="auditor">
69
                 <span class="auditor">
70
-                  {{ getUserName(form.reporter) }}
70
+                  {{ form.reporterName ? "" : getUserName(form.reporter) }}
71
                 </span>
71
                 </span>
72
               </el-form-item>
72
               </el-form-item>
73
             </el-col>
73
             </el-col>
353
             <el-row>
353
             <el-row>
354
               <el-col :span="6" :xs="24" :offset="12">
354
               <el-col :span="6" :xs="24" :offset="12">
355
                 <el-form-item label="签名:" label-width="120px">
355
                 <el-form-item label="签名:" label-width="120px">
356
-                  <span class="auditor"> {{ getUserName(form.zhUserId) }} </span>
356
+                  <span class="auditor"> {{ form.zhUserName ? "" : getUserName(form.zhUserId) }} </span>
357
                 </el-form-item>
357
                 </el-form-item>
358
               </el-col>
358
               </el-col>
359
               <el-col :span="6">
359
               <el-col :span="6">
370
             <el-row>
370
             <el-row>
371
               <el-col :span="6" :xs="24" :offset="12">
371
               <el-col :span="6" :xs="24" :offset="12">
372
                 <el-form-item label="签名:" label-width="120px">
372
                 <el-form-item label="签名:" label-width="120px">
373
-                  <span class="auditor"> {{ getUserName(form.jsUserId) }} </span>
373
+                  <span class="auditor"> {{ form.jsUserName ? "" : getUserName(form.jsUserId) }} </span>
374
                 </el-form-item>
374
                 </el-form-item>
375
               </el-col>
375
               </el-col>
376
               <el-col :span="6">
376
               <el-col :span="6">
387
             <el-row>
387
             <el-row>
388
               <el-col :span="6" :xs="24" :offset="12">
388
               <el-col :span="6" :xs="24" :offset="12">
389
                 <el-form-item label="签名:" label-width="120px">
389
                 <el-form-item label="签名:" label-width="120px">
390
-                  <span class="auditor"> {{ getUserName(form.jyUserId) }} </span>
390
+                  <span class="auditor"> {{ form.jyUserName ? "" : getUserName(form.jyUserId) }} </span>
391
                 </el-form-item>
391
                 </el-form-item>
392
               </el-col>
392
               </el-col>
393
               <el-col :span="6">
393
               <el-col :span="6">
404
             <el-row>
404
             <el-row>
405
               <el-col :span="6" :xs="24" :offset="12">
405
               <el-col :span="6" :xs="24" :offset="12">
406
                 <el-form-item label="签名:" label-width="120px">
406
                 <el-form-item label="签名:" label-width="120px">
407
-                  <span class="auditor"> {{ getUserName(form.managerUserId) }} </span>
407
+                  <span class="auditor"> {{ form.managerUserName ? "" : getUserName(form.managerUserId) }} </span>
408
                 </el-form-item>
408
                 </el-form-item>
409
               </el-col>
409
               </el-col>
410
               <el-col :span="6">
410
               <el-col :span="6">
421
             <el-row>
421
             <el-row>
422
               <el-col :span="6" :xs="24" :offset="12">
422
               <el-col :span="6" :xs="24" :offset="12">
423
                 <el-form-item label="签名:" label-width="120px">
423
                 <el-form-item label="签名:" label-width="120px">
424
-                  <span class="auditor"> {{ getUserName(form.gmUserId) }} </span>
424
+                  <span class="auditor"> {{ form.gmUserName ? "" : getUserName(form.gmUserId) }} </span>
425
                 </el-form-item>
425
                 </el-form-item>
426
               </el-col>
426
               </el-col>
427
               <el-col :span="6">
427
               <el-col :span="6">
711
 
711
 
712
         getUser(this.form.reporter).then((res) => {
712
         getUser(this.form.reporter).then((res) => {
713
           if (res.data) {
713
           if (res.data) {
714
-            this.form.reporterName = res.data.nickName;
715
             this.deptId = res.data.deptId;
714
             this.deptId = res.data.deptId;
716
           }
715
           }
717
         });
716
         });
720
         this.flag = false;
719
         this.flag = false;
721
         if (this.taskName == "结算发起") {
720
         if (this.taskName == "结算发起") {
722
           this.form.reporter = this.$store.state.user.id;
721
           this.form.reporter = this.$store.state.user.id;
723
-          this.form.reporterName = this.$store.state.user.name;
724
           this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
722
           this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
725
         }
723
         }
726
       }
724
       }
769
         this.form.dszUserId = this.$store.state.user.id;
767
         this.form.dszUserId = this.$store.state.user.id;
770
         this.form.dszTime = parseTime(new Date(), "{y}-{m}-{d}");
768
         this.form.dszTime = parseTime(new Date(), "{y}-{m}-{d}");
771
       }
769
       }
772
-      this.getReviewerName();
773
-    },
774
-    // 获取审核人
775
-    getReviewerName() {
776
-      if (this.form.zhUserId) {
777
-        this.form.zhUserName = this.getUserName(this.form.zhUserId)
778
-      }
779
-      if (this.form.jsUserId) {
780
-        this.form.jsUserName = this.getUserName(this.form.jsUserId)
781
-      }
782
-      if (this.form.jyUserId) {
783
-        getUser(this.form.jyUserId).then((res) => {
784
-          this.form.jyUserName = res.data.nickName;
785
-        });
786
-      }
787
-      if (this.form.managerUserId) {
788
-        getUser(this.form.managerUserId).then((res) => {
789
-          this.form.managerUserName = res.data.nickName;
790
-        });
791
-      }
792
-      if (this.form.gmUserId) {
793
-        getUser(this.form.gmUserId).then((res) => {
794
-          this.form.gmUserName = res.data.nickName;
795
-        });
796
-      }
797
     },
770
     },
798
     // 保存按钮
771
     // 保存按钮
799
     preserve() {
772
     preserve() {

+ 4
- 20
oa-ui/src/views/flowable/form/settleOther.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-30 09:03:14
3
  * @Date: 2024-04-30 09:03:14
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2024-08-30 13:52:06
5
+ * @LastEditTime: 2024-09-02 15:38:34
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container" v-loading="loading">
8
   <div class="app-container" v-loading="loading">
26
             <el-col :span="6" :xs="24" :offset="12">
26
             <el-col :span="6" :xs="24" :offset="12">
27
               <el-form-item label="工作上报人:" prop="reporterName">
27
               <el-form-item label="工作上报人:" prop="reporterName">
28
                 <span class="auditor">
28
                 <span class="auditor">
29
-                  {{ getUserName(form.reporter) }}
29
+                  {{form.reporterName ? "" : getUserName(form.reporter) }}
30
                 </span>
30
                 </span>
31
               </el-form-item>
31
               </el-form-item>
32
             </el-col>
32
             </el-col>
260
             <el-row>
260
             <el-row>
261
               <el-col :span="6" :xs="24" :offset="12">
261
               <el-col :span="6" :xs="24" :offset="12">
262
                 <el-form-item label="签名:" label-width="120px">
262
                 <el-form-item label="签名:" label-width="120px">
263
-                  <span class="auditor"> {{ getUserName(form.managerUserId) }} </span>
263
+                  <span class="auditor"> {{ form.managerUserName ? "" : getUserName(form.managerUserId) }} </span>
264
                 </el-form-item>
264
                 </el-form-item>
265
               </el-col>
265
               </el-col>
266
               <el-col :span="6">
266
               <el-col :span="6">
277
             <el-row>
277
             <el-row>
278
               <el-col :span="6" :xs="24" :offset="12">
278
               <el-col :span="6" :xs="24" :offset="12">
279
                 <el-form-item label="签名:" label-width="120px">
279
                 <el-form-item label="签名:" label-width="120px">
280
-                  <span class="auditor"> {{ getUserName(form.gmUserId) }} </span>
280
+                  <span class="auditor"> {{ form.gmUserName ? "" : getUserName(form.gmUserId) }} </span>
281
                 </el-form-item>
281
                 </el-form-item>
282
               </el-col>
282
               </el-col>
283
               <el-col :span="6">
283
               <el-col :span="6">
486
 
486
 
487
         getUser(this.form.reporter).then((res) => {
487
         getUser(this.form.reporter).then((res) => {
488
           if (res.data) {
488
           if (res.data) {
489
-            this.form.reporterName = res.data.nickName;
490
             this.deptId = res.data.deptId;
489
             this.deptId = res.data.deptId;
491
           }
490
           }
492
         });
491
         });
495
         this.flag = false;
494
         this.flag = false;
496
         if (this.taskName == "结算发起") {
495
         if (this.taskName == "结算发起") {
497
           this.form.reporter = this.$store.state.user.id;
496
           this.form.reporter = this.$store.state.user.id;
498
-          this.form.reporterName = this.$store.state.user.name;
499
           this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
497
           this.form.reportTime = parseTime(new Date(), "{y}-{m}-{d}");
500
         }
498
         }
501
       }
499
       }
514
         this.form.gmUserId = this.$store.state.user.id;
512
         this.form.gmUserId = this.$store.state.user.id;
515
         this.form.gmTime = parseTime(new Date(), "{y}-{m}-{d}");
513
         this.form.gmTime = parseTime(new Date(), "{y}-{m}-{d}");
516
       }
514
       }
517
-      this.getReviewerName();
518
-    },
519
-    // 获取审核人
520
-    getReviewerName() {
521
-      if (this.form.managerUserId) {
522
-        getUser(this.form.managerUserId).then((res) => {
523
-          this.form.managerUserName = res.data.nickName;
524
-        });
525
-      }
526
-      if (this.form.gmUserId) {
527
-        getUser(this.form.gmUserId).then((res) => {
528
-          this.form.gmUserName = res.data.nickName;
529
-        });
530
-      }
531
     },
515
     },
532
     // 保存按钮
516
     // 保存按钮
533
     preserve() {
517
     preserve() {

+ 3
- 2
oa-ui/src/views/oa/project/index.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-30 15:34:36
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-09-03 11:06:11
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
94
         </el-table-column>
94
         </el-table-column>
95
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" />
95
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" />
96
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
96
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
97
+        <el-table-column label="承担部门" align="center" key="undertakingDeptName" prop="undertakingDeptName" />
97
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName"
98
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName"
98
           width="120px" />
99
           width="120px" />
99
         <el-table-column label="项目级别" align="center" key="projectLevel" prop="projectLevel" width="120px">
100
         <el-table-column label="项目级别" align="center" key="projectLevel" prop="projectLevel" width="120px">

Loading…
Cancel
Save