src/main/java/com/zy/crm/manager/controller/PlanController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/entity/Plan.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/PlanMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/businessTrip/businessTripOther.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/plan/plan.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/plan/plan.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -33,6 +33,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.xml.crypto.Data; import java.io.IOException; import java.io.InputStream; import java.util.*; @@ -152,6 +153,8 @@ PlanType planType = planTypeService.selectById(plan.getPlanType()); User planLeader = planTypeService.findPlanLeader(planType); plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader))); plan.setDirector(planLeader.getId()); if (!planService.insert(plan)) { throw new CoolException("保持失败,请重试"); @@ -417,6 +420,7 @@ if (Cools.isEmpty(plannerId)) { return R.error("指定规划员不能为空"); } plan.setDirector(plannerId); User planner = userService.selectById(plannerId); // 修改 settle 步骤数据 List<SettleDto> list = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); @@ -427,7 +431,11 @@ break; case 2: dto.setCurr(Boolean.TRUE); dto.setMsg("售前组长" + planLeader.getNickname() + "审批通过"); if (Cools.isEmpty(dto.getMsg())){ dto.setMsg("售前组长" + planLeader.getNickname() + "审批通过"); }else { dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"售前组长" + planLeader.getNickname() + "审批通过"); } dto.setTime(DateUtils.convert(new Date())); break; case 3: @@ -472,6 +480,8 @@ } // 业务员 User salesman = userService.selectById(plan.getUserId()); plan.setDirector(salesman.getId()); // 修改 settle 步骤数据 List<SettleDto> list0 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); for (SettleDto dto : list0) { @@ -481,7 +491,11 @@ break; case 3: dto.setCurr(Boolean.TRUE); dto.setMsg("规划员" + plannerUser.getNickname() + "审批通过"); if (Cools.isEmpty(dto.getMsg())){ dto.setMsg("规划员" + plannerUser.getNickname() + "审批通过"); }else { dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"规划员" + plannerUser.getNickname() + "审批通过"); } dto.setTime(DateUtils.convert(new Date())); break; case 4: @@ -517,7 +531,11 @@ break; case 4: dto.setCurr(Boolean.TRUE); dto.setMsg("业务员" + salesman0.getNickname() + "审批通过"); if (Cools.isEmpty(dto.getMsg())){ dto.setMsg("业务员" + salesman0.getNickname() + "审批通过"); }else { dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"业务员" + salesman0.getNickname() + "审批通过"); } dto.setTime(DateUtils.convert(new Date())); break; default: @@ -541,6 +559,47 @@ return R.ok("审批成功"); } @PostMapping(value = "/plan/approvalEnd/auth") @ManagerAuth(memo = "拒绝申请单") public R approvalEnd(@RequestParam Long planId, @RequestParam(required = false) Long plannerId) { Plan plan = planService.selectById(planId); Date now = new Date(); Long directorId = plan.getDirector(); User director = userService.selectById(directorId); if (!director.getId().equals(getUserId())){ return R.error("抱歉,您没有审核的权限"); } List<SettleDto> planDtos = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); List<SettleDto> planDtoList = new ArrayList<>(); boolean sign = true; for (SettleDto dto : planDtos) { if (sign && dto.getUserId().equals(directorId) && plan.getSettle()+1==dto.getStep()){ if (Cools.isEmpty(dto.getMsg())){ dto.setMsg(DateUtils.convert(now)+" "+director.getNickname()+"回退审批"); }else { dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(now)+" "+director.getNickname()+"回退审批"); } sign = false; } if (sign){ dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(now)+" "+director.getNickname()+"回退审批"); } planDtoList.add(dto); } plan.setStatus(0); plan.setStep(1); plan.setSettle(1); PlanType planType = planTypeService.selectById(plan.getPlanType()); User planLeader = planTypeService.findPlanLeader(planType); plan.setDirector(planLeader.getId()); plan.setSettleMsg(JSON.toJSONString(planDtoList)); planService.updateById(plan); return R.ok("回退成功"); } @PostMapping(value = "/plan/planner/list/auth") @ManagerAuth public R plannerList(@RequestParam Long planId){ src/main/java/com/zy/crm/manager/entity/Plan.java
@@ -246,6 +246,12 @@ @ApiModelProperty(value= "业务员联系方式") private String userXmlSelPhone; /** * 节点负责人 */ @ApiModelProperty(value= "节点负责人") private Long director; public Plan() {} public String getHostId$(){ @@ -257,6 +263,16 @@ return null; } public String getDirector$(){ if (this.director==null) return ""; UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.director); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getDeptId$(){ DeptService service = SpringUtils.getBean(DeptService.class); Dept dept = service.selectById(this.deptId); src/main/resources/mapper/PlanMapper.xml
@@ -35,6 +35,7 @@ <result column="update_time" property="updateTime" /> <result column="memo" property="memo" /> <result column="user_xml_sel_phone" property="userXmlSelPhone" /> <result column="director" property="director" /> </resultMap> src/main/webapp/static/js/businessTrip/businessTripOther.js
@@ -99,7 +99,7 @@ ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false,width: 125} ,{field: 'updateId$', align: 'center',title: '更新人员',hide: false} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:240} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:280} ]], request: { pageName: 'curr', src/main/webapp/static/js/plan/plan.js
@@ -171,7 +171,7 @@ ,{field: 'updateTime$', align: 'left',title: '修改时间', hide: true} ,{field: 'memo', align: 'left',title: '注释', hide: true} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 280} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 340} ]], request: { pageName: 'curr', @@ -531,6 +531,17 @@ } }); break; case 'approvalEnd': layer.confirm('审批拒绝?', { skin: 'layui-layer-admin', shade: .1, offset: '200px', title: data.name }, function (i) { layer.close(i); approvalEnd(data.id); }); break; case 'edit': showEditModel(data); break; @@ -657,6 +668,33 @@ }) } function approvalEnd(planId, plannerId, dIdx) { let loadIndex = layer.load(2); $.ajax({ url: baseUrl+"/plan/approvalEnd/auth", headers: {'token': localStorage.getItem('token')}, data: { planId: planId, plannerId: plannerId }, method: 'POST', success: function (res) { if (dIdx) { layer.close(dIdx); } layer.close(loadIndex); if (res.code === 200){ layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403){ top.location.href = baseUrl+"/"; } else { layer.msg(res.msg, {icon: 2}); } } }) } /* 弹窗 - 新增、修改 */ function showEditModel(mData) { let loadIndex = layer.load(2); src/main/webapp/views/plan/plan.html
@@ -135,6 +135,7 @@ <script type="text/html" id="operate"> {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3) { }} <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a> <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a> {{# } }} <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">附件</a> {{# if (d.settle == 1) { }}