lamphua před 2 dny
rodič
revize
905851dbd5
30 změnil soubory, kde provedl 456 přidání a 202 odebrání
  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 Zobrazit soubor

@@ -230,24 +230,27 @@ public class FilesProjectController extends BaseController {
230 230
         startPage();
231 231
         return getDataTable(cmcProjectService.selectCmcProjectByProjectNumbers(cmcProject));
232 232
     }
233
+
233 234
     public String deptIdToName(CmcProject cmcProject) {
234 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 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 243
         return cmcProject.getUndertakingDeptName();
242 244
     }
243 245
 
244 246
     public String inspectorIdToName(CmcProject cmcProject) {
245 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 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 255
         return cmcProject.getQualityInspectorName();
253 256
     }

+ 27
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcBrandProjectController.java Zobrazit soubor

@@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse;
7 7
 import com.ruoyi.common.utils.SnowFlake;
8 8
 import com.ruoyi.oa.domain.CmcPartner;
9 9
 import com.ruoyi.oa.domain.CmcPartyA;
10
+import com.ruoyi.oa.domain.CmcProject;
10 11
 import com.ruoyi.oa.service.ICmcPartnerService;
11 12
 import com.ruoyi.oa.service.ICmcPartyAService;
12 13
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,10 +66,36 @@ public class CmcBrandProjectController extends BaseController
65 66
     public void export(HttpServletResponse response, CmcBrandProject cmcBrandProject)
