lamphua 2 дней назад
Родитель
Сommit
905851dbd5
30 измененных файлов: 456 добавлений и 202 удалений
  1. 11
    8
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/file/FilesProjectController.java
  2. 27
    0
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcBrandProjectController.java
  3. 16
    12
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcCarApprovalController.java
  4. 2
    2
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcDeviceApprovalController.java
  5. 28
    29
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcManageDeptController.java
  6. 5
    4
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcOutsourceController.java
  7. 5
    4
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectCommentController.java
  8. 15
    14
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectController.java
  9. 14
    14
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcSafeReportController.java
  10. 5
    4
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcTechnicalPlanController.java
  11. 0
    2
      oa-back/ruoyi-agent/src/main/java/com/ruoyi/agent/service/impl/McpServiceImpl.java
  12. 0
    2
      oa-back/ruoyi-llm/src/main/java/com/ruoyi/web/llm/service/impl/LangChainMilvusServiceImpl.java
  13. 5
    0
      oa-back/ruoyi-system/pom.xml
  14. 0
    2
      oa-back/ruoyi-system/src/main/java/com/ruoyi/llm/service/impl/CmcAgentServiceImpl.java
  15. 18
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBrandProject.java
  16. 62
    36
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBudget.java
  17. 22
    10
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcCarApproval.java
  18. 5
    5
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcSafeReport.java
  19. 1
    1
      oa-back/ruoyi-system/src/main/resources/mapper/file/FilesAchievementMapper.xml
  20. 9
    1
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcBudgetMapper.xml
  21. 14
    1
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcCarApprovalMapper.xml
  22. 10
    7
      oa-ui/src/views/flowable/form/budget/addBudget.vue
  23. 12
    8
      oa-ui/src/views/flowable/form/budget/adjust/budgetAdjust.vue
  24. 3
    3
      oa-ui/src/views/flowable/form/budget/adjust/newBudgetInfo.vue
  25. 1
    1
      oa-ui/src/views/flowable/form/budget/siteExpenses.vue
  26. 111
    20
      oa-ui/src/views/oa/brand/brandProject.vue
  27. 8
    2
      oa-ui/src/views/oa/budget/index.vue
  28. 23
    7
      oa-ui/src/views/oa/titles/info.vue
  29. 18
    2
      oa-ui/src/views/oa/titles/record.vue
  30. 6
    1
      oa-ui/src/views/oa/transfer/transferTab.vue

+ 11
- 8
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/file/FilesProjectController.java Просмотреть файл

230
         startPage();
230
         startPage();
231
         return getDataTable(cmcProjectService.selectCmcProjectByProjectNumbers(cmcProject));
231
         return getDataTable(cmcProjectService.selectCmcProjectByProjectNumbers(cmcProject));
232
     }
232
     }
233
+
233
     public String deptIdToName(CmcProject cmcProject) {
234
     public String deptIdToName(CmcProject cmcProject) {
234
         String underTakingDept = cmcProject.getUndertakingDept();
235
         String underTakingDept = cmcProject.getUndertakingDept();
235
-        StringBuilder underTakingDeptName = new StringBuilder();
236
-        if (underTakingDept != null && !underTakingDept.equals("") && underTakingDept.split(",").length > 0) {
236
+        String undertakingDeptName = cmcProject.getUndertakingDeptName();
237
+        StringBuilder underTakingDeptNames = new StringBuilder();
238
+        if (underTakingDept != null && !underTakingDept.equals("") && (undertakingDeptName == null || undertakingDeptName.equals(""))) {
237
             for (String dept : underTakingDept.split(","))
239
             for (String dept : underTakingDept.split(","))
238
-                underTakingDeptName.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
239
-            cmcProject.setUndertakingDeptName(underTakingDeptName.substring(0, underTakingDeptName.length() - 1));
240
+                underTakingDeptNames.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
241
+            cmcProject.setUndertakingDeptName(underTakingDeptNames.substring(0, underTakingDeptNames.length() - 1));
240
         }
242
         }
241
         return cmcProject.getUndertakingDeptName();
243
         return cmcProject.getUndertakingDeptName();
242
     }
244
     }
243
 
245
 
244
     public String inspectorIdToName(CmcProject cmcProject) {
246
     public String inspectorIdToName(CmcProject cmcProject) {
245
         String qualityInspector = cmcProject.getQualityInspector();
247
         String qualityInspector = cmcProject.getQualityInspector();
246
-        StringBuilder qualityInspectorName = new StringBuilder();
247
-        if (qualityInspector != null && !qualityInspector.equals("") && qualityInspector.split(",").length > 0) {
248
+        String qualityInspectorName = cmcProject.getQualityInspectorName();
249
+        StringBuilder qualityInspectorNames = new StringBuilder();
250
+        if (qualityInspector != null && !qualityInspector.equals("") && (qualityInspectorName == null || qualityInspectorName.equals(""))) {
248
             for (String inspector : qualityInspector.split(","))
251
             for (String inspector : qualityInspector.split(","))
249
-                qualityInspectorName.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
250
-            cmcProject.setQualityInspectorName(qualityInspectorName.substring(0, qualityInspectorName.length() - 1));
252
+                qualityInspectorNames.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
253
+            cmcProject.setQualityInspectorName(qualityInspectorNames.substring(0, qualityInspectorNames.length() - 1));
251
         }
254
         }
252
         return cmcProject.getQualityInspectorName();
255
         return cmcProject.getQualityInspectorName();
253
     }
256
     }

+ 27
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcBrandProjectController.java Просмотреть файл

7
 import com.ruoyi.common.utils.SnowFlake;
7
 import com.ruoyi.common.utils.SnowFlake;
8
 import com.ruoyi.oa.domain.CmcPartner;
8
 import com.ruoyi.oa.domain.CmcPartner;
9
 import com.ruoyi.oa.domain.CmcPartyA;
9
 import com.ruoyi.oa.domain.CmcPartyA;
10
+import com.ruoyi.oa.domain.CmcProject;
10
 import com.ruoyi.oa.service.ICmcPartnerService;
11
 import com.ruoyi.oa.service.ICmcPartnerService;
11
 import com.ruoyi.oa.service.ICmcPartyAService;
12
 import com.ruoyi.oa.service.ICmcPartyAService;
12
 import org.springframework.beans.factory.annotation.Autowired;
13
 import org.springframework.beans.factory.annotation.Autowired;
65
     public void export(HttpServletResponse response, CmcBrandProject cmcBrandProject)
66
     public void export(HttpServletResponse response, CmcBrandProject cmcBrandProject)
66
     {
67
     {
67
         List<CmcBrandProject> list = cmcBrandProjectService.selectCmcBrandProjectList(cmcBrandProject);
68
         List<CmcBrandProject> list = cmcBrandProjectService.selectCmcBrandProjectList(cmcBrandProject);
69
+        for (CmcBrandProject brandProject : list) {
70
+            partyAIdToName(brandProject);
71
+            partnerIdToName(brandProject);
72
+        }
68
         ExcelUtil<CmcBrandProject> util = new ExcelUtil<CmcBrandProject>(CmcBrandProject.class);
73
         ExcelUtil<CmcBrandProject> util = new ExcelUtil<CmcBrandProject>(CmcBrandProject.class);
69
         util.exportExcel(response, list, "cmc品牌项目数据");
74
         util.exportExcel(response, list, "cmc品牌项目数据");
70
     }
75
     }
71
 
76
 
77
+    public void partyAIdToName(CmcBrandProject cmcBrandProject) {
78
+        String partyAId = cmcBrandProject.getPartyAId();
79
+        String partyAName = cmcBrandProject.getPartyAName();
80
+        StringBuilder partyANames = new StringBuilder();
81
+        if (partyAId != null && !partyAId.equals("") && (partyAName == null || partyAName.equals(""))) {
82
+            for (String partyA : partyAId.split(","))
83
+                partyANames.append(cmcPartyAService.selectCmcPartyAByPartyAId(partyA).getPartyAName()).append(",");
84
+            cmcBrandProject.setPartyAName(partyANames.substring(0, partyANames.length() - 1));
85
+        }
86
+    }
87
+
88
+    public void partnerIdToName(CmcBrandProject cmcBrandProject) {
89
+        String partnerId = cmcBrandProject.getPartnerId();
90
+        String partnerName = cmcBrandProject.getPartnerName();
91
+        StringBuilder partnerNames = new StringBuilder();
92
+        if (partnerId != null && !partnerId.equals("") && (partnerName == null || partnerName.equals(""))) {
93
+            for (String partner : partnerId.split(","))
94
+                partnerNames.append(cmcPartnerService.selectCmcPartnerByPartnerId(partner).getPartnerName()).append(",");
95
+            cmcBrandProject.setPartnerName(partnerNames.substring(0, partnerNames.length() - 1));
96
+        }
97
+    }
98
+
72
     /**
99
     /**
73
      * 获取cmc品牌项目详细信息
100
      * 获取cmc品牌项目详细信息
74
      */
101
      */

+ 16
- 12
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcCarApprovalController.java Просмотреть файл

52
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
52
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
53
         for(CmcCarApproval carApproval : list) {
53
         for(CmcCarApproval carApproval : list) {
54
             String carIds = carApproval.getCars();
54
             String carIds = carApproval.getCars();
55
-            StringBuilder carNames = new StringBuilder();
56
-            if (carIds != null && !carIds.equals("") && carIds.split(",").length > 0) {
55
+            String licensePlate = carApproval.getLicensePlate();
56
+            StringBuilder licensePlates = new StringBuilder();
57
+            if (carIds != null && !carIds.equals("") && (licensePlate == null || licensePlate.equals(""))) {
57
                 for (String carId : carIds.split(","))
58
                 for (String carId : carIds.split(","))
58
-                    carNames.append(cmcCarService.selectCmcCarByCarId(Integer.parseInt(carId)).getLicensePlate()).append(",");
59
-                carApproval.setCarNames(carNames.substring(0, carNames.length() - 1));
59
+                    licensePlates.append(cmcCarService.selectCmcCarByCarId(Integer.parseInt(carId)).getLicensePlate()).append(",");
60
+                carApproval.setLicensePlate(licensePlates.substring(0, licensePlates.length() - 1));
60
             }
61
             }
61
             String driverIds = carApproval.getDrivers();
62
             String driverIds = carApproval.getDrivers();
63
+            String driverName = carApproval.getDriverName();
62
             StringBuilder driverNames = new StringBuilder();
64
             StringBuilder driverNames = new StringBuilder();
63
-            if (driverIds != null && !driverIds.equals("") && driverIds.split(",").length > 0) {
65
+            if (driverIds != null && !driverIds.equals("") && (driverName == null || driverName.equals(""))) {
64
                 for (String driverId : driverIds.split(","))
66
                 for (String driverId : driverIds.split(","))
65
                     driverNames.append(userService.selectUserById(Long.parseLong(driverId)).getNickName()).append(",");
67
                     driverNames.append(userService.selectUserById(Long.parseLong(driverId)).getNickName()).append(",");
66
-                carApproval.setDriverNames(driverNames.substring(0, driverNames.length() - 1));
68
+                carApproval.setDriverName(driverNames.substring(0, driverNames.length() - 1));
67
             }
69
             }
68
         }
70
         }
69
         return getDataTable(list);
71
         return getDataTable(list);
79
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
81
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
80
         for(CmcCarApproval carApproval : list) {
82
         for(CmcCarApproval carApproval : list) {
81
             String carIds = carApproval.getCars();
83
             String carIds = carApproval.getCars();
82
-            StringBuilder carNames = new StringBuilder();
83
-            if (carIds != null && !carIds.equals("") && carIds.split(",").length > 0) {
84
+            String licensePlate = carApproval.getLicensePlate();
85
+            StringBuilder licensePlates = new StringBuilder();
86
+            if (carIds != null && !carIds.equals("") && (licensePlate == null || licensePlate.equals(""))) {
84
                 for (String carId : carIds.split(","))
87
                 for (String carId : carIds.split(","))
85
-                    carNames.append(cmcCarService.selectCmcCarByCarId(Integer.parseInt(carId)).getLicensePlate()).append(",");
86
-                carApproval.setCarNames(carNames.substring(0, carNames.length() - 1));
88
+                    licensePlates.append(cmcCarService.selectCmcCarByCarId(Integer.parseInt(carId)).getLicensePlate()).append(",");
89
+                carApproval.setLicensePlate(licensePlates.substring(0, licensePlates.length() - 1));
87
             }
90
             }
88
             String driverIds = carApproval.getDrivers();
91
             String driverIds = carApproval.getDrivers();
92
+            String driverName = carApproval.getDriverName();
89
             StringBuilder driverNames = new StringBuilder();
93
             StringBuilder driverNames = new StringBuilder();
90
-            if (driverIds != null && !driverIds.equals("") && driverIds.split(",").length > 0) {
94
+            if (driverIds != null && !driverIds.equals("") && (driverName == null || driverName.equals(""))) {
91
                 for (String driverId : driverIds.split(","))
95
                 for (String driverId : driverIds.split(","))
92
                     driverNames.append(userService.selectUserById(Long.parseLong(driverId)).getNickName()).append(",");
96
                     driverNames.append(userService.selectUserById(Long.parseLong(driverId)).getNickName()).append(",");
93
-                carApproval.setDriverNames(driverNames.substring(0, driverNames.length() - 1));
97
+                carApproval.setDriverName(driverNames.substring(0, driverNames.length() - 1));
94
             }
98
             }
95
         }
99
         }
