From 82d31b4029f12897f2fd801679e470039a759e2c Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 14:14:05 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E9=83=A8=E9=97=A8=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProcessController.java | 4 +- .../work/model/process/ProjectProcess.java | 8 +- .../process/form/ProcessCreationForm.java | 7 +- .../work/service/ProjectProcessService.java | 80 ++++++ .../templates/admin/business/process-edit.ftl | 254 ++++------------ .../templates/admin/business/process-new.ftl | 271 +++++------------- 6 files changed, 213 insertions(+), 411 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java index 4fa18fb..75d69df 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -123,6 +123,7 @@ public class ProcessController { model.addAttribute("sealTypes", SealType.values()); model.addAttribute("procurementMode", ProcurementMode.values()); model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13)); + model.addAttribute("applyDeptSectorOptions", JSON.toJSONString(processService.filterDept())); return "/admin/business/process-new"; } @@ -131,10 +132,11 @@ public class ProcessController { */ @GetMapping("/edit/{id}") public String editProcess(Model model, @PathVariable int id) { + model.addAttribute("processId", id); model.addAttribute("sealTypes", SealType.values()); model.addAttribute("procurementMode", ProcurementMode.values()); model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13)); - model.addAttribute("processId", id); + model.addAttribute("applyDeptSectorOptions", JSON.toJSONString(processService.filterDept())); return "/admin/business/process-edit"; } diff --git a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java index 0b07e1f..853e1b7 100644 --- a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java +++ b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java @@ -60,9 +60,15 @@ public class ProjectProcess implements Serializable { // 申请人 ID private Integer applyPersonId; - // 申请部门 + // 申请部门 部门1,部门2,部门3 private String applyDept; + // 申请部门ID + private Integer applyDeptId; + + // 申请部门领导ID + private Integer applyDeptLeaderId; + // 申请部门领导 private String applyDeptLeaderName; diff --git a/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java b/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java index 9c371b3..cab7600 100644 --- a/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java +++ b/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java @@ -42,8 +42,13 @@ public class ProcessCreationForm { private String[] applyDept; - // 申请部门领导 + // 申请部门ID + private Integer applyDeptId; + // 申请部门领导ID + private Integer applyDeptLeaderId; + + // 申请部门领导 private String applyDeptLeaderName; // 申请人电话 diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index c0be917..411573b 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -8,9 +8,11 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; import javax.persistence.EntityManager; @@ -18,6 +20,9 @@ import javax.persistence.TypedQuery; import cn.palmte.work.config.activiti.ActProjectTypeEnum; import cn.palmte.work.model.Admin; +import cn.palmte.work.model.AdminRepository; +import cn.palmte.work.model.Dept; +import cn.palmte.work.model.DeptRepository; import cn.palmte.work.model.Project; import cn.palmte.work.model.ProjectRepository; import cn.palmte.work.model.enums.ProcessStatus; @@ -25,6 +30,7 @@ import cn.palmte.work.model.process.ProcurementContract; import cn.palmte.work.model.process.ProjectProcess; import cn.palmte.work.model.process.SaleContract; import cn.palmte.work.model.process.form.SaleContractDetailForm; +import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -41,6 +47,78 @@ public class ProjectProcessService { private final ProjectInstanceService projectInstanceService; private final ProjectRepository projectRepository; + private final DeptRepository deptRepository; + private final AdminRepository userRepository; + + @Data + static class DeptReturnValue { + + private int id; + private int leaderId; + + private String leaderName; + + private String name; + + private List children; + + public void addChildren(DeptReturnValue child) { + if (children == null) { + children = new ArrayList<>(); + } + children.add(child); + } + } + + public List filterDept() { + List deptList = deptRepository.findEnable(); + List level1 = filterByLevel(deptList, 1); + List level2 = filterByLevel(deptList, 2); + List level3 = filterByLevel(deptList, 3); + + List returnValues = new ArrayList<>(); + for (Dept dept : level1) { + DeptReturnValue returnValue = createReturnValue(dept); + for (Dept dept2 : level2) { + + if (Objects.equals(dept2.getParentId(), dept.getId())) { + DeptReturnValue returnValue2 = createReturnValue(dept2); + returnValue.addChildren(returnValue2); + + for (Dept dept3 : level3) { + if (Objects.equals(dept3.getParentId(), dept2.getId())) { + returnValue2.addChildren(createReturnValue(dept3)); + } + } + } + } + returnValues.add(returnValue); + } + return returnValues; + } + + private static List filterByLevel(List deptList, int level) { + ArrayList ret = new ArrayList<>(); + for (Dept dept : deptList) { + if (Objects.equals(dept.getLevel(), level)) { + ret.add(dept); + } + } + return ret; + } + + private DeptReturnValue createReturnValue(Dept dept) { + DeptReturnValue returnValue = new DeptReturnValue(); + + returnValue.setId(dept.getId()); + returnValue.setName(dept.getName()); + returnValue.setLeaderId(dept.getManagerId()); + + Admin user = userRepository.getAdminById(dept.getManagerId()); + returnValue.setLeaderName(user.getRealName()); + return returnValue; + } + /** * 更新流程 审批人,和状态 * @@ -153,6 +231,8 @@ public class ProjectProcessService { variables.put("projectType", project.getType()); // 合作类型 variables.put("cooperationType", project.getCooperateType() == null ? 0 : project.getCooperateType()); + // 部门领导ID + variables.put("deptLeaderId", entity.getApplyDeptLeaderId()); startAuditProgress(entity, variables); } diff --git a/src/main/resources/templates/admin/business/process-edit.ftl b/src/main/resources/templates/admin/business/process-edit.ftl index eef0adc..0a5e003 100644 --- a/src/main/resources/templates/admin/business/process-edit.ftl +++ b/src/main/resources/templates/admin/business/process-edit.ftl @@ -90,8 +90,9 @@
- - + + @@ -359,205 +360,7 @@ }, processType: '', projectSelected: false, - applySectorOptions: [ - { - value: 'zhinan', - label: '指南', - children: [{ - value: 'shejiyuanze', - label: '设计原则', - children: [{ - value: 'yizhi', - label: '一致' - }, { - value: 'fankui', - label: '反馈' - }, { - value: 'xiaolv', - label: '效率' - }, { - value: 'kekong', - label: '可控' - }] - }, { - value: 'daohang', - label: '导航', - children: [{ - value: 'cexiangdaohang', - label: '侧向导航' - }, { - value: 'dingbudaohang', - label: '顶部导航' - }] - }] - }, - { - value: 'zujian', - label: '组件', - children: [{ - value: 'basic', - label: 'Basic', - children: [{ - value: 'layout', - label: 'Layout 布局' - }, { - value: 'color', - label: 'Color 色彩' - }, { - value: 'typography', - label: 'Typography 字体' - }, { - value: 'icon', - label: 'Icon 图标' - }, { - value: 'button', - label: 'Button 按钮' - }] - }, { - value: 'form', - label: 'Form', - children: [{ - value: 'radio', - label: 'Radio 单选框' - }, { - value: 'checkbox', - label: 'Checkbox 多选框' - }, { - value: 'input', - label: 'Input 输入框' - }, { - value: 'input-number', - label: 'InputNumber 计数器' - }, { - value: 'select', - label: 'Select 选择器' - }, { - value: 'cascader', - label: 'Cascader 级联选择器' - }, { - value: 'switch', - label: 'Switch 开关' - }, { - value: 'slider', - label: 'Slider 滑块' - }, { - value: 'time-picker', - label: 'TimePicker 时间选择器' - }, { - value: 'date-picker', - label: 'DatePicker 日期选择器' - }, { - value: 'datetime-picker', - label: 'DateTimePicker 日期时间选择器' - }, { - value: 'upload', - label: 'Upload 上传' - }, { - value: 'rate', - label: 'Rate 评分' - }, { - value: 'form', - label: 'Form 表单' - }] - }, { - value: 'data', - label: 'Data', - children: [{ - value: 'table', - label: 'Table 表格' - }, { - value: 'tag', - label: 'Tag 标签' - }, { - value: 'progress', - label: 'Progress 进度条' - }, { - value: 'tree', - label: 'Tree 树形控件' - }, { - value: 'pagination', - label: 'Pagination 分页' - }, { - value: 'badge', - label: 'Badge 标记' - }] - }, { - value: 'notice', - label: 'Notice', - children: [{ - value: 'alert', - label: 'Alert 警告' - }, { - value: 'loading', - label: 'Loading 加载' - }, { - value: 'message', - label: 'Message 消息提示' - }, { - value: 'message-box', - label: 'MessageBox 弹框' - }, { - value: 'notification', - label: 'Notification 通知' - }] - }, { - value: 'navigation', - label: 'Navigation', - children: [{ - value: 'menu', - label: 'NavMenu 导航菜单' - }, { - value: 'tabs', - label: 'Tabs 标签页' - }, { - value: 'breadcrumb', - label: 'Breadcrumb 面包屑' - }, { - value: 'dropdown', - label: 'Dropdown 下拉菜单' - }, { - value: 'steps', - label: 'Steps 步骤条' - }] - }, { - value: 'others', - label: 'Others', - children: [{ - value: 'dialog', - label: 'Dialog 对话框' - }, { - value: 'tooltip', - label: 'Tooltip 文字提示' - }, { - value: 'popover', - label: 'Popover 弹出框' - }, { - value: 'card', - label: 'Card 卡片' - }, { - value: 'carousel', - label: 'Carousel 走马灯' - }, { - value: 'collapse', - label: 'Collapse 折叠面板' - }] - }] - }, - { - value: 'ziyuan', - label: '资源', - children: [{ - value: 'axure', - label: 'Axure Components' - }, { - value: 'sketch', - label: 'Sketch Templates' - }, { - value: 'jiaohu', - label: '组件交互文档' - }] - } - ], + applyDeptSectorOptions: [], fileList: [], // 销售合同收入明细 incomeDetails: [], @@ -672,6 +475,47 @@ this.$message.error("未上传附件"); return false } + + const processType = this.processType + const processForm = this.processForm + if (processType === 'procurement_contract') { + const { procurementMode } = processForm + + // specify_purchase("指定采购"), + // simple_price_comparison("简单比价"), + // price_comparison("比价"), + // competitive_evaluation("竞争性评估"); + // 当“采购模式”为“指定采购”“简单比价”时,本模块为非必填模块,当为“比价”“竞争性评估”时,本模块为必填项(“备注”除外) + if (procurementMode === 'price_comparison' + || procurementMode === 'competitive_evaluation') { + + for (const item in this.supplierMaterialsForm) { + for (const [key, value] of Object.entries(item)) { + if (value) { + if (typeof value === 'string') { + if (isBlank(value)) { + this.$message.error("有未填写的表单,请检查表单"); + return false + } + } + } + else { + // 没有值 + if (key !== 'remark') { + this.$message.error("有未填写的表单,请检查表单"); + } + } + } + + } + } + } + + if (!processForm.applyDeptLeaderId) { + this.$message.error("申请部门还未选择"); + return false + } + const loading = this.$loading({ lock: true, text: '正在提交', @@ -753,7 +597,12 @@ indexMethod(index) { return index * 1; - } + }, + + applyDeptSelected(value) { + console.log(value) + }, + } new Vue({ @@ -798,6 +647,7 @@ mounted() { const processId = ${processId} this.loadProject(processId) + this.applyDeptSectorOptions = JSON.parse('${applyDeptSectorOptions}') }, }) diff --git a/src/main/resources/templates/admin/business/process-new.ftl b/src/main/resources/templates/admin/business/process-new.ftl index 16218a2..8187ecb 100644 --- a/src/main/resources/templates/admin/business/process-new.ftl +++ b/src/main/resources/templates/admin/business/process-new.ftl @@ -52,13 +52,17 @@ .el-input-number i { line-height: unset; } + + [v-cloak] { + display: none; + }
业务应用 / - {{subTitle}}
+ {{subTitle}}
@@ -90,7 +94,7 @@ <#-- 新增销售合同流程 --> -
+
@@ -138,8 +142,9 @@
- - + + @@ -350,7 +355,7 @@ style="float: right;margin-top: 10px;">
- + 返回上一级 保存草稿 提交 @@ -360,7 +365,7 @@ <#-- 销售合同清单明细 --> -
+
@@ -395,7 +400,7 @@ <#-- 选择 业务采购清单明细 --> -
+
@@ -468,205 +473,7 @@ }, supplierMaterialsForm: [], projectSelected: false, - applySectorOptions: [ - { - value: 'zhinan', - label: '指南', - children: [{ - value: 'shejiyuanze', - label: '设计原则', - children: [{ - value: 'yizhi', - label: '一致' - }, { - value: 'fankui', - label: '反馈' - }, { - value: 'xiaolv', - label: '效率' - }, { - value: 'kekong', - label: '可控' - }] - }, { - value: 'daohang', - label: '导航', - children: [{ - value: 'cexiangdaohang', - label: '侧向导航' - }, { - value: 'dingbudaohang', - label: '顶部导航' - }] - }] - }, - { - value: 'zujian', - label: '组件', - children: [{ - value: 'basic', - label: 'Basic', - children: [{ - value: 'layout', - label: 'Layout 布局' - }, { - value: 'color', - label: 'Color 色彩' - }, { - value: 'typography', - label: 'Typography 字体' - }, { - value: 'icon', - label: 'Icon 图标' - }, { - value: 'button', - label: 'Button 按钮' - }] - }, { - value: 'form', - label: 'Form', - children: [{ - value: 'radio', - label: 'Radio 单选框' - }, { - value: 'checkbox', - label: 'Checkbox 多选框' - }, { - value: 'input', - label: 'Input 输入框' - }, { - value: 'input-number', - label: 'InputNumber 计数器' - }, { - value: 'select', - label: 'Select 选择器' - }, { - value: 'cascader', - label: 'Cascader 级联选择器' - }, { - value: 'switch', - label: 'Switch 开关' - }, { - value: 'slider', - label: 'Slider 滑块' - }, { - value: 'time-picker', - label: 'TimePicker 时间选择器' - }, { - value: 'date-picker', - label: 'DatePicker 日期选择器' - }, { - value: 'datetime-picker', - label: 'DateTimePicker 日期时间选择器' - }, { - value: 'upload', - label: 'Upload 上传' - }, { - value: 'rate', - label: 'Rate 评分' - }, { - value: 'form', - label: 'Form 表单' - }] - }, { - value: 'data', - label: 'Data', - children: [{ - value: 'table', - label: 'Table 表格' - }, { - value: 'tag', - label: 'Tag 标签' - }, { - value: 'progress', - label: 'Progress 进度条' - }, { - value: 'tree', - label: 'Tree 树形控件' - }, { - value: 'pagination', - label: 'Pagination 分页' - }, { - value: 'badge', - label: 'Badge 标记' - }] - }, { - value: 'notice', - label: 'Notice', - children: [{ - value: 'alert', - label: 'Alert 警告' - }, { - value: 'loading', - label: 'Loading 加载' - }, { - value: 'message', - label: 'Message 消息提示' - }, { - value: 'message-box', - label: 'MessageBox 弹框' - }, { - value: 'notification', - label: 'Notification 通知' - }] - }, { - value: 'navigation', - label: 'Navigation', - children: [{ - value: 'menu', - label: 'NavMenu 导航菜单' - }, { - value: 'tabs', - label: 'Tabs 标签页' - }, { - value: 'breadcrumb', - label: 'Breadcrumb 面包屑' - }, { - value: 'dropdown', - label: 'Dropdown 下拉菜单' - }, { - value: 'steps', - label: 'Steps 步骤条' - }] - }, { - value: 'others', - label: 'Others', - children: [{ - value: 'dialog', - label: 'Dialog 对话框' - }, { - value: 'tooltip', - label: 'Tooltip 文字提示' - }, { - value: 'popover', - label: 'Popover 弹出框' - }, { - value: 'card', - label: 'Card 卡片' - }, { - value: 'carousel', - label: 'Carousel 走马灯' - }, { - value: 'collapse', - label: 'Collapse 折叠面板' - }] - }] - }, - { - value: 'ziyuan', - label: '资源', - children: [{ - value: 'axure', - label: 'Axure Components' - }, { - value: 'sketch', - label: 'Sketch Templates' - }, { - value: 'jiaohu', - label: '组件交互文档' - }] - } - ], + applyDeptSectorOptions: [], fileList: [], // 销售合同收入明细 incomeDetails: [], @@ -833,6 +640,12 @@ } } + if (!processForm.applyDeptLeaderId) { + this.$message.error("申请部门还未选择"); + return false + } + + // 提交 const loading = this.$loading({ lock: true, text: '正在提交', @@ -915,6 +728,51 @@ this.supplierMaterialsForm.push({}) }, + applyDeptSelected(value) { + console.log(value) + const sectorOptions = this.applyDeptSectorOptions + const level1Value = value[0] + const level2Value = value.length >= 2 && value[1] + const level3Value = value.length === 3 && value[2] + let opt; + + const find = (options, value) => { + for (let option in options) { + if (option.id === value) { + return option + } + } + } + + const leveled = [] + for (let options in sectorOptions) { + let op = find(options, level1Value) + leveled.push(op) + if (op && level2Value) { + op = find(op.children, level1Value) + leveled.push(op) + if (op && level3Value) { + op = find(op.children, level1Value) + leveled.push(op) + if (op) { + opt = op + } + } + else { + opt = op + } + } + else { + opt = op + } + } + + this.processForm['applyDept'] = 2 + this.processForm['applyDeptId'] = opt.id + this.processForm['applyDeptLeaderId'] = opt.leaderId + this.processForm['applyDeptLeaderName'] = opt.leaderName + }, + } new Vue({ @@ -962,6 +820,7 @@ mounted() { // this.newProcurementContractClick(); this.handleSelectProject({ id: 135, name: '' }) + this.applyDeptSectorOptions = JSON.parse('${applyDeptSectorOptions}') }, }) From 955b31aa83e1c2ba955039288aada8d174090626 Mon Sep 17 00:00:00 2001 From: pengqiang <1067496116@qq.com> Date: Tue, 27 Dec 2022 14:18:04 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=8C=87=E5=AE=9A=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E9=A2=86=E5=AF=BC=E5=AE=A1=E6=89=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ypeEnum.java => ActCandidateTypeEnum.java} | 11 +++++---- .../work/config/activiti/ActConstant.java | 5 ++++ .../work/service/ActListenerService.java | 4 +++- .../work/service/ActTaskDefService.java | 24 +++++++++++++++++-- .../work/service/ProjectProcessService.java | 5 ++-- .../templates/admin/act_task_def.ftl | 3 ++- 6 files changed, 42 insertions(+), 10 deletions(-) rename src/main/java/cn/palmte/work/config/activiti/{CandidateTypeEnum.java => ActCandidateTypeEnum.java} (72%) diff --git a/src/main/java/cn/palmte/work/config/activiti/CandidateTypeEnum.java b/src/main/java/cn/palmte/work/config/activiti/ActCandidateTypeEnum.java similarity index 72% rename from src/main/java/cn/palmte/work/config/activiti/CandidateTypeEnum.java rename to src/main/java/cn/palmte/work/config/activiti/ActCandidateTypeEnum.java index 11cffbe..53be5e7 100644 --- a/src/main/java/cn/palmte/work/config/activiti/CandidateTypeEnum.java +++ b/src/main/java/cn/palmte/work/config/activiti/ActCandidateTypeEnum.java @@ -8,27 +8,30 @@ import lombok.Getter; * 审批人设置枚举 */ @Getter -public enum CandidateTypeEnum { +public enum ActCandidateTypeEnum { USER(0, "按用户设置审批人"), ROLE(1, "按角色设置审批人"), - STARTER_LEADER(2, "按发起人部门领导设置审批人"); + STARTER_LEADER(2, "按发起人部门领导设置审批人"), + DEPT_LEADER(3, "按指定的部门领导设置审批人"); private int type; private String name; - CandidateTypeEnum(int type, String name) { + ActCandidateTypeEnum(int type, String name) { this.type = type; this.name = name; } - public static CandidateTypeEnum ofType(int type) { + public static ActCandidateTypeEnum ofType(int type) { if (type == USER.getType()) { return USER; } else if (type == ROLE.getType()) { return ROLE; } else if (type == STARTER_LEADER.getType()) { return STARTER_LEADER; + } else if (type == DEPT_LEADER.getType()) { + return DEPT_LEADER; } else { throw new ResponseException("不支持的类型【" + type + "】"); } diff --git a/src/main/java/cn/palmte/work/config/activiti/ActConstant.java b/src/main/java/cn/palmte/work/config/activiti/ActConstant.java index 5d1e040..f458f65 100644 --- a/src/main/java/cn/palmte/work/config/activiti/ActConstant.java +++ b/src/main/java/cn/palmte/work/config/activiti/ActConstant.java @@ -7,6 +7,11 @@ public class ActConstant { */ public static final String START_PROCESS_USERID = "startUserId"; + /** + * 部门领导id + */ + public static final String DEPT_LEADER_ID = "deptLeaderId"; + /** * 单实例 或签 */ diff --git a/src/main/java/cn/palmte/work/service/ActListenerService.java b/src/main/java/cn/palmte/work/service/ActListenerService.java index bdbd5cc..633c151 100644 --- a/src/main/java/cn/palmte/work/service/ActListenerService.java +++ b/src/main/java/cn/palmte/work/service/ActListenerService.java @@ -116,7 +116,9 @@ public class ActListenerService { processInstance.getProcessInstanceId(), businessKey, adminId); projectInstanceService.updateApprover(Integer.parseInt(businessKey), adminId); } else if (actUtil.isNewProcess(procDefId)) { - projectProcessService.updateAudit(Integer.parseInt(businessKey), null, enableUsers); + if (!enableUsers.isEmpty()) { + projectProcessService.updateAudit(Integer.parseInt(businessKey), null, enableUsers); + } logger.info("**** rwcjjt 任务创建监听 更新审批2 procInsId:{}, projectId:{}, enableUsers:{} **** ", processInstance.getProcessInstanceId(), businessKey, enableUsers); } diff --git a/src/main/java/cn/palmte/work/service/ActTaskDefService.java b/src/main/java/cn/palmte/work/service/ActTaskDefService.java index 0df63e0..07a45eb 100644 --- a/src/main/java/cn/palmte/work/service/ActTaskDefService.java +++ b/src/main/java/cn/palmte/work/service/ActTaskDefService.java @@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import top.jfunc.common.db.QueryHelper; +import top.jfunc.common.db.bean.Record; import top.jfunc.common.db.utils.Pagination; import java.util.*; @@ -352,7 +353,7 @@ public class ActTaskDefService { //通过特殊类型查询 List candidateTypeList = taskDef.getCandidateTypeList(); logger.info("findCandidateUsers-type-task:{}, typeList:{}", taskDef.getTaskName(), candidateTypeList); - List userListByType = queryCandidatesByTypes(candidateRoleList, procInsId); + List userListByType = queryCandidatesByTypes(candidateTypeList, procInsId); logger.info("findCandidateUsers-type-task:{}, userListByType:{}", taskDef.getTaskName(), userListByType); if (!userListByType.isEmpty()) { res.addAll(userListByType); @@ -363,6 +364,13 @@ public class ActTaskDefService { return resList; } + /** + * 通过类型查找审批人 + * + * @param types + * @param procInsId + * @return + */ private List queryCandidatesByTypes(List types, String procInsId) { if (types == null || types.isEmpty()) { return Collections.emptyList(); @@ -370,13 +378,25 @@ public class ActTaskDefService { List userIdList = new ArrayList<>(); for (String typeStr : types) { - if (CandidateTypeEnum.STARTER_LEADER.getType() == Integer.parseInt(typeStr)) { + + ActCandidateTypeEnum candidateTypeEnum = ActCandidateTypeEnum.ofType(Integer.parseInt(typeStr)); + if (ActCandidateTypeEnum.STARTER_LEADER == candidateTypeEnum) { //查找发起人部门主管 String startUserId = actUtil.getStartUserId(procInsId); int leaderId = accountService.getOneLevelDeptManagerId(Integer.parseInt(startUserId)); + logger.info("queryCandidatesByType startLeader:{}, procInsId:{} ", leaderId, procInsId); if (leaderId != 0) { userIdList.add(String.valueOf(leaderId)); } + } else if (ActCandidateTypeEnum.DEPT_LEADER == candidateTypeEnum) { + Record record = actUtil.getVariable(ActConstant.DEPT_LEADER_ID, procInsId); + if (record != null) { + String deptLeaderId = record.getStr("text"); + userIdList.add(deptLeaderId); + logger.info("queryCandidatesByType deptLeader:{}, procInsId:{} ", deptLeaderId, procInsId); + }else{ + logger.error("queryCandidatesByType not find deptLeader procInsId:{} ", procInsId); + } } } diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 411573b..7cc13a5 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -1,5 +1,6 @@ package cn.palmte.work.service; +import cn.palmte.work.config.activiti.ActConstant; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @@ -226,13 +227,13 @@ public class ProjectProcessService { BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId()); variables.put("repaidAmount", repaidAmount); // 合同金额 - variables.put("amount", project.getContractAmount() == null ? 0 : project.getContractAmount()); + variables.put("contractAmount", project.getContractAmount() == null ? 0 : project.getContractAmount()); // 项目类型 variables.put("projectType", project.getType()); // 合作类型 variables.put("cooperationType", project.getCooperateType() == null ? 0 : project.getCooperateType()); // 部门领导ID - variables.put("deptLeaderId", entity.getApplyDeptLeaderId()); + variables.put(ActConstant.DEPT_LEADER_ID, entity.getApplyDeptLeaderId()); startAuditProgress(entity, variables); } diff --git a/src/main/resources/templates/admin/act_task_def.ftl b/src/main/resources/templates/admin/act_task_def.ftl index 4b6fc3e..a56993e 100644 --- a/src/main/resources/templates/admin/act_task_def.ftl +++ b/src/main/resources/templates/admin/act_task_def.ftl @@ -76,7 +76,8 @@ From 9073362fcc34b9f3dcef654fa0f19baf191982ee Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 14:50:35 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A2=84=E7=AE=97?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=9A=84=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../palmte/work/controller/backend/ProcessController.java | 5 ++++- src/main/java/cn/palmte/work/model/ProjectRepository.java | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java index 75d69df..aa04695 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -204,10 +204,13 @@ public class ProcessController { return processService.getProjectRepaidAmount(id); } + /** + * 搜索符合条件的项目,供给选择 + */ @ResponseBody @GetMapping("/projects") public List> query(@RequestParam String q) { - return projectRepository.findByProjectNoOrName(q) + return projectRepository.findBudgetPassedProjects(q) .stream() .map(project -> { HashMap map = new HashMap<>(); diff --git a/src/main/java/cn/palmte/work/model/ProjectRepository.java b/src/main/java/cn/palmte/work/model/ProjectRepository.java index 76e21a4..1fbd56b 100644 --- a/src/main/java/cn/palmte/work/model/ProjectRepository.java +++ b/src/main/java/cn/palmte/work/model/ProjectRepository.java @@ -40,8 +40,12 @@ public interface ProjectRepository extends JpaRepository { @Query(value = "update project set approve_id=?, approve_name=? where approve_id = ?", nativeQuery = true) int batchUpdateApprove(int targetAdminId, String targetAdminName, int adminId); - @Query(value = "select * from project where `project_no` like concat('%', :q, '%') or `name` like concat('%', :q, '%')", + /** + * 查询预算通过的项目 + */ + @Query(value = "select * from project where (`status` > 5 or (`status` = 5 and approve_status_budget = 2)) " + + " and (`project_no` like concat('%', :q, '%') or `name` like concat('%', :q, '%'))", nativeQuery = true) - List findByProjectNoOrName(@Param("q") String query); + List findBudgetPassedProjects(@Param("q") String query); } From be0cbceee26703b5326f87fa8cc5f2f9c168bea4 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 14:53:06 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/admin/business/process-new.ftl | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/resources/templates/admin/business/process-new.ftl b/src/main/resources/templates/admin/business/process-new.ftl index 8187ecb..45de785 100644 --- a/src/main/resources/templates/admin/business/process-new.ftl +++ b/src/main/resources/templates/admin/business/process-new.ftl @@ -143,7 +143,7 @@
- @@ -285,6 +285,7 @@ + <#-- 供应商比选材料 -->
@@ -731,43 +732,45 @@ applyDeptSelected(value) { console.log(value) const sectorOptions = this.applyDeptSectorOptions + if (value.length === 0) { + this.processForm['applyDept'] = null + this.processForm['applyDeptId'] = null + this.processForm['applyDeptLeaderId'] = null + this.processForm['applyDeptLeaderName'] = null + return; + } + const level1Value = value[0] const level2Value = value.length >= 2 && value[1] const level3Value = value.length === 3 && value[2] let opt; const find = (options, value) => { - for (let option in options) { - if (option.id === value) { - return option - } - } + return options.find(option => option.id === value) } const leveled = [] - for (let options in sectorOptions) { - let op = find(options, level1Value) - leveled.push(op) - if (op && level2Value) { - op = find(op.children, level1Value) - leveled.push(op) - if (op && level3Value) { - op = find(op.children, level1Value) - leveled.push(op) - if (op) { - opt = op - } - } - else { - opt = op + let selected = find(sectorOptions, level1Value) + leveled.push(selected) + if (selected && level2Value) { + selected = find(selected.children, level2Value) + if (selected && level3Value) { + leveled.push(selected) + selected = find(selected.children, level3Value) + if (selected) { + leveled.push(selected) + opt = selected } } else { - opt = op + opt = selected } } + else { + opt = selected + } - this.processForm['applyDept'] = 2 + this.processForm['applyDept'] = leveled.map(level => level.name).join(',') this.processForm['applyDeptId'] = opt.id this.processForm['applyDeptLeaderId'] = opt.leaderId this.processForm['applyDeptLeaderName'] = opt.leaderName @@ -818,8 +821,6 @@ methods, mounted() { - // this.newProcurementContractClick(); - this.handleSelectProject({ id: 135, name: '' }) this.applyDeptSectorOptions = JSON.parse('${applyDeptSectorOptions}') }, }) From 59a88635cc0ec3e67005fc9066ca2c71ed815a9c Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 15:15:48 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=20=E4=BC=98=E5=8C=96=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E9=83=A8=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/admin/business/process-edit.ftl | 49 +++++++++++++++++-- .../templates/admin/business/process-new.ftl | 20 +++++--- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/main/resources/templates/admin/business/process-edit.ftl b/src/main/resources/templates/admin/business/process-edit.ftl index 0a5e003..8643dc9 100644 --- a/src/main/resources/templates/admin/business/process-edit.ftl +++ b/src/main/resources/templates/admin/business/process-edit.ftl @@ -91,8 +91,8 @@
- + @@ -364,6 +364,7 @@ fileList: [], // 销售合同收入明细 incomeDetails: [], + selectedDepts: [] } } @@ -600,7 +601,49 @@ }, applyDeptSelected(value) { - console.log(value) + if (value.length === 0) { + this.processForm['applyDept'] = null + this.processForm['applyDeptId'] = null + this.processForm['applyDeptLeaderId'] = null + this.processForm['applyDeptLeaderName'] = null + return; + } + + const level1Value = value[0] + const level2Value = value.length >= 2 && value[1] + const level3Value = value.length === 3 && value[2] + let opt; + + const find = (options, value) => { + return options.find(option => option.id === value) + } + + const leveled = [] + let selected = find(this.applyDeptSectorOptions, level1Value) + leveled.push(selected) + if (selected && level2Value) { + selected = find(selected.children, level2Value) + if (selected && level3Value) { + leveled.push(selected) + selected = find(selected.children, level3Value) + if (selected) { + leveled.push(selected) + opt = selected + } + } + else { + opt = selected + } + } + else { + opt = selected + } + + this.selectedDepts = leveled.map(level => level.id) + this.processForm['applyDept'] = leveled.map(level => level.name).join(',') + this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') + this.processForm['applyDeptLeaderId'] = opt.leaderId + this.processForm['applyDeptLeaderName'] = opt.leaderName }, } diff --git a/src/main/resources/templates/admin/business/process-new.ftl b/src/main/resources/templates/admin/business/process-new.ftl index 45de785..9c43fbd 100644 --- a/src/main/resources/templates/admin/business/process-new.ftl +++ b/src/main/resources/templates/admin/business/process-new.ftl @@ -143,8 +143,8 @@
- + @@ -153,7 +153,7 @@ - {{processForm.applyDeptLeaderName}} + {{processForm.applyDeptLeaderName}} 未选择部门 @@ -478,7 +478,8 @@ fileList: [], // 销售合同收入明细 incomeDetails: [], - processType: "" + processType: "", + selectedDepts: [] } } @@ -574,6 +575,10 @@ this.incomeDetails = incomeDetails.map(detail => ({ ...detail, type: computeType(detail.type) })) + + if (!form.projectNo || !form.projectName) { + this.$message.warning("当前选择的项目没有编号或者名称"); + } }) .catch(err => { this.$message.error("项目'" + name + "'加载失败"); @@ -730,8 +735,6 @@ }, applyDeptSelected(value) { - console.log(value) - const sectorOptions = this.applyDeptSectorOptions if (value.length === 0) { this.processForm['applyDept'] = null this.processForm['applyDeptId'] = null @@ -750,7 +753,7 @@ } const leveled = [] - let selected = find(sectorOptions, level1Value) + let selected = find(this.applyDeptSectorOptions, level1Value) leveled.push(selected) if (selected && level2Value) { selected = find(selected.children, level2Value) @@ -770,8 +773,9 @@ opt = selected } + this.selectedDepts = leveled.map(level => level.id) this.processForm['applyDept'] = leveled.map(level => level.name).join(',') - this.processForm['applyDeptId'] = opt.id + this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') this.processForm['applyDeptLeaderId'] = opt.leaderId this.processForm['applyDeptLeaderName'] = opt.leaderName }, From cdfd58d7bcfc440f3b4c56863d7d4854c884dc2c Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 15:19:38 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=20=E4=BC=98=E5=8C=96=E5=8F=AA=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E4=B8=80=E7=BA=A7=E9=A2=86=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/service/ProjectProcessService.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 7cc13a5..ace40f8 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -1,6 +1,7 @@ package cn.palmte.work.service; import cn.palmte.work.config.activiti.ActConstant; + import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @@ -79,18 +80,19 @@ public class ProjectProcessService { List returnValues = new ArrayList<>(); for (Dept dept : level1) { - DeptReturnValue returnValue = createReturnValue(dept); + // 只需要一级领导 + Admin leader = userRepository.getAdminById(dept.getManagerId()); + String leaderName = leader.getRealName(); + DeptReturnValue returnValue = createReturnValue(dept, leaderName); for (Dept dept2 : level2) { - if (Objects.equals(dept2.getParentId(), dept.getId())) { - DeptReturnValue returnValue2 = createReturnValue(dept2); - returnValue.addChildren(returnValue2); - + DeptReturnValue returnValue2 = createReturnValue(dept2, leaderName); for (Dept dept3 : level3) { if (Objects.equals(dept3.getParentId(), dept2.getId())) { - returnValue2.addChildren(createReturnValue(dept3)); + returnValue2.addChildren(createReturnValue(dept3, leaderName)); } } + returnValue.addChildren(returnValue2); } } returnValues.add(returnValue); @@ -108,15 +110,13 @@ public class ProjectProcessService { return ret; } - private DeptReturnValue createReturnValue(Dept dept) { + private DeptReturnValue createReturnValue(Dept dept, String leaderName) { DeptReturnValue returnValue = new DeptReturnValue(); returnValue.setId(dept.getId()); returnValue.setName(dept.getName()); returnValue.setLeaderId(dept.getManagerId()); - - Admin user = userRepository.getAdminById(dept.getManagerId()); - returnValue.setLeaderName(user.getRealName()); + returnValue.setLeaderName(leaderName); return returnValue; } From c4f863a5bcf4b557743331fb544bba0281cca3a2 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 15:20:04 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20project=5Fprocess=20DD?= =?UTF-8?q?L=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/sql/2.0.sql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/sql/2.0.sql b/src/main/resources/sql/2.0.sql index d549963..221eaab 100644 --- a/src/main/resources/sql/2.0.sql +++ b/src/main/resources/sql/2.0.sql @@ -5,7 +5,9 @@ create table project_process ( id int auto_increment primary key comment 'ID', apply_date date null comment '申请时间', - apply_dept varchar(255) null comment '申请部门', + apply_dept varchar(255) null comment '申请部门(逗号分割)', + apply_dept_id varchar(255) null comment '申请部门ID(逗号分割)', + apply_dept_leader_id int null comment '申请部门领导ID', apply_dept_leader_name varchar(255) null comment '申请人领导', apply_person_name varchar(255) null comment '申请人姓名', apply_person_id int null comment '申请人ID', @@ -30,7 +32,7 @@ create table project_process ); alter table project_process - modify current_audit_id varchar(255) null comment '当前审核人ID逗号分割'; + add apply_dept_leader_id int null comment '申请部门领导ID'; # 采购合同 create table procurement_contract From 314b59cf912137ca2a02c59b1a4cee6e6a1742c5 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 15:24:33 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=20=E4=BC=98=E5=8C=96=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../palmte/work/controller/backend/ProcessController.java | 3 +-- .../java/cn/palmte/work/model/process/ProjectProcess.java | 6 +++--- .../work/model/process/form/ProcessCreationForm.java | 7 ++++--- .../resources/templates/admin/business/process-edit.ftl | 4 ++-- .../resources/templates/admin/business/process-new.ftl | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java index aa04695..07b79fc 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -336,10 +336,9 @@ public class ProcessController { @Transactional(rollbackFor = Exception.class) public void post(@RequestBody @Valid ProcessCreationForm form) throws Exception { ProjectProcess entity = new ProjectProcess(); - BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "applyDept", "attachments"); + BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "attachments"); entity.setApplyDate(LocalDate.parse(form.getApplyDate(), formatter)); entity.setSealTypes(SealTypeArray.of(form.getSealTypes())); - entity.setApplyDept(String.join(",", form.getApplyDept())); Admin admin = InterfaceUtil.getAdmin(); entity.setApplyPersonId(admin.getId()); entity.setAttachmentUri(JSON.toJSONString(form.getAttachments())); diff --git a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java index 853e1b7..7290c72 100644 --- a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java +++ b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java @@ -60,11 +60,11 @@ public class ProjectProcess implements Serializable { // 申请人 ID private Integer applyPersonId; - // 申请部门 部门1,部门2,部门3 + // 申请部门 部门1,部门2,部门3 (逗号分割) private String applyDept; - // 申请部门ID - private Integer applyDeptId; + // 申请部门ID(逗号分割) + private String applyDeptId; // 申请部门领导ID private Integer applyDeptLeaderId; diff --git a/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java b/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java index cab7600..160ae3c 100644 --- a/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java +++ b/src/main/java/cn/palmte/work/model/process/form/ProcessCreationForm.java @@ -40,10 +40,11 @@ public class ProcessCreationForm { // 申请人 private String applyPersonName; - private String[] applyDept; + // 申请部门 部门1,部门2,部门3 (逗号分割) + private String applyDept; - // 申请部门ID - private Integer applyDeptId; + // 申请部门ID(逗号分割) + private String applyDeptId; // 申请部门领导ID private Integer applyDeptLeaderId; diff --git a/src/main/resources/templates/admin/business/process-edit.ftl b/src/main/resources/templates/admin/business/process-edit.ftl index 8643dc9..e8e1864 100644 --- a/src/main/resources/templates/admin/business/process-edit.ftl +++ b/src/main/resources/templates/admin/business/process-edit.ftl @@ -640,8 +640,8 @@ } this.selectedDepts = leveled.map(level => level.id) - this.processForm['applyDept'] = leveled.map(level => level.name).join(',') - this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') + this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割) + this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') // (逗号分割) this.processForm['applyDeptLeaderId'] = opt.leaderId this.processForm['applyDeptLeaderName'] = opt.leaderName }, diff --git a/src/main/resources/templates/admin/business/process-new.ftl b/src/main/resources/templates/admin/business/process-new.ftl index 9c43fbd..1ffd125 100644 --- a/src/main/resources/templates/admin/business/process-new.ftl +++ b/src/main/resources/templates/admin/business/process-new.ftl @@ -774,8 +774,8 @@ } this.selectedDepts = leveled.map(level => level.id) - this.processForm['applyDept'] = leveled.map(level => level.name).join(',') - this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') + this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割) + this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') // (逗号分割) this.processForm['applyDeptLeaderId'] = opt.leaderId this.processForm['applyDeptLeaderName'] = opt.leaderName }, From 5d0e48ea6b7a6d45a690b897c672972846bc3cd4 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 27 Dec 2022 16:03:37 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=20=E4=BC=98=E5=8C=96=20=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E9=AA=8C=E8=AF=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/admin/business/process-edit.ftl | 21 +++++-------- .../templates/admin/business/process-new.ftl | 30 +++++++------------ 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/main/resources/templates/admin/business/process-edit.ftl b/src/main/resources/templates/admin/business/process-edit.ftl index e8e1864..887716f 100644 --- a/src/main/resources/templates/admin/business/process-edit.ftl +++ b/src/main/resources/templates/admin/business/process-edit.ftl @@ -91,7 +91,7 @@
- @@ -512,7 +512,7 @@ } } - if (!processForm.applyDeptLeaderId) { + if (!processForm.applyDeptId) { this.$message.error("申请部门还未选择"); return false } @@ -524,8 +524,11 @@ background: 'rgba(0, 0, 0, 0.7)' }) + const applyDeptId = processForm.applyDeptId.map(level => level.id).join(',') // (逗号分割) + const form = { ...this.processForm, + applyDeptId, attachments: fileList.map(file => { if (file.url) { return { @@ -612,7 +615,6 @@ const level1Value = value[0] const level2Value = value.length >= 2 && value[1] const level3Value = value.length === 3 && value[2] - let opt; const find = (options, value) => { return options.find(option => option.id === value) @@ -623,27 +625,20 @@ leveled.push(selected) if (selected && level2Value) { selected = find(selected.children, level2Value) + leveled.push(selected) if (selected && level3Value) { - leveled.push(selected) selected = find(selected.children, level3Value) if (selected) { leveled.push(selected) - opt = selected } } - else { - opt = selected - } - } - else { - opt = selected } this.selectedDepts = leveled.map(level => level.id) this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割) this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') // (逗号分割) - this.processForm['applyDeptLeaderId'] = opt.leaderId - this.processForm['applyDeptLeaderName'] = opt.leaderName + this.processForm['applyDeptLeaderId'] = selected.leaderId + this.processForm['applyDeptLeaderName'] = selected.leaderName }, } diff --git a/src/main/resources/templates/admin/business/process-new.ftl b/src/main/resources/templates/admin/business/process-new.ftl index 1ffd125..28bc026 100644 --- a/src/main/resources/templates/admin/business/process-new.ftl +++ b/src/main/resources/templates/admin/business/process-new.ftl @@ -95,7 +95,7 @@ <#-- 新增销售合同流程 -->
- +
@@ -142,8 +142,8 @@
- - + @@ -479,7 +479,6 @@ // 销售合同收入明细 incomeDetails: [], processType: "", - selectedDepts: [] } } @@ -602,7 +601,7 @@ }, submit() { - this.$refs["saleContractProcessForm"].validate((valid) => { + this.$refs["contractProcessForm"].validate((valid) => { if (valid) { const fileList = this.fileList if (fileList.length === 0) { @@ -646,7 +645,7 @@ } } - if (!processForm.applyDeptLeaderId) { + if (!processForm.applyDeptId) { this.$message.error("申请部门还未选择"); return false } @@ -659,9 +658,11 @@ background: 'rgba(0, 0, 0, 0.7)' }) + const applyDeptId = processForm.applyDeptId.map(level => level.id).join(',') // (逗号分割) const form = { ...processForm, processType, + applyDeptId, projectTitle: this.projectTitle, attachments: fileList.map(file => ({ uri: file.response.data.url, @@ -746,7 +747,6 @@ const level1Value = value[0] const level2Value = value.length >= 2 && value[1] const level3Value = value.length === 3 && value[2] - let opt; const find = (options, value) => { return options.find(option => option.id === value) @@ -757,27 +757,19 @@ leveled.push(selected) if (selected && level2Value) { selected = find(selected.children, level2Value) + leveled.push(selected) if (selected && level3Value) { - leveled.push(selected) selected = find(selected.children, level3Value) if (selected) { leveled.push(selected) - opt = selected } } - else { - opt = selected - } - } - else { - opt = selected } - this.selectedDepts = leveled.map(level => level.id) + // applyDeptId 提交时处理 this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割) - this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') // (逗号分割) - this.processForm['applyDeptLeaderId'] = opt.leaderId - this.processForm['applyDeptLeaderName'] = opt.leaderName + this.processForm['applyDeptLeaderId'] = selected.leaderId + this.processForm['applyDeptLeaderName'] = selected.leaderName }, }