66 67
     {
67 68
         List<CmcBrandProject> list = cmcBrandProjectService.selectCmcBrandProjectList(cmcBrandProject);
69
+        for (CmcBrandProject brandProject : list) {
70
+            partyAIdToName(brandProject);
71
+            partnerIdToName(brandProject);
72
+        }
68 73
         ExcelUtil<CmcBrandProject> util = new ExcelUtil<CmcBrandProject>(CmcBrandProject.class);
69 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 100
      * 获取cmc品牌项目详细信息
74 101
      */

+ 16
- 12
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcCarApprovalController.java Zobrazit soubor

@@ -52,18 +52,20 @@ public class CmcCarApprovalController extends BaseController
52 52
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
53 53
         for(CmcCarApproval carApproval : list) {
54 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 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 62
             String driverIds = carApproval.getDrivers();
63
+            String driverName = carApproval.getDriverName();
62 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 66
                 for (String driverId : driverIds.split(","))
65 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 71
         return getDataTable(list);
@@ -79,18 +81,20 @@ public class CmcCarApprovalController extends BaseController
79 81
         List<CmcCarApproval> list = cmcCarApprovalService.selectCmcCarApprovalList(cmcCarApproval);
80 82
         for(CmcCarApproval carApproval : list) {
81 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 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 91
             String driverIds = carApproval.getDrivers();
92
+            String driverName = carApproval.getDriverName();
89 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 95
                 for (String driverId : driverIds.split(","))
92 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 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 Zobrazit soubor

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

+ 28
- 29
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcManageDeptController.java Zobrazit soubor

@@ -3,6 +3,7 @@ package com.ruoyi.web.controller.oa;
3 3
 import java.util.List;
4 4
 import javax.servlet.http.HttpServletResponse;
5 5
 
6
+import com.ruoyi.oa.domain.CmcBrandProject;
6 7
 import com.ruoyi.oa.domain.CmcProject;
7 8
 import com.ruoyi.oa.service.ICmcPartyAService;
8 9
 import com.ruoyi.system.service.ISysDeptService;
@@ -41,7 +42,7 @@ public class CmcManageDeptController extends BaseController
41 42
     private ISysDeptService deptService;
42 43
 
43 44
     @Autowired
44
-    private ICmcPartyAService partyAService;
45
+    private ICmcPartyAService cmcPartyAService;
45 46
 
46 47
     /**
47 48
      * 查询cmc领导分管列表
@@ -52,20 +53,8 @@ public class CmcManageDeptController extends BaseController
52 53
         startPage();
53 54
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
54 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 59
         return getDataTable(list);
71 60
     }
@@ -79,25 +68,35 @@ public class CmcManageDeptController extends BaseController
79 68
     {
80 69
         List<CmcManageDept> list = cmcManageDeptService.selectCmcManageDeptList(cmcManageDept);
81 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 74
         ExcelUtil<CmcManageDept> util = new ExcelUtil<CmcManageDept>(CmcManageDept.class);
98 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 101
      * 获取cmc领导分管详细信息
103 102
      */

+ 5
- 4
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcOutsourceController.java Zobrazit soubor

@@ -107,11 +107,12 @@ public class CmcOutsourceController extends BaseController
107 107
 
108 108
     public void partnerIdToName(CmcOutsource cmcOutsource) {
109 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 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 Zobrazit soubor

@@ -70,11 +70,12 @@ public class CmcProjectCommentController extends BaseController
70 70
         CmcProjectComment cmcProjectComment = cmcProjectCommentService.selectCmcProjectCommentByProjectId(projectId);
71 71
         if (cmcProjectComment != null) {
72 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 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 81
         return success(cmcProjectComment);

+ 15
- 14
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectController.java Zobrazit soubor

@@ -87,7 +87,7 @@ public class CmcProjectController extends BaseController
87 87
             list = cmcProjectService.selectCmcProjectList(cmcProject);
88 88
         for (CmcProject project : list) {
89 89
             project.setUndertakingDeptName(deptIdToName(project));
90
-            project.setQualityInspectorName(inspectorIdToName(project));
90
+            inspectorIdToName(project);
91 91
             CmcContract contract = joinContract(project);
92 92
             project.setContractCode(contract.getContractCode());
93 93
             project.setContractNumber(contract.getContractNumber());
@@ -106,7 +106,7 @@ public class CmcProjectController extends BaseController
106 106
         List<CmcProject> list = cmcProjectService.selectCmcProjectListFuzzy(cmcProject);
107 107
         for (CmcProject project : list) {
108 108
             project.setUndertakingDeptName(deptIdToName(project));
109
-            project.setQualityInspectorName(inspectorIdToName(project));
109
+            inspectorIdToName(project);
110 110
             CmcContract contract = joinContract(project);
111 111
             project.setContractCode(contract.getContractCode());
112 112
             project.setContractNumber(contract.getContractNumber());
@@ -133,7 +133,7 @@ public class CmcProjectController extends BaseController
133 133
         }
134 134
         for (CmcProject project : list) {
135 135
             project.setUndertakingDeptName(deptIdToName(project));
136
-            project.setQualityInspectorName(inspectorIdToName(project));
136
+            inspectorIdToName(project);
137 137
             CmcContract contract = joinContract(project);
138 138
             project.setContractCode(contract.getContractCode());
139 139
             project.setContractNumber(contract.getContractNumber());
@@ -152,7 +152,7 @@ public class CmcProjectController extends BaseController
152 152
         CmcProject cmcProject = cmcProjectService.selectCmcProjectByProjectId(projectId);
153 153
         if (cmcProject != null) {
154 154
             cmcProject.setUndertakingDeptName(deptIdToName(cmcProject));
155
-            cmcProject.setQualityInspectorName(inspectorIdToName(cmcProject));
155
+            inspectorIdToName(cmcProject);
156 156
             CmcContract contract = joinContract(cmcProject);
157 157
             cmcProject.setContractCode(contract.getContractCode());
158 158
             cmcProject.setContractNumber(contract.getContractNumber());
@@ -400,24 +400,25 @@ public class CmcProjectController extends BaseController
400 400
 
401 401
     public String deptIdToName(CmcProject cmcProject) {
402 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 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 410
         return cmcProject.getUndertakingDeptName();
410 411
     }
411 412
 
412
-    public String inspectorIdToName(CmcProject cmcProject) {
413
+    public void inspectorIdToName(CmcProject cmcProject) {
413 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 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 424
     public CmcContract joinContract(CmcProject cmcProject) {

+ 14
- 14
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcSafeReportController.java Zobrazit soubor

@@ -3,6 +3,7 @@ package com.ruoyi.web.controller.oa;
3 3
 import java.util.List;
4 4
 import javax.servlet.http.HttpServletResponse;
5 5
 
6
+import com.ruoyi.oa.domain.CmcOutsource;
6 7
 import com.ruoyi.system.service.ISysUserService;
7 8
 import org.springframework.beans.factory.annotation.Autowired;
8 9
 import org.springframework.web.bind.annotation.GetMapping;
@@ -47,13 +48,7 @@ public class CmcSafeReportController extends BaseController
47 48
         startPage();
48 49
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
49 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 53
         return getDataTable(list);
59 54
     }
@@ -67,13 +62,7 @@ public class CmcSafeReportController extends BaseController
67 62
     {
68 63
         List<CmcSafeReport> list = cmcSafeReportService.selectCmcSafeReportList(cmcSafeReport);
69 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 67
         ExcelUtil<CmcSafeReport> util = new ExcelUtil<CmcSafeReport>(CmcSafeReport.class);
79 68
         util.exportExcel(response, list, "安全汇报数据");
@@ -117,4 +106,15 @@ public class CmcSafeReportController extends BaseController
117 106
     {
118 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 Zobrazit soubor

@@ -60,11 +60,12 @@ public class CmcTechnicalPlanController extends BaseController
60 60
         List<CmcTechnicalPlan> list = cmcTechnicalPlanService.selectCmcTechnicalPlanList(cmcTechnicalPlan);
61 61
         for (CmcTechnicalPlan technical : list) {
62 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 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 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 Zobrazit soubor

@@ -23,8 +23,6 @@ import io.milvus.v2.service.vector.request.SearchReq;
23 23
 import io.milvus.v2.service.vector.request.data.BaseVector;
24 24
 import io.milvus.v2.service.vector.request.data.FloatVec;
25 25
 import io.milvus.v2.service.vector.response.SearchResp;
26
-import org.apache.poi.extractor.ExtractorFactory;
27
-import org.apache.poi.extractor.POITextExtractor;
28 26
 import org.apache.poi.hwpf.HWPFDocument;
29 27
 import org.apache.poi.hwpf.usermodel.Paragraph;
30 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 Zobrazit soubor

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

+ 5
- 0
oa-back/ruoyi-system/pom.xml Zobrazit soubor

@@ -69,6 +69,11 @@
69 69
             <version>2.6.2</version>
70 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 77
     </dependencies>
73 78
 
74 79
 </project>

+ 0
- 2
oa-back/ruoyi-system/src/main/java/com/ruoyi/llm/service/impl/CmcAgentServiceImpl.java Zobrazit soubor

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

+ 18
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBrandProject.java Zobrazit soubor

@@ -123,6 +123,15 @@ public class CmcBrandProject extends BaseEntity
123 123
     {
124 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 135
     public void setPartyA(CmcPartyA partyA)
127 136
     {
128 137
         this.partyA = partyA;
@@ -160,6 +169,15 @@ public class CmcBrandProject extends BaseEntity
160 169
     {
161 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 181
     public void setPartner(CmcPartner partner)
164 182
     {
165 183
         this.partner = partner;

+ 62
- 36
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcBudget.java Zobrazit soubor

@@ -35,7 +35,7 @@ public class CmcBudget extends BaseEntity
35 35
     private BigDecimal totalBudget;
36 36
 
37 37
     /** 间接成本 */
38
-    @Excel(name = "间接成本")
38
+//    @Excel(name = "间接成本")
39 39
     private BigDecimal fixCost;
40 40
 
41 41
     /** 人员成本 */
@@ -50,8 +50,12 @@ public class CmcBudget extends BaseEntity
50 50
     @Excel(name = "设备成本")
51 51
     private BigDecimal deviceCost;
52 52
 
53
+    /** 现场开支 */
54
+    @Excel(name = "现场开支")
55
+    private BigDecimal siteCost;
56
+
53 57
     /** 直接成本 */
54
-    @Excel(name = "直接成本")
58
+//    @Excel(name = "直接成本")
55 59
     private BigDecimal directExpense;
56 60
 
57 61
     /** 预结算额 */
@@ -67,11 +71,11 @@ public class CmcBudget extends BaseEntity
67 71
     private String outRemark;
68 72
 
69 73
     /** 经营费用 */
70
-    @Excel(name = "经营费用")
74
+//    @Excel(name = "经营费用")
71 75
     private BigDecimal businessExpense;
72 76
 
73 77
     /** 经营管理备注 */
74
-    @Excel(name = "经营管理备注")
78
+//    @Excel(name = "经营管理备注")
75 79
     private String businessRemark;
76 80
 
77 81
     /** 税费成本 */
@@ -82,20 +86,44 @@ public class CmcBudget extends BaseEntity
82 86
     @Excel(name = "税费备注")
83 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 115
     private BigDecimal rentExpense;
88 116
 
89 117
     /** 车船租赁备注 */
90
-    @Excel(name = "车船租赁备注")
118
+//    @Excel(name = "车船租赁备注")
91 119
     private String rentRemark;
92 120
 
93 121
     /** 其他费用 */
94
-    @Excel(name = "其他费用")
122
+//    @Excel(name = "其他费用")
95 123
     private BigDecimal otherExpense;
96 124
 
97 125
     /** 其他费用备注 */
98
-    @Excel(name = "其他费用备注")
126
+//    @Excel(name = "其他费用备注")
99 127
     private String otherRemark;
100 128
 
101 129
     /** 编制人 */
@@ -147,44 +175,24 @@ public class CmcBudget extends BaseEntity
147 175
     @Excel(name = "董事长批准时间", width = 30, dateFormat = "yyyy-MM-dd")
148 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 187
     @Excel(name = "内业核算绩效总额")
164 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 191
     @Excel(name = "外协核算费用")
184 192
     private BigDecimal outAdjust;
185 193
 
186
-    /** 核算税费 */
187
-    @Excel(name = "核算税费")
194
+    /** 税费核算 */
195
+    @Excel(name = "税费核算")
188 196
     private BigDecimal taxAdjust;
189 197
 
190 198
     /** 保函核算费用 */
@@ -267,6 +275,24 @@ public class CmcBudget extends BaseEntity
267 275
     {
268 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 296
     public void setFixCost(BigDecimal fixCost)
271 297
     {
272 298
         this.fixCost = fixCost;

+ 22
- 10
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcCarApproval.java Zobrazit soubor

@@ -155,12 +155,12 @@ public class CmcCarApproval extends BaseEntity
155 155
 
156 156
     /** 车辆id */
157 157
     @Excel(name = "车牌号")
158
-    private String carNames;
158
+    private String licensePlate;
159 159
     private String cars;
160 160
 
161 161
     /** 驾驶员id */
162 162
     @Excel(name = "驾驶员")
163
-    private String driverNames;
163
+    private String driverName;
164 164
     private String drivers;
165 165
 
166 166
     /** 预计用车成本 */
@@ -193,6 +193,8 @@ public class CmcCarApproval extends BaseEntity
193 193
 
194 194
     private SysUser dszUser;
195 195
 
196
+    private SysUser driverUser;
197
+
196 198
     private SysUser dispatchUser;
197 199
 
198 200
     private SysDept dept;
@@ -274,6 +276,16 @@ public class CmcCarApproval extends BaseEntity
274 276
     {
275 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 289
     public void setDispatchUser(SysUser dispatchUser)
278 290
     {
279 291
         this.dispatchUser = dispatchUser;
@@ -313,14 +325,14 @@ public class CmcCarApproval extends BaseEntity
313 325
     {
314 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 337
     public void setDrivers(String drivers)
326 338
     {
@@ -331,14 +343,14 @@ public class CmcCarApproval extends BaseEntity
331 343
     {
332 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 355
     public void setProjectId(String projectId)
344 356
     {

+ 5
- 5
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcSafeReport.java Zobrazit soubor

@@ -31,7 +31,7 @@ public class CmcSafeReport extends BaseEntity
31 31
     /** 公司人员 */
32 32
     private String member;
33 33
     @Excel(name = "公司人员")
34
-    private String userNames;
34
+    private String userName;
35 35
 
36 36
     /** 临时人员 */
37 37
     @Excel(name = "临时人员")
@@ -102,14 +102,14 @@ public class CmcSafeReport extends BaseEntity
102 102
     {
103 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 114
     public void setReportUser(SysUser reportUser)
115 115
     {

+ 1
- 1
oa-back/ruoyi-system/src/main/resources/mapper/file/FilesAchievementMapper.xml Zobrazit soubor

@@ -51,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
51 51
             <if test="projectId != null  and projectId != ''"> and a.project_id = #{projectId}</if>
52 52
             <if test="projectNumber != null  and projectNumber != ''"> and p.project_number like concat('%', #{projectNumber}, '%')</if>
53 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 55
             <if test="achiName != null  and achiName != ''"> and a.achi_name like concat('%', #{achiName}, '%')</if>
56 56
             <if test="dataYear != null  and dataYear != ''"> and a.data_year like concat('%', #{dataYear}, '%')</if>
57 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 Zobrazit soubor

@@ -49,6 +49,8 @@
49 49
         <result property="letterAdjust"    column="letter_adjust"    />
50 50
         <result property="winAdjust"    column="win_adjust"    />
51 51
         <result property="travelAdjust"    column="travel_adjust"    />
52
+        <result property="siteCost"    column="site_cost"    />
53
+        <result property="siteAdjust"    column="site_adjust"    />
52 54
         <result property="procInstId"    column="proc_inst_id"    />
53 55
         <association property="compilerUser"    javaType="SysUser"         resultMap="CompilerResult" />
54 56
         <association property="managerUser"    javaType="SysUser"         resultMap="ManagerResult" />
@@ -85,7 +87,7 @@
85 87
 
86 88
     <sql id="selectCmcBudgetVo">
87 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 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 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 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,6 +173,8 @@
171 173
             <if test="winAdjust != null">win_adjust,</if>
172 174
             <if test="travelAdjust != null">travel_adjust,</if>
173 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 178
             create_time
175 179
         </trim>
176 180
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -218,6 +222,8 @@
218 222
             <if test="winAdjust != null">#{winAdjust},</if>
219 223
             <if test="travelAdjust != null">#{travelAdjust},</if>
220 224
             <if test="procInstId != null">#{procInstId},</if>
225
+            <if test="siteCost != null">#{siteCost},</if>
226
+            <if test="siteAdjust != null">#{siteAdjust},</if>
221 227
             sysdate()
222 228
         </trim>
223 229
     </insert>
@@ -269,6 +275,8 @@
269 275
             <if test="winAdjust != null">win_adjust = #{winAdjust},</if>
270 276
             <if test="travelAdjust != null">travel_adjust = #{travelAdjust},</if>
271 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 280
         </trim>
273 281
         where budget_id = #{budgetId}
274 282
     </update>

+ 14
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcCarApprovalMapper.xml Zobrazit soubor

@@ -46,6 +46,7 @@
46 46
         <association property="unionUser"    javaType="SysUser"         resultMap="UnionUserResult" />
47 47
         <association property="gmUser"    javaType="SysUser"         resultMap="GmUserResult" />
48 48
         <association property="dszUser"    javaType="SysUser"         resultMap="DszUserResult" />
49
+        <association property="driverUser"    javaType="SysUser"         resultMap="DriverUserResult" />
49 50
         <association property="dispatchUser"    javaType="SysUser"         resultMap="DispatchUserResult" />
50 51
     </resultMap>
51 52
 
@@ -84,6 +85,11 @@
84 85
         <result property="nickName"    column="dispatch_nick_name"    />
85 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 93
     <resultMap type="SysDept" id="SysDeptResult">
88 94
         <result property="deptId"    column="dept_id"    />
89 95
         <result property="deptName"    column="dept_name"    />
@@ -96,8 +102,13 @@
96 102
         <result property="undertakingDept"    column="undertaking_dept"    />
97 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 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 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 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 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,8 +120,10 @@
109 120
             left join sys_user as u4 on u4.user_id = ca.gm_user_id
110 121
             left join sys_user as u5 on u5.user_id = ca.dsz_user_id
111 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 124
             left join sys_dept as d on d.dept_id = ca.use_dept
113 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 127
     </sql>
115 128
 
116 129
     <select id="selectCmcCarApprovalList" parameterType="CmcCarApproval" resultMap="CmcCarApprovalResult">

+ 10
- 7
oa-ui/src/views/flowable/form/budget/addBudget.vue Zobrazit soubor

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

+ 12
- 8
oa-ui/src/views/flowable/form/budget/adjust/budgetAdjust.vue Zobrazit soubor

@@ -216,7 +216,8 @@
216 216
           </tr>
217 217
           <tr>
218 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 221
             </td>
221 222
             <td style="text-align:right;">{{ isNaN(checkStaffCost) ? 0 : Number(checkStaffCost).toFixed(2) }}</td>
222 223
             <td style="text-align:right;">{{ (Number(checkStaffCost) - Number(budgetForm.staffCost)).toFixed(2) }}</td>
@@ -238,10 +239,10 @@
238 239
           </tr>
239 240
           <tr>
240 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 243
             </td>
243 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 246
           </tr>
246 247
           <tr>
247 248
             <td>经营相关成本</td>
@@ -260,7 +261,7 @@
260 261
             <td style="text-align:right;"><b>{{ isNaN(budgetForm.totalBudget) ? 0 : budgetForm.totalBudget }}</b></td>
261 262
             <td style="text-align:right;"><b>{{ isNaN(totalBudgetAdjust) ? 0 : totalBudgetAdjust }}</b></td>
262 263
             <td style="text-align:right;"><b>{{ (Number(totalBudgetAdjust) - Number(budgetForm.totalBudget)).toFixed(2)
263
-            }}</b></td>
264
+                }}</b></td>
264 265
           </tr>
265 266
         </table>
266 267
       </el-descriptions-item>
@@ -474,7 +475,7 @@ export default {
474 475
   methods: {
475 476
     initBudgetForm() {
476 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 479
         this.budgetForm = res.rows[0];
479 480
         if (this.budgetForm) {
480 481
           const budgetId = this.budgetForm.budgetId;
@@ -602,7 +603,7 @@ export default {
602 603
             amount: Number(site.amount).toFixed(2),
603 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 607
           this.checkSiteCost = this.siteList.reduce((sum, site) => sum + Number(site.amountAdjust || 0), 0).toFixed(2);
607 608
 
608 609
           // 处理预算外开销
@@ -767,6 +768,7 @@ export default {
767 768
     handleSiteChange(newList) {
768 769
       this.siteList = newList;
769 770
       this.checkSiteCost = this.siteList.reduce((sum, site) => sum + (Number(site.amountAdjust) || 0), 0).toFixed(2);
771
+      this.budgetForm.siteAdjust = this.checkSiteCost
770 772
       this.getTotalBudgetAdjust();
771 773
     },
772 774
     async updateSiteList() {
@@ -778,8 +780,9 @@ export default {
778 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 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 788
     handleBusinessChange(newData) {
@@ -1020,4 +1023,5 @@ table {
1020 1023
     color: #E6A23C;
1021 1024
     font-weight: bold;
1022 1025
   }
1023
-}</style>
1026
+}
1027
+</style>

+ 3
- 3
oa-ui/src/views/flowable/form/budget/adjust/newBudgetInfo.vue Zobrazit soubor

@@ -392,7 +392,7 @@
392 392
           </tr>
393 393
           <tr>
394 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 396
             </td>
397 397
           </tr>
398 398
           <tr>
@@ -663,7 +663,7 @@ export default {
663 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 669
           const totalPerformance = this.innerStaffList.reduce((sum, staff) => sum + (Number(staff.performance) || 0), 0);
@@ -864,7 +864,7 @@ export default {
864 864
     updateSiteAmount(site, value) {
865 865
       site.amount = value;
866 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 868
       this.updateTotalJYAmount();
869 869
     },
870 870
     isPerformanceExceeded() {

+ 1
- 1
oa-ui/src/views/flowable/form/budget/siteExpenses.vue Zobrazit soubor

@@ -106,7 +106,7 @@ export default {
106 106
   computed: {
107 107
     totalAmount() {
108 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 110
       return sum.toFixed(2);
111 111
     }
112 112
   },

+ 111
- 20
oa-ui/src/views/oa/brand/brandProject.vue Zobrazit soubor

@@ -2,8 +2,7 @@
2 2
   <div class="app-container">
3 3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 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 6
       </el-form-item>
8 7
       <el-form-item label="项目名称" prop="projectName">
9 8
         <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
@@ -44,10 +43,36 @@
44 43
       </el-table-column>
45 44
       <el-table-column label="项目编号" align="center" prop="projectNumber" width="120px" />
46 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 60
       <!-- <el-table-column label="甲方单位联系人" align="center" prop="aPerson" />
49 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 76
       <!-- <el-table-column label="合作单位联系人" align="center" prop="contactPerson" />
52 77
       <el-table-column label="合作单位联系电话" align="center" prop="telephone" /> -->
53 78
       <el-table-column label="项目工期" align="center" prop="duration" />
@@ -93,12 +118,12 @@
93 118
             <template slot="label">
94 119
               甲方单位
95 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 124
                 </el-option>
101 125
               </el-select>
126
+              <el-button type="primary" @click="partyAOpen = true">选择单位</el-button>
102 127
             </el-form-item>
103 128
           </el-descriptions-item>
104 129
           <el-descriptions-item>
@@ -121,13 +146,14 @@
121 146
             <template slot="label">
122 147
               合作单位
123 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 152
                 <el-option v-for="item in partnerList" :key="item.value" :label="item.partnerName"
128 153
                   :value="item.partnerId">
129 154
                 </el-option>
130 155
               </el-select>
156
+              <el-button type="primary" @click="partnerOpen = true">选择单位</el-button>
131 157
             </el-form-item>
132 158
           </el-descriptions-item>
133 159
           <el-descriptions-item>
@@ -200,8 +226,7 @@
200 226
                   value-format="yyyy-MM-dd"></el-date-picker>
201 227
               </td>
202 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 230
               </td>
206 231
               <td>
207 232
                 <el-input v-model="progress.situation" type="textarea"></el-input>
@@ -254,6 +279,12 @@
254 279
         <el-button @click="cancel">取 消</el-button>
255 280
       </div>
256 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 288
   </div>
258 289
 </template>
259 290
 
@@ -264,9 +295,15 @@ import { listPartner, getPartner } from "@/api/oa/partner/partner";
264 295
 import { listBrandPayment, addBrandPayment, delBrandPayment } from "@/api/oa/brand/brandPayment";
265 296
 import { listBrand, getBrand } from '@/api/oa/brand/brand';
266 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 301
 export default {
269 302
   name: "BrandProject",
303
+  components: {
304
+    ChoosePartyA,
305
+    ChoosePartner
306
+  },
270 307
   data() {
271 308
     return {
272 309
       baseUrl: process.env.VUE_APP_BASE_API,
@@ -297,6 +334,8 @@ export default {
297 334
       title: "",
298 335
       // 是否显示弹出层
299 336
       open: false,
337
+      partyAOpen: false,
338
+      partnerOpen: false,
300 339
       // 查询参数
301 340
       queryParams: {
302 341
         pageNum: 1,
@@ -314,7 +353,10 @@ export default {
314 353
         content: null,
315 354
       },
316 355
       // 表单参数
317
-      form: {},
356
+      form: {
357
+        partyAId: [],
358
+        partnerId: []
359
+      },
318 360
       progress: {},
319 361
       // 表单校验
320 362
       rules: {
@@ -327,9 +369,9 @@ export default {
327 369
     };
328 370
   },
329 371
   created() {
330
-    this.getList();
331
-    this.getPartnerList();
332 372
     this.getPartyAList();
373
+    this.getPartnerList();
374
+    this.getList();
333 375
   },
334 376
   methods: {
335 377
     /** 查询cmc品牌项目列表 */
@@ -358,6 +400,36 @@ export default {
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 434
     cancel() {
363 435
       this.open = false;
@@ -415,7 +487,8 @@ export default {
415 487
         partyA: null,
416 488
         aPerson: null,
417 489
         aPhone: null,
418
-        partnerId: null,
490
+        partyAId: [],
491
+        partnerId: [],
419 492
         contactPerson: null,
420 493
         telephone: null,
421 494
         duration: null,
@@ -475,7 +548,19 @@ export default {
475 548
         this.approvalDocument = ''
476 549
       }
477 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 564
         this.open = true;
480 565
         this.title = "品牌项目";
481 566
       });
@@ -499,15 +584,21 @@ export default {
499 584
     submitForm() {
500 585
       this.$refs["form"].validate(valid => {
501 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 593
           if (this.form.projectId != null) {
503
-            updateBrandProject(this.form).then(response => {
594
+            updateBrandProject(submitData).then(response => {
504 595
               this.$modal.msgSuccess("修改成功");
505 596
               this.open = false;
506 597
               this.getList();
507 598
               this.updateProjectProgressList();
508 599
             });
509 600
           } else {
510
-            addBrandProject(this.form).then(response => {
601
+            addBrandProject(submitData).then(response => {
511 602
               this.$modal.msgSuccess("新增成功");
512 603
               this.open = false;
513 604
               this.getList();

+ 8
- 2
oa-ui/src/views/oa/budget/index.vue Zobrazit soubor

@@ -45,6 +45,12 @@
45 45
       <el-table-column label="人员成本" align="center" prop="staffCost" />
46 46
       <el-table-column label="车辆成本" align="center" prop="carCost" />
47 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 54
       <el-table-column label="预算总额" align="center" prop="totalBudget" />
49 55
       <el-table-column label="编制人" align="center" prop="compiler">
50 56
         <template slot-scope="scope">
@@ -159,8 +165,8 @@ export default {
159 165
       },
160 166
       taskForm: {
161 167
         formId: '',
162
-        procInsId:'',
163
-        budgetId:'',
168
+        procInsId: '',
169
+        budgetId: '',
164 170
       },
165 171
       projectList: [],
166 172
       queryType: '1',

+ 23
- 7
oa-ui/src/views/oa/titles/info.vue Zobrazit soubor

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2025-08-15 16:13:32
4 4
  * @LastEditors: wrh
5
- * @LastEditTime: 2026-01-22 16:40:59
5
+ * @LastEditTime: 2026-01-23 16:57:18
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -77,17 +77,17 @@
77 77
 
78 78
       <el-table-column label="文件" align="center" prop="publicityFile">
79 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 81
             {{ getFileName(scope.row.publicityFile) }}
82 82
           </el-link>
83 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 85
             :underline="false" target="_blank">
86 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 88
             {{ getFileName(scope.row.scanFile) }}
89 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 91
             :underline="false" target="_blank">
92 92
           </el-link>
93 93
         </template>
@@ -146,10 +146,12 @@
146 146
         </el-form-item>
147 147
 
148 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 151
         </el-form-item>
151 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 155
         </el-form-item>
154 156
         <el-form-item label="证书取得时间" prop="obtainTime">
155 157
           <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
@@ -288,6 +290,20 @@ export default {
288 290
       this.open = false;
289 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 308
     reset() {
293 309
       this.form = {

+ 18
- 2
oa-ui/src/views/oa/titles/record.vue Zobrazit soubor

@@ -156,10 +156,12 @@
156 156
         </el-form-item>
157 157
         <template v-if="form.isApproved == '1'">
158 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 161
           </el-form-item>
161 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 165
           </el-form-item>
164 166
           <el-form-item label="证书取得时间" prop="obtainTime">
165 167
             <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
@@ -276,6 +278,20 @@ export default {
276 278
       this.open = false;
277 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 296
     reset() {
281 297
       this.form = {

+ 6
- 1
oa-ui/src/views/oa/transfer/transferTab.vue Zobrazit soubor

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

Loading…
Zrušit
Uložit