96
         ExcelUtil<CmcCarApproval> util = new ExcelUtil<CmcCarApproval>(CmcCarApproval.class);
100
         ExcelUtil<CmcCarApproval> util = new ExcelUtil<CmcCarApproval>(CmcCarApproval.class);

+ 2
- 2
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcDeviceApprovalController.java Просмотреть файл

249
                 deviceApproval.setModifyDeviceNames(modifyDeviceNames.substring(0, modifyDeviceNames.length() - 1));
249
                 deviceApproval.setModifyDeviceNames(modifyDeviceNames.substring(0, modifyDeviceNames.length() - 1));
250
             }
250
             }
251
             String repairDeviceIds = deviceApproval.getRepairDevices();
251
             String repairDeviceIds = deviceApproval.getRepairDevices();
252
-            StringBuilder repairDeviceNames = new StringBuilder();;
252
+            StringBuilder repairDeviceNames = new StringBuilder();
253
             StringBuilder repairDeviceNumbers = new StringBuilder();
253
             StringBuilder repairDeviceNumbers = new StringBuilder();
254
             if (repairDeviceIds != null && !repairDeviceIds.equals("") && repairDeviceIds.split(",").length > 0) {
254
             if (repairDeviceIds != null && !repairDeviceIds.equals("") && repairDeviceIds.split(",").length > 0) {
255
                 for (String deviceId : repairDeviceIds.split(",")) {
255
                 for (String deviceId : repairDeviceIds.split(",")) {
263
                 deviceApproval.setRepairDeviceNames(repairDeviceNames.substring(0, repairDeviceNames.length() - 1));
263
                 deviceApproval.setRepairDeviceNames(repairDeviceNames.substring(0, repairDeviceNames.length() - 1));
264
             }
264
             }
265
             String returnDeviceIds = deviceApproval.getReturnDevices();
265
             String returnDeviceIds = deviceApproval.getReturnDevices();
266
-            StringBuilder returnDeviceNames = new StringBuilder();;
266
+            StringBuilder returnDeviceNames = new StringBuilder();
267
             StringBuilder returnDeviceNumbers = new StringBuilder();
267
             StringBuilder returnDeviceNumbers = new StringBuilder();
268
             if (returnDeviceIds != null && !returnDeviceIds.equals("") && returnDeviceIds.split(",").length > 0) {
268
             if (returnDeviceIds != null && !returnDeviceIds.equals("") && returnDeviceIds.split(",").length > 0) {
269
                 for (String deviceId : returnDeviceIds.split(",")) {
269
                 for (String deviceId : returnDeviceIds.split(",")) {

+ 28
- 29
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcManageDeptController.java Просмотреть файл

3
 import java.util.List;
3
 import java.util.List;
4
 import javax.servlet.http.HttpServletResponse;
4
 import javax.servlet.http.HttpServletResponse;
5
 
5
 
6
+import com.ruoyi.oa.domain.CmcBrandProject;
6
 import com.ruoyi.oa.domain.CmcProject;
7
 import com.ruoyi.oa.domain.CmcProject;
7
 import com.ruoyi.oa.service.ICmcPartyAService;
8
 import com.ruoyi.oa.service.ICmcPartyAService;
8
 import com.ruoyi.system.service.ISysDeptService;
9
 import com.ruoyi.system.service.ISysDeptService;
41
     private ISysDeptService deptService;
42
     private ISysDeptService deptService;
42
 
43
 
43
     @Autowired
44
     @Autowired
44
-    private ICmcPartyAService partyAService;
45
+    private ICmcPartyAService cmcPartyAService;
45
 
46
 
46
     /**
47
     /**
47
      * 查询cmc领导分管列表
48
      * 查询cmc领导分管列表
52
         startPage();
53
         startPage();
53
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
54
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
54
         for (CmcManageDept manageDept : list) {
55
         for (CmcManageDept manageDept : list) {
55
-            String deptId = manageDept.getDeptId();
56
-            StringBuilder deptName = new StringBuilder();
57
-            if (deptId != null && !deptId.equals("") && deptId.split(",").length > 0) {
58
-                for (String dept : deptId.split(","))
59
-                    deptName.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
60
-                manageDept.setDeptName(deptName.substring(0, deptName.length() - 1));
61
-            }
62
-            String partyAId = manageDept.getPartyAId();
63
-            StringBuilder partyAName = new StringBuilder();
64
-            if (partyAId != null && !partyAId.equals("") && partyAId.split(",").length > 0) {
65
-                for (String partyA : partyAId.split(","))
66
-                    partyAName.append(partyAService.selectCmcPartyAByPartyAId(partyA).getPartyAName()).append(",");
67
-                manageDept.setPartyAName(partyAName.substring(0, partyAName.length() - 1));
68
-            }
56
+            deptIdToName(manageDept);
57
+            partyAIdToName(manageDept);
69
         }
58
         }
70
         return getDataTable(list);
59
         return getDataTable(list);
71
     }
60
     }
79
     {
68
     {
80
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
69
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
81
         for (CmcManageDept manageDept : list) {
70
         for (CmcManageDept manageDept : list) {
82
-            String deptId = manageDept.getDeptId();
83
-            StringBuilder deptName = new StringBuilder();
84
-            if (deptId != null && !deptId.equals("") && deptId.split(",").length > 0) {
85
-                for (String dept : deptId.split(","))
86
-                    deptName.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
87
-                manageDept.setDeptName(deptName.substring(0, deptName.length() - 1));
88
-            }
89
-            String partyAId = manageDept.getPartyAId();
90
-            StringBuilder partyAName = new StringBuilder();
91
-            if (partyAId != null && !partyAId.equals("") && partyAId.split(",").length > 0) {
92
-                for (String partyA : partyAId.split(","))
93
-                    partyAName.append(partyAService.selectCmcPartyAByPartyAId(partyA).getPartyAName()).append(",");
94
-                manageDept.setPartyAName(partyAName.substring(0, partyAName.length() - 1));
95
-            }
71
+            deptIdToName(manageDept);
72
+            partyAIdToName(manageDept);
96
         }
73
         }
97
         ExcelUtil<CmcManageDept> util = new ExcelUtil<CmcManageDept>(CmcManageDept.class);
74
         ExcelUtil<CmcManageDept> util = new ExcelUtil<CmcManageDept>(CmcManageDept.class);
98
         util.exportExcel(response, list, "cmc领导分管数据");
75
         util.exportExcel(response, list, "cmc领导分管数据");
99
     }
76
     }
100
 
77
 
78
+    public void deptIdToName(CmcManageDept cmcManageDept) {
79
+        String deptId = cmcManageDept.getDeptId();
80
+        String deptName = cmcManageDept.getDeptName();
81
+        StringBuilder deptNames = new StringBuilder();
82
+        if (deptId != null && !deptId.equals("") && (deptName == null || deptName.equals(""))) {
83
+            for (String dept : deptId.split(","))
84
+                deptNames.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
85
+            cmcManageDept.setDeptName(deptNames.substring(0, deptNames.length() - 1));
86
+        }
87
+    }
88
+
89
+    public void partyAIdToName(CmcManageDept cmcManageDept) {
90
+        String partyAId = cmcManageDept.getPartyAId();
91
+        String partyAName = cmcManageDept.getPartyAName();
92
+        StringBuilder partyANames = new StringBuilder();
93
+        if (partyAId != null && !partyAId.equals("") && (partyAName == null || partyAName.equals(""))) {
94
+            for (String partyA : partyAId.split(","))
95
+                partyANames.append(cmcPartyAService.selectCmcPartyAByPartyAId(partyA).getPartyAName()).append(",");
96
+            cmcManageDept.setPartyAName(partyANames.substring(0, partyANames.length() - 1));
97
+        }
98
+    }
99
+
101
     /**
100
     /**
102
      * 获取cmc领导分管详细信息
101
      * 获取cmc领导分管详细信息
103
      */
102
      */

+ 5
- 4
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcOutsourceController.java Просмотреть файл

107
 
107
 
108
     public void partnerIdToName(CmcOutsource cmcOutsource) {
108
     public void partnerIdToName(CmcOutsource cmcOutsource) {
109
         String partnerId = cmcOutsource.getPartnerId();
109
         String partnerId = cmcOutsource.getPartnerId();
110
-        StringBuilder partnerName = new StringBuilder();
111
-        if (partnerId != null && !partnerId.equals("") && partnerId.split(",").length > 0) {
110
+        String partnerName = cmcOutsource.getPartnerName();
111
+        StringBuilder partnerNames = new StringBuilder();
112
+        if (partnerId != null && !partnerId.equals("") && (partnerName == null || partnerName.equals(""))) {
112
             for (String partner : partnerId.split(","))
113
             for (String partner : partnerId.split(","))
113
-                partnerName.append(cmcPartnerService.selectCmcPartnerByPartnerId(partner).getPartnerName()).append(",");
114
-            cmcOutsource.setPartnerName(partnerName.substring(0, partnerName.length() - 1));
114
+                partnerNames.append(cmcPartnerService.selectCmcPartnerByPartnerId(partner).getPartnerName()).append(",");
115
+            cmcOutsource.setPartnerName(partnerNames.substring(0, partnerNames.length() - 1));
115
         }
116
         }
116
     }
117
     }
117
 }
118
 }

+ 5
- 4
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectCommentController.java Просмотреть файл

70
         CmcProjectComment cmcProjectComment = cmcProjectCommentService.selectCmcProjectCommentByProjectId(projectId);
70
         CmcProjectComment cmcProjectComment = cmcProjectCommentService.selectCmcProjectCommentByProjectId(projectId);
71
         if (cmcProjectComment != null) {
71
         if (cmcProjectComment != null) {
72
             String scApprove = cmcProjectComment.getScApprover();
72
             String scApprove = cmcProjectComment.getScApprover();
73
-            StringBuilder scApproverName = new StringBuilder();
74
-            if (scApprove != null && !scApprove.equals("") && scApprove.split(",").length > 0) {
73
+            String scApproverName = cmcProjectComment.getScApproverName();
74
+            StringBuilder scApproverNames = new StringBuilder();
75
+            if (scApprove != null && !scApprove.equals("") && (scApproverName == null || scApproverName.equals(""))) {
75
                 for (String user : scApprove.split(","))
76
                 for (String user : scApprove.split(","))
76
-                    scApproverName.append(userService.selectUserById(Long.parseLong(user)).getNickName()).append(",");
77
-                cmcProjectComment.setScApproverName(scApproverName.substring(0, scApproverName.length() - 1));
77
+                    scApproverNames.append(userService.selectUserById(Long.parseLong(user)).getNickName()).append(",");
78
+                cmcProjectComment.setScApproverName(scApproverNames.substring(0, scApproverNames.length() - 1));
78
             }
79
             }
79
         }
80
         }
80
         return success(cmcProjectComment);
81
         return success(cmcProjectComment);

+ 15
- 14
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectController.java Просмотреть файл

87
             list = cmcProjectService.selectCmcProjectList(cmcProject);
87
             list = cmcProjectService.selectCmcProjectList(cmcProject);
88
         for (CmcProject project : list) {
88
         for (CmcProject project : list) {
89
             project.setUndertakingDeptName(deptIdToName(project));
89
             project.setUndertakingDeptName(deptIdToName(project));
90
-            project.setQualityInspectorName(inspectorIdToName(project));
90
+            inspectorIdToName(project);
91
             CmcContract contract = joinContract(project);
91
             CmcContract contract = joinContract(project);
92
             project.setContractCode(contract.getContractCode());
92
             project.setContractCode(contract.getContractCode());
93
             project.setContractNumber(contract.getContractNumber());
93
             project.setContractNumber(contract.getContractNumber());
106
         List<CmcProject> list = cmcProjectService.selectCmcProjectListFuzzy(cmcProject);
106
         List<CmcProject> list = cmcProjectService.selectCmcProjectListFuzzy(cmcProject);
107
         for (CmcProject project : list) {
107
         for (CmcProject project : list) {
108
             project.setUndertakingDeptName(deptIdToName(project));
108
             project.setUndertakingDeptName(deptIdToName(project));
109
-            project.setQualityInspectorName(inspectorIdToName(project));
109
+            inspectorIdToName(project);
110
             CmcContract contract = joinContract(project);
110
             CmcContract contract = joinContract(project);
111
             project.setContractCode(contract.getContractCode());
111
             project.setContractCode(contract.getContractCode());
112
             project.setContractNumber(contract.getContractNumber());
112
             project.setContractNumber(contract.getContractNumber());
133
         }
133
         }
134
         for (CmcProject project : list) {
134
         for (CmcProject project : list) {
135
             project.setUndertakingDeptName(deptIdToName(project));
135
             project.setUndertakingDeptName(deptIdToName(project));
136
-            project.setQualityInspectorName(inspectorIdToName(project));
136
+            inspectorIdToName(project);
137
             CmcContract contract = joinContract(project);
137
             CmcContract contract = joinContract(project);
138
             project.setContractCode(contract.getContractCode());
138
             project.setContractCode(contract.getContractCode());
139
             project.setContractNumber(contract.getContractNumber());
139
             project.setContractNumber(contract.getContractNumber());
152
         CmcProject cmcProject = cmcProjectService.selectCmcProjectByProjectId(projectId);
152
         CmcProject cmcProject = cmcProjectService.selectCmcProjectByProjectId(projectId);
153
         if (cmcProject != null) {
153
         if (cmcProject != null) {
154
             cmcProject.setUndertakingDeptName(deptIdToName(cmcProject));
154
             cmcProject.setUndertakingDeptName(deptIdToName(cmcProject));
155
-            cmcProject.setQualityInspectorName(inspectorIdToName(cmcProject));
155
+            inspectorIdToName(cmcProject);
156
             CmcContract contract = joinContract(cmcProject);
156
             CmcContract contract = joinContract(cmcProject);
157
             cmcProject.setContractCode(contract.getContractCode());
157
             cmcProject.setContractCode(contract.getContractCode());
158
             cmcProject.setContractNumber(contract.getContractNumber());
158
             cmcProject.setContractNumber(contract.getContractNumber());
400
 
400
 
401
     public String deptIdToName(CmcProject cmcProject) {
401
     public String deptIdToName(CmcProject cmcProject) {
402
         String underTakingDept = cmcProject.getUndertakingDept();
402
         String underTakingDept = cmcProject.getUndertakingDept();
403
-        StringBuilder underTakingDeptName = new StringBuilder();
404
-        if (underTakingDept != null && !underTakingDept.equals("") && underTakingDept.split(",").length > 0) {
403
+        String undertakingDeptName = cmcProject.getUndertakingDeptName();
404
+        StringBuilder underTakingDeptNames = new StringBuilder();
405
+        if (underTakingDept != null && !underTakingDept.equals("") && (undertakingDeptName == null || undertakingDeptName.equals(""))) {
405
             for (String dept : underTakingDept.split(","))
406
             for (String dept : underTakingDept.split(","))
406
-                underTakingDeptName.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
407
-            cmcProject.setUndertakingDeptName(underTakingDeptName.substring(0, underTakingDeptName.length() - 1));
407
+                underTakingDeptNames.append(deptService.selectDeptById(Long.parseLong(dept)).getDeptName()).append(",");
408
+            cmcProject.setUndertakingDeptName(underTakingDeptNames.substring(0, underTakingDeptNames.length() - 1));
408
         }
409
         }
409
         return cmcProject.getUndertakingDeptName();
410
         return cmcProject.getUndertakingDeptName();
410
     }
411
     }
411
 
412
 
412
-    public String inspectorIdToName(CmcProject cmcProject) {
413
+    public void inspectorIdToName(CmcProject cmcProject) {
413
         String qualityInspector = cmcProject.getQualityInspector();
414
         String qualityInspector = cmcProject.getQualityInspector();
414
-        StringBuilder qualityInspectorName = new StringBuilder();
415
-        if (qualityInspector != null && !qualityInspector.equals("") && qualityInspector.split(",").length > 0) {
415
+        String qualityInspectorName = cmcProject.getQualityInspectorName();
416
+        StringBuilder qualityInspectorNames = new StringBuilder();
417
+        if (qualityInspector != null && !qualityInspector.equals("") && (qualityInspectorName == null || qualityInspectorName.equals(""))) {
416
             for (String inspector : qualityInspector.split(","))
418
             for (String inspector : qualityInspector.split(","))
417
-                qualityInspectorName.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
418
-            cmcProject.setQualityInspectorName(qualityInspectorName.substring(0, qualityInspectorName.length() - 1));
419
+                qualityInspectorNames.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
420
+            cmcProject.setQualityInspectorName(qualityInspectorNames.substring(0, qualityInspectorNames.length() - 1));
419
         }
421
         }
420
-        return cmcProject.getQualityInspectorName();
421
     }
422
     }
422
 
423
 
423
     public CmcContract joinContract(CmcProject cmcProject) {
424
     public CmcContract joinContract(CmcProject cmcProject) {

+ 14
- 14
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcSafeReportController.java Просмотреть файл

3
 import java.util.List;
3
 import java.util.List;
4
 import javax.servlet.http.HttpServletResponse;
4
 import javax.servlet.http.HttpServletResponse;
5
 
5
 
6
+import com.ruoyi.oa.domain.CmcOutsource;
6
 import com.ruoyi.system.service.ISysUserService;
7
 import com.ruoyi.system.service.ISysUserService;
7
 import org.springframework.beans.factory.annotation.Autowired;
8
 import org.springframework.beans.factory.annotation.Autowired;
8
 import org.springframework.web.bind.annotation.GetMapping;
9
 import org.springframework.web.bind.annotation.GetMapping;
47
         startPage();
48
         startPage();
48
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
49
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
49
         for (CmcSafeReport safeReport : list) {
50
         for (CmcSafeReport safeReport : list) {
50
-            String userId = safeReport.getMember();
51
-            StringBuilder userName = new StringBuilder();
52
-            if (userId != null && !userId.equals("") && userId.split(",").length > 0) {
53
-                for (String user : userId.split(","))
54
-                    userName.append(userService.selectUserById(Long.parseLong(user)).getNickName()).append(",");
55
-                safeReport.setUserNames(userName.substring(0, userName.length() - 1));
56
-            }
51
+            userIdToName(safeReport);
57
         }
52
         }
58
         return getDataTable(list);
53
         return getDataTable(list);
59
     }
54
     }
67
     {
62
     {
68
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
63
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
69
         for (CmcSafeReport safeReport : list) {
64
         for (CmcSafeReport safeReport : list) {
70
-            String userId = safeReport.getMember();
71
-            StringBuilder userName = new StringBuilder();
72
-            if (userId != null && !userId.equals("") && userId.split(",").length > 0) {
73
-                for (String user : userId.split(","))
74
-                    userName.append(userService.selectUserById(Long.parseLong(user)).getNickName()).append(",");
75
-                safeReport.setUserNames(userName.substring(0, userName.length() - 1));
76
-            }
65
+            userIdToName(safeReport);
77
         }
66
         }
78
         ExcelUtil<CmcSafeReport> util = new ExcelUtil<CmcSafeReport>(CmcSafeReport.class);
67
         ExcelUtil<CmcSafeReport> util = new ExcelUtil<CmcSafeReport>(CmcSafeReport.class);
79
         util.exportExcel(response, list, "安全汇报数据");
68
         util.exportExcel(response, list, "安全汇报数据");
117
     {
106
     {
118
         return success(cmcSafeReportService.deleteCmcSafeReportBySafeReportIds(safeReportIds));
107
         return success(cmcSafeReportService.deleteCmcSafeReportBySafeReportIds(safeReportIds));
119
     }
108
     }
109
+
110
+    public void userIdToName(CmcSafeReport cmcSafeReport) {
111
+        String userId = cmcSafeReport.getMember();
112
+        String userName = cmcSafeReport.getUserName();
113
+        StringBuilder userNames = new StringBuilder();
114
+        if (userId != null && !userId.equals("") && (userName == null || userName.equals(""))) {
115
+            for (String user : userId.split(","))
116
+                userNames.append(userService.selectUserById(Long.parseLong(user)).getNickName()).append(",");
117
+            cmcSafeReport.setUserName(userNames.substring(0, userNames.length() - 1));
118
+        }
119
+    }
120
 }
120
 }

+ 5
- 4
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcTechnicalPlanController.java Просмотреть файл

60
         List<CmcTechnicalPlan> list = cmcTechnicalPlanService.selectCmcTechnicalPlanList(cmcTechnicalPlan);
60
         List<CmcTechnicalPlan> list = cmcTechnicalPlanService.selectCmcTechnicalPlanList(cmcTechnicalPlan);
61
         for (CmcTechnicalPlan technical : list) {
61
         for (CmcTechnicalPlan technical : list) {
62
             String qualityInspector = technical.getQualityInspector();
62
             String qualityInspector = technical.getQualityInspector();
63
-            StringBuilder qualityInspectorName = new StringBuilder();
64
-            if (qualityInspector != null && !qualityInspector.equals("") && qualityInspector.split(",").length > 0) {
63
+            String qualityInspectorName = technical.getQualityInspectorName();
64
+            StringBuilder qualityInspectorNames = new StringBuilder();
65
+            if (qualityInspector != null && !qualityInspector.equals("") &&  (qualityInspectorName == null || qualityInspectorName.equals(""))) {
65
                 for (String inspector : qualityInspector.split(","))
66
                 for (String inspector : qualityInspector.split(","))
66
-                    qualityInspectorName.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
67
-                technical.setQualityInspectorName(qualityInspectorName.substring(0, qualityInspectorName.length() - 1));
67
+                    qualityInspectorNames.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
68
+                technical.setQualityInspectorName(qualityInspectorNames.substring(0, qualityInspectorNames.length() - 1));
68
             }
69
             }
69
         }
70
         }
70
         ExcelUtil<CmcTechnicalPlan> util = new ExcelUtil<CmcTechnicalPlan>(CmcTechnicalPlan.class);
71
         ExcelUtil<CmcTechnicalPlan> util = new ExcelUtil<CmcTechnicalPlan>(CmcTechnicalPlan.class);

+ 0
- 2
oa-back/ruoyi-agent/src/main/java/com/ruoyi/agent/service/impl/McpServiceImpl.java Просмотреть файл

23
 import io.milvus.v2.service.vector.request.data.BaseVector;
23
 import io.milvus.v2.service.vector.request.data.BaseVector;
24
 import io.milvus.v2.service.vector.request.data.FloatVec;
24
 import io.milvus.v2.service.vector.request.data.FloatVec;
25
 import io.milvus.v2.service.vector.response.SearchResp;
25
 import io.milvus.v2.service.vector.response.SearchResp;
26
-import org.apache.poi.extractor.ExtractorFactory;
27
-import org.apache.poi.extractor.POITextExtractor;
28
 import org.apache.poi.hwpf.HWPFDocument;
26
 import org.apache.poi.hwpf.HWPFDocument;
29
 import org.apache.poi.hwpf.usermodel.Paragraph;
27
 import org.apache.poi.hwpf.usermodel.Paragraph;
30
 import org.apache.poi.hwpf.usermodel.Range;
28
 import org.apache.poi.hwpf.usermodel.Range;

+ 0
- 2
oa-back/ruoyi-llm/src/main/java/com/ruoyi/web/llm/service/impl/LangChainMilvusServiceImpl.java Просмотреть файл

32
 import io.milvus.v2.service.vector.request.data.FloatVec;
32
 import io.milvus.v2.service.vector.request.data.FloatVec;
33
 import io.milvus.v2.service.vector.response.InsertResp;
33
 import io.milvus.v2.service.vector.response.InsertResp;
34
 import io.milvus.v2.service.vector.response.SearchResp;
34
 import io.milvus.v2.service.vector.response.SearchResp;
35
-import org.apache.poi.extractor.ExtractorFactory;
36
-import org.apache.poi.extractor.POITextExtractor;
37
 import org.apache.poi.hwpf.HWPFDocument;
35
 import org.apache.poi.hwpf.HWPFDocument;
38
 import org.apache.poi.hwpf.usermodel.Paragraph;
36
 import org.apache.poi.hwpf.usermodel.Paragraph;
39
 import org.apache.poi.hwpf.usermodel.Range;
37
 import org.apache.poi.hwpf.usermodel.Range;

+ 5
- 0
oa-back/ruoyi-system/pom.xml Просмотреть файл

69
             <version>2.6.2</version>
69
             <version>2.6.2</version>
70
         </dependency>
70
         </dependency>
71
 
71
 
72
+        <dependency>
73
+            <groupId>org.apache.poi</groupId>
74
+            <artifactId>poi-scratchpad</artifactId>
75
+            <version>5.2.5</version>
76
+        </dependency>
72
     </dependencies>
77
     </dependencies>
73
 
78
 
74
 </project>
79
 </project>

+ 0
- 2
oa-back/ruoyi-system/src/main/java/com/ruoyi/llm/service/impl/CmcAgentServiceImpl.java Просмотреть файл

32
 import io.milvus.v2.service.vector.request.data.BaseVector;
32
 import io.milvus.v2.service.vector.request.data.BaseVector;
33
 import io.milvus.v2.service.vector.request.data.FloatVec;
33
 import io.milvus.v2.service.vector.request.data.FloatVec;
34
 import io.milvus.v2.service.vector.response.SearchResp;
34
 import io.milvus.v2.service.vector.response.SearchResp;
35
-import org.apache.poi.extractor.ExtractorFactory;
36
-import org.apache.poi.extractor.POITextExtractor;
37
 import org.apache.poi.hwpf.HWPFDocument;
35
 import org.apache.poi.hwpf.HWPFDocument;
38
 import org.apache.poi.hwpf.usermodel.Paragraph;
36
 import org.apache.poi.hwpf.usermodel.Paragraph;
39
 import org.apache.poi.hwpf.usermodel.Range;
37
 import org.apache.poi.hwpf.usermodel.Range;

+ 18
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBrandProject.java Просмотреть файл

123
     {
123
     {
124
         return partyAId;
124
         return partyAId;
125
     }
125
     }
126
+    public void setPartyAName(String partyAName)
127
+    {
128
+        this.partyAName = partyAName;
129
+    }
130
+
131
+    public String getPartyAName()
132
+    {
133
+        return partyAName;
134
+    }
126
     public void setPartyA(CmcPartyA partyA)
135
     public void setPartyA(CmcPartyA partyA)
127
     {
136
     {
128
         this.partyA = partyA;
137
         this.partyA = partyA;
160
     {
169
     {
161
         return partnerId;
170
         return partnerId;
162
     }
171
     }
172
+    public void setPartnerName(String partnerName)
173
+    {
174
+        this.partnerName = partnerName;
175
+    }
176
+
177
+    public String getPartnerName()
178
+    {
179
+        return partnerName;
180
+    }
163
     public void setPartner(CmcPartner partner)
181
     public void setPartner(CmcPartner partner)
164
     {
182
     {
165
         this.partner = partner;
183
         this.partner = partner;

+ 62
- 36
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBudget.java Просмотреть файл

35
     private BigDecimal totalBudget;
35
     private BigDecimal totalBudget;
36
 
36
 
37
     /** 间接成本 */
37
     /** 间接成本 */
38
-    @Excel(name = "间接成本")
38
+//    @Excel(name = "间接成本")
39
     private BigDecimal fixCost;
39
     private BigDecimal fixCost;
40
 
40
 
41
     /** 人员成本 */
41
     /** 人员成本 */
50
     @Excel(name = "设备成本")
50
     @Excel(name = "设备成本")
51
     private BigDecimal deviceCost;
51
     private BigDecimal deviceCost;
52
 
52
 
53
+    /** 现场开支 */
54
+    @Excel(name = "现场开支")
55
+    private BigDecimal siteCost;
56
+
53
     /** 直接成本 */
57
     /** 直接成本 */
54
-    @Excel(name = "直接成本")
58
+//    @Excel(name = "直接成本")
55
     private BigDecimal directExpense;
59
     private BigDecimal directExpense;
56
 
60
 
57
     /** 预结算额 */
61
     /** 预结算额 */
67
     private String outRemark;
71
     private String outRemark;
68
 
72
 
69
     /** 经营费用 */
73
     /** 经营费用 */
70
-    @Excel(name = "经营费用")
74
+//    @Excel(name = "经营费用")
71
     private BigDecimal businessExpense;
75
     private BigDecimal businessExpense;
72
 
76
 
73
     /** 经营管理备注 */
77
     /** 经营管理备注 */
74
-    @Excel(name = "经营管理备注")
78
+//    @Excel(name = "经营管理备注")
75
     private String businessRemark;
79
     private String businessRemark;
76
 
80
 
77
     /** 税费成本 */
81
     /** 税费成本 */
82
     @Excel(name = "税费备注")
86
     @Excel(name = "税费备注")
83
     private String taxRemark;
87
     private String taxRemark;
84
 
88
 
89
+    /** 保函费用 */
90
+    @Excel(name = "保函费用")
91
+    private BigDecimal letterExpense;
92
+
93
+    /** 保函费用备注 */
94
+    @Excel(name = "保函费用备注")
95
+    private String letterRemark;
96
+
97
+    /** 中标服务费 */
98
+    @Excel(name = "中标服务费")
99
+    private BigDecimal winExpense;
100
+
101
+    /** 中标服务费备注 */
102
+    @Excel(name = "中标服务费备注")
103
+    private String winRemark;
104
+
105
+    /** 管理出差费用 */
106
+    @Excel(name = "管理出差费用")
107
+    private BigDecimal travelExpense;
108
+
109
+    /** 管理出差费用备注 */
110
+    @Excel(name = "管理出差费用备注")
111
+    private String travelRemark;
112
+
85
     /** 车船租赁 */
113
     /** 车船租赁 */
86
-    @Excel(name = "车船租赁")
114
+//    @Excel(name = "车船租赁")
87
     private BigDecimal rentExpense;
115
     private BigDecimal rentExpense;
88
 
116
 
89
     /** 车船租赁备注 */
117
     /** 车船租赁备注 */
90
-    @Excel(name = "车船租赁备注")
118
+//    @Excel(name = "车船租赁备注")
91
     private String rentRemark;
119
     private String rentRemark;
92
 
120
 
93
     /** 其他费用 */
121
     /** 其他费用 */
94
-    @Excel(name = "其他费用")
122
+//    @Excel(name = "其他费用")
95
     private BigDecimal otherExpense;
123
     private BigDecimal otherExpense;
96
 
124
 
97
     /** 其他费用备注 */
125
     /** 其他费用备注 */
98
-    @Excel(name = "其他费用备注")
126
+//    @Excel(name = "其他费用备注")
99
     private String otherRemark;
127
     private String otherRemark;
100
 
128
 
101
     /** 编制人 */
129
     /** 编制人 */
147
     @Excel(name = "董事长批准时间", width = 30, dateFormat = "yyyy-MM-dd")
175
     @Excel(name = "董事长批准时间", width = 30, dateFormat = "yyyy-MM-dd")
148
     private Date dszTime;
176
     private Date dszTime;
149
 
177
 
150
-    /** 保函费用 */
151
-    @Excel(name = "保函费用")
152
-    private BigDecimal letterExpense;
153
-
154
-    /** 中标服务费 */
155
-    @Excel(name = "中标服务费")
156
-    private BigDecimal winExpense;
178
+    /** 预算附件 */
179
+    @Excel(name = "预算附件")
180
+    private String document;
157
 
181
 
158
-    /** 管理出差费用 */
159
-    @Excel(name = "管理出差费用")
160
-    private BigDecimal travelExpense;
182
+    /** 现场开支核算 */
183
+    @Excel(name = "现场开支核算 ")
184
+    private BigDecimal siteAdjust;
161
 
185
 
162
     /** 内业核算绩效总额 */
186
     /** 内业核算绩效总额 */
163
     @Excel(name = "内业核算绩效总额")
187
     @Excel(name = "内业核算绩效总额")
164
     private BigDecimal settleAdjust;
188
     private BigDecimal settleAdjust;
165
 
189
 
166
-    /** 保函费用备注 */
167
-    @Excel(name = "保函费用备注")
168
-    private String letterRemark;
169
-
170
-    /** 管理出差费用备注 */
171
-    @Excel(name = "管理出差费用备注")
172
-    private String travelRemark;
173
-
174
-    /** 中标服务费备注 */
175
-    @Excel(name = "中标服务费备注")
176
-    private String winRemark;
177
-
178
-    /** 预算附件 */
179
-    @Excel(name = "预算附件")
180
-    private String document;
181
-
182
     /** 外协核算费用 */
190
     /** 外协核算费用 */
183
     @Excel(name = "外协核算费用")
191
     @Excel(name = "外协核算费用")
184
     private BigDecimal outAdjust;
192
     private BigDecimal outAdjust;
185
 
193
 
186
-    /** 核算税费 */
187
-    @Excel(name = "核算税费")
194
+    /** 税费核算 */
195
+    @Excel(name = "税费核算")
188
     private BigDecimal taxAdjust;
196
     private BigDecimal taxAdjust;
189
 
197
 
190
     /** 保函核算费用 */
198
     /** 保函核算费用 */
267
     {
275
     {
268
         return deviceCost;
276
         return deviceCost;
269
     }
277
     }
278
+    public void setSiteCost(BigDecimal siteCost)
279
+    {
280
+        this.siteCost = siteCost;
281
+    }
282
+
283
+    public BigDecimal getSiteCost()
284
+    {
285
+        return siteCost;
286
+    }
287
+    public void setSiteAdjust(BigDecimal siteAdjust)
288
+    {
289
+        this.siteAdjust = siteAdjust;
290
+    }
291
+
292
+    public BigDecimal getSiteAdjust()
293
+    {
294
+        return siteAdjust;
295
+    }
270
     public void setFixCost(BigDecimal fixCost)
296
     public void setFixCost(BigDecimal fixCost)
271
     {
297
     {
272
         this.fixCost = fixCost;
298
         this.fixCost = fixCost;

+ 22
- 10
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcCarApproval.java Просмотреть файл

155
 
155
 
156
     /** 车辆id */
156
     /** 车辆id */
157
     @Excel(name = "车牌号")
157
     @Excel(name = "车牌号")
158
-    private String carNames;
158
+    private String licensePlate;
159
     private String cars;
159
     private String cars;
160
 
160
 
161
     /** 驾驶员id */
161
     /** 驾驶员id */
162
     @Excel(name = "驾驶员")
162
     @Excel(name = "驾驶员")
163
-    private String driverNames;
163
+    private String driverName;
164
     private String drivers;
164
     private String drivers;
165
 
165
 
166
     /** 预计用车成本 */
166
     /** 预计用车成本 */
193
 
193
 
194
     private SysUser dszUser;
194
     private SysUser dszUser;
195
 
195
 
196
+    private SysUser driverUser;
197
+
196
     private SysUser dispatchUser;
198
     private SysUser dispatchUser;
197
 
199
 
198
     private SysDept dept;
200
     private SysDept dept;
274
     {
276
     {
275
         return dszUser;
277
         return dszUser;
276
     }
278
     }
279
+    public void setDriverUser(SysUser driverUser)
280
+    {
281
+        this.driverUser = driverUser;
282
+        this.driverName = driverUser == null ? "" : driverUser.getNickName();
283
+    }
284
+
285
+    public SysUser getDriverUser()
286
+    {
287
+        return dszUser;
288
+    }
277
     public void setDispatchUser(SysUser dispatchUser)
289
     public void setDispatchUser(SysUser dispatchUser)
278
     {
290
     {
279
         this.dispatchUser = dispatchUser;
291
         this.dispatchUser = dispatchUser;
313
     {
325
     {
314
         return cars;
326
         return cars;
315
     }
327
     }
316
-    public void setCarNames(String carNames)
328
+    public void setLicensePlate(String licensePlate)
317
     {
329
     {
318
-        this.carNames = carNames;
330
+        this.licensePlate = licensePlate;
319
     }
331
     }
320
 
332
 
321
-    public String getCarNames()
333
+    public String getLicensePlate()
322
     {
334
     {
323
-        return carNames;
335
+        return licensePlate;
324
     }
336
     }
325
     public void setDrivers(String drivers)
337
     public void setDrivers(String drivers)
326
     {
338
     {
331
     {
343
     {
332
         return drivers;
344
         return drivers;
333
     }
345
     }
334
-    public void setDriverNames(String driverNames)
346
+    public void setDriverName(String driverName)
335
     {
347
     {
336
-        this.driverNames = driverNames;
348
+        this.driverName = driverName;
337
     }
349
     }
338
 
350
 
339
-    public String getDriverNames()
351
+    public String getDriverName()
340
     {
352
     {
341
-        return driverNames;
353
+        return driverName;
342
     }
354
     }
343
     public void setProjectId(String projectId)
355
     public void setProjectId(String projectId)
344
     {
356
     {

+ 5
- 5
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcSafeReport.java Просмотреть файл

31
     /** 公司人员 */
31
     /** 公司人员 */
32
     private String member;
32
     private String member;
33
     @Excel(name = "公司人员")
33
     @Excel(name = "公司人员")
34
-    private String userNames;
34
+    private String userName;
35
 
35
 
36
     /** 临时人员 */
36
     /** 临时人员 */
37
     @Excel(name = "临时人员")
37
     @Excel(name = "临时人员")
102
     {
102
     {
103
         return member;
103
         return member;
104
     }
104
     }
105
-    public void setUserNames(String userNames)
105
+    public void setUserName(String userName)
106
     {
106
     {
107
-        this.userNames = userNames;
107
+        this.userName = userName;
108
     }
108
     }
109
 
109
 
110
-    public String getUserNames()
110
+    public String getUserName()
111
     {
111
     {
112
-        return userNames;
112
+        return userName;
113
     }
113
     }
114
     public void setReportUser(SysUser reportUser)
114
     public void setReportUser(SysUser reportUser)
115
     {
115
     {

+ 1
- 1
oa-back/ruoyi-system/src/main/resources/mapper/file/FilesAchievementMapper.xml Просмотреть файл

51
             <if test="projectId != null  and projectId != ''"> and a.project_id = #{projectId}</if>
51
             <if test="projectId != null  and projectId != ''"> and a.project_id = #{projectId}</if>
52
             <if test="projectNumber != null  and projectNumber != ''"> and p.project_number like concat('%', #{projectNumber}, '%')</if>
52
             <if test="projectNumber != null  and projectNumber != ''"> and p.project_number like concat('%', #{projectNumber}, '%')</if>
53
             <if test="projectName != null  and projectName != ''"> and p.project_name like concat('%', #{projectName}, '%')</if>
53
             <if test="projectName != null  and projectName != ''"> and p.project_name like concat('%', #{projectName}, '%')</if>
54
-            <if test="projectLeader != null  and projectLeader != ''"> and p.project_leader like concat('%', #{projectLeader}, '%')</if>
54
+            <if test="projectLeader != null  and projectLeader != ''"> and p.project_leader = #{projectLeader}</if>
55
             <if test="achiName != null  and achiName != ''"> and a.achi_name like concat('%', #{achiName}, '%')</if>
55
             <if test="achiName != null  and achiName != ''"> and a.achi_name like concat('%', #{achiName}, '%')</if>
56
             <if test="dataYear != null  and dataYear != ''"> and a.data_year like concat('%', #{dataYear}, '%')</if>
56
             <if test="dataYear != null  and dataYear != ''"> and a.data_year like concat('%', #{dataYear}, '%')</if>
57
             <if test="scaleGrade != null  and scaleGrade != ''"> and a.scale_grade like concat('%', #{scaleGrade}, '%')</if>
57
             <if test="scaleGrade != null  and scaleGrade != ''"> and a.scale_grade like concat('%', #{scaleGrade}, '%')</if>

+ 9
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcBudgetMapper.xml Просмотреть файл

49
         <result property="letterAdjust"    column="letter_adjust"    />
49
         <result property="letterAdjust"    column="letter_adjust"    />
50
         <result property="winAdjust"    column="win_adjust"    />
50
         <result property="winAdjust"    column="win_adjust"    />
51
         <result property="travelAdjust"    column="travel_adjust"    />
51
         <result property="travelAdjust"    column="travel_adjust"    />
52
+        <result property="siteCost"    column="site_cost"    />
53
+        <result property="siteAdjust"    column="site_adjust"    />
52
         <result property="procInstId"    column="proc_inst_id"    />
54
         <result property="procInstId"    column="proc_inst_id"    />
53
         <association property="compilerUser"    javaType="SysUser"         resultMap="CompilerResult" />
55
         <association property="compilerUser"    javaType="SysUser"         resultMap="CompilerResult" />
54
         <association property="managerUser"    javaType="SysUser"         resultMap="ManagerResult" />
56
         <association property="managerUser"    javaType="SysUser"         resultMap="ManagerResult" />
85
 
87
 
86
     <sql id="selectCmcBudgetVo">
88
     <sql id="selectCmcBudgetVo">
87
         select b.budget_id, b.project_id, p.project_number, p.project_name, b.staff_cost, b.car_cost, b.device_cost, b.fix_cost, b.settle_expense, b.out_expense, b.business_expense, b.tax_expense,
89
         select b.budget_id, b.project_id, p.project_number, p.project_name, b.staff_cost, b.car_cost, b.device_cost, b.fix_cost, b.settle_expense, b.out_expense, b.business_expense, b.tax_expense,
88
-               b.rent_expense, b.other_expense, b.out_remark, b.business_remark, b.tax_remark, b.rent_remark, b.other_remark, b.direct_expense, b.total_budget, b.compiler,
90
+               b.rent_expense, b.other_expense, b.out_remark, b.business_remark, b.tax_remark, b.rent_remark, b.other_remark, b.direct_expense, b.total_budget, b.compiler, b.site_cost, b.site_adjust,
89
                u.nick_name as compiler_nick_name, b.manager, u1.nick_name as manager_nick_name, b.auditor, u2.nick_name as zjl_nick_name, b.approver, u3.nick_name as dsz_nick_name, b.create_time, b.manager_time, b.zjl_time, b.dsz_time,
91
                u.nick_name as compiler_nick_name, b.manager, u1.nick_name as manager_nick_name, b.auditor, u2.nick_name as zjl_nick_name, b.approver, u3.nick_name as dsz_nick_name, b.create_time, b.manager_time, b.zjl_time, b.dsz_time,
90
                b.manager_comment, b.zjl_comment, b.dsz_comment, b.remark, b.document, b.letter_expense, b.win_expense, b.travel_expense, b.settle_adjust, b.letter_remark, b.travel_remark, b.win_remark,
92
                b.manager_comment, b.zjl_comment, b.dsz_comment, b.remark, b.document, b.letter_expense, b.win_expense, b.travel_expense, b.settle_adjust, b.letter_remark, b.travel_remark, b.win_remark,
91
                b.out_adjust, b.tax_adjust, b.letter_adjust, b.win_adjust, b.travel_adjust, b.proc_inst_id from cmc_budget as b
93
                b.out_adjust, b.tax_adjust, b.letter_adjust, b.win_adjust, b.travel_adjust, b.proc_inst_id from cmc_budget as b
171
             <if test="winAdjust != null">win_adjust,</if>
173
             <if test="winAdjust != null">win_adjust,</if>
172
             <if test="travelAdjust != null">travel_adjust,</if>
174
             <if test="travelAdjust != null">travel_adjust,</if>
173
             <if test="procInstId != null">proc_inst_id,</if>
175
             <if test="procInstId != null">proc_inst_id,</if>
176
+            <if test="siteCost != null">site_cost,</if>
177
+            <if test="siteAdjust != null">site_adjust,</if>
174
             create_time
178
             create_time
175
         </trim>
179
         </trim>
176
         <trim prefix="values (" suffix=")" suffixOverrides=",">
180
         <trim prefix="values (" suffix=")" suffixOverrides=",">
218
             <if test="winAdjust != null">#{winAdjust},</if>
222
             <if test="winAdjust != null">#{winAdjust},</if>
219
             <if test="travelAdjust != null">#{travelAdjust},</if>
223
             <if test="travelAdjust != null">#{travelAdjust},</if>
220
             <if test="procInstId != null">#{procInstId},</if>
224
             <if test="procInstId != null">#{procInstId},</if>
225
+            <if test="siteCost != null">#{siteCost},</if>
226
+            <if test="siteAdjust != null">#{siteAdjust},</if>
221
             sysdate()
227
             sysdate()
222
         </trim>
228
         </trim>
223
     </insert>
229
     </insert>
269
             <if test="winAdjust != null">win_adjust = #{winAdjust},</if>
275
             <if test="winAdjust != null">win_adjust = #{winAdjust},</if>
270
             <if test="travelAdjust != null">travel_adjust = #{travelAdjust},</if>
276
             <if test="travelAdjust != null">travel_adjust = #{travelAdjust},</if>
271
             <if test="procInstId != null">proc_inst_id = #{procInstId},</if>
277
             <if test="procInstId != null">proc_inst_id = #{procInstId},</if>
278
+            <if test="siteCost != null">site_cost = #{siteCost},</if>
279
+            <if test="siteAdjust != null">site_adjust = #{siteAdjust},</if>
272
         </trim>
280
         </trim>
273
         where budget_id = #{budgetId}
281
         where budget_id = #{budgetId}
274
     </update>
282
     </update>

+ 14
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcCarApprovalMapper.xml Просмотреть файл

46
         <association property="unionUser"    javaType="SysUser"         resultMap="UnionUserResult" />
46
         <association property="unionUser"    javaType="SysUser"         resultMap="UnionUserResult" />
47
         <association property="gmUser"    javaType="SysUser"         resultMap="GmUserResult" />
47
         <association property="gmUser"    javaType="SysUser"         resultMap="GmUserResult" />
48
         <association property="dszUser"    javaType="SysUser"         resultMap="DszUserResult" />
48
         <association property="dszUser"    javaType="SysUser"         resultMap="DszUserResult" />
49
+        <association property="driverUser"    javaType="SysUser"         resultMap="DriverUserResult" />
49
         <association property="dispatchUser"    javaType="SysUser"         resultMap="DispatchUserResult" />
50
         <association property="dispatchUser"    javaType="SysUser"         resultMap="DispatchUserResult" />
50
     </resultMap>
51
     </resultMap>
51
 
52
 
84
         <result property="nickName"    column="dispatch_nick_name"    />
85
         <result property="nickName"    column="dispatch_nick_name"    />
85
     </resultMap>
86
     </resultMap>
86
 
87
 
88
+    <resultMap type="SysUser" id="DriverUserResult">
89
+        <result property="userId"    column="user_id"    />
90
+        <result property="nickName"    column="driver_nick_name"    />
91
+    </resultMap>
92
+
87
     <resultMap type="SysDept" id="SysDeptResult">
93
     <resultMap type="SysDept" id="SysDeptResult">
88
         <result property="deptId"    column="dept_id"    />
94
         <result property="deptId"    column="dept_id"    />
89
         <result property="deptName"    column="dept_name"    />
95
         <result property="deptName"    column="dept_name"    />
96
         <result property="undertakingDept"    column="undertaking_dept"    />
102
         <result property="undertakingDept"    column="undertaking_dept"    />
97
     </resultMap>
103
     </resultMap>
98
 
104
 
105
+    <resultMap type="CmcCar" id="CmcCarResult">
106
+        <result property="carId"    column="car_id"    />
107
+        <result property="licensePlate"    column="license_plate"    />
108
+    </resultMap>
109
+
99
     <sql id="selectCmcCarApprovalVo">
110
     <sql id="selectCmcCarApprovalVo">
100
-        select ca.car_apply_id, ca.applier, u.nick_name as applier_nick_name, ca.use_dept, d.dept_name, ca.cars, ca.drivers, ca.project_id, p.project_number, p.project_name, p.undertaking_dept,
111
+        select ca.car_apply_id, ca.applier, u.nick_name as applier_nick_name, ca.use_dept, d.dept_name, ca.cars, c.license_plate, ca.drivers, u7.nick_name as driver_nick_name, ca.project_id, p.project_number, p.project_name, p.undertaking_dept,
101
                ca.apply_reason, ca.passengers, ca.apply_date, ca.begin_date, ca.end_date, ca.days, ca.dept_user_id, u1.nick_name as dept_nick_name, ca.dept_comment, ca.manager_user_id,
112
                ca.apply_reason, ca.passengers, ca.apply_date, ca.begin_date, ca.end_date, ca.days, ca.dept_user_id, u1.nick_name as dept_nick_name, ca.dept_comment, ca.manager_user_id,
102
                u2.nick_name as manager_nick_name, ca.manager_comment, ca.car_usage, ca.union_user_id, u3.nick_name as union_nick_name, ca.union_comment, ca.gm_user_id, u4.nick_name as gm_nick_name,
113
                u2.nick_name as manager_nick_name, ca.manager_comment, ca.car_usage, ca.union_user_id, u3.nick_name as union_nick_name, ca.union_comment, ca.gm_user_id, u4.nick_name as gm_nick_name,
103
                ca.dsz_user_id, u5.nick_name as dsz_nick_name, ca.gm_comment, ca.dsz_comment, ca.dispatcher, u6.nick_name as dispatch_nick_name, ca.dispatch_comment, ca.estimate_cost, ca.dept_time,
114
                ca.dsz_user_id, u5.nick_name as dsz_nick_name, ca.gm_comment, ca.dsz_comment, ca.dispatcher, u6.nick_name as dispatch_nick_name, ca.dispatch_comment, ca.estimate_cost, ca.dept_time,
109
             left join sys_user as u4 on u4.user_id = ca.gm_user_id
120
             left join sys_user as u4 on u4.user_id = ca.gm_user_id
110
             left join sys_user as u5 on u5.user_id = ca.dsz_user_id
121
             left join sys_user as u5 on u5.user_id = ca.dsz_user_id
111
             left join sys_user as u6 on u6.user_id = ca.dispatcher
122
             left join sys_user as u6 on u6.user_id = ca.dispatcher
123
+            left join sys_user as u7 on concat(u7.user_id) = ca.drivers
112
             left join sys_dept as d on d.dept_id = ca.use_dept
124
             left join sys_dept as d on d.dept_id = ca.use_dept
113
             left join cmc_project as p on ca.project_id = p.project_id
125
             left join cmc_project as p on ca.project_id = p.project_id
126
+            left join cmc_car as c on concat(c.car_id) = ca.cars
114
     </sql>
127
     </sql>
115
 
128
 
116
     <select id="selectCmcCarApprovalList" parameterType="CmcCarApproval" resultMap="CmcCarApprovalResult">
129
     <select id="selectCmcCarApprovalList" parameterType="CmcCarApproval" resultMap="CmcCarApprovalResult">

+ 10
- 7
oa-ui/src/views/flowable/form/budget/addBudget.vue Просмотреть файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-06-21 18:51:51
3
  * @Date: 2024-06-21 18:51:51
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2025-12-31 16:41:48
5
+ * @LastEditTime: 2026-01-30 09:28:21
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
52
     <!-- <el-divider><b>直接成本</b></el-divider> -->
52
     <!-- <el-divider><b>直接成本</b></el-divider> -->
53
     <!-- 现场开支 -->
53
     <!-- 现场开支 -->
54
     <site-expenses :budgetId="budgetForm.budgetId" :outer-users="outerUsers" @expensesList="getExpensesList"
54
     <site-expenses :budgetId="budgetForm.budgetId" :outer-users="outerUsers" @expensesList="getExpensesList"
55
-      @siteSum="getSiteSum"></site-expenses>
55
+      @siteCost="getSiteCost"></site-expenses>
56
     <!-- 经营相关 -->
56
     <!-- 经营相关 -->
57
     <other-table ref="otherRef" @otherCost="getOtherCost" :budgetForm="budgetForm" :taskName="taskName"></other-table>
57
     <other-table ref="otherRef" @otherCost="getOtherCost" :budgetForm="budgetForm" :taskName="taskName"></other-table>
58
     <!-- 预算备注 -->
58
     <!-- 预算备注 -->
100
           </tr>
100
           </tr>
101
           <tr>
101
           <tr>
102
             <td>现场开支成本</td>
102
             <td>现场开支成本</td>
103
-            <td style="text-align:right;">{{ isNaN(budgetForm.siteSum) ? 0 : budgetForm.siteSum }}</td>
103
+            <td style="text-align:right;">{{ isNaN(budgetForm.siteCost) ? 0 : budgetForm.siteCost }}</td>
104
           </tr>
104
           </tr>
105
           <tr>
105
           <tr>
106
             <td>经营相关成本</td>
106
             <td>经营相关成本</td>
203
         directExpense: 0,
203
         directExpense: 0,
204
         totalBudget: 0,
204
         totalBudget: 0,
205
         procInstId: "",
205
         procInstId: "",
206
+        siteCost: 0,
206
       },
207
       },
207
       flag: false,
208
       flag: false,
208
       project: {},
209
       project: {},
414
     getExpensesList(val) {
415
     getExpensesList(val) {
415
       this.$set(this.budgetForm, "expensesList", val);
416
       this.$set(this.budgetForm, "expensesList", val);
416
     },
417
     },
417
-    getSiteSum(val) {
418
-      this.$set(this.budgetForm, "siteSum", val);
418
+    getSiteCost(val) {
419
+      this.$set(this.budgetForm, "siteCost", val);
419
     },
420
     },
420
     getDeviceCost(val) {
421
     getDeviceCost(val) {
421
       this.$set(this.budgetForm, "deviceCost", val);
422
       this.$set(this.budgetForm, "deviceCost", val);
456
       const taxExpense = this.safeNumber(this.budgetForm.taxExpense);
457
       const taxExpense = this.safeNumber(this.budgetForm.taxExpense);
457
       const winExpense = this.safeNumber(this.budgetForm.winExpense);
458
       const winExpense = this.safeNumber(this.budgetForm.winExpense);
458
       const travelExpense = this.safeNumber(this.budgetForm.travelExpense);
459
       const travelExpense = this.safeNumber(this.budgetForm.travelExpense);
460
+      const siteCost = this.safeNumber(this.budgetForm.siteCost);
459
       const sum =
461
       const sum =
460
         settleExpense +
462
         settleExpense +
461
         outExpense +
463
         outExpense +
462
         letterExpense +
464
         letterExpense +
463
         taxExpense +
465
         taxExpense +
464
         winExpense +
466
         winExpense +
465
-        travelExpense;
467
+        travelExpense +
468
+        siteCost;
466
       this.budgetForm.directExpense = sum.toFixed(2);
469
       this.budgetForm.directExpense = sum.toFixed(2);
467
     },
470
     },
468
     getTotalBudget() {
471
     getTotalBudget() {
469
       this.budgetForm.totalBudget = (
472
       this.budgetForm.totalBudget = (
470
-        Number(this.budgetForm.staffCost) + Number(this.budgetForm.carCost) + Number(this.budgetForm.deviceCost) + Number(this.budgetForm.siteSum)
473
+        Number(this.budgetForm.staffCost) + Number(this.budgetForm.carCost) + Number(this.budgetForm.deviceCost) + Number(this.budgetForm.siteCost)
471
         + Number(this.budgetForm.outExpense) + Number(this.budgetForm.letterExpense) + Number(this.budgetForm.winExpense) + Number(this.budgetForm.taxExpense)
474
         + Number(this.budgetForm.outExpense) + Number(this.budgetForm.letterExpense) + Number(this.budgetForm.winExpense) + Number(this.budgetForm.taxExpense)
472
         + Number(this.budgetForm.travelExpense)
475
         + Number(this.budgetForm.travelExpense)
473
       ).toFixed(2);
476
       ).toFixed(2);

+ 12
- 8
oa-ui/src/views/flowable/form/budget/adjust/budgetAdjust.vue Просмотреть файл

216
           </tr>
216
           </tr>
217
           <tr>
217
           <tr>
218
             <td>人员成本</td>
218
             <td>人员成本</td>
219
-            <td style="text-align:right;">{{ isNaN(budgetForm.staffCost) ? 0 : Number(budgetForm.staffCost).toFixed(2) }}
219
+            <td style="text-align:right;">{{ isNaN(budgetForm.staffCost) ? 0 : Number(budgetForm.staffCost).toFixed(2)
220
+              }}
220
             </td>
221
             </td>
221
             <td style="text-align:right;">{{ isNaN(checkStaffCost) ? 0 : Number(checkStaffCost).toFixed(2) }}</td>
222
             <td style="text-align:right;">{{ isNaN(checkStaffCost) ? 0 : Number(checkStaffCost).toFixed(2) }}</td>
222
             <td style="text-align:right;">{{ (Number(checkStaffCost) - Number(budgetForm.staffCost)).toFixed(2) }}</td>
223
             <td style="text-align:right;">{{ (Number(checkStaffCost) - Number(budgetForm.staffCost)).toFixed(2) }}</td>
238
           </tr>
239
           </tr>
239
           <tr>
240
           <tr>
240
             <td>现场开支成本</td>
241
             <td>现场开支成本</td>
241
-            <td style="text-align:right;">{{ isNaN(budgetForm.siteSum) ? 0 : Number(budgetForm.siteSum).toFixed(2) }}
242
+            <td style="text-align:right;">{{ isNaN(budgetForm.siteCost) ? 0 : Number(budgetForm.siteCost).toFixed(2) }}
242
             </td>
243
             </td>
243
             <td style="text-align:right;">{{ isNaN(checkSiteCost) ? 0 : Number(checkSiteCost).toFixed(2) }}</td>
244
             <td style="text-align:right;">{{ isNaN(checkSiteCost) ? 0 : Number(checkSiteCost).toFixed(2) }}</td>
244
-            <td style="text-align:right;">{{ (Number(checkSiteCost) - Number(budgetForm.siteSum)).toFixed(2) }}</td>
245
+            <td style="text-align:right;">{{ (Number(checkSiteCost) - Number(budgetForm.siteCost)).toFixed(2) }}</td>
245
           </tr>
246
           </tr>
246
           <tr>
247
           <tr>
247
             <td>经营相关成本</td>
248
             <td>经营相关成本</td>
260
             <td style="text-align:right;"><b>{{ isNaN(budgetForm.totalBudget) ? 0 : budgetForm.totalBudget }}</b></td>
261
             <td style="text-align:right;"><b>{{ isNaN(budgetForm.totalBudget) ? 0 : budgetForm.totalBudget }}</b></td>
261
             <td style="text-align:right;"><b>{{ isNaN(totalBudgetAdjust) ? 0 : totalBudgetAdjust }}</b></td>
262
             <td style="text-align:right;"><b>{{ isNaN(totalBudgetAdjust) ? 0 : totalBudgetAdjust }}</b></td>
262
             <td style="text-align:right;"><b>{{ (Number(totalBudgetAdjust) - Number(budgetForm.totalBudget)).toFixed(2)
263
             <td style="text-align:right;"><b>{{ (Number(totalBudgetAdjust) - Number(budgetForm.totalBudget)).toFixed(2)
263
-            }}</b></td>
264
+                }}</b></td>
264
           </tr>
265
           </tr>
265
         </table>
266
         </table>
266
       </el-descriptions-item>
267
       </el-descriptions-item>
474
   methods: {
475
   methods: {
475
     initBudgetForm() {
476
     initBudgetForm() {
476
       this.loading = true;
477
       this.loading = true;
477
-      listBudget({ pageNum: 1, pageSize: 20, projectId: this.row.projectId, budgetId:this.row.budgetId }).then(async res => {
478
+      listBudget({ pageNum: 1, pageSize: 20, projectId: this.row.projectId, budgetId: this.row.budgetId }).then(async res => {
478
         this.budgetForm = res.rows[0];
479
         this.budgetForm = res.rows[0];
479
         if (this.budgetForm) {
480
         if (this.budgetForm) {
480
           const budgetId = this.budgetForm.budgetId;
481
           const budgetId = this.budgetForm.budgetId;
602
             amount: Number(site.amount).toFixed(2),
603
             amount: Number(site.amount).toFixed(2),
603
             amountAdjust: site.amountAdjust ? Number(site.amountAdjust).toFixed(2) : 0
604
             amountAdjust: site.amountAdjust ? Number(site.amountAdjust).toFixed(2) : 0
604
           }));
605
           }));
605
-          this.budgetForm.siteSum = this.siteList.reduce((sum, site) => sum + Number(site.amount || 0), 0).toFixed(2);
606
+          this.budgetForm.siteCost = this.siteList.reduce((sum, site) => sum + Number(site.amount || 0), 0).toFixed(2);
606
           this.checkSiteCost = this.siteList.reduce((sum, site) => sum + Number(site.amountAdjust || 0), 0).toFixed(2);
607
           this.checkSiteCost = this.siteList.reduce((sum, site) => sum + Number(site.amountAdjust || 0), 0).toFixed(2);
607
 
608
 
608
           // 处理预算外开销
609
           // 处理预算外开销
767
     handleSiteChange(newList) {
768
     handleSiteChange(newList) {
768
       this.siteList = newList;
769
       this.siteList = newList;
769
       this.checkSiteCost = this.siteList.reduce((sum, site) => sum + (Number(site.amountAdjust) || 0), 0).toFixed(2);
770
       this.checkSiteCost = this.siteList.reduce((sum, site) => sum + (Number(site.amountAdjust) || 0), 0).toFixed(2);
771
+      this.budgetForm.siteAdjust = this.checkSiteCost
770
       this.getTotalBudgetAdjust();
772
       this.getTotalBudgetAdjust();
771
     },
773
     },
772
     async updateSiteList() {
774
     async updateSiteList() {
778
         amountAdjust: site.amountAdjust ? Number(site.amountAdjust).toFixed(2) : 0
780
         amountAdjust: site.amountAdjust ? Number(site.amountAdjust).toFixed(2) : 0
779
       }));
781
       }));
780
 
782
 
781
-      this.budgetForm.siteSum = this.siteList.reduce((sum, site) => sum + Number(site.amount || 0), 0).toFixed(2);
783
+      this.budgetForm.siteCost = this.siteList.reduce((sum, site) => sum + Number(site.amount || 0), 0).toFixed(2);
782
       this.checkSiteCost = this.siteList.reduce((sum, site) => sum + Number(site.amountAdjust || 0), 0).toFixed(2);
784
       this.checkSiteCost = this.siteList.reduce((sum, site) => sum + Number(site.amountAdjust || 0), 0).toFixed(2);
785
+      this.budgetForm.siteAdjust = this.checkSiteCost
783
     },
786
     },
784
     // 处理经营相关数据变化
787
     // 处理经营相关数据变化
785
     handleBusinessChange(newData) {
788
     handleBusinessChange(newData) {
1020
     color: #E6A23C;
1023
     color: #E6A23C;
1021
     font-weight: bold;
1024
     font-weight: bold;
1022
   }
1025
   }
1023
-}</style>
1026
+}
1027
+</style>

+ 3
- 3
oa-ui/src/views/flowable/form/budget/adjust/newBudgetInfo.vue Просмотреть файл

392
           </tr>
392
           </tr>
393
           <tr>
393
           <tr>
394
             <td>现场开支成本</td>
394
             <td>现场开支成本</td>
395
-            <td style="text-align:right;">{{ isNaN(budgetForm.siteSum) ? 0 : Number(budgetForm.siteSum).toFixed(2) }}
395
+            <td style="text-align:right;">{{ isNaN(budgetForm.siteCost) ? 0 : Number(budgetForm.siteCost).toFixed(2) }}
396
             </td>
396
             </td>
397
           </tr>
397
           </tr>
398
           <tr>
398
           <tr>
663
               amount: Number(site.amount).toFixed(2),
663
               amount: Number(site.amount).toFixed(2),
664
             };
664
             };
665
           });
665
           });
666
-          this.budgetForm.siteSum = this.siteList.reduce((sum, site) => sum + (Number(site.amount) || 0), 0);
666
+          this.budgetForm.siteCost = this.siteList.reduce((sum, site) => sum + (Number(site.amount) || 0), 0);
667
 
667
 
668
           // 检查内业人员绩效总额是否超过内业绩效总额
668
           // 检查内业人员绩效总额是否超过内业绩效总额
669
           const totalPerformance = this.innerStaffList.reduce((sum, staff) => sum + (Number(staff.performance) || 0), 0);
669
           const totalPerformance = this.innerStaffList.reduce((sum, staff) => sum + (Number(staff.performance) || 0), 0);
864
     updateSiteAmount(site, value) {
864
     updateSiteAmount(site, value) {
865
       site.amount = value;
865
       site.amount = value;
866
       let siteTotal = this.siteList.reduce((sum, site) => sum + (Number(site.amount) || 0), 0);
866
       let siteTotal = this.siteList.reduce((sum, site) => sum + (Number(site.amount) || 0), 0);
867
-      this.budgetForm.siteSum = siteTotal.toFixed(2);
867
+      this.budgetForm.siteCost = siteTotal.toFixed(2);
868
       this.updateTotalJYAmount();
868
       this.updateTotalJYAmount();
869
     },
869
     },
870
     isPerformanceExceeded() {
870
     isPerformanceExceeded() {

+ 1
- 1
oa-ui/src/views/flowable/form/budget/siteExpenses.vue Просмотреть файл

106
   computed: {
106
   computed: {
107
     totalAmount() {
107
     totalAmount() {
108
       let sum = this.expensesList.reduce((sum, item) => sum + (Number(item.amount) || 0), 0);
108
       let sum = this.expensesList.reduce((sum, item) => sum + (Number(item.amount) || 0), 0);
109
-      this.$emit('siteSum', sum.toFixed(2))
109
+      this.$emit('siteCost', sum.toFixed(2))
110
       return sum.toFixed(2);
110
       return sum.toFixed(2);
111
     }
111
     }
112
   },
112
   },

+ 111
- 20
oa-ui/src/views/oa/brand/brandProject.vue Просмотреть файл

2
   <div class="app-container">
2
   <div class="app-container">
3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
       <el-form-item label="项目编号" prop="projectNumber">
4
       <el-form-item label="项目编号" prop="projectNumber">
5
-        <el-input v-model="queryParams.projectNumber" placeholder="请输入项目编号" clearable
6
-          @keyup.enter.native="handleQuery" />
5
+        <el-input v-model="queryParams.projectNumber" placeholder="请输入项目编号" clearable @keyup.enter.native="handleQuery" />
7
       </el-form-item>
6
       </el-form-item>
8
       <el-form-item label="项目名称" prop="projectName">
7
       <el-form-item label="项目名称" prop="projectName">
9
         <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
8
         <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
44
       </el-table-column>
43
       </el-table-column>
45
       <el-table-column label="项目编号" align="center" prop="projectNumber" width="120px" />
44
       <el-table-column label="项目编号" align="center" prop="projectNumber" width="120px" />
46
       <el-table-column label="项目名称" align="center" prop="projectName" />
45
       <el-table-column label="项目名称" align="center" prop="projectName" />
47
-      <el-table-column label="甲方单位" align="center" prop="partyA.partyAName" />
46
+      <el-table-column label="甲方单位" align="center">
47
+        <template slot-scope="scope">
48
+          <span v-if="scope.row.partyA && scope.row.partyA.partyAName == null">
49
+            {{ scope.row.partyAId.split(',').map(id => {
50
+              const partyA = partyAList.find(item => item.partyAId === id);
51
+              return partyA ? partyA.partyAName : '';
52
+            }).filter(Boolean).join(', ') }}
53
+          </span>
54
+          <span v-else-if="scope.row.partyA && scope.row.partyA.partyAName">
55
+            {{ scope.row.partyA.partyAName }}
56
+          </span>
57
+          <span v-else>-</span>
58
+        </template>
59
+      </el-table-column>
48
       <!-- <el-table-column label="甲方单位联系人" align="center" prop="aPerson" />
60
       <!-- <el-table-column label="甲方单位联系人" align="center" prop="aPerson" />
49
       <el-table-column label="甲方单位联系电话" align="center" prop="aPhone" /> -->
61
       <el-table-column label="甲方单位联系电话" align="center" prop="aPhone" /> -->
50
-      <el-table-column label="合作单位" align="center" prop="partner.partnerName" />
62
+      <el-table-column label="合作单位" align="center">
63
+        <template slot-scope="scope">
64
+          <span v-if="scope.row.partner && scope.row.partner.partnerName == null">
65
+            {{ scope.row.partnerId.split(',').map(id => {
66
+              const partner = partnerList.find(item => item.partnerId === id);
67
+              return partner ? partner.partnerName : '';
68
+            }).filter(Boolean).join(', ') }}
69
+          </span>
70
+          <span v-else-if="scope.row.partner && scope.row.partner.partnerName">
71
+            {{ scope.row.partner.partnerName }}
72
+          </span>
73
+          <span v-else>-</span>
74
+        </template>
75
+      </el-table-column>
51
       <!-- <el-table-column label="合作单位联系人" align="center" prop="contactPerson" />
76
       <!-- <el-table-column label="合作单位联系人" align="center" prop="contactPerson" />
52
       <el-table-column label="合作单位联系电话" align="center" prop="telephone" /> -->
77
       <el-table-column label="合作单位联系电话" align="center" prop="telephone" /> -->
53
       <el-table-column label="项目工期" align="center" prop="duration" />
78
       <el-table-column label="项目工期" align="center" prop="duration" />
93
             <template slot="label">
118
             <template slot="label">
94
               甲方单位
119
               甲方单位
95
             </template>
120
             </template>
96
-            <el-form-item prop="partyAId">
97
-              <el-select allow-create v-model="form.partyAId" filterable placeholder="请选择" style="width: 100%;"
98
-                clearable>
99
-                <el-option v-for="item in partyAList" :key="item.value" :label="item.partyAName" :value="item.partyAId">
121
+            <el-form-item label="甲方单位" prop="partyAId">
122
+              <el-select v-model="form.partyAId" multiple filterable placeholder="请选择" disabled style="width: 80%;" clearable>
123
+                <el-option v-for="item in partyAList" :key="item.partyAId" :label="item.partyAName" :value="item.partyAId">
100
                 </el-option>
124
                 </el-option>
101
               </el-select>
125
               </el-select>
126
+              <el-button type="primary" @click="partyAOpen = true">选择单位</el-button>
102
             </el-form-item>
127
             </el-form-item>
103
           </el-descriptions-item>
128
           </el-descriptions-item>
104
           <el-descriptions-item>
129
           <el-descriptions-item>
121
             <template slot="label">
146
             <template slot="label">
122
               合作单位
147
               合作单位
123
             </template>
148
             </template>
124
-            <el-form-item prop="partnerId">
125
-              <el-select allow-create v-model="form.partnerId" filterable placeholder="请选择" style="width: 100%;"
126
-                clearable @change="handleSelectPartner">
149
+            <el-form-item label="合作单位" prop="partnerId">
150
+              <el-select allow-create v-model="form.partnerId" multiple filterable placeholder="请选择" style="width: 80%;" disabled
151
+                clearable>
127
                 <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
152
                 <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
128
                   :value="item.partnerId">
153
                   :value="item.partnerId">
129
                 </el-option>
154
                 </el-option>
130
               </el-select>
155
               </el-select>
156
+              <el-button type="primary" @click="partnerOpen = true">选择单位</el-button>
131
             </el-form-item>
157
             </el-form-item>
132
           </el-descriptions-item>
158
           </el-descriptions-item>
133
           <el-descriptions-item>
159
           <el-descriptions-item>
200
                   value-format="yyyy-MM-dd"></el-date-picker>
226
                   value-format="yyyy-MM-dd"></el-date-picker>
201
               </td>
227
               </td>
202
               <td>
228
               <td>
203
-                <el-input-number v-model="progress.percentage" :controls="false"
204
-                  style="width: 120px"></el-input-number>%
229
+                <el-input-number v-model="progress.percentage" :controls="false" style="width: 120px"></el-input-number>%
205
               </td>
230
               </td>
206
               <td>
231
               <td>
207
                 <el-input v-model="progress.situation" type="textarea"></el-input>
232
                 <el-input v-model="progress.situation" type="textarea"></el-input>
254
         <el-button @click="cancel">取 消</el-button>
279
         <el-button @click="cancel">取 消</el-button>
255
       </div>
280
       </div>
256
     </el-dialog>
281
     </el-dialog>
282
+    <el-dialog title="选择甲方单位" :visible.sync="partyAOpen" width="60%" append-to-body>
283
+      <choose-party-a @confirm="confirmPartyA"></choose-party-a>
284
+    </el-dialog>
285
+    <el-dialog title="选择合作单位" :visible.sync="partnerOpen" width="60%" append-to-body>
286
+      <choose-partner @confirm="confirmPartners"></choose-partner>
287
+    </el-dialog>
257
   </div>
288
   </div>
258
 </template>
289
 </template>
259
 
290
 
264
 import { listBrandPayment, addBrandPayment, delBrandPayment } from "@/api/oa/brand/brandPayment";
295
 import { listBrandPayment, addBrandPayment, delBrandPayment } from "@/api/oa/brand/brandPayment";
265
 import { listBrand, getBrand } from '@/api/oa/brand/brand';
296
 import { listBrand, getBrand } from '@/api/oa/brand/brand';
266
 import { listPartyA } from "@/api/oa/partyA/partyA";
297
 import { listPartyA } from "@/api/oa/partyA/partyA";
298
+import ChoosePartyA from '@/views/flowable/form/components/choosePartyA.vue';
299
+import ChoosePartner from '@/views/flowable/form/components/choosePartner.vue';
267
 
300
 
268
 export default {
301
 export default {
269
   name: "BrandProject",
302
   name: "BrandProject",
303
+  components: {
304
+    ChoosePartyA,
305
+    ChoosePartner
306
+  },
270
   data() {
307
   data() {
271
     return {
308
     return {
272
       baseUrl: process.env.VUE_APP_BASE_API,
309
       baseUrl: process.env.VUE_APP_BASE_API,
297
       title: "",
334
       title: "",
298
       // 是否显示弹出层
335
       // 是否显示弹出层
299
       open: false,
336
       open: false,
337
+      partyAOpen: false,
338
+      partnerOpen: false,
300
       // 查询参数
339
       // 查询参数
301
       queryParams: {
340
       queryParams: {
302
         pageNum: 1,
341
         pageNum: 1,
314
         content: null,
353
         content: null,
315
       },
354
       },
316
       // 表单参数
355
       // 表单参数
317
-      form: {},
356
+      form: {
357
+        partyAId: [],
358
+        partnerId: []
359
+      },
318
       progress: {},
360
       progress: {},
319
       // 表单校验
361
       // 表单校验
320
       rules: {
362
       rules: {
327
     };
369
     };
328
   },
370
   },
329
   created() {
371
   created() {
330
-    this.getList();
331
-    this.getPartnerList();
332
     this.getPartyAList();
372
     this.getPartyAList();
373
+    this.getPartnerList();
374
+    this.getList();
333
   },
375
   },
334
   methods: {
376
   methods: {
335
     /** 查询cmc品牌项目列表 */
377
     /** 查询cmc品牌项目列表 */
358
         })
400
         })
359
       });
401
       });
360
     },
402
     },
403
+    confirmPartyA(val) {
404
+      this.partyAOpen = false
405
+      if (val) {
406
+        this.getPartyAList();
407
+        let ids = []
408
+        val.map(item => {
409
+          ids.push(item.partyAId)
410
+        })
411
+        this.$set(this.form, 'partyAId', ids)
412
+      }
413
+    },
414
+    // 确定合作单位
415
+    confirmPartners(val) {
416
+      this.partnerOpen = false
417
+      if (val) {
418
+        let ids = []
419
+        let contactPerson = []
420
+        let telephone = []
421
+        val.map(item => {
422
+          ids.push(item.partnerId)
423
+          if (item.contactPerson)
424
+            contactPerson.push(item.contactPerson)
425
+          if (item.telephone)
426
+            telephone.push(item.telephone)
427
+        })
428
+        this.$set(this.form, 'contactPerson', contactPerson.join(','));
429
+        this.$set(this.form, 'telephone', telephone.join(','));
430
+        this.form.partnerId = ids
431
+      }
432
+    },
361
     // 取消按钮
433
     // 取消按钮
362
     cancel() {
434
     cancel() {
363
       this.open = false;
435
       this.open = false;
415
         partyA: null,
487
         partyA: null,
416
         aPerson: null,
488
         aPerson: null,
417
         aPhone: null,
489
         aPhone: null,
418
-        partnerId: null,
490
+        partyAId: [],
491
+        partnerId: [],
419
         contactPerson: null,
492
         contactPerson: null,
420
         telephone: null,
493
         telephone: null,
421
         duration: null,
494
         duration: null,
475
         this.approvalDocument = ''
548
         this.approvalDocument = ''
476
       }
549
       }
477
       getBrandProject(projectId).then(response => {
550
       getBrandProject(projectId).then(response => {
478
-        this.form = response.data;
551
+        const data = response.data;
552
+        // 将字符串类型的ID转换为数组
553
+        if (data.partyAId) {
554
+          data.partyAId = Array.isArray(data.partyAId) ? data.partyAId : data.partyAId.split(',');
555
+        } else {
556
+          data.partyAId = [];
557
+        }
558
+        if (data.partnerId) {
559
+          data.partnerId = Array.isArray(data.partnerId) ? data.partnerId : data.partnerId.split(',');
560
+        } else {
561
+          data.partnerId = [];
562
+        }
563
+        this.form = data;
479
         this.open = true;
564
         this.open = true;
480
         this.title = "品牌项目";
565
         this.title = "品牌项目";
481
       });
566
       });
499
     submitForm() {
584
     submitForm() {
500
       this.$refs["form"].validate(valid => {
585
       this.$refs["form"].validate(valid => {
501
         if (valid) {
586
         if (valid) {
587
+          // 准备提交数据,将数组转换为字符串
588
+          const submitData = {
589
+            ...this.form,
590
+            partyAId: Array.isArray(this.form.partyAId) ? this.form.partyAId.join(',') : this.form.partyAId,
591
+            partnerId: Array.isArray(this.form.partnerId) ? this.form.partnerId.join(',') : this.form.partnerId
592
+          };
502
           if (this.form.projectId != null) {
593
           if (this.form.projectId != null) {
503
-            updateBrandProject(this.form).then(response => {
594
+            updateBrandProject(submitData).then(response => {
504
               this.$modal.msgSuccess("修改成功");
595
               this.$modal.msgSuccess("修改成功");
505
               this.open = false;
596
               this.open = false;
506
               this.getList();
597
               this.getList();
507
               this.updateProjectProgressList();
598
               this.updateProjectProgressList();
508
             });
599
             });
509
           } else {
600
           } else {
510
-            addBrandProject(this.form).then(response => {
601
+            addBrandProject(submitData).then(response => {
511
               this.$modal.msgSuccess("新增成功");
602
               this.$modal.msgSuccess("新增成功");
512
               this.open = false;
603
               this.open = false;
513
               this.getList();
604
               this.getList();

+ 8
- 2
oa-ui/src/views/oa/budget/index.vue Просмотреть файл

45
       <el-table-column label="人员成本" align="center" prop="staffCost" />
45
       <el-table-column label="人员成本" align="center" prop="staffCost" />
46
       <el-table-column label="车辆成本" align="center" prop="carCost" />
46
       <el-table-column label="车辆成本" align="center" prop="carCost" />
47
       <el-table-column label="设备成本" align="center" prop="deviceCost" />
47
       <el-table-column label="设备成本" align="center" prop="deviceCost" />
48
+      <el-table-column label="现场开支" align="center" prop="siteCost" />
49
+      <el-table-column label="经营相关" align="center" prop="businessCost">
50
+        <template slot-scope="scope">
51
+          {{ scope.row.outExpense + scope.row.letterExpense + scope.row.winExpense + scope.row.travelExpense + scope.row.taxExpense }}
52
+        </template>
53
+      </el-table-column>
48
       <el-table-column label="预算总额" align="center" prop="totalBudget" />
54
       <el-table-column label="预算总额" align="center" prop="totalBudget" />
49
       <el-table-column label="编制人" align="center" prop="compiler">
55
       <el-table-column label="编制人" align="center" prop="compiler">
50
         <template slot-scope="scope">
56
         <template slot-scope="scope">
159
       },
165
       },
160
       taskForm: {
166
       taskForm: {
161
         formId: '',
167
         formId: '',
162
-        procInsId:'',
163
-        budgetId:'',
168
+        procInsId: '',
169
+        budgetId: '',
164
       },
170
       },
165
       projectList: [],
171
       projectList: [],
166
       queryType: '1',
172
       queryType: '1',

+ 23
- 7
oa-ui/src/views/oa/titles/info.vue Просмотреть файл

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2025-08-15 16:13:32
3
  * @Date: 2025-08-15 16:13:32
4
  * @LastEditors: wrh
4
  * @LastEditors: wrh
5
- * @LastEditTime: 2026-01-22 16:40:59
5
+ * @LastEditTime: 2026-01-23 16:57:18
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
77
 
77
 
78
       <el-table-column label="文件" align="center" prop="publicityFile">
78
       <el-table-column label="文件" align="center" prop="publicityFile">
79
         <template slot-scope="scope">
79
         <template slot-scope="scope">
80
-          <el-link type="primary" @click="reviewWord(`${baseUrl}${scope.row.publicityFile}`)">
80
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.publicityFile}`)">
81
             {{ getFileName(scope.row.publicityFile) }}
81
             {{ getFileName(scope.row.publicityFile) }}
82
           </el-link>
82
           </el-link>
83
           <br>
83
           <br>
84
-          <el-link class="ml20" type="warning" :href="`${baseUrl}${scope.row.publicityFile}`"
84
+          <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + scope.row.publicityFile}`"
85
             :underline="false" target="_blank">
85
             :underline="false" target="_blank">
86
           </el-link>
86
           </el-link>
87
-          <el-link type="primary" @click="reviewWord(`${baseUrl}${scope.row.scanFile}`)">
87
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.scanFile}`)">
88
             {{ getFileName(scope.row.scanFile) }}
88
             {{ getFileName(scope.row.scanFile) }}
89
           </el-link>
89
           </el-link>
90
-          <el-link class="ml20" type="warning" :href="`${baseUrl}${scope.row.scanFile}`"
90
+          <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + scope.row.scanFile}`"
91
             :underline="false" target="_blank">
91
             :underline="false" target="_blank">
92
           </el-link>
92
           </el-link>
93
         </template>
93
         </template>
146
         </el-form-item>
146
         </el-form-item>
147
 
147
 
148
         <el-form-item label="公示红头文件" prop="publicityFile">
148
         <el-form-item label="公示红头文件" prop="publicityFile">
149
-          <file-upload v-model="form.publicityFile" :fileType="['pdf']" />
149
+          <file-upload v-model="form.publicityFile" :filePathName="'职称评审/公示红头文件/' + form.annual + '/' + getUserName(form.userId)" :fileType="['pdf']"
150
+            @input="getPublicityFilePath" />
150
         </el-form-item>
151
         </el-form-item>
151
         <el-form-item label="证书扫描件" prop="scanFile">
152
         <el-form-item label="证书扫描件" prop="scanFile">
152
-          <file-upload v-model="form.scanFile" :fileType="['pdf']" />
153
+          <file-upload v-model="form.scanFile" :filePathName="'职称评审/证书扫描件/' + form.annual + '/' + getUserName(form.userId)" :fileType="['pdf']"
154
+            @input="getScanFilePath" />
153
         </el-form-item>
155
         </el-form-item>
154
         <el-form-item label="证书取得时间" prop="obtainTime">
156
         <el-form-item label="证书取得时间" prop="obtainTime">
155
           <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
157
           <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
288
       this.open = false;
290
       this.open = false;
289
       this.reset();
291
       this.reset();
290
     },
292
     },
293
+    getPublicityFilePath(val) {
294
+      let arr = val.split('/upload')
295
+      this.form.publicityFile = arr[1]
296
+      if (val == "") {
297
+        this.form.publicityFile = ""
298
+      }
299
+    },
300
+    getScanFilePath(val) {
301
+      let arr = val.split('/upload')
302
+      this.form.scanFile = arr[1]
303
+      if (val == "") {
304
+        this.form.scanFile = ""
305
+      }
306
+    },
291
     // 表单重置
307
     // 表单重置
292
     reset() {
308
     reset() {
293
       this.form = {
309
       this.form = {

+ 18
- 2
oa-ui/src/views/oa/titles/record.vue Просмотреть файл

156
         </el-form-item>
156
         </el-form-item>
157
         <template v-if="form.isApproved == '1'">
157
         <template v-if="form.isApproved == '1'">
158
           <el-form-item label="公示红头文件" prop="publicityFile">
158
           <el-form-item label="公示红头文件" prop="publicityFile">
159
-            <file-upload v-model="form.publicityFile" :fileType="['pdf']" />
159
+            <file-upload v-model="form.publicityFile" :filePathName="'职称评审/公示红头文件/' + form.annual + '/' + getUserName(form.userId)" :fileType="['pdf']"
160
+              @input="getPublicityFilePath" />
160
           </el-form-item>
161
           </el-form-item>
161
           <el-form-item label="证书扫描件" prop="scanFile">
162
           <el-form-item label="证书扫描件" prop="scanFile">
162
-            <file-upload v-model="form.scanFile" :fileType="['pdf']" />
163
+            <file-upload v-model="form.scanFile" :filePathName="'职称评审/证书扫描件/' + form.annual + '/' + getUserName(form.userId)" :fileType="['pdf']"
164
+              @input="getScanFilePath" />
163
           </el-form-item>
165
           </el-form-item>
164
           <el-form-item label="证书取得时间" prop="obtainTime">
166
           <el-form-item label="证书取得时间" prop="obtainTime">
165
             <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
167
             <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
276
       this.open = false;
278
       this.open = false;
277
       this.reset();
279
       this.reset();
278
     },
280
     },
281
+    getPublicityFilePath(val) {
282
+      let arr = val.split('/upload')
283
+      this.form.publicityFile = arr[1]
284
+      if (val == "") {
285
+        this.form.publicityFile = ""
286
+      }
287
+    },
288
+    getScanFilePath(val) {
289
+      let arr = val.split('/upload')
290
+      this.form.scanFile = arr[1]
291
+      if (val == "") {
292
+        this.form.scanFile = ""
293
+      }
294
+    },
279
     // 表单重置
295
     // 表单重置
280
     reset() {
296
     reset() {
281
       this.form = {
297
       this.form = {

+ 6
- 1
oa-ui/src/views/oa/transfer/transferTab.vue Просмотреть файл

138
   computed: {
138
   computed: {
139
   },
139
   },
140
   watch: {
140
   watch: {
141
-
141
+    taskForm: {
142
+      handler() {
143
+        this.initForm();
144
+      },
145
+      deep: true
146
+    }
142
   },
147
   },
143
   data() {
148
   data() {
144
     return {
149
     return {

Загрузка…
Отмена
Сохранить