瀏覽代碼

项目完整显示多个合同编码;新增集中学习党建专题;新增招聘、调岗审批流程

lamphua 2 天之前
父節點
當前提交
12a0a4f315
共有 29 個檔案被更改,包括 3343 行新增174 行删除
  1. 52
    11
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectController.java
  2. 97
    0
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcRecruitController.java
  3. 97
    0
      oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcTransferController.java
  4. 22
    9
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcProject.java
  5. 374
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcRecruit.java
  6. 463
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcTransfer.java
  7. 61
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcRecruitMapper.java
  8. 61
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcTransferMapper.java
  9. 61
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcRecruitService.java
  10. 61
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcTransferService.java
  11. 93
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcRecruitServiceImpl.java
  12. 93
    0
      oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcTransferServiceImpl.java
  13. 3
    17
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcProjectMapper.xml
  14. 189
    0
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcRecruitMapper.xml
  15. 28
    9
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcResourceMapper.xml
  16. 231
    0
      oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcTransferMapper.xml
  17. 2
    31
      oa-ui-app/pages/project/projectInfo.vue
  18. 44
    0
      oa-ui/src/api/oa/recruit/recruit.js
  19. 44
    0
      oa-ui/src/api/oa/transfer/transfer.js
  20. 1
    0
      oa-ui/src/assets/icons/svg/recruit.svg
  21. 1
    0
      oa-ui/src/assets/icons/svg/transfer.svg
  22. 3
    3
      oa-ui/src/views/oa/project/index.vue
  23. 6
    34
      oa-ui/src/views/oa/project/info.vue
  24. 3
    3
      oa-ui/src/views/oa/project/invest.vue
  25. 519
    0
      oa-ui/src/views/oa/recruit/index.vue
  26. 52
    25
      oa-ui/src/views/oa/study/components/resourceTree.vue
  27. 61
    14
      oa-ui/src/views/oa/study/components/studyRight.vue
  28. 42
    18
      oa-ui/src/views/oa/study/resource.vue
  29. 579
    0
      oa-ui/src/views/oa/transfer/index.vue

+ 52
- 11
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectController.java 查看文件

@@ -13,9 +13,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
13 13
 import com.ruoyi.common.utils.StringUtils;
14 14
 import com.ruoyi.file.domain.FilesAchievement;
15 15
 import com.ruoyi.file.service.IFilesAchievementService;
16
-import com.ruoyi.oa.domain.CmcArchive;
17
-import com.ruoyi.oa.domain.CmcManageDept;
18
-import com.ruoyi.oa.domain.CmcSettle;
16
+import com.ruoyi.oa.domain.*;
19 17
 import com.ruoyi.oa.service.*;
20 18
 import com.ruoyi.system.service.ISysDeptService;
21 19
 import com.ruoyi.system.service.ISysUserService;
@@ -26,7 +24,6 @@ import com.ruoyi.common.annotation.Log;
26 24
 import com.ruoyi.common.core.controller.BaseController;
27 25
 import com.ruoyi.common.core.domain.AjaxResult;
28 26
 import com.ruoyi.common.enums.BusinessType;
29
-import com.ruoyi.oa.domain.CmcProject;
30 27
 import com.ruoyi.common.utils.poi.ExcelUtil;
31 28
 import com.ruoyi.common.core.page.TableDataInfo;
32 29
 
@@ -49,6 +46,12 @@ public class CmcProjectController extends BaseController
49 46
     @Autowired
50 47
     private ICmcProjectWorkService cmcProjectWorkService;
51 48
 
49
+    @Autowired
50
+    private ICmcProjectContractService cmcProjectContractService;
51
+
52
+    @Autowired
53
+    private ICmcContractService cmcContractService;
54
+
52 55
     @Autowired
53 56
     private ISysDeptService deptService;
54 57
 
@@ -82,6 +85,10 @@ public class CmcProjectController extends BaseController
82 85
         for (CmcProject project : list) {
83 86
             project.setUndertakingDeptName(deptIdToName(project));
84 87
             project.setQualityInspectorName(inspectorIdToName(project));
88
+            CmcContract contract = joinContract(project);
89
+            project.setContractCode(contract.getContractCode());
90
+            project.setContractNumber(contract.getContractNumber());
91
+            project.setContractName(contract.getContractName());
85 92
         }
86 93
         return getDataTable(list);
87 94
     }
@@ -97,6 +104,10 @@ public class CmcProjectController extends BaseController
97 104
         for (CmcProject project : list) {
98 105
             project.setUndertakingDeptName(deptIdToName(project));
99 106
             project.setQualityInspectorName(inspectorIdToName(project));
107
+            CmcContract contract = joinContract(project);
108
+            project.setContractCode(contract.getContractCode());
109
+            project.setContractNumber(contract.getContractNumber());
110
+            project.setContractName(contract.getContractName());
100 111
         }
101 112
         return getDataTable(list);
102 113
     }
@@ -116,6 +127,10 @@ public class CmcProjectController extends BaseController
116 127
         for (CmcProject project : list) {
117 128
             project.setUndertakingDeptName(deptIdToName(project));
118 129
             project.setQualityInspectorName(inspectorIdToName(project));
130
+            CmcContract contract = joinContract(project);
131
+            project.setContractCode(contract.getContractCode());
132
+            project.setContractNumber(contract.getContractNumber());
133
+            project.setContractName(contract.getContractName());
119 134
         }
120 135
         ExcelUtil<CmcProject> util = new ExcelUtil<CmcProject>(CmcProject.class);
121 136
         util.exportExcel(response, list, "cmc项目数据");
@@ -130,13 +145,11 @@ public class CmcProjectController extends BaseController
130 145
         CmcProject cmcProject = cmcProjectService.selectCmcProjectByProjectId(projectId);
131 146
         if (cmcProject != null) {
132 147
             cmcProject.setUndertakingDeptName(deptIdToName(cmcProject));
133
-            String qualityInspector = cmcProject.getQualityInspector();
134
-            StringBuilder qualityInspectorName = new StringBuilder();
135
-            if (qualityInspector != null && !qualityInspector.equals("") && qualityInspector.split(",").length > 0) {
136
-                for (String inspector : qualityInspector.split(","))
137
-                    qualityInspectorName.append(userService.selectUserById(Long.parseLong(inspector)).getNickName()).append(",");
138
-                cmcProject.setQualityInspectorName(qualityInspectorName.substring(0, qualityInspectorName.length() - 1));
139
-            }
148
+            cmcProject.setQualityInspectorName(inspectorIdToName(cmcProject));
149
+            CmcContract contract = joinContract(cmcProject);
150
+            cmcProject.setContractCode(contract.getContractCode());
151
+            cmcProject.setContractNumber(contract.getContractNumber());
152
+            cmcProject.setContractName(contract.getContractName());
140 153
         }
141 154
         return success(cmcProject);
142 155
     }
@@ -384,6 +397,34 @@ public class CmcProjectController extends BaseController
384 397
         return cmcProject.getQualityInspectorName();
385 398
     }
386 399
 
400
+    public CmcContract joinContract(CmcProject cmcProject) {
401
+        CmcContract contract = new CmcContract();
402
+            CmcProjectContract cmcProjectContract = new CmcProjectContract();
403
+            cmcProjectContract.setProjectId(cmcProject.getProjectId());
404
+            List<CmcProjectContract> cmcProjectContractList = cmcProjectContractService.selectCmcProjectContractList(cmcProjectContract);
405
+            cmcProjectContractList.forEach(projectContract -> {
406
+                try {
407
+                    CmcContract cmcContract = cmcContractService.selectCmcContractByContractId(projectContract.getContractId());
408
+                    if (contract.getContractCode() != null)
409
+                        contract.setContractCode(contract.getContractCode() + "、" + cmcContract.getContractCode());
410
+                    else
411
+                        contract.setContractCode(cmcContract.getContractCode());
412
+                    if (contract.getContractNumber() != null)
413
+                        contract.setContractNumber(contract.getContractNumber() + "、" + cmcContract.getContractNumber());
414
+                    else
415
+                        contract.setContractNumber(cmcContract.getContractNumber());
416
+                    if (contract.getContractName() != null)
417
+                        contract.setContractName(contract.getContractName() + "、" + cmcContract.getContractName());
418
+                    else
419
+                        contract.setContractName(cmcContract.getContractName());
420
+                }
421
+                catch (Exception e){
422
+                    System.out.println(cmcProjectContractList);
423
+                }
424
+            });
425
+        return contract;
426
+    }
427
+
387 428
     public List<SysUser> getManageId(String deptId, String partyAId) {
388 429
         List<SysUser> userList = new ArrayList<>();
389 430
         CmcManageDept cmcManageDept = new CmcManageDept();

+ 97
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcRecruitController.java 查看文件

@@ -0,0 +1,97 @@
1
+package com.ruoyi.web.controller.oa;
2
+
3
+import java.util.List;
4
+import javax.servlet.http.HttpServletResponse;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+import org.springframework.web.bind.annotation.PostMapping;
8
+import org.springframework.web.bind.annotation.PutMapping;
9
+import org.springframework.web.bind.annotation.DeleteMapping;
10
+import org.springframework.web.bind.annotation.PathVariable;
11
+import org.springframework.web.bind.annotation.RequestBody;
12
+import org.springframework.web.bind.annotation.RequestMapping;
13
+import org.springframework.web.bind.annotation.RestController;
14
+import com.ruoyi.common.annotation.Log;
15
+import com.ruoyi.common.core.controller.BaseController;
16
+import com.ruoyi.common.core.domain.AjaxResult;
17
+import com.ruoyi.common.enums.BusinessType;
18
+import com.ruoyi.oa.domain.CmcRecruit;
19
+import com.ruoyi.oa.service.ICmcRecruitService;
20
+import com.ruoyi.common.utils.poi.ExcelUtil;
21
+import com.ruoyi.common.core.page.TableDataInfo;
22
+
23
+/**
24
+ * cmc员工招聘Controller
25
+ * 
26
+ * @author cmc
27
+ * @date 2025-10-16
28
+ */
29
+@RestController
30
+@RequestMapping("/oa/recruit")
31
+public class CmcRecruitController extends BaseController
32
+{
33
+    @Autowired
34
+    private ICmcRecruitService cmcRecruitService;
35
+
36
+    /**
37
+     * 查询cmc员工招聘列表
38
+     */
39
+    @GetMapping("/list")
40
+    public TableDataInfo list(CmcRecruit cmcRecruit)
41
+    {
42
+        startPage();
43
+        List<CmcRecruit> list = cmcRecruitService.selectCmcRecruitList(cmcRecruit);
44
+        return getDataTable(list);
45
+    }
46
+
47
+    /**
48
+     * 导出cmc员工招聘列表
49
+     */
50
+    @Log(title = "cmc员工招聘", businessType = BusinessType.EXPORT)
51
+    @PostMapping("/export")
52
+    public void export(HttpServletResponse response, CmcRecruit cmcRecruit)
53
+    {
54
+        List<CmcRecruit> list = cmcRecruitService.selectCmcRecruitList(cmcRecruit);
55
+        ExcelUtil<CmcRecruit> util = new ExcelUtil<CmcRecruit>(CmcRecruit.class);
56
+        util.exportExcel(response, list, "cmc员工招聘数据");
57
+    }
58
+
59
+    /**
60
+     * 获取cmc员工招聘详细信息
61
+     */
62
+    @GetMapping(value = "/{recruitId}")
63
+    public AjaxResult getInfo(@PathVariable("recruitId") String recruitId)
64
+    {
65
+        return success(cmcRecruitService.selectCmcRecruitByRecruitId(recruitId));
66
+    }
67
+
68
+    /**
69
+     * 新增cmc员工招聘
70
+     */
71
+    @Log(title = "cmc员工招聘", businessType = BusinessType.INSERT)
72
+    @PostMapping
73
+    public AjaxResult add(@RequestBody CmcRecruit cmcRecruit)
74
+    {
75
+        return toAjax(cmcRecruitService.insertCmcRecruit(cmcRecruit));
76
+    }
77
+
78
+    /**
79
+     * 修改cmc员工招聘
80
+     */
81
+    @Log(title = "cmc员工招聘", businessType = BusinessType.UPDATE)
82
+    @PutMapping
83
+    public AjaxResult edit(@RequestBody CmcRecruit cmcRecruit)
84
+    {
85
+        return toAjax(cmcRecruitService.updateCmcRecruit(cmcRecruit));
86
+    }
87
+
88
+    /**
89
+     * 删除cmc员工招聘
90
+     */
91
+    @Log(title = "cmc员工招聘", businessType = BusinessType.DELETE)
92
+	@DeleteMapping("/{recruitIds}")
93
+    public AjaxResult remove(@PathVariable String[] recruitIds)
94
+    {
95
+        return success(cmcRecruitService.deleteCmcRecruitByRecruitIds(recruitIds));
96
+    }
97
+}

+ 97
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcTransferController.java 查看文件

@@ -0,0 +1,97 @@
1
+package com.ruoyi.web.controller.oa;
2
+
3
+import java.util.List;
4
+import javax.servlet.http.HttpServletResponse;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+import org.springframework.web.bind.annotation.PostMapping;
8
+import org.springframework.web.bind.annotation.PutMapping;
9
+import org.springframework.web.bind.annotation.DeleteMapping;
10
+import org.springframework.web.bind.annotation.PathVariable;
11
+import org.springframework.web.bind.annotation.RequestBody;
12
+import org.springframework.web.bind.annotation.RequestMapping;
13
+import org.springframework.web.bind.annotation.RestController;
14
+import com.ruoyi.common.annotation.Log;
15
+import com.ruoyi.common.core.controller.BaseController;
16
+import com.ruoyi.common.core.domain.AjaxResult;
17
+import com.ruoyi.common.enums.BusinessType;
18
+import com.ruoyi.oa.domain.CmcTransfer;
19
+import com.ruoyi.oa.service.ICmcTransferService;
20
+import com.ruoyi.common.utils.poi.ExcelUtil;
21
+import com.ruoyi.common.core.page.TableDataInfo;
22
+
23
+/**
24
+ * cmc员工调岗Controller
25
+ * 
26
+ * @author cmc
27
+ * @date 2025-10-16
28
+ */
29
+@RestController
30
+@RequestMapping("/oa/transfer")
31
+public class CmcTransferController extends BaseController
32
+{
33
+    @Autowired
34
+    private ICmcTransferService cmcTransferService;
35
+
36
+    /**
37
+     * 查询cmc员工调岗列表
38
+     */
39
+    @GetMapping("/list")
40
+    public TableDataInfo list(CmcTransfer cmcTransfer)
41
+    {
42
+        startPage();
43
+        List<CmcTransfer> list = cmcTransferService.selectCmcTransferList(cmcTransfer);
44
+        return getDataTable(list);
45
+    }
46
+
47
+    /**
48
+     * 导出cmc员工调岗列表
49
+     */
50
+    @Log(title = "cmc员工调岗", businessType = BusinessType.EXPORT)
51
+    @PostMapping("/export")
52
+    public void export(HttpServletResponse response, CmcTransfer cmcTransfer)
53
+    {
54
+        List<CmcTransfer> list = cmcTransferService.selectCmcTransferList(cmcTransfer);
55
+        ExcelUtil<CmcTransfer> util = new ExcelUtil<CmcTransfer>(CmcTransfer.class);
56
+        util.exportExcel(response, list, "cmc员工调岗数据");
57
+    }
58
+
59
+    /**
60
+     * 获取cmc员工调岗详细信息
61
+     */
62
+    @GetMapping(value = "/{transferId}")
63
+    public AjaxResult getInfo(@PathVariable("transferId") String transferId)
64
+    {
65
+        return success(cmcTransferService.selectCmcTransferByTransferId(transferId));
66
+    }
67
+
68
+    /**
69
+     * 新增cmc员工调岗
70
+     */
71
+    @Log(title = "cmc员工调岗", businessType = BusinessType.INSERT)
72
+    @PostMapping
73
+    public AjaxResult add(@RequestBody CmcTransfer cmcTransfer)
74
+    {
75
+        return toAjax(cmcTransferService.insertCmcTransfer(cmcTransfer));
76
+    }
77
+
78
+    /**
79
+     * 修改cmc员工调岗
80
+     */
81
+    @Log(title = "cmc员工调岗", businessType = BusinessType.UPDATE)
82
+    @PutMapping
83
+    public AjaxResult edit(@RequestBody CmcTransfer cmcTransfer)
84
+    {
85
+        return toAjax(cmcTransferService.updateCmcTransfer(cmcTransfer));
86
+    }
87
+
88
+    /**
89
+     * 删除cmc员工调岗
90
+     */
91
+    @Log(title = "cmc员工调岗", businessType = BusinessType.DELETE)
92
+	@DeleteMapping("/{transferIds}")
93
+    public AjaxResult remove(@PathVariable String[] transferIds)
94
+    {
95
+        return success(cmcTransferService.deleteCmcTransferByTransferIds(transferIds));
96
+    }
97
+}

+ 22
- 9
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcProject.java 查看文件

@@ -209,8 +209,6 @@ public class CmcProject extends BaseEntity
209 209
 
210 210
     private SysUser siteLeaderUser;
211 211
 
212
-    private CmcContract contract;
213
-
214 212
     public void setProjectId(String projectId)
215 213
     {
216 214
         this.projectId = projectId;
@@ -632,17 +630,32 @@ public class CmcProject extends BaseEntity
632 630
     {
633 631
         return joinDept;
634 632
     }
635
-    public void setContract(CmcContract contract)
633
+    public void setContractCode(String contractCode)
634
+    {
635
+        this.contractCode = contractCode;
636
+    }
637
+
638
+    public String getContractCode()
639
+    {
640
+        return contractCode;
641
+    }
642
+    public void setContractNumber(String contractNumber)
643
+    {
644
+        this.contractNumber = contractNumber;
645
+    }
646
+
647
+    public String getContractNumber()
648
+    {
649
+        return contractNumber;
650
+    }
651
+    public void setContractName(String contractName)
636 652
     {
637
-        this.contract = contract;
638
-        this.contractNumber = contract == null ? "" : contract.getContractNumber();
639
-        this.contractCode = contract == null ? "" : contract.getContractCode();
640
-        this.contractName = contract == null ? "" : contract.getContractName();
653
+        this.contractName = contractName;
641 654
     }
642 655
 
643
-    public CmcContract getContract()
656
+    public String getContractName()
644 657
     {
645
-        return contract;
658
+        return contractName;
646 659
     }
647 660
     public void setQueryString(String queryString)
648 661
     {

+ 374
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcRecruit.java 查看文件

@@ -0,0 +1,374 @@
1
+package com.ruoyi.oa.domain;
2
+
3
+import java.util.Date;
4
+import com.fasterxml.jackson.annotation.JsonFormat;
5
+import com.ruoyi.common.core.domain.entity.SysDept;
6
+import com.ruoyi.common.core.domain.entity.SysUser;
7
+import org.apache.commons.lang3.builder.ToStringBuilder;
8
+import org.apache.commons.lang3.builder.ToStringStyle;
9
+import com.ruoyi.common.annotation.Excel;
10
+import com.ruoyi.common.core.domain.BaseEntity;
11
+
12
+/**
13
+ * cmc招聘申请对象 cmc_recruit
14
+ *
15
+ * @author cmc
16
+ * @date 2025-10-16
17
+ */
18
+public class CmcRecruit extends BaseEntity
19
+{
20
+    private static final long serialVersionUID = 1L;
21
+
22
+    /** 员工招聘id */
23
+    private String recruitId;
24
+
25
+    /** 申请人 */
26
+    private Long applier;
27
+    @Excel(name = "申请人")
28
+    private String applierUserName;
29
+    private SysUser applierUser;
30
+
31
+    /** 申请部门 */
32
+    private Long applyDept;
33
+    @Excel(name = "申请部门")
34
+    private String deptName;
35
+    private SysDept dept;
36
+
37
+    /** 项目id */
38
+    private String projectId;
39
+    @Excel(name = "项目编号")
40
+    private String projectNumber;
41
+    @Excel(name = "项目名称")
42
+    private String projectName;
43
+    @Excel(name = "承担部门")
44
+    private String undertakingDept;
45
+    private CmcProject project;
46
+
47
+    /** 申请日期 */
48
+    @JsonFormat(pattern = "yyyy-MM-dd")
49
+    @Excel(name = "申请日期", width = 30, dateFormat = "yyyy-MM-dd")
50
+    private Date applyDate;
51
+
52
+    /** 岗位名称 */
53
+    @Excel(name = "岗位名称")
54
+    private String postName;
55
+
56
+    /** 岗位人数 */
57
+    @Excel(name = "岗位人数")
58
+    private Long postNumber;
59
+
60
+    /** 岗位职责 */
61
+    @Excel(name = "岗位职责")
62
+    private String duty;
63
+
64
+    /** 任职资格 */
65
+    @Excel(name = "任职资格")
66
+    private String qualification;
67
+
68
+    /** 薪酬待遇 */
69
+    @Excel(name = "薪酬待遇")
70
+    private String wage;
71
+
72
+    /** 部门意见 */
73
+    @Excel(name = "部门意见")
74
+    private String deptComment;
75
+
76
+    /** 部门负责人 */
77
+    private Long deptUserId;
78
+    @Excel(name = "部门负责人")
79
+    private String deptUserName;
80
+    private SysUser deptUser;
81
+
82
+    /** 部门审批时间 */
83
+    @JsonFormat(pattern = "yyyy-MM-dd")
84
+    @Excel(name = "部门审批时间", width = 30, dateFormat = "yyyy-MM-dd")
85
+    private Date deptTime;
86
+
87
+    /** 分管领导意见 */
88
+    @Excel(name = "分管领导意见")
89
+    private String managerComment;
90
+
91
+    /** 分管领导 */
92
+    private Long managerUserId;
93
+    @Excel(name = "分管领导")
94
+    private String managerUserName;
95
+    private SysUser managerUser;
96
+
97
+    /** 分管领导审批时间 */
98
+    @JsonFormat(pattern = "yyyy-MM-dd")
99
+    @Excel(name = "分管领导审批时间", width = 30, dateFormat = "yyyy-MM-dd")
100
+    private Date managerTime;
101
+
102
+    /** 总经理意见 */
103
+    @Excel(name = "总经理意见")
104
+    private String zjlComment;
105
+
106
+    /** 总经理 */
107
+    private Long zjlUserId;
108
+    @Excel(name = "总经理")
109
+    private String zjlUserName;
110
+    private SysUser zjlUser;
111
+
112
+    /** 总经理审批时间 */
113
+    @JsonFormat(pattern = "yyyy-MM-dd")
114
+    @Excel(name = "总经理审批时间", width = 30, dateFormat = "yyyy-MM-dd")
115
+    private Date zjlTime;
116
+
117
+    public void setRecruitId(String recruitId)
118
+    {
119
+        this.recruitId = recruitId;
120
+    }
121
+
122
+    public String getRecruitId()
123
+    {
124
+        return recruitId;
125
+    }
126
+    public void setApplier(Long applier)
127
+    {
128
+        this.applier = applier;
129
+    }
130
+
131
+    public Long getApplier()
132
+    {
133
+        return applier;
134
+    }
135
+    public void setApplyDept(Long applyDept)
136
+    {
137
+        this.applyDept = applyDept;
138
+    }
139
+
140
+    public Long getApplyDept()
141
+    {
142
+        return applyDept;
143
+    }
144
+    public void setProjectId(String projectId)
145
+    {
146
+        this.projectId = projectId;
147
+    }
148
+
149
+    public String getProjectId()
150
+    {
151
+        return projectId;
152
+    }
153
+    public void setApplyDate(Date applyDate)
154
+    {
155
+        this.applyDate = applyDate;
156
+    }
157
+
158
+    public Date getApplyDate()
159
+    {
160
+        return applyDate;
161
+    }
162
+    public void setPostName(String postName)
163
+    {
164
+        this.postName = postName;
165
+    }
166
+
167
+    public String getPostName()
168
+    {
169
+        return postName;
170
+    }
171
+    public void setPostNumber(Long postNumber)
172
+    {
173
+        this.postNumber = postNumber;
174
+    }
175
+
176
+    public Long getPostNumber()
177
+    {
178
+        return postNumber;
179
+    }
180
+    public void setDuty(String duty)
181
+    {
182
+        this.duty = duty;
183
+    }
184
+
185
+    public String getDuty()
186
+    {
187
+        return duty;
188
+    }
189
+    public void setQualification(String qualification)
190
+    {
191
+        this.qualification = qualification;
192
+    }
193
+
194
+    public String getQualification()
195
+    {
196
+        return qualification;
197
+    }
198
+    public void setWage(String wage)
199
+    {
200
+        this.wage = wage;
201
+    }
202
+
203
+    public String getWage()
204
+    {
205
+        return wage;
206
+    }
207
+    public void setDeptComment(String deptComment)
208
+    {
209
+        this.deptComment = deptComment;
210
+    }
211
+
212
+    public String getDeptComment()
213
+    {
214
+        return deptComment;
215
+    }
216
+    public void setDeptUserId(Long deptUserId)
217
+    {
218
+        this.deptUserId = deptUserId;
219
+    }
220
+
221
+    public Long getDeptUserId()
222
+    {
223
+        return deptUserId;
224
+    }
225
+    public void setDeptTime(Date deptTime)
226
+    {
227
+        this.deptTime = deptTime;
228
+    }
229
+
230
+    public Date getDeptTime()
231
+    {
232
+        return deptTime;
233
+    }
234
+    public void setManagerComment(String managerComment)
235
+    {
236
+        this.managerComment = managerComment;
237
+    }
238
+
239
+    public String getManagerComment()
240
+    {
241
+        return managerComment;
242
+    }
243
+    public void setManagerUserId(Long managerUserId)
244
+    {
245
+        this.managerUserId = managerUserId;
246
+    }
247
+
248
+    public Long getManagerUserId()
249
+    {
250
+        return managerUserId;
251
+    }
252
+    public void setManagerTime(Date managerTime)
253
+    {
254
+        this.managerTime = managerTime;
255
+    }
256
+
257
+    public Date getManagerTime()
258
+    {
259
+        return managerTime;
260
+    }
261
+    public void setZjlComment(String zjlComment)
262
+    {
263
+        this.zjlComment = zjlComment;
264
+    }
265
+
266
+    public String getZjlComment()
267
+    {
268
+        return zjlComment;
269
+    }
270
+    public void setZjlUserId(Long zjlUserId)
271
+    {
272
+        this.zjlUserId = zjlUserId;
273
+    }
274
+
275
+    public Long getZjlUserId()
276
+    {
277
+        return zjlUserId;
278
+    }
279
+    public void setZjlTime(Date zjlTime)
280
+    {
281
+        this.zjlTime = zjlTime;
282
+    }
283
+
284
+    public Date getZjlTime()
285
+    {
286
+        return zjlTime;
287
+    }
288
+    public void setDept(SysDept dept)
289
+    {
290
+        this.dept = dept;
291
+        this.deptName = dept == null ? "" : dept.getDeptName();
292
+    }
293
+
294
+    public SysDept getDept()
295
+    {
296
+        return dept;
297
+    }
298
+    public void setApplierUser(SysUser applierUser)
299
+    {
300
+        this.applierUser = applierUser;
301
+        this.applierUserName = applierUser == null ? "" : applierUser.getNickName();
302
+    }
303
+
304
+    public SysUser getApplierUser()
305
+    {
306
+        return applierUser;
307
+    }
308
+    public void setDeptUser(SysUser deptUser)
309
+    {
310
+        this.deptUser = deptUser;
311
+        this.deptUserName = deptUser == null ? "" : deptUser.getNickName();
312
+    }
313
+
314
+    public SysUser getDeptUser()
315
+    {
316
+        return deptUser;
317
+    }
318
+    public void setManagerUser(SysUser managerUser)
319
+    {
320
+        this.managerUser = managerUser;
321
+        this.managerUserName = managerUser == null ? "" : managerUser.getNickName();
322
+    }
323
+
324
+    public SysUser getManagerUser()
325
+    {
326
+        return managerUser;
327
+    }
328
+    public void setZjlUser(SysUser zjlUser)
329
+    {
330
+        this.zjlUser = zjlUser;
331
+        this.zjlUserName = zjlUser == null ? "" : zjlUser.getNickName();
332
+    }
333
+
334
+    public SysUser getZjlUser()
335
+    {
336
+        return zjlUser;
337
+    }
338
+    public void setProject(CmcProject project)
339
+    {
340
+        this.project = project;
341
+        this.projectNumber = project == null ? "" : project.getProjectNumber();
342
+        this.projectName = project == null ? "" : project.getProjectName();
343
+    }
344
+
345
+    public CmcProject getProject()
346
+    {
347
+        return project;
348
+    }
349
+
350
+    @Override
351
+    public String toString() {
352
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
353
+                .append("recruitId", getRecruitId())
354
+                .append("applier", getApplier())
355
+                .append("applyDept", getApplyDept())
356
+                .append("projectId", getProjectId())
357
+                .append("applyDate", getApplyDate())
358
+                .append("postName", getPostName())
359
+                .append("postNumber", getPostNumber())
360
+                .append("duty", getDuty())
361
+                .append("qualification", getQualification())
362
+                .append("wage", getWage())
363
+                .append("deptComment", getDeptComment())
364
+                .append("deptUserId", getDeptUserId())
365
+                .append("deptTime", getDeptTime())
366
+                .append("managerComment", getManagerComment())
367
+                .append("managerUserId", getManagerUserId())
368
+                .append("managerTime", getManagerTime())
369
+                .append("zjlComment", getZjlComment())
370
+                .append("zjlUserId", getZjlUserId())
371
+                .append("zjlTime", getZjlTime())
372
+                .toString();
373
+    }
374
+}

+ 463
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcTransfer.java 查看文件

@@ -0,0 +1,463 @@
1
+package com.ruoyi.oa.domain;
2
+
3
+import java.util.Date;
4
+import com.fasterxml.jackson.annotation.JsonFormat;
5
+import com.ruoyi.common.core.domain.entity.SysDept;
6
+import com.ruoyi.common.core.domain.entity.SysUser;
7
+import com.ruoyi.system.domain.SysPost;
8
+import org.apache.commons.lang3.builder.ToStringBuilder;
9
+import org.apache.commons.lang3.builder.ToStringStyle;
10
+import com.ruoyi.common.annotation.Excel;
11
+import com.ruoyi.common.core.domain.BaseEntity;
12
+
13
+/**
14
+ * cmc员工调岗对象 cmc_transfer
15
+ * 
16
+ * @author cmc
17
+ * @date 2025-10-16
18
+ */
19
+public class CmcTransfer extends BaseEntity
20
+{
21
+    private static final long serialVersionUID = 1L;
22
+
23
+    /** 调岗id */
24
+    private String transferId;
25
+
26
+    /** 申请人id */
27
+    private Long applier;
28
+    @Excel(name = "申请人")
29
+    private String applierUserName;
30
+    private SysUser applierUser;
31
+
32
+
33
+    /** 申请日期 */
34
+    @JsonFormat(pattern = "yyyy-MM-dd")
35
+    @Excel(name = "申请日期", width = 30, dateFormat = "yyyy-MM-dd")
36
+    private Date applyDate;
37
+
38
+    /** 调整前所在部门id */
39
+    private Long beforeDeptId;
40
+    @Excel(name = "调整前所在部门")
41
+    private String beforeDeptName;
42
+    private SysDept beforeDept;
43
+
44
+    /** 调整前岗位id */
45
+    private Long beforePostId;
46
+    @Excel(name = "调整前岗位")
47
+    private String beforePostName;
48
+    private SysPost beforePost;
49
+
50
+    /** 调整后所在部门id */
51
+    private Long afterDeptId;
52
+    @Excel(name = "调整后所在部门")
53
+    private String afterDeptName;
54
+    private SysDept afterDept;
55
+
56
+    /** 调整后岗位id */
57
+    private Long afterPostId;
58
+    @Excel(name = "调整后岗位")
59
+    private String afterPostName;
60
+    private SysPost afterPost;
61
+
62
+    /** 调整前所在部门意见 */
63
+    @Excel(name = "调整前所在部门意见")
64
+    private String beforeDeptComment;
65
+
66
+    /** 调整前所在部门负责人 */
67
+    private Long beforeDeptLeader;
68
+    @Excel(name = "调整前所在部门负责人")
69
+    private String beforeDeptUserName;
70
+    private SysUser beforeDeptUser;
71
+
72
+    /** 调整前所在部门审批时间 */
73
+    @JsonFormat(pattern = "yyyy-MM-dd")
74
+    @Excel(name = "调整前所在部门审批时间", width = 30, dateFormat = "yyyy-MM-dd")
75
+    private Date beforeDeptTime;
76
+
77
+    /** 调整后所在部门意见 */
78
+    @Excel(name = "调整后所在部门意见")
79
+    private String afterDeptComment;
80
+
81
+    /** 调整后所在部门审批时间 */
82
+    @JsonFormat(pattern = "yyyy-MM-dd")
83
+    @Excel(name = "调整后所在部门审批时间", width = 30, dateFormat = "yyyy-MM-dd")
84
+    private Date afterDeptTime;
85
+
86
+    /** 调整后所在部门负责人 */
87
+    private Long afterDeptLeader;
88
+    @Excel(name = "调整后所在部门负责人")
89
+    private String afterDeptUserName;
90
+    private SysUser afterDeptUser;
91
+
92
+    /** 综合事务部意见 */
93
+    @Excel(name = "综合事务部意见")
94
+    private String zhComment;
95
+
96
+    /** 综合事务部审批时间 */
97
+    @JsonFormat(pattern = "yyyy-MM-dd")
98
+    @Excel(name = "综合事务部审批时间", width = 30, dateFormat = "yyyy-MM-dd")
99
+    private Date zhTime;
100
+
101
+    /** 综合事务部负责人 */
102
+    private Long zhUserId;
103
+    @Excel(name = "综合事务部负责人")
104
+    private String zhUserName;
105
+    private SysUser zhUser;
106
+
107
+    /** 分管领导意见 */
108
+    @Excel(name = "分管领导意见")
109
+    private String managerComment;
110
+
111
+    /** 分管领导审批时间 */
112
+    @JsonFormat(pattern = "yyyy-MM-dd")
113
+    @Excel(name = "分管领导审批时间", width = 30, dateFormat = "yyyy-MM-dd")
114
+    private Date managerTime;
115
+
116
+    /** 分管领导 */
117
+    private Long managerUserId;
118
+    @Excel(name = "分管领导")
119
+    private String managerUserName;
120
+    private SysUser managerUser;
121
+
122
+    /** 总经理意见 */
123
+    @Excel(name = "总经理意见")
124
+    private String zjlComment;
125
+
126
+    /** 总经理审批时间 */
127
+    @JsonFormat(pattern = "yyyy-MM-dd")
128
+    @Excel(name = "总经理审批时间", width = 30, dateFormat = "yyyy-MM-dd")
129
+    private Date zjlTime;
130
+
131
+    /** 总经理 */
132
+    private Long zjlUserId;
133
+    @Excel(name = "总经理")
134
+    private String zjlUserName;
135
+    private SysUser zjlUser;
136
+
137
+    public void setTransferId(String transferId) 
138
+    {
139
+        this.transferId = transferId;
140
+    }
141
+
142
+    public String getTransferId() 
143
+    {
144
+        return transferId;
145
+    }
146
+    public void setApplier(Long applier) 
147
+    {
148
+        this.applier = applier;
149
+    }
150
+
151
+    public Long getApplier() 
152
+    {
153
+        return applier;
154
+    }
155
+    public void setApplyDate(Date applyDate) 
156
+    {
157
+        this.applyDate = applyDate;
158
+    }
159
+
160
+    public Date getApplyDate() 
161
+    {
162
+        return applyDate;
163
+    }
164
+    public void setBeforeDeptId(Long beforeDeptId) 
165
+    {
166
+        this.beforeDeptId = beforeDeptId;
167
+    }
168
+
169
+    public Long getBeforeDeptId() 
170
+    {
171
+        return beforeDeptId;
172
+    }
173
+    public void setBeforePostId(Long beforePostId) 
174
+    {
175
+        this.beforePostId = beforePostId;
176
+    }
177
+
178
+    public Long getBeforePostId() 
179
+    {
180
+        return beforePostId;
181
+    }
182
+    public void setAfterDeptId(Long afterDeptId) 
183
+    {
184
+        this.afterDeptId = afterDeptId;
185
+    }
186
+
187
+    public Long getAfterDeptId() 
188
+    {
189
+        return afterDeptId;
190
+    }
191
+    public void setAfterPostId(Long afterPostId) 
192
+    {
193
+        this.afterPostId = afterPostId;
194
+    }
195
+
196
+    public Long getAfterPostId() 
197
+    {
198
+        return afterPostId;
199
+    }
200
+    public void setBeforeDeptComment(String beforeDeptComment) 
201
+    {
202
+        this.beforeDeptComment = beforeDeptComment;
203
+    }
204
+
205
+    public String getBeforeDeptComment() 
206
+    {
207
+        return beforeDeptComment;
208
+    }
209
+    public void setBeforeDeptLeader(Long beforeDeptLeader) 
210
+    {
211
+        this.beforeDeptLeader = beforeDeptLeader;
212
+    }
213
+
214
+    public Long getBeforeDeptLeader() 
215
+    {
216
+        return beforeDeptLeader;
217
+    }
218
+    public void setBeforeDeptTime(Date beforeDeptTime) 
219
+    {
220
+        this.beforeDeptTime = beforeDeptTime;
221
+    }
222
+
223
+    public Date getBeforeDeptTime() 
224
+    {
225
+        return beforeDeptTime;
226
+    }
227
+    public void setAfterDeptComment(String afterDeptComment) 
228
+    {
229
+        this.afterDeptComment = afterDeptComment;
230
+    }
231
+
232
+    public String getAfterDeptComment() 
233
+    {
234
+        return afterDeptComment;
235
+    }
236
+    public void setAfterDeptTime(Date afterDeptTime) 
237
+    {
238
+        this.afterDeptTime = afterDeptTime;
239
+    }
240
+
241
+    public Date getAfterDeptTime() 
242
+    {
243
+        return afterDeptTime;
244
+    }
245
+    public void setAfterDeptLeader(Long afterDeptLeader) 
246
+    {
247
+        this.afterDeptLeader = afterDeptLeader;
248
+    }
249
+
250
+    public Long getAfterDeptLeader() 
251
+    {
252
+        return afterDeptLeader;
253
+    }
254
+    public void setZhComment(String zhComment) 
255
+    {
256
+        this.zhComment = zhComment;
257
+    }
258
+
259
+    public String getZhComment() 
260
+    {
261
+        return zhComment;
262
+    }
263
+    public void setZhTime(Date zhTime) 
264
+    {
265
+        this.zhTime = zhTime;
266
+    }
267
+
268
+    public Date getZhTime() 
269
+    {
270
+        return zhTime;
271
+    }
272
+    public void setZhUserId(Long zhUserId) 
273
+    {
274
+        this.zhUserId = zhUserId;
275
+    }
276
+
277
+    public Long getZhUserId() 
278
+    {
279
+        return zhUserId;
280
+    }
281
+    public void setManagerComment(String managerComment) 
282
+    {
283
+        this.managerComment = managerComment;
284
+    }
285
+
286
+    public String getManagerComment() 
287
+    {
288
+        return managerComment;
289
+    }
290
+    public void setManagerTime(Date managerTime) 
291
+    {
292
+        this.managerTime = managerTime;
293
+    }
294
+
295
+    public Date getManagerTime() 
296
+    {
297
+        return managerTime;
298
+    }
299
+    public void setManagerUserId(Long managerUserId) 
300
+    {
301
+        this.managerUserId = managerUserId;
302
+    }
303
+
304
+    public Long getManagerUserId() 
305
+    {
306
+        return managerUserId;
307
+    }
308
+    public void setZjlComment(String zjlComment) 
309
+    {
310
+        this.zjlComment = zjlComment;
311
+    }
312
+
313
+    public String getZjlComment() 
314
+    {
315
+        return zjlComment;
316
+    }
317
+    public void setZjlTime(Date zjlTime) 
318
+    {
319
+        this.zjlTime = zjlTime;
320
+    }
321
+
322
+    public Date getZjlTime() 
323
+    {
324
+        return zjlTime;
325
+    }
326
+    public void setZjlUserId(Long zjlUserId) 
327
+    {
328
+        this.zjlUserId = zjlUserId;
329
+    }
330
+
331
+    public Long getZjlUserId() 
332
+    {
333
+        return zjlUserId;
334
+    }
335
+    public void setBeforePost(SysPost beforePost)
336
+    {
337
+        this.beforePost = beforePost;
338
+        this.beforePostName = beforePost == null ? "" : beforePost.getPostName();
339
+    }
340
+
341
+    public SysPost getBeforePost()
342
+    {
343
+        return beforePost;
344
+    }
345
+    public void setAfterPost(SysPost afterPost)
346
+    {
347
+        this.afterPost = afterPost;
348
+        this.afterPostName = afterPost == null ? "" : afterPost.getPostName();
349
+    }
350
+
351
+    public SysPost getAfterPost()
352
+    {
353
+        return beforePost;
354
+    }
355
+    public void setBeforeDept(SysDept beforeDept)
356
+    {
357
+        this.beforeDept = beforeDept;
358
+        this.beforeDeptName = beforeDept == null ? "" : beforeDept.getDeptName();
359
+    }
360
+
361
+    public SysDept getBeforeDept()
362
+    {
363
+        return beforeDept;
364
+    }
365
+    public void setAfterDept(SysDept afterDept)
366
+    {
367
+        this.afterDept = afterDept;
368
+        this.afterDeptName = afterDept == null ? "" : afterDept.getDeptName();
369
+    }
370
+
371
+    public SysDept getAfterDept()
372
+    {
373
+        return beforeDept;
374
+    }
375
+    public void setApplierUser(SysUser applierUser)
376
+    {
377
+        this.applierUser = applierUser;
378
+        this.applierUserName = applierUser == null ? "" : applierUser.getNickName();
379
+    }
380
+
381
+    public SysUser getApplierUser()
382
+    {
383
+        return applierUser;
384
+    }
385
+    public void setBeforeDeptUser(SysUser beforeDeptUser)
386
+    {
387
+        this.beforeDeptUser = beforeDeptUser;
388
+        this.beforeDeptUserName = beforeDeptUser == null ? "" : beforeDeptUser.getNickName();
389
+    }
390
+
391
+    public SysUser getBeforeDeptUser()
392
+    {
393
+        return beforeDeptUser;
394
+    }
395
+    public void setAfterDeptUser(SysUser afterDeptUser)
396
+    {
397
+        this.afterDeptUser = afterDeptUser;
398
+        this.afterDeptUserName = afterDeptUser == null ? "" : afterDeptUser.getNickName();
399
+    }
400
+
401
+    public SysUser getAfterDeptUser()
402
+    {
403
+        return beforeDeptUser;
404
+    }
405
+    public void setZhUser(SysUser zhUser)
406
+    {
407
+        this.zhUser = zhUser;
408
+        this.zhUserName = zhUser == null ? "" : zhUser.getNickName();
409
+    }
410
+
411
+    public SysUser getZhUser()
412
+    {
413
+        return zhUser;
414
+    }
415
+    public void setManagerUser(SysUser managerUser)
416
+    {
417
+        this.managerUser = managerUser;
418
+        this.managerUserName = managerUser == null ? "" : managerUser.getNickName();
419
+    }
420
+
421
+    public SysUser getManagerUser()
422
+    {
423
+        return managerUser;
424
+    }
425
+    public void setZjlUser(SysUser zjlUser)
426
+    {
427
+        this.zjlUser = zjlUser;
428
+        this.zjlUserName = zjlUser == null ? "" : zjlUser.getNickName();
429
+    }
430
+
431
+    public SysUser getZjlUser()
432
+    {
433
+        return zjlUser;
434
+    }
435
+
436
+    @Override
437
+    public String toString() {
438
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
439
+            .append("transferId", getTransferId())
440
+            .append("applier", getApplier())
441
+            .append("applyDate", getApplyDate())
442
+            .append("beforeDeptId", getBeforeDeptId())
443
+            .append("beforePostId", getBeforePostId())
444
+            .append("afterDeptId", getAfterDeptId())
445
+            .append("afterPostId", getAfterPostId())
446
+            .append("beforeDeptComment", getBeforeDeptComment())
447
+            .append("beforeDeptLeader", getBeforeDeptLeader())
448
+            .append("beforeDeptTime", getBeforeDeptTime())
449
+            .append("afterDeptComment", getAfterDeptComment())
450
+            .append("afterDeptTime", getAfterDeptTime())
451
+            .append("afterDeptLeader", getAfterDeptLeader())
452
+            .append("zhComment", getZhComment())
453
+            .append("zhTime", getZhTime())
454
+            .append("zhUserId", getZhUserId())
455
+            .append("managerComment", getManagerComment())
456
+            .append("managerTime", getManagerTime())
457
+            .append("managerUserId", getManagerUserId())
458
+            .append("zjlComment", getZjlComment())
459
+            .append("zjlTime", getZjlTime())
460
+            .append("zjlUserId", getZjlUserId())
461
+            .toString();
462
+    }
463
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcRecruitMapper.java 查看文件

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.mapper;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcRecruit;
5
+
6
+/**
7
+ * cmc员工招聘Mapper接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2025-10-16
11
+ */
12
+public interface CmcRecruitMapper 
13
+{
14
+    /**
15
+     * 查询cmc员工招聘
16
+     * 
17
+     * @param recruitId cmc员工招聘主键
18
+     * @return cmc员工招聘
19
+     */
20
+    public CmcRecruit selectCmcRecruitByRecruitId(String recruitId);
21
+
22
+    /**
23
+     * 查询cmc员工招聘列表
24
+     * 
25
+     * @param cmcRecruit cmc员工招聘
26
+     * @return cmc员工招聘集合
27
+     */
28
+    public List<CmcRecruit> selectCmcRecruitList(CmcRecruit cmcRecruit);
29
+
30
+    /**
31
+     * 新增cmc员工招聘
32
+     * 
33
+     * @param cmcRecruit cmc员工招聘
34
+     * @return 结果
35
+     */
36
+    public int insertCmcRecruit(CmcRecruit cmcRecruit);
37
+
38
+    /**
39
+     * 修改cmc员工招聘
40
+     * 
41
+     * @param cmcRecruit cmc员工招聘
42
+     * @return 结果
43
+     */
44
+    public int updateCmcRecruit(CmcRecruit cmcRecruit);
45
+
46
+    /**
47
+     * 删除cmc员工招聘
48
+     * 
49
+     * @param recruitId cmc员工招聘主键
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcRecruitByRecruitId(String recruitId);
53
+
54
+    /**
55
+     * 批量删除cmc员工招聘
56
+     * 
57
+     * @param recruitIds 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcRecruitByRecruitIds(String[] recruitIds);
61
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcTransferMapper.java 查看文件

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.mapper;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcTransfer;
5
+
6
+/**
7
+ * cmc员工调岗Mapper接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2025-10-16
11
+ */
12
+public interface CmcTransferMapper 
13
+{
14
+    /**
15
+     * 查询cmc员工调岗
16
+     * 
17
+     * @param transferId cmc员工调岗主键
18
+     * @return cmc员工调岗
19
+     */
20
+    public CmcTransfer selectCmcTransferByTransferId(String transferId);
21
+
22
+    /**
23
+     * 查询cmc员工调岗列表
24
+     * 
25
+     * @param cmcTransfer cmc员工调岗
26
+     * @return cmc员工调岗集合
27
+     */
28
+    public List<CmcTransfer> selectCmcTransferList(CmcTransfer cmcTransfer);
29
+
30
+    /**
31
+     * 新增cmc员工调岗
32
+     * 
33
+     * @param cmcTransfer cmc员工调岗
34
+     * @return 结果
35
+     */
36
+    public int insertCmcTransfer(CmcTransfer cmcTransfer);
37
+
38
+    /**
39
+     * 修改cmc员工调岗
40
+     * 
41
+     * @param cmcTransfer cmc员工调岗
42
+     * @return 结果
43
+     */
44
+    public int updateCmcTransfer(CmcTransfer cmcTransfer);
45
+
46
+    /**
47
+     * 删除cmc员工调岗
48
+     * 
49
+     * @param transferId cmc员工调岗主键
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcTransferByTransferId(String transferId);
53
+
54
+    /**
55
+     * 批量删除cmc员工调岗
56
+     * 
57
+     * @param transferIds 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcTransferByTransferIds(String[] transferIds);
61
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcRecruitService.java 查看文件

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.service;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcRecruit;
5
+
6
+/**
7
+ * cmc员工招聘Service接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2025-10-16
11
+ */
12
+public interface ICmcRecruitService 
13
+{
14
+    /**
15
+     * 查询cmc员工招聘
16
+     * 
17
+     * @param recruitId cmc员工招聘主键
18
+     * @return cmc员工招聘
19
+     */
20
+    public CmcRecruit selectCmcRecruitByRecruitId(String recruitId);
21
+
22
+    /**
23
+     * 查询cmc员工招聘列表
24
+     * 
25
+     * @param cmcRecruit cmc员工招聘
26
+     * @return cmc员工招聘集合
27
+     */
28
+    public List<CmcRecruit> selectCmcRecruitList(CmcRecruit cmcRecruit);
29
+
30
+    /**
31
+     * 新增cmc员工招聘
32
+     * 
33
+     * @param cmcRecruit cmc员工招聘
34
+     * @return 结果
35
+     */
36
+    public int insertCmcRecruit(CmcRecruit cmcRecruit);
37
+
38
+    /**
39
+     * 修改cmc员工招聘
40
+     * 
41
+     * @param cmcRecruit cmc员工招聘
42
+     * @return 结果
43
+     */
44
+    public int updateCmcRecruit(CmcRecruit cmcRecruit);
45
+
46
+    /**
47
+     * 批量删除cmc员工招聘
48
+     * 
49
+     * @param recruitIds 需要删除的cmc员工招聘主键集合
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcRecruitByRecruitIds(String[] recruitIds);
53
+
54
+    /**
55
+     * 删除cmc员工招聘信息
56
+     * 
57
+     * @param recruitId cmc员工招聘主键
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcRecruitByRecruitId(String recruitId);
61
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcTransferService.java 查看文件

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.service;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcTransfer;
5
+
6
+/**
7
+ * cmc员工调岗Service接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2025-10-16
11
+ */
12
+public interface ICmcTransferService 
13
+{
14
+    /**
15
+     * 查询cmc员工调岗
16
+     * 
17
+     * @param transferId cmc员工调岗主键
18
+     * @return cmc员工调岗
19
+     */
20
+    public CmcTransfer selectCmcTransferByTransferId(String transferId);
21
+
22
+    /**
23
+     * 查询cmc员工调岗列表
24
+     * 
25
+     * @param cmcTransfer cmc员工调岗
26
+     * @return cmc员工调岗集合
27
+     */
28
+    public List<CmcTransfer> selectCmcTransferList(CmcTransfer cmcTransfer);
29
+
30
+    /**
31
+     * 新增cmc员工调岗
32
+     * 
33
+     * @param cmcTransfer cmc员工调岗
34
+     * @return 结果
35
+     */
36
+    public int insertCmcTransfer(CmcTransfer cmcTransfer);
37
+
38
+    /**
39
+     * 修改cmc员工调岗
40
+     * 
41
+     * @param cmcTransfer cmc员工调岗
42
+     * @return 结果
43
+     */
44
+    public int updateCmcTransfer(CmcTransfer cmcTransfer);
45
+
46
+    /**
47
+     * 批量删除cmc员工调岗
48
+     * 
49
+     * @param transferIds 需要删除的cmc员工调岗主键集合
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcTransferByTransferIds(String[] transferIds);
53
+
54
+    /**
55
+     * 删除cmc员工调岗信息
56
+     * 
57
+     * @param transferId cmc员工调岗主键
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcTransferByTransferId(String transferId);
61
+}

+ 93
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcRecruitServiceImpl.java 查看文件

@@ -0,0 +1,93 @@
1
+package com.ruoyi.oa.service.impl;
2
+
3
+import java.util.List;
4
+import org.springframework.beans.factory.annotation.Autowired;
5
+import org.springframework.stereotype.Service;
6
+import com.ruoyi.oa.mapper.CmcRecruitMapper;
7
+import com.ruoyi.oa.domain.CmcRecruit;
8
+import com.ruoyi.oa.service.ICmcRecruitService;
9
+
10
+/**
11
+ * cmc员工招聘Service业务层处理
12
+ * 
13
+ * @author cmc
14
+ * @date 2025-10-16
15
+ */
16
+@Service
17
+public class CmcRecruitServiceImpl implements ICmcRecruitService 
18
+{
19
+    @Autowired
20
+    private CmcRecruitMapper cmcRecruitMapper;
21
+
22
+    /**
23
+     * 查询cmc员工招聘
24
+     * 
25
+     * @param recruitId cmc员工招聘主键
26
+     * @return cmc员工招聘
27
+     */
28
+    @Override
29
+    public CmcRecruit selectCmcRecruitByRecruitId(String recruitId)
30
+    {
31
+        return cmcRecruitMapper.selectCmcRecruitByRecruitId(recruitId);
32
+    }
33
+
34
+    /**
35
+     * 查询cmc员工招聘列表
36
+     * 
37
+     * @param cmcRecruit cmc员工招聘
38
+     * @return cmc员工招聘
39
+     */
40
+    @Override
41
+    public List<CmcRecruit> selectCmcRecruitList(CmcRecruit cmcRecruit)
42
+    {
43
+        return cmcRecruitMapper.selectCmcRecruitList(cmcRecruit);
44
+    }
45
+
46
+    /**
47
+     * 新增cmc员工招聘
48
+     * 
49
+     * @param cmcRecruit cmc员工招聘
50
+     * @return 结果
51
+     */
52
+    @Override
53
+    public int insertCmcRecruit(CmcRecruit cmcRecruit)
54
+    {
55
+        return cmcRecruitMapper.insertCmcRecruit(cmcRecruit);
56
+    }
57
+
58
+    /**
59
+     * 修改cmc员工招聘
60
+     * 
61
+     * @param cmcRecruit cmc员工招聘
62
+     * @return 结果
63
+     */
64
+    @Override
65
+    public int updateCmcRecruit(CmcRecruit cmcRecruit)
66
+    {
67
+        return cmcRecruitMapper.updateCmcRecruit(cmcRecruit);
68
+    }
69
+
70
+    /**
71
+     * 批量删除cmc员工招聘
72
+     * 
73
+     * @param recruitIds 需要删除的cmc员工招聘主键
74
+     * @return 结果
75
+     */
76
+    @Override
77
+    public int deleteCmcRecruitByRecruitIds(String[] recruitIds)
78
+    {
79
+        return cmcRecruitMapper.deleteCmcRecruitByRecruitIds(recruitIds);
80
+    }
81
+
82
+    /**
83
+     * 删除cmc员工招聘信息
84
+     * 
85
+     * @param recruitId cmc员工招聘主键
86
+     * @return 结果
87
+     */
88
+    @Override
89
+    public int deleteCmcRecruitByRecruitId(String recruitId)
90
+    {
91
+        return cmcRecruitMapper.deleteCmcRecruitByRecruitId(recruitId);
92
+    }
93
+}

+ 93
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcTransferServiceImpl.java 查看文件

@@ -0,0 +1,93 @@
1
+package com.ruoyi.oa.service.impl;
2
+
3
+import java.util.List;
4
+import org.springframework.beans.factory.annotation.Autowired;
5
+import org.springframework.stereotype.Service;
6
+import com.ruoyi.oa.mapper.CmcTransferMapper;
7
+import com.ruoyi.oa.domain.CmcTransfer;
8
+import com.ruoyi.oa.service.ICmcTransferService;
9
+
10
+/**
11
+ * cmc员工调岗Service业务层处理
12
+ * 
13
+ * @author cmc
14
+ * @date 2025-10-16
15
+ */
16
+@Service
17
+public class CmcTransferServiceImpl implements ICmcTransferService 
18
+{
19
+    @Autowired
20
+    private CmcTransferMapper cmcTransferMapper;
21
+
22
+    /**
23
+     * 查询cmc员工调岗
24
+     * 
25
+     * @param transferId cmc员工调岗主键
26
+     * @return cmc员工调岗
27
+     */
28
+    @Override
29
+    public CmcTransfer selectCmcTransferByTransferId(String transferId)
30
+    {
31
+        return cmcTransferMapper.selectCmcTransferByTransferId(transferId);
32
+    }
33
+
34
+    /**
35
+     * 查询cmc员工调岗列表
36
+     * 
37
+     * @param cmcTransfer cmc员工调岗
38
+     * @return cmc员工调岗
39
+     */
40
+    @Override
41
+    public List<CmcTransfer> selectCmcTransferList(CmcTransfer cmcTransfer)
42
+    {
43
+        return cmcTransferMapper.selectCmcTransferList(cmcTransfer);
44
+    }
45
+
46
+    /**
47
+     * 新增cmc员工调岗
48
+     * 
49
+     * @param cmcTransfer cmc员工调岗
50
+     * @return 结果
51
+     */
52
+    @Override
53
+    public int insertCmcTransfer(CmcTransfer cmcTransfer)
54
+    {
55
+        return cmcTransferMapper.insertCmcTransfer(cmcTransfer);
56
+    }
57
+
58
+    /**
59
+     * 修改cmc员工调岗
60
+     * 
61
+     * @param cmcTransfer cmc员工调岗
62
+     * @return 结果
63
+     */
64
+    @Override
65
+    public int updateCmcTransfer(CmcTransfer cmcTransfer)
66
+    {
67
+        return cmcTransferMapper.updateCmcTransfer(cmcTransfer);
68
+    }
69
+
70
+    /**
71
+     * 批量删除cmc员工调岗
72
+     * 
73
+     * @param transferIds 需要删除的cmc员工调岗主键
74
+     * @return 结果
75
+     */
76
+    @Override
77
+    public int deleteCmcTransferByTransferIds(String[] transferIds)
78
+    {
79
+        return cmcTransferMapper.deleteCmcTransferByTransferIds(transferIds);
80
+    }
81
+
82
+    /**
83
+     * 删除cmc员工调岗信息
84
+     * 
85
+     * @param transferId cmc员工调岗主键
86
+     * @return 结果
87
+     */
88
+    @Override
89
+    public int deleteCmcTransferByTransferId(String transferId)
90
+    {
91
+        return cmcTransferMapper.deleteCmcTransferByTransferId(transferId);
92
+    }
93
+}

+ 3
- 17
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcProjectMapper.xml 查看文件

@@ -50,7 +50,6 @@
50 50
         <association property="technicalDirectorUser"    javaType="SysUser"         resultMap="TechnicalDirectorResult" />
51 51
         <association property="technicalDesignerUser"    javaType="SysUser"         resultMap="TechnicalDesignerResult" />
52 52
         <association property="partyA"    javaType="CmcPartyA"         resultMap="CmcPartyAResult" />
53
-        <association property="contract"    javaType="CmcContract"         resultMap="CmcContractResult" />
54 53
     </resultMap>
55 54
 
56 55
     <resultMap type="SysUser" id="ProjectLeaderResult">
@@ -88,19 +87,12 @@
88 87
         <result property="partyAName"    column="party_a_name"    />
89 88
     </resultMap>
90 89
 
91
-    <resultMap type="CmcContract" id="CmcContractResult">
92
-        <result property="contractId"    column="contract_id"    />
93
-        <result property="contractNumber"    column="contract_number"    />
94
-        <result property="contractCode"    column="contract_code"    />
95
-        <result property="contractName"    column="contract_name"    />
96
-    </resultMap>
97
-
98 90
     <sql id="selectCmcProjectVo">
99 91
         select distinct(p.project_id), p.project_number, p.project_name, p.project_leader, u.nick_name as leader_nick_name, p.is_finished, p.project_source, p.party_a_id, pa.party_a_name, p.contact_person, p.telephone,
100 92
                p.project_type, p.project_level, p.project_registrant, u1.nick_name as registrant_nick_name, p.undertaking_dept, p.project_planner, p.site_leader, p.organize_document, p.organize_time, p.is_complete,
101 93
                p.register_time, p.plan_time, p.entry_time, p.exit_time, p.remark, tp.technical_director, u2.nick_name as director_nick_name, tp.quality_inspector, p.project_kml, p.project_cp, p.kml_lng, p.kml_lat,
102 94
                p.cars, p.drivers, p.devices, p.participates, p.task_document, p.project_request, tp.technical_designer, u3.nick_name as designer_nick_name, u4.nick_name as planner_nick_name,
103
-               u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept, pc.contract_id, c.contract_number, c.contract_code, c.contract_name from cmc_project as p
95
+               u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept from cmc_project as p
104 96
         left join sys_user as u on u.user_id = p.project_leader
105 97
         left join sys_user as u1 on u1.user_id = p.project_registrant
106 98
         left join cmc_technical_plan as tp on tp.project_id = p.project_id
@@ -109,8 +101,6 @@
109 101
         left join sys_user as u4 on u4.user_id = p.project_planner
110 102
         left join sys_user as u5 on u5.user_id = p.site_leader
111 103
         left join cmc_party_a as pa on pa.party_a_id = p.party_a_id
112
-        left join cmc_project_contract as pc on pc.project_id = p.project_id
113
-        left join cmc_contract as c on c.contract_id = pc.contract_id
114 104
     </sql>
115 105
 
116 106
     <select id="selectCmcProjectList" parameterType="CmcProject" resultMap="CmcProjectResult">
@@ -151,7 +141,7 @@
151 141
         p.project_type, p.project_level, p.project_registrant, u1.nick_name as registrant_nick_name, p.undertaking_dept, p.project_planner, p.site_leader, p.organize_document, p.organize_time, p.is_complete,
152 142
         p.register_time, p.plan_time, p.entry_time, p.exit_time, p.remark, tp.technical_director, u2.nick_name as director_nick_name, tp.quality_inspector, p.project_kml, p.project_cp, p.kml_lng, p.kml_lat,
153 143
         p.cars, p.drivers, p.devices, p.participates, p.task_document, p.project_request, tp.technical_designer, u3.nick_name as designer_nick_name, u4.nick_name as planner_nick_name,
154
-        u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept, pc.contract_id, c.contract_number, c.contract_code, c.contract_name from cmc_project as p
144
+        u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept from cmc_project as p
155 145
         left join sys_user as u on u.user_id = p.project_leader
156 146
         left join sys_user as u1 on u1.user_id = p.project_registrant
157 147
         left join cmc_technical_plan as tp on tp.project_id = p.project_id
@@ -160,8 +150,6 @@
160 150
         left join sys_user as u4 on u4.user_id = p.project_planner
161 151
         left join sys_user as u5 on u5.user_id = p.site_leader
162 152
         left join cmc_party_a as pa on pa.party_a_id = p.party_a_id
163
-        left join cmc_project_contract as pc on pc.project_id = p.project_id
164
-        left join cmc_contract as c on c.contract_id = pc.contract_id
165 153
         <where>
166 154
             (p.project_number REGEXP '^[0-9]+W[0-9]' or p.project_number REGEXP '^[0-9]+C[0-9]') AND NOT (p.project_number REGEXP '[/\\*-]')
167 155
             and (case when p.undertaking_dept not like concat('%', '113', '%') then p.undertaking_dept not like concat('%', '113', '%')
@@ -200,7 +188,7 @@
200 188
         p.project_type, p.project_level, p.project_registrant, u1.nick_name as registrant_nick_name, p.undertaking_dept, p.project_planner, p.site_leader, p.organize_document, p.organize_time, p.is_complete,
201 189
         p.register_time, p.plan_time, p.entry_time, p.exit_time, p.remark, tp.technical_director, u2.nick_name as director_nick_name, tp.quality_inspector, p.project_kml, p.project_cp, p.kml_lng, p.kml_lat,
202 190
         p.cars, p.drivers, p.devices, p.participates, p.task_document, p.project_request, tp.technical_designer, u3.nick_name as designer_nick_name, u4.nick_name as planner_nick_name,
203
-        u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept, pc.contract_id, c.contract_number, c.contract_code, c.contract_name from cmc_project as p
191
+        u5.nick_name as site_nick_name, p.in_leader, p.out_leader, p.lead_dept, p.join_dept from cmc_project as p
204 192
         left join sys_user as u on u.user_id = p.project_leader
205 193
         left join sys_user as u1 on u1.user_id = p.project_registrant
206 194
         left join cmc_technical_plan as tp on tp.project_id = p.project_id
@@ -209,8 +197,6 @@
209 197
         left join sys_user as u4 on u4.user_id = p.project_planner
210 198
         left join sys_user as u5 on u5.user_id = p.site_leader
211 199
         left join cmc_party_a as pa on pa.party_a_id = p.party_a_id
212
-        left join cmc_project_contract as pc on pc.project_id = p.project_id
213
-        left join cmc_contract as c on c.contract_id = pc.contract_id
214 200
         left join cmc_project_work as pw on pw.project_id = p.project_id
215 201
         <where>
216 202
             (p.project_number REGEXP '^[0-9]+W[0-9]' or p.project_number REGEXP '^[0-9]+C[0-9]') AND NOT (p.project_number REGEXP '[/\\*-]')

+ 189
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcRecruitMapper.xml 查看文件

@@ -0,0 +1,189 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper
3
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
+<mapper namespace="com.ruoyi.oa.mapper.CmcRecruitMapper">
6
+
7
+    <resultMap type="CmcRecruit" id="CmcRecruitResult">
8
+        <result property="recruitId"    column="recruit_id"    />
9
+        <result property="applier"    column="applier"    />
10
+        <result property="applyDept"    column="apply_dept"    />
11
+        <result property="projectId"    column="project_id"    />
12
+        <result property="applyDate"    column="apply_date"    />
13
+        <result property="postName"    column="post_name"    />
14
+        <result property="postNumber"    column="post_number"    />
15
+        <result property="duty"    column="duty"    />
16
+        <result property="qualification"    column="qualification"    />
17
+        <result property="wage"    column="wage"    />
18
+        <result property="deptComment"    column="dept_comment"    />
19
+        <result property="deptUserId"    column="dept_user_id"    />
20
+        <result property="deptTime"    column="dept_time"    />
21
+        <result property="managerComment"    column="manager_comment"    />
22
+        <result property="managerUserId"    column="manager_user_id"    />
23
+        <result property="managerTime"    column="manager_time"    />
24
+        <result property="zjlComment"    column="zjl_comment"    />
25
+        <result property="zjlUserId"    column="zjl_user_id"    />
26
+        <result property="zjlTime"    column="zjl_time"    />
27
+        <association property="applierUser"    javaType="SysUser"         resultMap="ApplierUserResult" />
28
+        <association property="deptUser"    javaType="SysUser"         resultMap="DeptUserResult" />
29
+        <association property="managerUser"    javaType="SysUser"         resultMap="ManagerUserResult" />
30
+        <association property="zjlUser"    javaType="SysUser"         resultMap="ZjlUserResult" />
31
+        <association property="dept"    javaType="SysDept"         resultMap="SysDeptResult" />
32
+        <association property="project"    javaType="CmcProject"         resultMap="CmcProjectResult" />
33
+    </resultMap>
34
+
35
+    <resultMap type="SysUser" id="ApplierUserResult">
36
+        <result property="userId"    column="user_id"    />
37
+        <result property="nickName"    column="applier_nick_name"    />
38
+    </resultMap>
39
+
40
+    <resultMap type="SysUser" id="DeptUserResult">
41
+        <result property="userId"    column="user_id"    />
42
+        <result property="nickName"    column="dept_nick_name"    />
43
+    </resultMap>
44
+
45
+    <resultMap type="SysUser" id="ManagerUserResult">
46
+        <result property="userId"    column="user_id"    />
47
+        <result property="nickName"    column="manager_nick_name"    />
48
+    </resultMap>
49
+
50
+    <resultMap type="SysUser" id="ZjlUserResult">
51
+        <result property="userId"    column="user_id"    />
52
+        <result property="nickName"    column="zjl_nick_name"    />
53
+    </resultMap>
54
+
55
+    <resultMap type="SysDept" id="SysDeptResult">
56
+        <result property="deptId"    column="dept_id"    />
57
+        <result property="deptName"    column="dept_name"    />
58
+    </resultMap>
59
+
60
+    <resultMap type="CmcProject" id="CmcProjectResult">
61
+        <result property="projectId"    column="project_id"    />
62
+        <result property="projectNumber"    column="project_number"    />
63
+        <result property="projectName"    column="project_name"    />
64
+        <result property="undertakingDept"    column="undertaking_dept"    />
65
+    </resultMap>
66
+
67
+    <sql id="selectCmcRecruitVo">
68
+        select r.recruit_id, r.applier, u.nick_name as applier_nick_name, d.dept_name, r.apply_dept, r.project_id, p.project_number, p.project_name, p.undertaking_dept, r.apply_date, r.post_name, r.post_number, r.duty,
69
+        r.qualification, r.wage, r.dept_comment, r.dept_user_id, u1.nick_name as dept_nick_name, r.dept_time, r.manager_comment, r.manager_user_id, u2.nick_name as manager_nick_name, r.manager_time,
70
+        r.zjl_comment, r.zjl_user_id, u3.nick_name as zjl_nick_name, r.zjl_time from cmc_recruit as r
71
+        left join sys_user as u on u.user_id = r.applier
72
+        left join sys_user as u1 on u1.user_id = r.dept_user_id
73
+        left join sys_user as u2 on u2.user_id = r.manager_user_id
74
+        left join sys_user as u3 on u3.user_id = r.zjl_user_id
75
+        left join sys_dept as d on d.dept_id = r.apply_dept
76
+        left join cmc_project as p on r.project_id = p.project_id
77
+    </sql>
78
+
79
+    <select id="selectCmcRecruitList" parameterType="CmcRecruit" resultMap="CmcRecruitResult">
80
+        <include refid="selectCmcRecruitVo"/>
81
+        <where>
82
+            <if test="applier != null "> and r.applier = #{applier}</if>
83
+            <if test="applyDept != null "> and r.apply_dept = #{applyDept}</if>
84
+            <if test="projectId != null  and projectId != ''"> and r.project_id = #{projectId}</if>
85
+            <if test="applyDate != null "> and r.apply_date = #{applyDate}</if>
86
+            <if test="postName != null  and postName != ''"> and r.post_name like concat('%', r.#{postName}, r.'%')</if>
87
+            <if test="postNumber != null "> and r.post_number = #{postNumber}</if>
88
+            <if test="duty != null  and duty != ''"> and r.duty = #{duty}</if>
89
+            <if test="qualification != null  and qualification != ''"> and r.qualification = #{qualification}</if>
90
+            <if test="wage != null  and wage != ''"> and r.wage = #{wage}</if>
91
+            <if test="deptComment != null  and deptComment != ''"> and r.dept_comment = #{deptComment}</if>
92
+            <if test="deptUserId != null "> and r.dept_user_id = #{deptUserId}</if>
93
+            <if test="deptTime != null "> and r.dept_time = #{deptTime}</if>
94
+            <if test="managerComment != null  and managerComment != ''"> and r.manager_comment = #{managerComment}</if>
95
+            <if test="managerUserId != null "> and r.manager_user_id = #{managerUserId}</if>
96
+            <if test="managerTime != null "> and r.manager_time = #{managerTime}</if>
97
+            <if test="zjlComment != null  and zjlComment != ''"> and r.zjl_comment = #{zjlComment}</if>
98
+            <if test="zjlUserId != null "> and r.zjl_user_id = #{zjlUserId}</if>
99
+            <if test="zjlTime != null "> and r.zjl_time = #{zjlTime}</if>
100
+        </where>
101
+    </select>
102
+
103
+    <select id="selectCmcRecruitByRecruitId" parameterType="String" resultMap="CmcRecruitResult">
104
+        <include refid="selectCmcRecruitVo"/>
105
+        where recruit_id = #{recruitId}
106
+    </select>
107
+
108
+    <insert id="insertCmcRecruit" parameterType="CmcRecruit">
109
+        insert into cmc_recruit
110
+        <trim prefix="(" suffix=")" suffixOverrides=",">
111
+            <if test="recruitId != null">recruit_id,</if>
112
+            <if test="applier != null">applier,</if>
113
+            <if test="applyDept != null">apply_dept,</if>
114
+            <if test="projectId != null">project_id,</if>
115
+            <if test="applyDate != null">apply_date,</if>
116
+            <if test="postName != null">post_name,</if>
117
+            <if test="postNumber != null">post_number,</if>
118
+            <if test="duty != null">duty,</if>
119
+            <if test="qualification != null">qualification,</if>
120
+            <if test="wage != null">wage,</if>
121
+            <if test="deptComment != null">dept_comment,</if>
122
+            <if test="deptUserId != null">dept_user_id,</if>
123
+            <if test="deptTime != null">dept_time,</if>
124
+            <if test="managerComment != null">manager_comment,</if>
125
+            <if test="managerUserId != null">manager_user_id,</if>
126
+            <if test="managerTime != null">manager_time,</if>
127
+            <if test="zjlComment != null">zjl_comment,</if>
128
+            <if test="zjlUserId != null">zjl_user_id,</if>
129
+            <if test="zjlTime != null">zjl_time,</if>
130
+        </trim>
131
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
132
+            <if test="recruitId != null">#{recruitId},</if>
133
+            <if test="applier != null">#{applier},</if>
134
+            <if test="applyDept != null">#{applyDept},</if>
135
+            <if test="projectId != null">#{projectId},</if>
136
+            <if test="applyDate != null">#{applyDate},</if>
137
+            <if test="postName != null">#{postName},</if>
138
+            <if test="postNumber != null">#{postNumber},</if>
139
+            <if test="duty != null">#{duty},</if>
140
+            <if test="qualification != null">#{qualification},</if>
141
+            <if test="wage != null">#{wage},</if>
142
+            <if test="deptComment != null">#{deptComment},</if>
143
+            <if test="deptUserId != null">#{deptUserId},</if>
144
+            <if test="deptTime != null">#{deptTime},</if>
145
+            <if test="managerComment != null">#{managerComment},</if>
146
+            <if test="managerUserId != null">#{managerUserId},</if>
147
+            <if test="managerTime != null">#{managerTime},</if>
148
+            <if test="zjlComment != null">#{zjlComment},</if>
149
+            <if test="zjlUserId != null">#{zjlUserId},</if>
150
+            <if test="zjlTime != null">#{zjlTime},</if>
151
+        </trim>
152
+    </insert>
153
+
154
+    <update id="updateCmcRecruit" parameterType="CmcRecruit">
155
+        update cmc_recruit
156
+        <trim prefix="SET" suffixOverrides=",">
157
+            <if test="applier != null">applier = #{applier},</if>
158
+            <if test="applyDept != null">apply_dept = #{applyDept},</if>
159
+            <if test="projectId != null">project_id = #{projectId},</if>
160
+            <if test="applyDate != null">apply_date = #{applyDate},</if>
161
+            <if test="postName != null">post_name = #{postName},</if>
162
+            <if test="postNumber != null">post_number = #{postNumber},</if>
163
+            <if test="duty != null">duty = #{duty},</if>
164
+            <if test="qualification != null">qualification = #{qualification},</if>
165
+            <if test="wage != null">wage = #{wage},</if>
166
+            <if test="deptComment != null">dept_comment = #{deptComment},</if>
167
+            <if test="deptUserId != null">dept_user_id = #{deptUserId},</if>
168
+            <if test="deptTime != null">dept_time = #{deptTime},</if>
169
+            <if test="managerComment != null">manager_comment = #{managerComment},</if>
170
+            <if test="managerUserId != null">manager_user_id = #{managerUserId},</if>
171
+            <if test="managerTime != null">manager_time = #{managerTime},</if>
172
+            <if test="zjlComment != null">zjl_comment = #{zjlComment},</if>
173
+            <if test="zjlUserId != null">zjl_user_id = #{zjlUserId},</if>
174
+            <if test="zjlTime != null">zjl_time = #{zjlTime},</if>
175
+        </trim>
176
+        where recruit_id = #{recruitId}
177
+    </update>
178
+
179
+    <delete id="deleteCmcRecruitByRecruitId" parameterType="String">
180
+        delete from cmc_recruit where recruit_id = #{recruitId}
181
+    </delete>
182
+
183
+    <delete id="deleteCmcRecruitByRecruitIds" parameterType="String">
184
+        delete from cmc_recruit where recruit_id in
185
+        <foreach item="recruitId" collection="array" open="(" separator="," close=")">
186
+            #{recruitId}
187
+        </foreach>
188
+    </delete>
189
+</mapper>

+ 28
- 9
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcResourceMapper.xml 查看文件

@@ -56,7 +56,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
56 56
     </select>
57 57
 
58 58
     <select id="selectCmcResourceListBelow" parameterType="CmcResource" resultMap="CmcResourceResult">
59
-        SELECT r.resource_id, r.uploader, r.upload_dept, r.title, r.source_path, r.type, r.field_id, tree.field, r.upload_time, r.hours
59
+        SELECT * FROM
60
+        ( SELECT r.resource_id, r.uploader, r.upload_dept, r.title, r.source_path, r.type, r.field_id, tree.field, r.upload_time, r.hours
60 61
         FROM cmc_resource AS r
61 62
         LEFT JOIN sys_user AS u ON u.user_id = r.uploader
62 63
         LEFT JOIN sys_dept AS d ON d.dept_id = r.upload_dept
@@ -69,15 +70,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
69 70
         RIGHT JOIN cmc_resource_field AS rf2 ON rf2.parent_id = rf3.sub_field_id
70 71
         WHERE rf3.sub_field_id = #{fieldId} OR rf2.field_id = #{fieldId} OR rf3.field_id = #{fieldId}
71 72
         ) as tree on tree.field_id = r.field_id
73
+        UNION
74
+        SELECT r.resource_id, r.uploader, r.upload_dept, r.title, r.source_path, r.type, r.field_id, tree.field, r.upload_time, r.hours
75
+        FROM cmc_resource AS r
76
+        LEFT JOIN sys_user AS u ON u.user_id = r.uploader
77
+        LEFT JOIN sys_dept AS d ON d.dept_id = r.upload_dept
78
+        RIGHT JOIN (
79
+        SELECT rf5.field_id, rf5.field FROM
80
+        ( SELECT rf2.field_id AS sub_sub_field_id, rf2.parent_id AS sub_sub_parent_id, rf3.* FROM
81
+        ( SELECT rf1.field_id AS sub_field_id, rf1.parent_id AS sub_parent_id, rf0.field_id, rf0.parent_id
82
+        FROM cmc_resource_field AS rf0
83
+        LEFT JOIN cmc_resource_field AS rf1 ON rf1.parent_id = rf0.field_id
84
+        WHERE rf0.field_id = #{fieldId} OR rf1.field_id = #{fieldId} ) AS rf3
85
+        RIGHT JOIN cmc_resource_field AS rf2 ON rf2.parent_id = rf3.sub_field_id
86
+        WHERE rf3.sub_field_id = #{fieldId} OR rf2.field_id = #{fieldId} OR rf3.field_id = #{fieldId} ) AS rf4
87
+        RIGHT JOIN cmc_resource_field AS rf5 ON rf5.parent_id = rf4.sub_sub_field_id
88
+        WHERE rf4.sub_field_id = #{fieldId} OR rf4.field_id = #{fieldId} OR rf5.field_id = #{fieldId}
89
+        ) as tree on tree.field_id = r.field_id
90
+        ) AS t
72 91
         <where>
73
-            r.resource_id is not null
74
-            <if test="uploader != null "> and r.uploader = #{uploader}</if>
75
-            <if test="uploadDept != null "> and r.upload_dept = #{uploadDept}</if>
76
-            <if test="title != null  and title != ''"> and r.title like concat('%', #{title}, '%')</if>
77
-            <if test="sourcePath != null  and sourcePath != ''"> and r.source_path = #{sourcePath}</if>
78
-            <if test="type != null  and type != ''"> and r.type = #{type}</if>
79
-            <if test="uploadTime != null "> and r.upload_time = #{uploadTime}</if>
80
-            <if test="hours != null "> and r.hours = #{hours}</if>
92
+            t.resource_id is not null
93
+            <if test="uploader != null "> and t.uploader = #{uploader}</if>
94
+            <if test="uploadDept != null "> and t.upload_dept = #{uploadDept}</if>
95
+            <if test="title != null  and title != ''"> and t.title like concat('%', #{title}, '%')</if>
96
+            <if test="sourcePath != null  and sourcePath != ''"> and t.source_path = #{sourcePath}</if>
97
+            <if test="type != null  and type != ''"> and t.type = #{type}</if>
98
+            <if test="uploadTime != null "> and t.upload_time = #{uploadTime}</if>
99
+            <if test="hours != null "> and t.hours = #{hours}</if>
81 100
         </where>
82 101
     </select>
83 102
 

+ 231
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcTransferMapper.xml 查看文件

@@ -0,0 +1,231 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper
3
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
+<mapper namespace="com.ruoyi.oa.mapper.CmcTransferMapper">
6
+    
7
+    <resultMap type="CmcTransfer" id="CmcTransferResult">
8
+        <result property="transferId"    column="transfer_id"    />
9
+        <result property="applier"    column="applier"    />
10
+        <result property="applyDate"    column="apply_date"    />
11
+        <result property="beforeDeptId"    column="before_dept_id"    />
12
+        <result property="beforePostId"    column="before_post_id"    />
13
+        <result property="afterDeptId"    column="after_dept_id"    />
14
+        <result property="afterPostId"    column="after_post_id"    />
15
+        <result property="beforeDeptComment"    column="before_dept_comment"    />
16
+        <result property="beforeDeptLeader"    column="before_dept_leader"    />
17
+        <result property="beforeDeptTime"    column="before_dept_time"    />
18
+        <result property="afterDeptComment"    column="after_dept_comment"    />
19
+        <result property="afterDeptTime"    column="after_dept_time"    />
20
+        <result property="afterDeptLeader"    column="after_dept_leader"    />
21
+        <result property="zhComment"    column="zh_comment"    />
22
+        <result property="zhTime"    column="zh_time"    />
23
+        <result property="zhUserId"    column="zh_user_id"    />
24
+        <result property="managerComment"    column="manager_comment"    />
25
+        <result property="managerTime"    column="manager_time"    />
26
+        <result property="managerUserId"    column="manager_user_id"    />
27
+        <result property="zjlComment"    column="zjl_comment"    />
28
+        <result property="zjlTime"    column="zjl_time"    />
29
+        <result property="zjlUserId"    column="zjl_user_id"    />
30
+        <association property="applierUser"    javaType="SysUser"         resultMap="ApplierUserResult" />
31
+        <association property="beforeDeptUser"    javaType="SysUser"         resultMap="BeforeDeptUserResult" />
32
+        <association property="afterDeptUser"    javaType="SysUser"         resultMap="AfterDeptUserResult" />
33
+        <association property="zhUser"    javaType="SysUser"         resultMap="ZhUserResult" />
34
+        <association property="managerUser"    javaType="SysUser"         resultMap="ManagerUserResult" />
35
+        <association property="zjlUser"    javaType="SysUser"         resultMap="ZjlUserResult" />
36
+        <association property="beforePost"    javaType="SysPost"         resultMap="BeforePostResult" />
37
+        <association property="afterPost"    javaType="SysPost"         resultMap="AfterPostResult" />
38
+        <association property="beforeDept"    javaType="SysDept"         resultMap="BeforeDeptResult" />
39
+        <association property="afterDept"    javaType="SysDept"         resultMap="AfterDeptResult" />
40
+    </resultMap>
41
+
42
+    <resultMap type="SysUser" id="ApplierUserResult">
43
+        <result property="userId"    column="user_id"    />
44
+        <result property="nickName"    column="applier_nick_name"    />
45
+    </resultMap>
46
+
47
+    <resultMap type="SysUser" id="BeforeDeptUserResult">
48
+        <result property="userId"    column="user_id"    />
49
+        <result property="nickName"    column="before_dept_nick_name"    />
50
+    </resultMap>
51
+
52
+    <resultMap type="SysUser" id="AfterDeptUserResult">
53
+        <result property="userId"    column="user_id"    />
54
+        <result property="nickName"    column="after_dept_nick_name"    />
55
+    </resultMap>
56
+
57
+    <resultMap type="SysUser" id="ZhUserResult">
58
+        <result property="userId"    column="user_id"    />
59
+        <result property="nickName"    column="zh_nick_name"    />
60
+    </resultMap>
61
+
62
+    <resultMap type="SysUser" id="ManagerUserResult">
63
+        <result property="userId"    column="user_id"    />
64
+        <result property="nickName"    column="manager_nick_name"    />
65
+    </resultMap>
66
+
67
+    <resultMap type="SysUser" id="ZjlUserResult">
68
+        <result property="userId"    column="user_id"    />
69
+        <result property="nickName"    column="zjl_nick_name"    />
70
+    </resultMap>
71
+
72
+    <resultMap type="SysPost" id="BeforePostResult">
73
+        <result property="postId"    column="post_id"    />
74
+        <result property="postName"    column="before_post_name"    />
75
+    </resultMap>
76
+
77
+    <resultMap type="SysPost" id="AfterPostResult">
78
+        <result property="postId"    column="post_id"    />
79
+        <result property="postName"    column="after_post_name"    />
80
+    </resultMap>
81
+
82
+    <resultMap type="SysDept" id="BeforeDeptResult">
83
+        <result property="deptId"    column="dept_id"    />
84
+        <result property="deptName"    column="before_dept_name"    />
85
+    </resultMap>
86
+
87
+    <resultMap type="SysDept" id="AfterDeptResult">
88
+        <result property="deptId"    column="dept_id"    />
89
+        <result property="deptName"    column="after_dept_name"    />
90
+    </resultMap>
91
+
92
+    <sql id="selectCmcTransferVo">
93
+        select t.transfer_id, t.applier, u.nick_name as applier_nick_name, t.apply_date, d.dept_name as before_dept_name, t.before_dept_id, p.post_name as before_post_name, t.before_post_id, d1.dept_name as after_dept_name, t.after_dept_id,
94
+        p1.post_name as after_post_name, t.after_post_id, t.before_dept_comment, t.before_dept_leader, u1.nick_name as before_dept_nick_name, t.before_dept_time, t.after_dept_comment, t.after_dept_time, t.after_dept_leader,
95
+        u2.nick_name as after_dept_nick_name, t.zh_comment, t.zh_time, t.zh_user_id, u3.nick_name as zh_nick_name, t.manager_comment, t.manager_time, t.manager_user_id, u4.nick_name as manager_nick_name,
96
+        t.zjl_comment, t.zjl_time, t.zjl_user_id, u5.nick_name as zjl_nick_name from cmc_transfer as t
97
+        left join sys_user as u on u.user_id = t.applier
98
+        left join sys_user as u1 on u1.user_id = t.before_dept_leader
99
+        left join sys_user as u2 on u2.user_id = t.after_dept_leader
100
+        left join sys_user as u3 on u3.user_id = t.zh_user_id
101
+        left join sys_user as u4 on u4.user_id = t.manager_user_id
102
+        left join sys_user as u5 on u5.user_id = t.zjl_user_id
103
+        left join sys_post as p on p.post_id = t.before_post_id
104
+        left join sys_post as p1 on p1.post_id = t.after_post_id
105
+        left join sys_dept as d on d.dept_id = t.before_dept_id
106
+        left join sys_dept as d1 on d1.dept_id = t.after_dept_id
107
+    </sql>
108
+
109
+    <select id="selectCmcTransferList" parameterType="CmcTransfer" resultMap="CmcTransferResult">
110
+        <include refid="selectCmcTransferVo"/>
111
+        <where>  
112
+            <if test="applier != null "> and t.applier = #{applier}</if>
113
+            <if test="applyDate != null "> and t.apply_date = #{applyDate}</if>
114
+            <if test="beforeDeptId != null "> and t.before_dept_id = #{beforeDeptId}</if>
115
+            <if test="beforePostId != null "> and t.before_post_id = #{beforePostId}</if>
116
+            <if test="afterDeptId != null "> and t.after_dept_id = #{afterDeptId}</if>
117
+            <if test="afterPostId != null "> and t.after_post_id = #{afterPostId}</if>
118
+            <if test="beforeDeptComment != null  and beforeDeptComment != ''"> and t.before_dept_comment = #{beforeDeptComment}</if>
119
+            <if test="beforeDeptLeader != null "> and t.before_dept_leader = #{beforeDeptLeader}</if>
120
+            <if test="beforeDeptTime != null "> and t.before_dept_time = #{beforeDeptTime}</if>
121
+            <if test="afterDeptComment != null  and afterDeptComment != ''"> and t.after_dept_comment = #{afterDeptComment}</if>
122
+            <if test="afterDeptTime != null "> and t.after_dept_time = #{afterDeptTime}</if>
123
+            <if test="afterDeptLeader != null "> and t.after_dept_leader = #{afterDeptLeader}</if>
124
+            <if test="zhComment != null  and zhComment != ''"> and t.zh_comment = #{zhComment}</if>
125
+            <if test="zhTime != null "> and t.zh_time = #{zhTime}</if>
126
+            <if test="zhUserId != null "> and t.zh_user_id = #{zhUserId}</if>
127
+            <if test="managerComment != null  and managerComment != ''"> and t.manager_comment = #{managerComment}</if>
128
+            <if test="managerTime != null "> and t.manager_time = #{managerTime}</if>
129
+            <if test="managerUserId != null "> and t.manager_user_id = #{managerUserId}</if>
130
+            <if test="zjlComment != null  and zjlComment != ''"> and t.zjl_comment = #{zjlComment}</if>
131
+            <if test="zjlTime != null "> and t.zjl_time = #{zjlTime}</if>
132
+            <if test="zjlUserId != null "> and t.zjl_user_id = #{zjlUserId}</if>
133
+        </where>
134
+    </select>
135
+    
136
+    <select id="selectCmcTransferByTransferId" parameterType="String" resultMap="CmcTransferResult">
137
+        <include refid="selectCmcTransferVo"/>
138
+        where transfer_id = #{transferId}
139
+    </select>
140
+        
141
+    <insert id="insertCmcTransfer" parameterType="CmcTransfer">
142
+        insert into cmc_transfer
143
+        <trim prefix="(" suffix=")" suffixOverrides=",">
144
+            <if test="transferId != null">transfer_id,</if>
145
+            <if test="applier != null">applier,</if>
146
+            <if test="applyDate != null">apply_date,</if>
147
+            <if test="beforeDeptId != null">before_dept_id,</if>
148
+            <if test="beforePostId != null">before_post_id,</if>
149
+            <if test="afterDeptId != null">after_dept_id,</if>
150
+            <if test="afterPostId != null">after_post_id,</if>
151
+            <if test="beforeDeptComment != null">before_dept_comment,</if>
152
+            <if test="beforeDeptLeader != null">before_dept_leader,</if>
153
+            <if test="beforeDeptTime != null">before_dept_time,</if>
154
+            <if test="afterDeptComment != null">after_dept_comment,</if>
155
+            <if test="afterDeptTime != null">after_dept_time,</if>
156
+            <if test="afterDeptLeader != null">after_dept_leader,</if>
157
+            <if test="zhComment != null">zh_comment,</if>
158
+            <if test="zhTime != null">zh_time,</if>
159
+            <if test="zhUserId != null">zh_user_id,</if>
160
+            <if test="managerComment != null">manager_comment,</if>
161
+            <if test="managerTime != null">manager_time,</if>
162
+            <if test="managerUserId != null">manager_user_id,</if>
163
+            <if test="zjlComment != null">zjl_comment,</if>
164
+            <if test="zjlTime != null">zjl_time,</if>
165
+            <if test="zjlUserId != null">zjl_user_id,</if>
166
+         </trim>
167
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
168
+            <if test="transferId != null">#{transferId},</if>
169
+            <if test="applier != null">#{applier},</if>
170
+            <if test="applyDate != null">#{applyDate},</if>
171
+            <if test="beforeDeptId != null">#{beforeDeptId},</if>
172
+            <if test="beforePostId != null">#{beforePostId},</if>
173
+            <if test="afterDeptId != null">#{afterDeptId},</if>
174
+            <if test="afterPostId != null">#{afterPostId},</if>
175
+            <if test="beforeDeptComment != null">#{beforeDeptComment},</if>
176
+            <if test="beforeDeptLeader != null">#{beforeDeptLeader},</if>
177
+            <if test="beforeDeptTime != null">#{beforeDeptTime},</if>
178
+            <if test="afterDeptComment != null">#{afterDeptComment},</if>
179
+            <if test="afterDeptTime != null">#{afterDeptTime},</if>
180
+            <if test="afterDeptLeader != null">#{afterDeptLeader},</if>
181
+            <if test="zhComment != null">#{zhComment},</if>
182
+            <if test="zhTime != null">#{zhTime},</if>
183
+            <if test="zhUserId != null">#{zhUserId},</if>
184
+            <if test="managerComment != null">#{managerComment},</if>
185
+            <if test="managerTime != null">#{managerTime},</if>
186
+            <if test="managerUserId != null">#{managerUserId},</if>
187
+            <if test="zjlComment != null">#{zjlComment},</if>
188
+            <if test="zjlTime != null">#{zjlTime},</if>
189
+            <if test="zjlUserId != null">#{zjlUserId},</if>
190
+         </trim>
191
+    </insert>
192
+
193
+    <update id="updateCmcTransfer" parameterType="CmcTransfer">
194
+        update cmc_transfer
195
+        <trim prefix="SET" suffixOverrides=",">
196
+            <if test="applier != null">applier = #{applier},</if>
197
+            <if test="applyDate != null">apply_date = #{applyDate},</if>
198
+            <if test="beforeDeptId != null">before_dept_id = #{beforeDeptId},</if>
199
+            <if test="beforePostId != null">before_post_id = #{beforePostId},</if>
200
+            <if test="afterDeptId != null">after_dept_id = #{afterDeptId},</if>
201
+            <if test="afterPostId != null">after_post_id = #{afterPostId},</if>
202
+            <if test="beforeDeptComment != null">before_dept_comment = #{beforeDeptComment},</if>
203
+            <if test="beforeDeptLeader != null">before_dept_leader = #{beforeDeptLeader},</if>
204
+            <if test="beforeDeptTime != null">before_dept_time = #{beforeDeptTime},</if>
205
+            <if test="afterDeptComment != null">after_dept_comment = #{afterDeptComment},</if>
206
+            <if test="afterDeptTime != null">after_dept_time = #{afterDeptTime},</if>
207
+            <if test="afterDeptLeader != null">after_dept_leader = #{afterDeptLeader},</if>
208
+            <if test="zhComment != null">zh_comment = #{zhComment},</if>
209
+            <if test="zhTime != null">zh_time = #{zhTime},</if>
210
+            <if test="zhUserId != null">zh_user_id = #{zhUserId},</if>
211
+            <if test="managerComment != null">manager_comment = #{managerComment},</if>
212
+            <if test="managerTime != null">manager_time = #{managerTime},</if>
213
+            <if test="managerUserId != null">manager_user_id = #{managerUserId},</if>
214
+            <if test="zjlComment != null">zjl_comment = #{zjlComment},</if>
215
+            <if test="zjlTime != null">zjl_time = #{zjlTime},</if>
216
+            <if test="zjlUserId != null">zjl_user_id = #{zjlUserId},</if>
217
+        </trim>
218
+        where transfer_id = #{transferId}
219
+    </update>
220
+
221
+    <delete id="deleteCmcTransferByTransferId" parameterType="String">
222
+        delete from cmc_transfer where transfer_id = #{transferId}
223
+    </delete>
224
+
225
+    <delete id="deleteCmcTransferByTransferIds" parameterType="String">
226
+        delete from cmc_transfer where transfer_id in 
227
+        <foreach item="transferId" collection="array" open="(" separator="," close=")">
228
+            #{transferId}
229
+        </foreach>
230
+    </delete>
231
+</mapper>

+ 2
- 31
oa-ui-app/pages/project/projectInfo.vue 查看文件

@@ -63,11 +63,11 @@
63 63
           </view>
64 64
           <view class="info-item">
65 65
             <text class="label">合同编码</text>
66
-            <text class="value">{{ contractCode }}</text>
66
+            <text class="value">{{ project.contractCode }}</text>
67 67
           </view>
68 68
           <view class="info-item">
69 69
             <text class="label">合同编号</text>
70
-            <text class="value">{{ contractNumber }}</text>
70
+            <text class="value">{{ project.contractNumber }}</text>
71 71
           </view>
72 72
           <view class="info-item full-width">
73 73
             <text class="label">项目概况</text>
@@ -370,8 +370,6 @@ import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
370 370
 import { listProjectComment, getProjectComment } from "@/api/oa/project/projectComment";
371 371
 import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
372 372
 import { listProjectWorkload } from '@/api/oa/project/projectWorkload'
373
-import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
374
-import { listContract, getContract } from "@/api/oa/contract/contract";
375 373
 import { listDevice, getDevice } from "@/api/oa/device/device";
376 374
 import { listCar, getCar } from '@/api/oa/car/car';
377 375
 import { listProjectChange } from "@/api/oa/project/projectChange";
@@ -396,8 +394,6 @@ export default {
396 394
       deptLeaderList: [],
397 395
       progressList: [],
398 396
       actualList: [],
399
-      contractCode: "",
400
-      contractNumber: "",
401 397
       openPlan: false,
402 398
       openSafe: false,
403 399
       openTech: false,
@@ -448,7 +444,6 @@ export default {
448 444
       this.getProjectInfo(projectId);
449 445
       this.getProjectWorkList(projectId);
450 446
       this.getProjectCommentList(projectId);
451
-      this.getContractDataList(projectId);
452 447
       this.getProjectProgressList(projectId);
453 448
       this.getActualList(projectId);
454 449
       this.getProjectChangeList(projectId);
@@ -569,30 +564,6 @@ export default {
569 564
       })
570 565
     },
571 566
 
572
-    // 获取合同数据列表
573
-    getContractDataList(projectId) {
574
-      listProjectContract({ projectId }).then(res => {
575
-        if (res.rows) {
576
-          for (let row of res.rows) {
577
-            getContract(row.contractId).then(res => {
578
-              if (res.data) {
579
-                if (this.contractCode != '') {
580
-                  this.contractCode = this.contractCode + '、' + res.data.contractCode;
581
-                } else {
582
-                  this.contractCode = res.data.contractCode;
583
-                }
584
-                if (this.contractNumber != '') {
585
-                  this.contractNumber = this.contractNumber + '、' + res.data.contractNumber;
586
-                } else {
587
-                  this.contractNumber = res.data.contractNumber;
588
-                }
589
-              }
590
-            })
591
-          }
592
-        }
593
-      })
594
-    },
595
-
596 567
     // 获取项目变更列表
597 568
     getProjectChangeList(projectId) {
598 569
       listProjectChange({ pageNum: 1, pageSize: 100, projectId }).then(response => {

+ 44
- 0
oa-ui/src/api/oa/recruit/recruit.js 查看文件

@@ -0,0 +1,44 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询cmc招聘申请列表
4
+export function listRecruit(query) {
5
+  return request({
6
+    url: '/oa/recruit/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询cmc招聘申请详细
13
+export function getRecruit(recruitId) {
14
+  return request({
15
+    url: '/oa/recruit/' + recruitId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增cmc招聘申请
21
+export function addRecruit(data) {
22
+  return request({
23
+    url: '/oa/recruit',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改cmc招聘申请
30
+export function updateRecruit(data) {
31
+  return request({
32
+    url: '/oa/recruit',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除cmc招聘申请
39
+export function delRecruit(recruitId) {
40
+  return request({
41
+    url: '/oa/recruit/' + recruitId,
42
+    method: 'delete'
43
+  })
44
+}

+ 44
- 0
oa-ui/src/api/oa/transfer/transfer.js 查看文件

@@ -0,0 +1,44 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询cmc调岗申请列表
4
+export function listTransfer(query) {
5
+  return request({
6
+    url: '/oa/transfer/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询cmc调岗申请详细
13
+export function getTransfer(transferId) {
14
+  return request({
15
+    url: '/oa/transfer/' + transferId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增cmc调岗申请
21
+export function addTransfer(data) {
22
+  return request({
23
+    url: '/oa/transfer',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改cmc调岗申请
30
+export function updateTransfer(data) {
31
+  return request({
32
+    url: '/oa/transfer',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除cmc调岗申请
39
+export function delTransfer(transferId) {
40
+  return request({
41
+    url: '/oa/transfer/' + transferId,
42
+    method: 'delete'
43
+  })
44
+}

+ 1
- 0
oa-ui/src/assets/icons/svg/recruit.svg 查看文件

@@ -0,0 +1 @@
1
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1760596200100" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1688" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M507.3 531.9c76-0.2 150.8 18.9 217.3 55.5-89.8 3-169.1 52.8-202 126.7-32.8 74-13 158.1 50.6 214.2h-438c-9.9 0.1-19.6-3.4-27.1-9.9-7-6-11.1-14.7-11.2-24 0.2-200 183.8-362.3 410.4-362.5zM752 620.7c20.4-1.2 38 14.3 39.3 34.7v84.5h95.6c13.4-1.6 26.6 4.6 33.8 16 7.2 11.4 7.2 26 0 37.4-7.2 11.4-20.4 17.7-33.8 16h-95.6v84.5c-2.5 19.8-19.3 34.7-39.3 34.7-20 0-36.8-14.9-39.3-34.7v-84.5h-95.6c-13.4 1.7-26.6-4.6-33.8-16-7.2-11.4-7.2-26 0-37.4 7.2-11.4 20.4-17.7 33.8-16h95.4v-84.3c1.4-20.6 19-36.1 39.5-34.9z m-244.6-89.2c-135.1-0.2 135-0.2 0 0z m0 0" p-id="1689"></path><path d="M294.3 316.3c0 120 97.2 217.2 217.2 217.2 120 0 217.2-97.2 217.2-217.2 0-120-97.2-217.2-217.2-217.2-119.9 0-217.2 97.2-217.2 217.2z m0 0" p-id="1690"></path></svg>

+ 1
- 0
oa-ui/src/assets/icons/svg/transfer.svg 查看文件

@@ -0,0 +1 @@
1
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1760596474211" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6931" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M743.424 423.936c-151.04 0-273.408 122.88-273.408 273.408 0 151.04 122.88 273.408 273.408 273.408s273.408-122.88 273.408-273.408c0-151.552-121.856-273.408-273.408-273.408z m160.768 349.184h-261.632l32.256 34.816c9.728 10.24 9.216 27.648-1.536 37.888-10.24 9.728-27.648 9.216-37.888-1.536l-71.68-78.848s0-0.512-0.512-0.512c-2.048-2.048-3.584-5.12-5.12-7.68 0-0.512 0-0.512-0.512-1.536-0.512-2.56-1.536-5.12-1.536-7.68v-2.048c0-2.56 0.512-6.144 2.048-8.192 0-0.512 0.512-0.512 0.512-1.536 1.536-2.56 2.56-5.12 5.632-7.168 0 0 0-0.512 0.512-0.512 0 0 0.512 0 0.512-0.512 2.048-2.048 5.12-3.584 7.68-4.096 0.512 0 0.512 0 1.536-0.512 2.56-0.512 5.12-1.536 7.68-1.536h321.536c14.848 0 26.624 11.776 26.624 26.624 0 12.8-11.776 24.576-26.112 24.576z m26.112-124.928v1.536c0 2.56-0.512 6.144-2.048 9.216 0 0.512-0.512 0.512-0.512 1.536-1.536 2.56-2.56 5.12-5.632 7.168 0 0 0 0.512-0.512 0.512 0 0-0.512 0-0.512 0.512-2.048 2.048-5.12 3.584-7.68 4.096-0.512 0-0.512 0-1.536 0.512-2.56 0.512-5.12 1.536-7.68 1.536h-321.536c-14.848 0-26.624-11.776-26.624-26.624s11.776-26.624 26.624-26.624h261.632l-32.256-34.816c-9.728-10.24-9.216-27.648 1.536-37.888 10.24-9.728 27.648-9.216 37.888 1.536l71.68 78.848s0 0.512 0.512 0.512c2.048 2.048 3.584 5.12 5.12 7.68 0 0.512 0 0.512 0.512 1.536 0.512 2.56 1.536 5.12 1.536 7.68l-0.512 1.536z" p-id="6932"></path><path d="M423.424 697.344c0-90.624 44.032-171.008 112.128-220.672-22.528-7.168-45.056-12.288-67.584-15.872 83.968-26.624 146.944-106.496 146.944-198.656 0-114.176-93.696-208.384-207.872-208.384S198.656 147.456 198.656 261.632c0 90.624 59.392 168.448 139.776 196.608-163.84 28.672-296.448 160.256-330.24 331.776-4.096 14.336 0 28.672 9.216 41.984 9.216 11.264 23.552 18.432 37.888 18.432h414.72c-29.184-44.032-46.592-96.768-46.592-153.088z" p-id="6933"></path></svg>

+ 3
- 3
oa-ui/src/views/oa/project/index.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-02-21 10:20:56
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2025-10-14 15:24:21
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -74,7 +74,7 @@
74 74
         </el-table-column>
75 75
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" sortable />
76 76
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" sortable />
77
-        <el-table-column label="合同编码" align="center" prop="contract.contractCode" sortable />
77
+        <el-table-column label="合同编码" align="center" prop="contractCode" sortable />
78 78
         <el-table-column label="承担部门" align="center" key="undertakingDeptName" prop="undertakingDeptName" sortable />
79 79
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName" sortable
80 80
           width="120px" />

+ 6
- 34
oa-ui/src/views/oa/project/info.vue 查看文件

@@ -89,21 +89,21 @@
89 89
                 <svg-icon slot="prefix" icon-class="contractSign" />
90 90
                 合同编码
91 91
               </template>
92
-              {{ contractCode }}
92
+              {{ project.contractCode }}
93 93
             </el-descriptions-item>
94 94
             <el-descriptions-item>
95 95
               <template slot="label">
96 96
                 <svg-icon slot="prefix" icon-class="number" />
97 97
                 合同编号
98 98
               </template>
99
-              {{ contractNumber }}
99
+              {{ project.contractNumber }}
100 100
             </el-descriptions-item>
101 101
             <el-descriptions-item>
102 102
               <template slot="label">
103 103
                 <svg-icon slot="prefix" icon-class="dept" />
104 104
                 承担部门
105 105
               </template>
106
-              {{ getDeptNames(project.undertakingDept) }}
106
+              {{ project.undertakingDeptName }}
107 107
             </el-descriptions-item>
108 108
             <el-descriptions-item>
109 109
               <template slot="label">
@@ -168,7 +168,7 @@
168 168
           </el-descriptions>
169 169
         </div>
170 170
       </div>
171
-      <!-- 项目管理部安排 -->
171
+      <!-- 部安排 -->
172 172
       <div class="box1 mt20" ref="section2">
173 173
         <div class="title">项目安排
174 174
           <div class="line"></div>
@@ -181,7 +181,7 @@
181 181
                 承担部门
182 182
               </template>
183 183
               <div style="display: flex;" class="ml20" v-if="project.undertakingDept">
184
-                <div>{{ getDeptNames(project.undertakingDept) }}</div>
184
+                <div>{{ project.undertakingDeptName }}</div>
185 185
                 <div class="ml20">
186 186
                   <el-button type="success" plain size="mini" icon="el-icon-refresh" @click="deptOpen = true"
187 187
                     v-hasPermi="['oa:project:edit']">
@@ -504,7 +504,7 @@
504 504
     <el-dialog title="更换承担部门" :visible.sync="deptOpen" width="1000px" append-to-body>
505 505
       <el-form>
506 506
         <el-form-item label="当前承担部门:">
507
-          {{ getDeptNames(project.undertakingDept) }}
507
+          {{ project.undertakingDeptName }}
508 508
         </el-form-item>
509 509
         <el-form-item label="更换承担部门:">
510 510
           <el-select v-model="undertakingDept" multiple clearable style="width:80%">
@@ -545,8 +545,6 @@ import { listProjectWork, addProjectWork } from "@/api/oa/project/projectWork";
545 545
 import { listProjectComment, getProjectComment } from "@/api/oa/project/projectComment";
546 546
 import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
547 547
 import { listProjectWorkload } from '@/api/oa/project/projectWorkload'
548
-import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
549
-import { listContract, getContract } from "@/api/oa/contract/contract";
550 548
 import { listDevice } from "@/api/oa/device/device";
551 549
 import { listCar } from '@/api/oa/car/car';
552 550
 import budgetInfo from '@/views/flowable/form/budget/budgetInfo.vue';
@@ -594,7 +592,6 @@ export default {
594 592
       this.getProjectInfo(projectId);
595 593
       this.getProjectWorkList(projectId);
596 594
       this.getProjectCommentList(projectId);
597
-      this.getContractDataList(projectId);
598 595
       this.getProjectProgressList(projectId);
599 596
       this.getActualList(projectId);
600 597
       this.getProjectChangeList(projectId);
@@ -615,8 +612,6 @@ export default {
615 612
       deptLeaderList: [],
616 613
       progressList: [],
617 614
       actualList: [],
618
-      contractCode: "",
619
-      contractNumber: "",
620 615
       openBudget: false,
621 616
       openPlan: false,
622 617
       openSafe: false,
@@ -750,29 +745,6 @@ export default {
750 745
         }
751 746
       })
752 747
     },
753
-    // 获取项目相关合同编号
754
-    getContractDataList(projectId) {
755
-      listProjectContract({ projectId }).then(res => {
756
-        if (res.rows) {
757
-          for (let row of res.rows) {
758
-            getContract(row.contractId).then(res => {
759
-              if (res.data) {
760
-                if (this.contractCode != '') {
761
-                  this.contractCode = this.contractCode + '、' + res.data.contractCode;
762
-                } else {
763
-                  this.contractCode = res.data.contractCode;
764
-                }
765
-                if (this.contractNumber != '') {
766
-                  this.contractNumber = this.contractNumber + '、' + res.data.contractNumber;
767
-                } else {
768
-                  this.contractNumber = res.data.contractNumber;
769
-                }
770
-              }
771
-            })
772
-          }
773
-        }
774
-      })
775
-    },
776 748
     getProjectWorkList(projectId) {
777 749
       listProjectWork({ pageNum: 1, pageSize: 50, projectId }).then(res => {
778 750
         this.workList = res.rows;

+ 3
- 3
oa-ui/src/views/oa/project/invest.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-17 11:27:44
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2025-10-14 15:42:58
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -96,7 +96,7 @@
96 96
         </el-table-column>
97 97
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" />
98 98
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
99
-        <el-table-column label="合同编码" align="center" prop="contract.contractCode" />
99
+        <el-table-column label="合同编码" align="center" prop="contractCode" />
100 100
         <el-table-column label="承担部门" align="center" key="undertakingDeptName" prop="undertakingDeptName" />
101 101
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName"
102 102
           width="120px" />

+ 519
- 0
oa-ui/src/views/oa/recruit/index.vue 查看文件

@@ -0,0 +1,519 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
+      <el-form-item label="申请人" prop="applier">
5
+        <el-input
6
+          v-model="queryParams.applier"
7
+          placeholder="请输入申请人"
8
+          clearable
9
+          @keyup.enter.native="handleQuery"
10
+        />
11
+      </el-form-item>
12
+      <el-form-item label="申请部门" prop="applyDept">
13
+        <el-input
14
+          v-model="queryParams.applyDept"
15
+          placeholder="请输入申请部门"
16
+          clearable
17
+          @keyup.enter.native="handleQuery"
18
+        />
19
+      </el-form-item>
20
+      <el-form-item label="项目id" prop="projectId">
21
+        <el-input
22
+          v-model="queryParams.projectId"
23
+          placeholder="请输入项目id"
24
+          clearable
25
+          @keyup.enter.native="handleQuery"
26
+        />
27
+      </el-form-item>
28
+      <el-form-item label="申请日期" prop="applyDate">
29
+        <el-date-picker clearable
30
+          v-model="queryParams.applyDate"
31
+          type="date"
32
+          value-format="yyyy-MM-dd"
33
+          placeholder="请选择申请日期">
34
+        </el-date-picker>
35
+      </el-form-item>
36
+      <el-form-item label="岗位名称" prop="postName">
37
+        <el-input
38
+          v-model="queryParams.postName"
39
+          placeholder="请输入岗位名称"
40
+          clearable
41
+          @keyup.enter.native="handleQuery"
42
+        />
43
+      </el-form-item>
44
+      <el-form-item label="岗位人数" prop="postNumber">
45
+        <el-input
46
+          v-model="queryParams.postNumber"
47
+          placeholder="请输入岗位人数"
48
+          clearable
49
+          @keyup.enter.native="handleQuery"
50
+        />
51
+      </el-form-item>
52
+      <el-form-item label="岗位职责" prop="duty">
53
+        <el-input
54
+          v-model="queryParams.duty"
55
+          placeholder="请输入岗位职责"
56
+          clearable
57
+          @keyup.enter.native="handleQuery"
58
+        />
59
+      </el-form-item>
60
+      <el-form-item label="任职资格" prop="qualification">
61
+        <el-input
62
+          v-model="queryParams.qualification"
63
+          placeholder="请输入任职资格"
64
+          clearable
65
+          @keyup.enter.native="handleQuery"
66
+        />
67
+      </el-form-item>
68
+      <el-form-item label="薪酬待遇" prop="wage">
69
+        <el-input
70
+          v-model="queryParams.wage"
71
+          placeholder="请输入薪酬待遇"
72
+          clearable
73
+          @keyup.enter.native="handleQuery"
74
+        />
75
+      </el-form-item>
76
+      <el-form-item label="部门意见" prop="deptComment">
77
+        <el-input
78
+          v-model="queryParams.deptComment"
79
+          placeholder="请输入部门意见"
80
+          clearable
81
+          @keyup.enter.native="handleQuery"
82
+        />
83
+      </el-form-item>
84
+      <el-form-item label="部门负责人" prop="deptLeader">
85
+        <el-input
86
+          v-model="queryParams.deptLeader"
87
+          placeholder="请输入部门负责人"
88
+          clearable
89
+          @keyup.enter.native="handleQuery"
90
+        />
91
+      </el-form-item>
92
+      <el-form-item label="部门审批时间" prop="deptTime">
93
+        <el-date-picker clearable
94
+          v-model="queryParams.deptTime"
95
+          type="date"
96
+          value-format="yyyy-MM-dd"
97
+          placeholder="请选择部门审批时间">
98
+        </el-date-picker>
99
+      </el-form-item>
100
+      <el-form-item label="分管领导意见" prop="managerComment">
101
+        <el-input
102
+          v-model="queryParams.managerComment"
103
+          placeholder="请输入分管领导意见"
104
+          clearable
105
+          @keyup.enter.native="handleQuery"
106
+        />
107
+      </el-form-item>
108
+      <el-form-item label="分管领导" prop="managerLeader">
109
+        <el-input
110
+          v-model="queryParams.managerLeader"
111
+          placeholder="请输入分管领导"
112
+          clearable
113
+          @keyup.enter.native="handleQuery"
114
+        />
115
+      </el-form-item>
116
+      <el-form-item label="分管领导审批时间" prop="managerTime">
117
+        <el-date-picker clearable
118
+          v-model="queryParams.managerTime"
119
+          type="date"
120
+          value-format="yyyy-MM-dd"
121
+          placeholder="请选择分管领导审批时间">
122
+        </el-date-picker>
123
+      </el-form-item>
124
+      <el-form-item label="总经理意见" prop="zjlComment">
125
+        <el-input
126
+          v-model="queryParams.zjlComment"
127
+          placeholder="请输入总经理意见"
128
+          clearable
129
+          @keyup.enter.native="handleQuery"
130
+        />
131
+      </el-form-item>
132
+      <el-form-item label="总经理" prop="zjlLeader">
133
+        <el-input
134
+          v-model="queryParams.zjlLeader"
135
+          placeholder="请输入总经理"
136
+          clearable
137
+          @keyup.enter.native="handleQuery"
138
+        />
139
+      </el-form-item>
140
+      <el-form-item label="总经理审批时间" prop="zjlTime">
141
+        <el-date-picker clearable
142
+          v-model="queryParams.zjlTime"
143
+          type="date"
144
+          value-format="yyyy-MM-dd"
145
+          placeholder="请选择总经理审批时间">
146
+        </el-date-picker>
147
+      </el-form-item>
148
+      <el-form-item>
149
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
150
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
151
+      </el-form-item>
152
+    </el-form>
153
+
154
+    <el-row :gutter="10" class="mb8">
155
+      <el-col :span="1.5">
156
+        <el-button
157
+          type="primary"
158
+          plain
159
+          icon="el-icon-plus"
160
+          size="mini"
161
+          @click="handleAdd"
162
+          v-hasPermi="['oa:recruit:add']"
163
+        >新增</el-button>
164
+      </el-col>
165
+      <el-col :span="1.5">
166
+        <el-button
167
+          type="success"
168
+          plain
169
+          icon="el-icon-edit"
170
+          size="mini"
171
+          :disabled="single"
172
+          @click="handleUpdate"
173
+          v-hasPermi="['oa:recruit:edit']"
174
+        >修改</el-button>
175
+      </el-col>
176
+      <el-col :span="1.5">
177
+        <el-button
178
+          type="danger"
179
+          plain
180
+          icon="el-icon-delete"
181
+          size="mini"
182
+          :disabled="multiple"
183
+          @click="handleDelete"
184
+          v-hasPermi="['oa:recruit:remove']"
185
+        >删除</el-button>
186
+      </el-col>
187
+      <el-col :span="1.5">
188
+        <el-button
189
+          type="warning"
190
+          plain
191
+          icon="el-icon-download"
192
+          size="mini"
193
+          @click="handleExport"
194
+          v-hasPermi="['oa:recruit:export']"
195
+        >导出</el-button>
196
+      </el-col>
197
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
198
+    </el-row>
199
+
200
+    <el-table v-loading="loading" :data="recruitList" @selection-change="handleSelectionChange">
201
+      <el-table-column type="selection" width="55" align="center" />
202
+      <el-table-column label="招聘申请id" align="center" prop="recruitId" />
203
+      <el-table-column label="申请人" align="center" prop="applier" />
204
+      <el-table-column label="申请部门" align="center" prop="applyDept" />
205
+      <el-table-column label="项目id" align="center" prop="projectId" />
206
+      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
207
+        <template slot-scope="scope">
208
+          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
209
+        </template>
210
+      </el-table-column>
211
+      <el-table-column label="岗位名称" align="center" prop="postName" />
212
+      <el-table-column label="岗位人数" align="center" prop="postNumber" />
213
+      <el-table-column label="岗位职责" align="center" prop="duty" />
214
+      <el-table-column label="任职资格" align="center" prop="qualification" />
215
+      <el-table-column label="薪酬待遇" align="center" prop="wage" />
216
+      <el-table-column label="部门意见" align="center" prop="deptComment" />
217
+      <el-table-column label="部门负责人" align="center" prop="deptLeader" />
218
+      <el-table-column label="部门审批时间" align="center" prop="deptTime" width="180">
219
+        <template slot-scope="scope">
220
+          <span>{{ parseTime(scope.row.deptTime, '{y}-{m}-{d}') }}</span>
221
+        </template>
222
+      </el-table-column>
223
+      <el-table-column label="分管领导意见" align="center" prop="managerComment" />
224
+      <el-table-column label="分管领导" align="center" prop="managerLeader" />
225
+      <el-table-column label="分管领导审批时间" align="center" prop="managerTime" width="180">
226
+        <template slot-scope="scope">
227
+          <span>{{ parseTime(scope.row.managerTime, '{y}-{m}-{d}') }}</span>
228
+        </template>
229
+      </el-table-column>
230
+      <el-table-column label="总经理意见" align="center" prop="zjlComment" />
231
+      <el-table-column label="总经理" align="center" prop="zjlLeader" />
232
+      <el-table-column label="总经理审批时间" align="center" prop="zjlTime" width="180">
233
+        <template slot-scope="scope">
234
+          <span>{{ parseTime(scope.row.zjlTime, '{y}-{m}-{d}') }}</span>
235
+        </template>
236
+      </el-table-column>
237
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
238
+        <template slot-scope="scope">
239
+          <el-button
240
+            size="mini"
241
+            type="text"
242
+            icon="el-icon-edit"
243
+            @click="handleUpdate(scope.row)"
244
+            v-hasPermi="['oa:recruit:edit']"
245
+          >修改</el-button>
246
+          <el-button
247
+            size="mini"
248
+            type="text"
249
+            icon="el-icon-delete"
250
+            @click="handleDelete(scope.row)"
251
+            v-hasPermi="['oa:recruit:remove']"
252
+          >删除</el-button>
253
+        </template>
254
+      </el-table-column>
255
+    </el-table>
256
+    
257
+    <pagination
258
+      v-show="total>0"
259
+      :total="total"
260
+      :page.sync="queryParams.pageNum"
261
+      :limit.sync="queryParams.pageSize"
262
+      @pagination="getList"
263
+    />
264
+
265
+    <!-- 添加或修改cmc招聘申请对话框 -->
266
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
267
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
268
+        <el-form-item label="申请人" prop="applier">
269
+          <el-input v-model="form.applier" placeholder="请输入申请人" />
270
+        </el-form-item>
271
+        <el-form-item label="申请部门" prop="applyDept">
272
+          <el-input v-model="form.applyDept" placeholder="请输入申请部门" />
273
+        </el-form-item>
274
+        <el-form-item label="项目id" prop="projectId">
275
+          <el-input v-model="form.projectId" placeholder="请输入项目id" />
276
+        </el-form-item>
277
+        <el-form-item label="申请日期" prop="applyDate">
278
+          <el-date-picker clearable
279
+            v-model="form.applyDate"
280
+            type="date"
281
+            value-format="yyyy-MM-dd"
282
+            placeholder="请选择申请日期">
283
+          </el-date-picker>
284
+        </el-form-item>
285
+        <el-form-item label="岗位名称" prop="postName">
286
+          <el-input v-model="form.postName" placeholder="请输入岗位名称" />
287
+        </el-form-item>
288
+        <el-form-item label="岗位人数" prop="postNumber">
289
+          <el-input v-model="form.postNumber" placeholder="请输入岗位人数" />
290
+        </el-form-item>
291
+        <el-form-item label="岗位职责" prop="duty">
292
+          <el-input v-model="form.duty" placeholder="请输入岗位职责" />
293
+        </el-form-item>
294
+        <el-form-item label="任职资格" prop="qualification">
295
+          <el-input v-model="form.qualification" placeholder="请输入任职资格" />
296
+        </el-form-item>
297
+        <el-form-item label="薪酬待遇" prop="wage">
298
+          <el-input v-model="form.wage" placeholder="请输入薪酬待遇" />
299
+        </el-form-item>
300
+        <el-form-item label="部门意见" prop="deptComment">
301
+          <el-input v-model="form.deptComment" placeholder="请输入部门意见" />
302
+        </el-form-item>
303
+        <el-form-item label="部门负责人" prop="deptLeader">
304
+          <el-input v-model="form.deptLeader" placeholder="请输入部门负责人" />
305
+        </el-form-item>
306
+        <el-form-item label="部门审批时间" prop="deptTime">
307
+          <el-date-picker clearable
308
+            v-model="form.deptTime"
309
+            type="date"
310
+            value-format="yyyy-MM-dd"
311
+            placeholder="请选择部门审批时间">
312
+          </el-date-picker>
313
+        </el-form-item>
314
+        <el-form-item label="分管领导意见" prop="managerComment">
315
+          <el-input v-model="form.managerComment" placeholder="请输入分管领导意见" />
316
+        </el-form-item>
317
+        <el-form-item label="分管领导" prop="managerLeader">
318
+          <el-input v-model="form.managerLeader" placeholder="请输入分管领导" />
319
+        </el-form-item>
320
+        <el-form-item label="分管领导审批时间" prop="managerTime">
321
+          <el-date-picker clearable
322
+            v-model="form.managerTime"
323
+            type="date"
324
+            value-format="yyyy-MM-dd"
325
+            placeholder="请选择分管领导审批时间">
326
+          </el-date-picker>
327
+        </el-form-item>
328
+        <el-form-item label="总经理意见" prop="zjlComment">
329
+          <el-input v-model="form.zjlComment" placeholder="请输入总经理意见" />
330
+        </el-form-item>
331
+        <el-form-item label="总经理" prop="zjlLeader">
332
+          <el-input v-model="form.zjlLeader" placeholder="请输入总经理" />
333
+        </el-form-item>
334
+        <el-form-item label="总经理审批时间" prop="zjlTime">
335
+          <el-date-picker clearable
336
+            v-model="form.zjlTime"
337
+            type="date"
338
+            value-format="yyyy-MM-dd"
339
+            placeholder="请选择总经理审批时间">
340
+          </el-date-picker>
341
+        </el-form-item>
342
+      </el-form>
343
+      <div slot="footer" class="dialog-footer">
344
+        <el-button type="primary" @click="submitForm">确 定</el-button>
345
+        <el-button @click="cancel">取 消</el-button>
346
+      </div>
347
+    </el-dialog>
348
+  </div>
349
+</template>
350
+
351
+<script>
352
+import { listRecruit, getRecruit, delRecruit, addRecruit, updateRecruit } from "@/api/oa/recruit/recruit";
353
+
354
+export default {
355
+  name: "Recruit",
356
+  data() {
357
+    return {
358
+      // 遮罩层
359
+      loading: true,
360
+      // 选中数组
361
+      ids: [],
362
+      // 非单个禁用
363
+      single: true,
364
+      // 非多个禁用
365
+      multiple: true,
366
+      // 显示搜索条件
367
+      showSearch: true,
368
+      // 总条数
369
+      total: 0,
370
+      // cmc招聘申请表格数据
371
+      recruitList: [],
372
+      // 弹出层标题
373
+      title: "",
374
+      // 是否显示弹出层
375
+      open: false,
376
+      // 查询参数
377
+      queryParams: {
378
+        pageNum: 1,
379
+        pageSize: 10,
380
+        applier: null,
381
+        applyDept: null,
382
+        projectId: null,
383
+        applyDate: null,
384
+        postName: null,
385
+        postNumber: null,
386
+        duty: null,
387
+        qualification: null,
388
+        wage: null,
389
+        deptComment: null,
390
+        deptLeader: null,
391
+        deptTime: null,
392
+        managerComment: null,
393
+        managerLeader: null,
394
+        managerTime: null,
395
+        zjlComment: null,
396
+        zjlLeader: null,
397
+        zjlTime: null
398
+      },
399
+      // 表单参数
400
+      form: {},
401
+      // 表单校验
402
+      rules: {
403
+      }
404
+    };
405
+  },
406
+  created() {
407
+    this.getList();
408
+  },
409
+  methods: {
410
+    /** 查询cmc招聘申请列表 */
411
+    getList() {
412
+      this.loading = true;
413
+      listRecruit(this.queryParams).then(response => {
414
+        this.recruitList = response.rows;
415
+        this.total = response.total;
416
+        this.loading = false;
417
+      });
418
+    },
419
+    // 取消按钮
420
+    cancel() {
421
+      this.open = false;
422
+      this.reset();
423
+    },
424
+    // 表单重置
425
+    reset() {
426
+      this.form = {
427
+        recruitId: null,
428
+        applier: null,
429
+        applyDept: null,
430
+        projectId: null,
431
+        applyDate: null,
432
+        postName: null,
433
+        postNumber: null,
434
+        duty: null,
435
+        qualification: null,
436
+        wage: null,
437
+        deptComment: null,
438
+        deptLeader: null,
439
+        deptTime: null,
440
+        managerComment: null,
441
+        managerLeader: null,
442
+        managerTime: null,
443
+        zjlComment: null,
444
+        zjlLeader: null,
445
+        zjlTime: null
446
+      };
447
+      this.resetForm("form");
448
+    },
449
+    /** 搜索按钮操作 */
450
+    handleQuery() {
451
+      this.queryParams.pageNum = 1;
452
+      this.getList();
453
+    },
454
+    /** 重置按钮操作 */
455
+    resetQuery() {
456
+      this.resetForm("queryForm");
457
+      this.handleQuery();
458
+    },
459
+    // 多选框选中数据
460
+    handleSelectionChange(selection) {
461
+      this.ids = selection.map(item => item.recruitId)
462
+      this.single = selection.length!==1
463
+      this.multiple = !selection.length
464
+    },
465
+    /** 新增按钮操作 */
466
+    handleAdd() {
467
+      this.reset();
468
+      this.open = true;
469
+      this.title = "添加cmc招聘申请";
470
+    },
471
+    /** 修改按钮操作 */
472
+    handleUpdate(row) {
473
+      this.reset();
474
+      const recruitId = row.recruitId || this.ids
475
+      getRecruit(recruitId).then(response => {
476
+        this.form = response.data;
477
+        this.open = true;
478
+        this.title = "修改cmc招聘申请";
479
+      });
480
+    },
481
+    /** 提交按钮 */
482
+    submitForm() {
483
+      this.$refs["form"].validate(valid => {
484
+        if (valid) {
485
+          if (this.form.recruitId != null) {
486
+            updateRecruit(this.form).then(response => {
487
+              this.$modal.msgSuccess("修改成功");
488
+              this.open = false;
489
+              this.getList();
490
+            });
491
+          } else {
492
+            addRecruit(this.form).then(response => {
493
+              this.$modal.msgSuccess("新增成功");
494
+              this.open = false;
495
+              this.getList();
496
+            });
497
+          }
498
+        }
499
+      });
500
+    },
501
+    /** 删除按钮操作 */
502
+    handleDelete(row) {
503
+      const recruitIds = row.recruitId || this.ids;
504
+      this.$modal.confirm('是否确认删除cmc招聘申请编号为"' + recruitIds + '"的数据项?').then(function() {
505
+        return delRecruit(recruitIds);
506
+      }).then(() => {
507
+        this.getList();
508
+        this.$modal.msgSuccess("删除成功");
509
+      }).catch(() => {});
510
+    },
511
+    /** 导出按钮操作 */
512
+    handleExport() {
513
+      this.download('oa/recruit/export', {
514
+        ...this.queryParams
515
+      }, `recruit_${new Date().getTime()}.xlsx`)
516
+    }
517
+  }
518
+};
519
+</script>

+ 52
- 25
oa-ui/src/views/oa/study/components/resourceTree.vue 查看文件

@@ -7,16 +7,18 @@
7 7
     </el-row>
8 8
     <el-input v-model="filterText" placeholder="输入关键字过滤" />
9 9
     <el-tree v-if="refreshTable" ref="tree" :data="treeData" :props="defaultProps" node-key="fieldId"
10
-      :default-expanded-keys="[1, 2, 3, 4]" @node-click="handleNodeClick" :highlight-current="true"
10
+      :default-expanded-keys="[0,100]" @node-click="handleNodeClick" :highlight-current="true"
11 11
       :filter-node-method="filterNode" :default-expand-all="isExpandAll" :expand-on-click-node="false">
12 12
       <!-- 自定义节点样式 -->
13 13
       <span class="custom-tree-node" slot-scope="{ node, data }">
14 14
         <span>{{ node.label }}</span>
15 15
         <span v-if="isModify">
16
-          <el-button v-hasPermi="['oa:resource:edit']" type="text" icon="el-icon-plus" size="mini" @click="() => append(data)">
16
+          <el-button v-hasPermi="['oa:resource:edit']" type="text" icon="el-icon-plus" size="mini"
17
+            @click="() => append(data)">
17 18
             新增
18 19
           </el-button>
19
-          <el-button v-hasPermi="['oa:resource:remove']" type="text" icon="el-icon-delete" size="mini" @click="() => remove(node, data)">
20
+          <el-button v-hasPermi="['oa:resource:remove']" type="text" icon="el-icon-delete" size="mini"
21
+            @click="() => remove(node, data)">
20 22
             删除
21 23
           </el-button>
22 24
         </span>
@@ -41,15 +43,20 @@
41 43
 </template>
42 44
 
43 45
 <script>
44
-import { listField, getField, delField, addField, updateField } from "@/api/oa/study/resourceField";
45 46
 import { listResource, getResource, delResource, addResource, updateResource } from "@/api/oa/study/resource";
46 47
 import Treeselect from "@riophae/vue-treeselect";
47 48
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
48 49
 export default {
49 50
   components: { Treeselect },
50 51
   props: {
51
-    isModify: Boolean,
52
-    default: true
52
+    isModify: {
53
+      type: Boolean,
54
+      default: false
55
+    },
56
+    fields: {
57
+      type: Array,
58
+      default: []
59
+    }
53 60
   },
54 61
   data() {
55 62
     return {
@@ -83,21 +90,44 @@ export default {
83 90
   watch: {
84 91
     filterText(val) {
85 92
       this.$refs.tree.filter(val);
93
+    },
94
+    // 监听父组件传入的 fields
95
+    fields: {
96
+      immediate: true,
97
+      handler(newVal) {
98
+        this.initTree(newVal || []);
99
+      }
86 100
     }
87 101
   },
88
-  created() {
89
-    this.initTree();
90
-  },
91 102
   methods: {
92
-    async initTree() {
93
-      const response = await listField({ pageSize: 9999 });
94
-      this.treeData = [{
95
-        fieldId: 0,
96
-        field: '全部专业',
97
-        children: []
98
-      }]
99
-      this.treeData[0].children = this.buildTree(response.rows);
100
-      this.$emit('getTreeData', this.buildTree(response.rows))
103
+    async initTree(fields) {
104
+      // 空数据保护
105
+      if (!fields || fields.length === 0) {
106
+        this.treeData = [{
107
+          fieldId: 0,
108
+          field: undefined,
109
+          children: []
110
+        }];
111
+        this.$emit('getTreeData', []);
112
+        return;
113
+      }
114
+
115
+      const built = this.buildTree(fields);
116
+      // 根节点按首项规则决定标题和 id
117
+      if (fields[0].fieldId === 0) {
118
+        this.treeData = [{
119
+          fieldId: 0,
120
+          field: '全部专业',
121
+          children: built
122
+        }];
123
+      } else {
124
+        this.treeData = [{
125
+          fieldId: 100,
126
+          field: '全部学习',
127
+          children: built
128
+        }];
129
+      }
130
+      this.$emit('getTreeData', built);
101 131
     },
102 132
     buildTree(items) {
103 133
       const map = {};      // 哈希表存储所有节点
@@ -109,9 +139,10 @@ export default {
109 139
       // 再次遍历建立父子关系
110 140
       items.forEach(item => {
111 141
         const node = map[item.fieldId];
112
-        if (item.parentId === 0) {
142
+        if (item.parentId === 0 || item.parentId === 100) {
113 143
           roots.push(node);
114
-        } else {
144
+        }
145
+        else {
115 146
           const parent = map[item.parentId];
116 147
           if (parent) {
117 148
             parent.children.push(node);
@@ -133,11 +164,7 @@ export default {
133 164
       resolve(await this.fetchChildNodes(node.key));
134 165
     },
135 166
     handleNodeClick(data) {
136
-      if (data.fieldId == 0) {
137
-        this.$emit('clickNode', {})
138
-      } else {
139
-        this.$emit('clickNode', data)
140
-      }
167
+      this.$emit('clickNode', data)
141 168
     },
142 169
     append(data) {
143 170
       this.resetForm();

+ 61
- 14
oa-ui/src/views/oa/study/components/studyRight.vue 查看文件

@@ -1,14 +1,28 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2025-03-05 15:36:17
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-05-20 11:35:06
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2025-10-16 12:35:17
6 6
 -->
7 7
 <template>
8 8
   <div>
9 9
     <el-row :gutter="20">
10 10
       <el-col :span="8">
11
-        <resource-tree :isModify="false" @clickNode="queryField"></resource-tree>
11
+        <el-row>
12
+          <div class="title">
13
+            集中学习
14
+            <div class="line"></div>
15
+          </div>
16
+          <resource-tree :fields="fields1" :isModify="false" @clickNode="queryField"></resource-tree>
17
+        </el-row>
18
+        <el-divider />
19
+        <el-row>
20
+          <div class="title">
21
+            专业领域
22
+            <div class="line"></div>
23
+          </div>
24
+          <resource-tree :fields="fields" :isModify="false" @clickNode="queryField"></resource-tree>
25
+        </el-row>
12 26
       </el-col>
13 27
       <el-col :span="16">
14 28
         <el-form :model="queryParams" size="small" :inline="true" label-width="68px" @submit.native.prevent>
@@ -33,14 +47,15 @@
33 47
             </template>
34 48
           </el-table-column>
35 49
         </el-table>
36
-        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
37
-          :limit.sync="queryParams.pageSize" :autoScroll="false" @pagination="getResourceList" />
50
+        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
51
+          :autoScroll="false" @pagination="getList" />
38 52
       </el-col>
39 53
     </el-row>
40 54
   </div>
41 55
 </template>
42 56
 
43 57
 <script>
58
+import { listField } from "@/api/oa/study/resourceField";
44 59
 import { listResource, getResource, delResource, addResource, updateResource, getListBelow } from "@/api/oa/study/resource";
45 60
 import { listStudy, getStudy, delStudy, addStudy, updateStudy } from "@/api/oa/study/myStudy";
46 61
 import resourceTree from './resourceTree.vue';
@@ -51,6 +66,8 @@ export default {
51 66
     return {
52 67
       resourceList: [],
53 68
       pdfList: [],
69
+      fields: [],
70
+      fields1: [],
54 71
       videoTab: 'video',
55 72
       pdfTab: 'pdf',
56 73
       queryParams: {
@@ -64,18 +81,34 @@ export default {
64 81
   },
65 82
   created() {
66 83
     this.getResourceList();
84
+    this.getFieldList();
67 85
   },
68 86
   methods: {
87
+    getList() {
88
+      if (this.queryParams.fieldId != undefined && this.queryParams.fieldId != null)
89
+        this.getAllListByFiedldId();
90
+      else
91
+        this.getResourceList();
92
+    },
69 93
     getResourceList() {
94
+      this.loading = true;
70 95
       listResource(this.queryParams).then(response => {
71 96
         this.resourceList = response.rows;
72 97
         this.total = response.total;
98
+        this.loading = false;
73 99
       });
74 100
     },
75
-    getList() {
76
-      listResource(this.queryParams).then(response => {
77
-        this.resourceList = response.rows;
78
-        this.total = response.total;
101
+    getFieldList() {
102
+      this.loading = true;
103
+      listField({pageSize: 999}).then(response => {
104
+        this.fields = [];
105
+        this.fields1 = [];
106
+        response.rows.forEach(element => {
107
+          if (element.fieldId < 100)
108
+            this.fields.push(element);
109
+          else
110
+            this.fields1.push(element);
111
+        });
79 112
       });
80 113
     },
81 114
     getAllListByFiedldId() {
@@ -110,19 +143,33 @@ export default {
110 143
       })
111 144
     },
112 145
     queryField(data) {
113
-      if (data.fieldId) {
146
+      if (data) {
114 147
         this.queryParams.fieldId = data.fieldId
115 148
         this.getAllListByFiedldId();
116
-      } else {
117
-        this.queryParams.fieldId = null
118
-        this.getList();
119 149
       }
120
-    }
150
+    },
121 151
   },
122 152
 }
123 153
 </script>
124 154
 
125 155
 <style lang="scss" scoped>
156
+.title {
157
+  position: relative;
158
+  font-weight: bold;
159
+  font-size: 13px;
160
+  padding-left: 40px;
161
+  padding-bottom: 20px;
162
+
163
+  .line {
164
+    position: absolute;
165
+    left: 22px;
166
+    top: 3px;
167
+    width: 5px;
168
+    height: 20px;
169
+    border-radius: 10px;
170
+    background-color: #2893e5;
171
+  }
172
+}
126 173
 .material-list {
127 174
   display: grid;
128 175
   grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));

+ 42
- 18
oa-ui/src/views/oa/study/resource.vue 查看文件

@@ -1,19 +1,28 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2025-03-05 09:15:54
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-03-27 10:08:59
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2025-10-16 12:34:56
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
9 9
     <el-row :gutter="20">
10 10
       <el-col :span="6">
11
+        <el-row>
12
+          <div class="title">
13
+            集中学习
14
+            <div class="line"></div>
15
+          </div>
16
+          <resource-tree @getTreeData="getTreeDataFn" :fields="fields1" @clickNode="queryField">
17
+          </resource-tree>
18
+        </el-row>
19
+        <el-divider />
11 20
         <el-row>
12 21
           <div class="title">
13 22
             专业领域
14 23
             <div class="line"></div>
15 24
           </div>
16
-          <resource-tree @getTreeData="getTreeDataFn" @clickNode="queryField">
25
+          <resource-tree @getTreeData="getTreeDataFn" :fields="fields" @clickNode="queryField">
17 26
           </resource-tree>
18 27
         </el-row>
19 28
       </el-col>
@@ -65,7 +74,7 @@
65 74
             <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
66 75
               v-hasPermi="['oa:resource:export']">导出</el-button>
67 76
           </el-col>
68
-          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
77
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getResourceList"></right-toolbar>
69 78
         </el-row>
70 79
 
71 80
         <el-table v-loading="loading" :data="resourceList" @selection-change="handleSelectionChange">
@@ -178,6 +187,7 @@
178 187
 </template>
179 188
 
180 189
 <script>
190
+import { listField } from "@/api/oa/study/resourceField";
181 191
 import { listResource, getResource, delResource, addResource, updateResource, getListBelow } from "@/api/oa/study/resource";
182 192
 import { parseTime } from "@/utils/ruoyi";
183 193
 import resourceTree from './components/resourceTree.vue';
@@ -222,14 +232,14 @@ export default {
222 232
       form: {},
223 233
       // 表单校验
224 234
       rules: {},
225
-      treeData: [],
235
+      fields: [],
236
+      fields1: [],
226 237
       fieldOptions: [],
227 238
       currentCheckedKey: null,
228 239
     };
229 240
   },
230 241
   watch: {
231 242
     'form.sourcePath'(val) {
232
-      console.log(val);
233 243
       if (val) {
234 244
         let name = this.getFileName(val);
235 245
         if (name.includes('pdf')) {
@@ -243,11 +253,18 @@ export default {
243 253
     },
244 254
   },
245 255
   created() {
246
-    this.getList();
256
+    this.getResourceList();
257
+    this.getFieldList();
247 258
   },
248 259
   methods: {
249
-    /** 查询cmc学习资料列表 */
250 260
     getList() {
261
+      if (this.queryParams.fieldId != undefined && this.queryParams.fieldId != null)
262
+        this.getAllListByFiedldId();
263
+      else
264
+        this.getResourceList();
265
+    },
266
+    /** 查询cmc学习资料列表 */
267
+    getResourceList() {
251 268
       this.loading = true;
252 269
       listResource(this.queryParams).then(response => {
253 270
         this.resourceList = response.rows;
@@ -255,6 +272,18 @@ export default {
255 272
         this.loading = false;
256 273
       });
257 274
     },
275
+    getFieldList() {
276
+      listField({pageSize: 999}).then(response => {
277
+        this.fields = [];
278
+        this.fields1 = [];
279
+        response.rows.forEach(element => {
280
+          if (element.fieldId < 100)
281
+            this.fields.push(element);
282
+          else
283
+            this.fields1.push(element);
284
+        });
285
+      });
286
+    },
258 287
     getAllListByFiedldId() {
259 288
       this.loading = true;
260 289
       getListBelow(this.queryParams).then(response => {
@@ -286,7 +315,7 @@ export default {
286 315
     /** 搜索按钮操作 */
287 316
     handleQuery() {
288 317
       this.queryParams.pageNum = 1;
289
-      this.getList();
318
+      this.getResourceList();
290 319
     },
291 320
     /** 重置按钮操作 */
292 321
     resetQuery() {
@@ -319,7 +348,6 @@ export default {
319 348
         this.form = response.data;
320 349
         this.open = true;
321 350
         this.title = "修改学习资料";
322
-        console.log(this.$refs.fieldIdTree);
323 351
         this.$nextTick(() => {
324 352
           this.$refs.fieldIdTree.setCheckedKeys([this.form.fieldId]);
325 353
         });
@@ -327,20 +355,19 @@ export default {
327 355
     },
328 356
     /** 提交按钮 */
329 357
     submitForm() {
330
-      console.log(this.form);
331 358
       this.$refs["form"].validate(valid => {
332 359
         if (valid) {
333 360
           if (this.form.resourceId != null) {
334 361
             updateResource(this.form).then(response => {
335 362
               this.$modal.msgSuccess("修改成功");
336 363
               this.open = false;
337
-              this.getList();
364
+              this.getResourceList();
338 365
             });
339 366
           } else {
340 367
             addResource(this.form).then(response => {
341 368
               this.$modal.msgSuccess("新增成功");
342 369
               this.open = false;
343
-              this.getList();
370
+              this.getResourceList();
344 371
             });
345 372
           }
346 373
         }
@@ -352,7 +379,7 @@ export default {
352 379
       this.$modal.confirm('是否确认删除cmc学习资料编号为"' + resourceIds + '"的数据项?').then(function () {
353 380
         return delResource(resourceIds);
354 381
       }).then(() => {
355
-        this.getList();
382
+        this.getResourceList();
356 383
         this.$modal.msgSuccess("删除成功");
357 384
       }).catch(() => { });
358 385
     },
@@ -379,12 +406,9 @@ export default {
379 406
       return name
380 407
     },
381 408
     queryField(data) {
382
-      if (data.fieldId) {
409
+      if (data) {
383 410
         this.queryParams.fieldId = data.fieldId
384 411
         this.getAllListByFiedldId();
385
-      } else {
386
-        this.queryParams.fieldId = null
387
-        this.getList();
388 412
       }
389 413
     },
390 414
     getTreeDataFn(data) {

+ 579
- 0
oa-ui/src/views/oa/transfer/index.vue 查看文件

@@ -0,0 +1,579 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
+      <el-form-item label="申请人id" prop="userId">
5
+        <el-input
6
+          v-model="queryParams.userId"
7
+          placeholder="请输入申请人id"
8
+          clearable
9
+          @keyup.enter.native="handleQuery"
10
+        />
11
+      </el-form-item>
12
+      <el-form-item label="申请日期" prop="applyDate">
13
+        <el-date-picker clearable
14
+          v-model="queryParams.applyDate"
15
+          type="date"
16
+          value-format="yyyy-MM-dd"
17
+          placeholder="请选择申请日期">
18
+        </el-date-picker>
19
+      </el-form-item>
20
+      <el-form-item label="调整前所在部门id" prop="beforeDeptId">
21
+        <el-input
22
+          v-model="queryParams.beforeDeptId"
23
+          placeholder="请输入调整前所在部门id"
24
+          clearable
25
+          @keyup.enter.native="handleQuery"
26
+        />
27
+      </el-form-item>
28
+      <el-form-item label="调整前岗位id" prop="beforePostId">
29
+        <el-input
30
+          v-model="queryParams.beforePostId"
31
+          placeholder="请输入调整前岗位id"
32
+          clearable
33
+          @keyup.enter.native="handleQuery"
34
+        />
35
+      </el-form-item>
36
+      <el-form-item label="调整后所在部门id" prop="afterDeptId">
37
+        <el-input
38
+          v-model="queryParams.afterDeptId"
39
+          placeholder="请输入调整后所在部门id"
40
+          clearable
41
+          @keyup.enter.native="handleQuery"
42
+        />
43
+      </el-form-item>
44
+      <el-form-item label="调整后岗位id" prop="afterPostId">
45
+        <el-input
46
+          v-model="queryParams.afterPostId"
47
+          placeholder="请输入调整后岗位id"
48
+          clearable
49
+          @keyup.enter.native="handleQuery"
50
+        />
51
+      </el-form-item>
52
+      <el-form-item label="调整前所在部门意见" prop="beforeDeptComment">
53
+        <el-input
54
+          v-model="queryParams.beforeDeptComment"
55
+          placeholder="请输入调整前所在部门意见"
56
+          clearable
57
+          @keyup.enter.native="handleQuery"
58
+        />
59
+      </el-form-item>
60
+      <el-form-item label="调整前所在部门负责人" prop="beforeDeptLeader">
61
+        <el-input
62
+          v-model="queryParams.beforeDeptLeader"
63
+          placeholder="请输入调整前所在部门负责人"
64
+          clearable
65
+          @keyup.enter.native="handleQuery"
66
+        />
67
+      </el-form-item>
68
+      <el-form-item label="调整前所在部门审批时间" prop="beforeDeptTime">
69
+        <el-date-picker clearable
70
+          v-model="queryParams.beforeDeptTime"
71
+          type="date"
72
+          value-format="yyyy-MM-dd"
73
+          placeholder="请选择调整前所在部门审批时间">
74
+        </el-date-picker>
75
+      </el-form-item>
76
+      <el-form-item label="调整后所在部门意见" prop="afterDeptComment">
77
+        <el-input
78
+          v-model="queryParams.afterDeptComment"
79
+          placeholder="请输入调整后所在部门意见"
80
+          clearable
81
+          @keyup.enter.native="handleQuery"
82
+        />
83
+      </el-form-item>
84
+      <el-form-item label="调整后所在部门审批时间" prop="afterDeptTime">
85
+        <el-date-picker clearable
86
+          v-model="queryParams.afterDeptTime"
87
+          type="date"
88
+          value-format="yyyy-MM-dd"
89
+          placeholder="请选择调整后所在部门审批时间">
90
+        </el-date-picker>
91
+      </el-form-item>
92
+      <el-form-item label="调整后所在部门负责人" prop="afterDeptLeader">
93
+        <el-input
94
+          v-model="queryParams.afterDeptLeader"
95
+          placeholder="请输入调整后所在部门负责人"
96
+          clearable
97
+          @keyup.enter.native="handleQuery"
98
+        />
99
+      </el-form-item>
100
+      <el-form-item label="综合事务部意见" prop="zhComment">
101
+        <el-input
102
+          v-model="queryParams.zhComment"
103
+          placeholder="请输入综合事务部意见"
104
+          clearable
105
+          @keyup.enter.native="handleQuery"
106
+        />
107
+      </el-form-item>
108
+      <el-form-item label="综合事务部审批时间" prop="zhTime">
109
+        <el-date-picker clearable
110
+          v-model="queryParams.zhTime"
111
+          type="date"
112
+          value-format="yyyy-MM-dd"
113
+          placeholder="请选择综合事务部审批时间">
114
+        </el-date-picker>
115
+      </el-form-item>
116
+      <el-form-item label="综合事务部负责人" prop="zhUserId">
117
+        <el-input
118
+          v-model="queryParams.zhUserId"
119
+          placeholder="请输入综合事务部负责人"
120
+          clearable
121
+          @keyup.enter.native="handleQuery"
122
+        />
123
+      </el-form-item>
124
+      <el-form-item label="分管领导意见" prop="managerComment">
125
+        <el-input
126
+          v-model="queryParams.managerComment"
127
+          placeholder="请输入分管领导意见"
128
+          clearable
129
+          @keyup.enter.native="handleQuery"
130
+        />
131
+      </el-form-item>
132
+      <el-form-item label="分管领导审批时间" prop="managerTime">
133
+        <el-date-picker clearable
134
+          v-model="queryParams.managerTime"
135
+          type="date"
136
+          value-format="yyyy-MM-dd"
137
+          placeholder="请选择分管领导审批时间">
138
+        </el-date-picker>
139
+      </el-form-item>
140
+      <el-form-item label="分管领导" prop="managerUserId">
141
+        <el-input
142
+          v-model="queryParams.managerUserId"
143
+          placeholder="请输入分管领导"
144
+          clearable
145
+          @keyup.enter.native="handleQuery"
146
+        />
147
+      </el-form-item>
148
+      <el-form-item label="总经理意见" prop="zjlComment">
149
+        <el-input
150
+          v-model="queryParams.zjlComment"
151
+          placeholder="请输入总经理意见"
152
+          clearable
153
+          @keyup.enter.native="handleQuery"
154
+        />
155
+      </el-form-item>
156
+      <el-form-item label="总经理审批时间" prop="zjlTime">
157
+        <el-date-picker clearable
158
+          v-model="queryParams.zjlTime"
159
+          type="date"
160
+          value-format="yyyy-MM-dd"
161
+          placeholder="请选择总经理审批时间">
162
+        </el-date-picker>
163
+      </el-form-item>
164
+      <el-form-item label="总经理" prop="zjlUserId">
165
+        <el-input
166
+          v-model="queryParams.zjlUserId"
167
+          placeholder="请输入总经理"
168
+          clearable
169
+          @keyup.enter.native="handleQuery"
170
+        />
171
+      </el-form-item>
172
+      <el-form-item>
173
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
174
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
175
+      </el-form-item>
176
+    </el-form>
177
+
178
+    <el-row :gutter="10" class="mb8">
179
+      <el-col :span="1.5">
180
+        <el-button
181
+          type="primary"
182
+          plain
183
+          icon="el-icon-plus"
184
+          size="mini"
185
+          @click="handleAdd"
186
+          v-hasPermi="['oa:transfer:add']"
187
+        >新增</el-button>
188
+      </el-col>
189
+      <el-col :span="1.5">
190
+        <el-button
191
+          type="success"
192
+          plain
193
+          icon="el-icon-edit"
194
+          size="mini"
195
+          :disabled="single"
196
+          @click="handleUpdate"
197
+          v-hasPermi="['oa:transfer:edit']"
198
+        >修改</el-button>
199
+      </el-col>
200
+      <el-col :span="1.5">
201
+        <el-button
202
+          type="danger"
203
+          plain
204
+          icon="el-icon-delete"
205
+          size="mini"
206
+          :disabled="multiple"
207
+          @click="handleDelete"
208
+          v-hasPermi="['oa:transfer:remove']"
209
+        >删除</el-button>
210
+      </el-col>
211
+      <el-col :span="1.5">
212
+        <el-button
213
+          type="warning"
214
+          plain
215
+          icon="el-icon-download"
216
+          size="mini"
217
+          @click="handleExport"
218
+          v-hasPermi="['oa:transfer:export']"
219
+        >导出</el-button>
220
+      </el-col>
221
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
222
+    </el-row>
223
+
224
+    <el-table v-loading="loading" :data="transferList" @selection-change="handleSelectionChange">
225
+      <el-table-column type="selection" width="55" align="center" />
226
+      <el-table-column label="调岗id" align="center" prop="transferId" />
227
+      <el-table-column label="申请人id" align="center" prop="userId" />
228
+      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
229
+        <template slot-scope="scope">
230
+          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
231
+        </template>
232
+      </el-table-column>
233
+      <el-table-column label="调整前所在部门id" align="center" prop="beforeDeptId" />
234
+      <el-table-column label="调整前岗位id" align="center" prop="beforePostId" />
235
+      <el-table-column label="调整后所在部门id" align="center" prop="afterDeptId" />
236
+      <el-table-column label="调整后岗位id" align="center" prop="afterPostId" />
237
+      <el-table-column label="调整前所在部门意见" align="center" prop="beforeDeptComment" />
238
+      <el-table-column label="调整前所在部门负责人" align="center" prop="beforeDeptLeader" />
239
+      <el-table-column label="调整前所在部门审批时间" align="center" prop="beforeDeptTime" width="180">
240
+        <template slot-scope="scope">
241
+          <span>{{ parseTime(scope.row.beforeDeptTime, '{y}-{m}-{d}') }}</span>
242
+        </template>
243
+      </el-table-column>
244
+      <el-table-column label="调整后所在部门意见" align="center" prop="afterDeptComment" />
245
+      <el-table-column label="调整后所在部门审批时间" align="center" prop="afterDeptTime" width="180">
246
+        <template slot-scope="scope">
247
+          <span>{{ parseTime(scope.row.afterDeptTime, '{y}-{m}-{d}') }}</span>
248
+        </template>
249
+      </el-table-column>
250
+      <el-table-column label="调整后所在部门负责人" align="center" prop="afterDeptLeader" />
251
+      <el-table-column label="综合事务部意见" align="center" prop="zhComment" />
252
+      <el-table-column label="综合事务部审批时间" align="center" prop="zhTime" width="180">
253
+        <template slot-scope="scope">
254
+          <span>{{ parseTime(scope.row.zhTime, '{y}-{m}-{d}') }}</span>
255
+        </template>
256
+      </el-table-column>
257
+      <el-table-column label="综合事务部负责人" align="center" prop="zhUserId" />
258
+      <el-table-column label="分管领导意见" align="center" prop="managerComment" />
259
+      <el-table-column label="分管领导审批时间" align="center" prop="managerTime" width="180">
260
+        <template slot-scope="scope">
261
+          <span>{{ parseTime(scope.row.managerTime, '{y}-{m}-{d}') }}</span>
262
+        </template>
263
+      </el-table-column>
264
+      <el-table-column label="分管领导" align="center" prop="managerUserId" />
265
+      <el-table-column label="总经理意见" align="center" prop="zjlComment" />
266
+      <el-table-column label="总经理审批时间" align="center" prop="zjlTime" width="180">
267
+        <template slot-scope="scope">
268
+          <span>{{ parseTime(scope.row.zjlTime, '{y}-{m}-{d}') }}</span>
269
+        </template>
270
+      </el-table-column>
271
+      <el-table-column label="总经理" align="center" prop="zjlUserId" />
272
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
273
+        <template slot-scope="scope">
274
+          <el-button
275
+            size="mini"
276
+            type="text"
277
+            icon="el-icon-edit"
278
+            @click="handleUpdate(scope.row)"
279
+            v-hasPermi="['oa:transfer:edit']"
280
+          >修改</el-button>
281
+          <el-button
282
+            size="mini"
283
+            type="text"
284
+            icon="el-icon-delete"
285
+            @click="handleDelete(scope.row)"
286
+            v-hasPermi="['oa:transfer:remove']"
287
+          >删除</el-button>
288
+        </template>
289
+      </el-table-column>
290
+    </el-table>
291
+    
292
+    <pagination
293
+      v-show="total>0"
294
+      :total="total"
295
+      :page.sync="queryParams.pageNum"
296
+      :limit.sync="queryParams.pageSize"
297
+      @pagination="getList"
298
+    />
299
+
300
+    <!-- 添加或修改cmc调岗申请对话框 -->
301
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
302
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
303
+        <el-form-item label="申请人id" prop="userId">
304
+          <el-input v-model="form.userId" placeholder="请输入申请人id" />
305
+        </el-form-item>
306
+        <el-form-item label="申请日期" prop="applyDate">
307
+          <el-date-picker clearable
308
+            v-model="form.applyDate"
309
+            type="date"
310
+            value-format="yyyy-MM-dd"
311
+            placeholder="请选择申请日期">
312
+          </el-date-picker>
313
+        </el-form-item>
314
+        <el-form-item label="调整前所在部门id" prop="beforeDeptId">
315
+          <el-input v-model="form.beforeDeptId" placeholder="请输入调整前所在部门id" />
316
+        </el-form-item>
317
+        <el-form-item label="调整前岗位id" prop="beforePostId">
318
+          <el-input v-model="form.beforePostId" placeholder="请输入调整前岗位id" />
319
+        </el-form-item>
320
+        <el-form-item label="调整后所在部门id" prop="afterDeptId">
321
+          <el-input v-model="form.afterDeptId" placeholder="请输入调整后所在部门id" />
322
+        </el-form-item>
323
+        <el-form-item label="调整后岗位id" prop="afterPostId">
324
+          <el-input v-model="form.afterPostId" placeholder="请输入调整后岗位id" />
325
+        </el-form-item>
326
+        <el-form-item label="调整前所在部门意见" prop="beforeDeptComment">
327
+          <el-input v-model="form.beforeDeptComment" placeholder="请输入调整前所在部门意见" />
328
+        </el-form-item>
329
+        <el-form-item label="调整前所在部门负责人" prop="beforeDeptLeader">
330
+          <el-input v-model="form.beforeDeptLeader" placeholder="请输入调整前所在部门负责人" />
331
+        </el-form-item>
332
+        <el-form-item label="调整前所在部门审批时间" prop="beforeDeptTime">
333
+          <el-date-picker clearable
334
+            v-model="form.beforeDeptTime"
335
+            type="date"
336
+            value-format="yyyy-MM-dd"
337
+            placeholder="请选择调整前所在部门审批时间">
338
+          </el-date-picker>
339
+        </el-form-item>
340
+        <el-form-item label="调整后所在部门意见" prop="afterDeptComment">
341
+          <el-input v-model="form.afterDeptComment" placeholder="请输入调整后所在部门意见" />
342
+        </el-form-item>
343
+        <el-form-item label="调整后所在部门审批时间" prop="afterDeptTime">
344
+          <el-date-picker clearable
345
+            v-model="form.afterDeptTime"
346
+            type="date"
347
+            value-format="yyyy-MM-dd"
348
+            placeholder="请选择调整后所在部门审批时间">
349
+          </el-date-picker>
350
+        </el-form-item>
351
+        <el-form-item label="调整后所在部门负责人" prop="afterDeptLeader">
352
+          <el-input v-model="form.afterDeptLeader" placeholder="请输入调整后所在部门负责人" />
353
+        </el-form-item>
354
+        <el-form-item label="综合事务部意见" prop="zhComment">
355
+          <el-input v-model="form.zhComment" placeholder="请输入综合事务部意见" />
356
+        </el-form-item>
357
+        <el-form-item label="综合事务部审批时间" prop="zhTime">
358
+          <el-date-picker clearable
359
+            v-model="form.zhTime"
360
+            type="date"
361
+            value-format="yyyy-MM-dd"
362
+            placeholder="请选择综合事务部审批时间">
363
+          </el-date-picker>
364
+        </el-form-item>
365
+        <el-form-item label="综合事务部负责人" prop="zhUserId">
366
+          <el-input v-model="form.zhUserId" placeholder="请输入综合事务部负责人" />
367
+        </el-form-item>
368
+        <el-form-item label="分管领导意见" prop="managerComment">
369
+          <el-input v-model="form.managerComment" placeholder="请输入分管领导意见" />
370
+        </el-form-item>
371
+        <el-form-item label="分管领导审批时间" prop="managerTime">
372
+          <el-date-picker clearable
373
+            v-model="form.managerTime"
374
+            type="date"
375
+            value-format="yyyy-MM-dd"
376
+            placeholder="请选择分管领导审批时间">
377
+          </el-date-picker>
378
+        </el-form-item>
379
+        <el-form-item label="分管领导" prop="managerUserId">
380
+          <el-input v-model="form.managerUserId" placeholder="请输入分管领导" />
381
+        </el-form-item>
382
+        <el-form-item label="总经理意见" prop="zjlComment">
383
+          <el-input v-model="form.zjlComment" placeholder="请输入总经理意见" />
384
+        </el-form-item>
385
+        <el-form-item label="总经理审批时间" prop="zjlTime">
386
+          <el-date-picker clearable
387
+            v-model="form.zjlTime"
388
+            type="date"
389
+            value-format="yyyy-MM-dd"
390
+            placeholder="请选择总经理审批时间">
391
+          </el-date-picker>
392
+        </el-form-item>
393
+        <el-form-item label="总经理" prop="zjlUserId">
394
+          <el-input v-model="form.zjlUserId" placeholder="请输入总经理" />
395
+        </el-form-item>
396
+      </el-form>
397
+      <div slot="footer" class="dialog-footer">
398
+        <el-button type="primary" @click="submitForm">确 定</el-button>
399
+        <el-button @click="cancel">取 消</el-button>
400
+      </div>
401
+    </el-dialog>
402
+  </div>
403
+</template>
404
+
405
+<script>
406
+import { listTransfer, getTransfer, delTransfer, addTransfer, updateTransfer } from "@/api/oa/transfer/transfer";
407
+
408
+export default {
409
+  name: "Transfer",
410
+  data() {
411
+    return {
412
+      // 遮罩层
413
+      loading: true,
414
+      // 选中数组
415
+      ids: [],
416
+      // 非单个禁用
417
+      single: true,
418
+      // 非多个禁用
419
+      multiple: true,
420
+      // 显示搜索条件
421
+      showSearch: true,
422
+      // 总条数
423
+      total: 0,
424
+      // cmc调岗申请表格数据
425
+      transferList: [],
426
+      // 弹出层标题
427
+      title: "",
428
+      // 是否显示弹出层
429
+      open: false,
430
+      // 查询参数
431
+      queryParams: {
432
+        pageNum: 1,
433
+        pageSize: 10,
434
+        userId: null,
435
+        applyDate: null,
436
+        beforeDeptId: null,
437
+        beforePostId: null,
438
+        afterDeptId: null,
439
+        afterPostId: null,
440
+        beforeDeptComment: null,
441
+        beforeDeptLeader: null,
442
+        beforeDeptTime: null,
443
+        afterDeptComment: null,
444
+        afterDeptTime: null,
445
+        afterDeptLeader: null,
446
+        zhComment: null,
447
+        zhTime: null,
448
+        zhUserId: null,
449
+        managerComment: null,
450
+        managerTime: null,
451
+        managerUserId: null,
452
+        zjlComment: null,
453
+        zjlTime: null,
454
+        zjlUserId: null
455
+      },
456
+      // 表单参数
457
+      form: {},
458
+      // 表单校验
459
+      rules: {
460
+      }
461
+    };
462
+  },
463
+  created() {
464
+    this.getList();
465
+  },
466
+  methods: {
467
+    /** 查询cmc调岗申请列表 */
468
+    getList() {
469
+      this.loading = true;
470
+      listTransfer(this.queryParams).then(response => {
471
+        this.transferList = response.rows;
472
+        this.total = response.total;
473
+        this.loading = false;
474
+      });
475
+    },
476
+    // 取消按钮
477
+    cancel() {
478
+      this.open = false;
479
+      this.reset();
480
+    },
481
+    // 表单重置
482
+    reset() {
483
+      this.form = {
484
+        transferId: null,
485
+        userId: null,
486
+        applyDate: null,
487
+        beforeDeptId: null,
488
+        beforePostId: null,
489
+        afterDeptId: null,
490
+        afterPostId: null,
491
+        beforeDeptComment: null,
492
+        beforeDeptLeader: null,
493
+        beforeDeptTime: null,
494
+        afterDeptComment: null,
495
+        afterDeptTime: null,
496
+        afterDeptLeader: null,
497
+        zhComment: null,
498
+        zhTime: null,
499
+        zhUserId: null,
500
+        managerComment: null,
501
+        managerTime: null,
502
+        managerUserId: null,
503
+        zjlComment: null,
504
+        zjlTime: null,
505
+        zjlUserId: null
506
+      };
507
+      this.resetForm("form");
508
+    },
509
+    /** 搜索按钮操作 */
510
+    handleQuery() {
511
+      this.queryParams.pageNum = 1;
512
+      this.getList();
513
+    },
514
+    /** 重置按钮操作 */
515
+    resetQuery() {
516
+      this.resetForm("queryForm");
517
+      this.handleQuery();
518
+    },
519
+    // 多选框选中数据
520
+    handleSelectionChange(selection) {
521
+      this.ids = selection.map(item => item.transferId)
522
+      this.single = selection.length!==1
523
+      this.multiple = !selection.length
524
+    },
525
+    /** 新增按钮操作 */
526
+    handleAdd() {
527
+      this.reset();
528
+      this.open = true;
529
+      this.title = "添加cmc调岗申请";
530
+    },
531
+    /** 修改按钮操作 */
532
+    handleUpdate(row) {
533
+      this.reset();
534
+      const transferId = row.transferId || this.ids
535
+      getTransfer(transferId).then(response => {
536
+        this.form = response.data;
537
+        this.open = true;
538
+        this.title = "修改cmc调岗申请";
539
+      });
540
+    },
541
+    /** 提交按钮 */
542
+    submitForm() {
543
+      this.$refs["form"].validate(valid => {
544
+        if (valid) {
545
+          if (this.form.transferId != null) {
546
+            updateTransfer(this.form).then(response => {
547
+              this.$modal.msgSuccess("修改成功");
548
+              this.open = false;
549
+              this.getList();
550
+            });
551
+          } else {
552
+            addTransfer(this.form).then(response => {
553
+              this.$modal.msgSuccess("新增成功");
554
+              this.open = false;
555
+              this.getList();
556
+            });
557
+          }
558
+        }
559
+      });
560
+    },
561
+    /** 删除按钮操作 */
562
+    handleDelete(row) {
563
+      const transferIds = row.transferId || this.ids;
564
+      this.$modal.confirm('是否确认删除cmc调岗申请编号为"' + transferIds + '"的数据项?').then(function() {
565
+        return delTransfer(transferIds);
566
+      }).then(() => {
567
+        this.getList();
568
+        this.$modal.msgSuccess("删除成功");
569
+      }).catch(() => {});
570
+    },
571
+    /** 导出按钮操作 */
572
+    handleExport() {
573
+      this.download('oa/transfer/export', {
574
+        ...this.queryParams
575
+      }, `transfer_${new Date().getTime()}.xlsx`)
576
+    }
577
+  }
578
+};
579
+</script>

Loading…
取消
儲存