中扬CRM客户关系管理系统
#
LSH
2023-10-16 1bf5dd9a87cddbb773ff4bc60189f32bd6854028
#
9个文件已修改
275 ■■■■■ 已修改文件
src/main/java/com/zy/crm/common/model/SettleDto.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/DashboardController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/OrderController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PriQuoteController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/entity/PriOnline2.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priOnline2/priOnline.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/priOnline2/priOnline.html 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/processPermissions/processPermissions.html 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/common/model/SettleDto.java
@@ -96,7 +96,7 @@
                    list.add(dto);
                    break;
                case 3:
                    dto.setTitle("总裁办审核");
                    dto.setTitle("总经办审核");
                    dto.setUserId(president.getId());
                    dto.setUsername(president.getNickname());
                    list.add(dto);
@@ -250,6 +250,40 @@
        return list;
    }
    public static List<SettleDto> initSalesPricingPriOnline2(User user,User userUp,List<String> names ,int nodes) {
        List<SettleDto> list = new ArrayList<>();
        for (int i = 0; i < nodes+1; i++) {
            SettleDto dto = new SettleDto();
            dto.setStep(i);
            switch (i) {
                case 0:
                    dto.setTitle("开始");
                    dto.setMsg(user.getUsername() + names.get(i));
                    dto.setUserId(user.getId());
                    dto.setUsername(user.getUsername());
                    dto.setTime(DateUtils.convert(new Date()));
                    dto.setCurr(Boolean.TRUE);
                    list.add(dto);
                    break;
                case 1:
                    dto.setTitle(names.get(i));
                    dto.setUserId(user.getId());
                    dto.setUsername(user.getNickname());
                    list.add(dto);
                    break;
                case 2:
                    dto.setTitle(names.get(i));
                    dto.setUserId(userUp.getId());
                    dto.setUsername(userUp.getUsername());
                    list.add(dto);
                    break;
                default:
                    break;
            }
        }
        return list;
    }
    public static List<SettleDto> initContract(User manager ,User user,User president,List<String> names ,int nodes) {
        List<SettleDto> list = new ArrayList<>();
        for (int i = 0; i < nodes+1; i++) {
src/main/java/com/zy/crm/manager/controller/DashboardController.java
@@ -131,7 +131,28 @@
    @ManagerAuth
    public R getCurrentMonthData() {
        List<Double> list = orderService.selectCurrentYearMonthSuccess();
        return R.ok().add(list);
        List<Double> lists = new ArrayList<>();
        int i = 0;
        Double[] money=new Double[]{0.0,0.0,0.0,0.0};
        for (Double d : list){
            if (i<3){
                money[0] = money[0]+d;
            }else if (i<6){
                money[1] = money[1]+d;
            }else if (i<9){
                money[2] = money[2]+d;
            }else if (i<12){
                money[3] = money[3]+d;
            }
            i++;
        }
        for (Double d : money){
            double d1=d/3;
            lists.add(d1);
            lists.add(d1);
            lists.add(d1);
        }
        return R.ok().add(lists);
    }
    @RequestMapping("/dashboard/popup/auth")
src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -195,7 +195,7 @@
                                case 0:
                                    dto.setMsg(dto.getMsg()+" ———————————————————————————————————————————————————————————————————————————————— "+DateUtils.convert(now)+" 跟踪项目修改负责人为:"+priOnline2.getUser$());
                                    break;
                                case 3:
                                case 2:
                                    dto.setUserId(priOnline2.getUserId());
                                    dto.setUsername(priOnline2.getUser$());
                                    break;
src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
@@ -65,7 +65,7 @@
        assert priOnline2 != null;
        JSONObject resultObj = JSON.parseObject(JSON.toJSONString(priOnline2));
        // 步骤条相关
        resultObj.put("step", priOnline2.getSettle() == 4 ? 0 : priOnline2.getSettle() + 1);
        resultObj.put("step", priOnline2.getSettle() == 3 ? 0 : priOnline2.getSettle() + 1);
        return R.ok().add(resultObj);
    }
@@ -180,21 +180,20 @@
//        }catch (Exception e){
//            manager = getUser();
//        }
        String node="2-";
        PlanType planType = planTypeService.selectById(plan.getPlanType());
        node = node+planType.getType();
        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", node));//2:核价流程
        User manager = userService.selectById(processPermissions.getUserId());       // 获取核价流程节点2确认人
//        String node="2-";
//        PlanType planType = planTypeService.selectById(plan.getPlanType());
//        node = node+planType.getType();
//        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", node));//2:核价流程
//        User manager = userService.selectById(processPermissions.getUserId());       // 获取核价流程节点2确认人
                                // 获取业务员
        List<String> initNames = new ArrayList<>();
        initNames.add("接取核价任务");
        initNames.add("完成核价");
        initNames.add("经理审核");
//        initNames.add("经理审核");
        initNames.add("业务员确认");
        priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricing(manager,getUser(),userUp,initNames,3)));
        priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricingPriOnline2(getUser(),userUp,initNames,2)));
        //设置项目流程
        plan.setStep(2);
@@ -490,10 +489,10 @@
                User user = userService.selectById(priOnline2.getMemberId());
                Plan plan1 = planService.selectById(priOnline2.getItemId());
                PlanType planType1 = planTypeService.selectById(plan1.getPlanType());
                ProcessPermissions processPermissions1 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType1.getType()));//2:核价流程
                User manager1 = userService.selectById(processPermissions1.getUserId());       // 获取报价流程节点2确认人
//                PlanType planType1 = planTypeService.selectById(plan1.getPlanType());
//
//                ProcessPermissions processPermissions1 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType1.getType()));//2:核价流程
//                User manager1 = userService.selectById(processPermissions1.getUserId());       // 获取报价流程节点2确认人
                if (Cools.isEmpty(getUser())) {
                    return R.error("抱歉,您没有提交的权限");
@@ -526,63 +525,63 @@
                priOnline2.setSettle(1);
                priOnline2.setUpdateUserId(getUserId());
                priOnline2.setUpdateTime(now);
                priOnline2.setMemberId(manager1.getId());
                priOnline2.setMemberId(plan1.getUserId());
                if (!priOnline2Service.updateById(priOnline2)) {
                    throw new CoolException("提交失败,请联系管理员");
                }
                break;
            case 1:
                // 本部门经理审核  节点负责人
                Plan plan = planService.selectById(priOnline2.getItemId());
                PlanType planType = planTypeService.selectById(plan.getPlanType());
                ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType.getType()));//2:报价流程
                User manager = userService.selectById(processPermissions.getUserId());       // 获取报价流程节点2确认人
//                User manager = new User();
//                try{
//                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
//                }catch (Exception e){
//                    manager = user;
//            case 1:
//                // 本部门经理审核  节点负责人
//                Plan plan = planService.selectById(priOnline2.getItemId());
//                PlanType planType = planTypeService.selectById(plan.getPlanType());
//
//                ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType.getType()));//2:报价流程
//                User manager = userService.selectById(processPermissions.getUserId());       // 获取报价流程节点2确认人
//
////                User manager = new User();
////                try{
////                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
////                }catch (Exception e){
////                    manager = user;
////                }
//                if (manager.getId().equals(getUserId())) {
//
//                    // 修改 settle 步骤数据
//                    List<SettleDto> list = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
//                    for (SettleDto dto : list) {
//                        switch (dto.getStep()) {
//                            case 1:
//                                dto.setCurr(Boolean.FALSE);
//                                break;
//                            case 2:
//                                dto.setCurr(Boolean.TRUE);
//                                if (Cools.isEmpty(dto.getMsg())){
//                                    dto.setMsg(manager.getNickname() + "审批通过");
//                                }else {
//                                    dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" " + manager.getNickname() + "审批通过");
//                                }
//                                dto.setTime(DateUtils.convert(now));
//                                break;
//                            default:
//                                break;
//                        }
//                    }
//                    priOnline2.setSettleMsg(JSON.toJSONString(list));
//
//                    // 修改规划单状态
//                    priOnline2.setSettle(2);  // 申请通过
//                    priOnline2.setUpdateTime(now);
//                    priOnline2.setUpdateUserId(getUserId());
//                    priOnline2.setMemberId(plan.getUserId());
//                    if (!priOnline2Service.updateById(priOnline2)) {
//                        throw new CoolException("审核失败,请联系管理员");
//                    }
//                } else {
//                    return R.error("抱歉,您没有审核的权限!!!");
//                }
                if (manager.getId().equals(getUserId())) {
                    // 修改 settle 步骤数据
                    List<SettleDto> list = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
                    for (SettleDto dto : list) {
                        switch (dto.getStep()) {
                            case 1:
                                dto.setCurr(Boolean.FALSE);
                                break;
                            case 2:
                                dto.setCurr(Boolean.TRUE);
                                if (Cools.isEmpty(dto.getMsg())){
                                    dto.setMsg(manager.getNickname() + "审批通过");
                                }else {
                                    dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" " + manager.getNickname() + "审批通过");
                                }
                                dto.setTime(DateUtils.convert(now));
                                break;
                            default:
                                break;
                        }
                    }
                    priOnline2.setSettleMsg(JSON.toJSONString(list));
                    // 修改规划单状态
                    priOnline2.setSettle(2);  // 申请通过
                    priOnline2.setUpdateTime(now);
                    priOnline2.setUpdateUserId(getUserId());
                    priOnline2.setMemberId(plan.getUserId());
                    if (!priOnline2Service.updateById(priOnline2)) {
                        throw new CoolException("审核失败,请联系管理员");
                    }
                } else {
                    return R.error("抱歉,您没有审核的权限!!!");
                }
                break;
            case 2:
//                break;
            case 1:
                // 业务员
                User salesman0 = userService.selectById(priOnline2.getUserId());
                if (!getUserId().equals(salesman0.getId())) {
@@ -592,10 +591,10 @@
                List<SettleDto> list2 = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
                for (SettleDto dto : list2) {
                    switch (dto.getStep()) {
                        case 2:
                        case 1:
                            dto.setCurr(Boolean.TRUE);
                            break;
                        case 3:
                        case 2:
                            dto.setCurr(Boolean.TRUE);
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg("业务员" + salesman0.getNickname() + "审批通过");
@@ -610,7 +609,7 @@
                }
                priOnline2.setSettleMsg(JSON.toJSONString(list2));
                // 修改规划单状态
                priOnline2.setSettle(3);  // 审批通过
                priOnline2.setSettle(2);  // 审批通过
                priOnline2.setStatus(1);
                priOnline2.setUpdateTime(new Date());
                priOnline2.setUpdateUserId(getUserId());
src/main/java/com/zy/crm/manager/controller/PriQuoteController.java
@@ -527,7 +527,7 @@
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg("总裁办" + planLeader.getNickname() + "审批通过");
                            }else {
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"总裁办" + planLeader.getNickname() + "审批通过");
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"总经办" + planLeader.getNickname() + "审批通过");
                            }
                            dto.setTime(DateUtils.convert(new Date()));
                            break;
src/main/java/com/zy/crm/manager/entity/PriOnline2.java
@@ -163,10 +163,8 @@
            case 0:
                return "等待提交";
            case 1:
                return "等待审批";
            case 2:
                return "等待确认";
            case 3:
            case 2:
                return "审批通过";
            default:
                return String.valueOf(this.settle);
src/main/webapp/static/js/priOnline2/priOnline.js
@@ -278,7 +278,7 @@
                }, function (i) {
                    layer.close(i);
                    // 指定规划员
                    if (data.settle === 2) {
                    if (data.settle === 1) {
                        admin.open({
                            type: 1,
                            area: '300px',
src/main/webapp/views/priOnline2/priOnline.html
@@ -75,18 +75,11 @@
<script type="text/html" id="operate">
  {{# if (d.settle == 0) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">提交</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
  {{# } }}
  {{# if (d.settle == 1) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a>
  {{# } }}
  {{# if (d.settle == 2) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">确认</a>
  {{# } }}
  {{# if (d.settle == 1 || d.settle == 2) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a>
  {{# } }}
  {{# if (d.settle == 0 || d.settle == 1) { }}
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
  {{# } }}
  <a class="layui-btn layui-btn-xs btn-edit" lay-event="check">核价</a>
  <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">编辑</a>
src/main/webapp/views/processPermissions/processPermissions.html
@@ -108,7 +108,7 @@
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label">员工姓名: </label>
                    <label class="layui-form-label layui-form-required">员工姓名: </label>
                    <div class="layui-input-inline cool-auto-complete">
                        <input id="userName" class="layui-input" name="userName" type="text" placeholder="请选择员工" autocomplete="off" style="display: none"  lay-verify="required">
                        <input id="userName$" name="userName" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="员工姓名" onfocus=this.blur()>
@@ -185,37 +185,37 @@
<!--                        </div>-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">权限类型: </label>
                    <div class="layui-input-block">
                        <select name="processMemo" lay-vertype="tips" lay-verify="required">
                            <option value="">请选择状态</option>
                            <option value="1">核价流程</option>
                            <option value="2">报价流程</option>
                            <option value="3">报销流程</option>
                            <option value="4">出差流程</option>
                            <option value="5">核价流程</option>
                            <option value="7">合同管理</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">权限节点: </label>
                    <div class="layui-input-block">
                        <select name="process" lay-vertype="tips" lay-verify="required">
                            <option value="">请选择状态</option>
                            <option value="1-1">1-1</option>
                            <option value="1-2">1-2</option>
                            <option value="2-1">2-1</option>
                            <option value="3-1">3-1</option>
                            <option value="3-2">3-2</option>
                            <option value="4-1">4-1</option>
                            <option value="5-1">5-1</option>
                            <option value="6-1">6-1</option>
                            <option value="7-1">7-1</option>
                        </select>
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">权限类型: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <select name="processMemo" lay-vertype="tips" lay-verify="required">-->
<!--                            <option value="">请选择状态</option>-->
<!--                            <option value="1">核价流程</option>-->
<!--                            <option value="2">报价流程</option>-->
<!--                            <option value="3">报销流程</option>-->
<!--                            <option value="4">出差流程</option>-->
<!--                            <option value="5">核价流程</option>-->
<!--                            <option value="7">合同管理</option>-->
<!--                        </select>-->
<!--                    </div>-->
<!--                </div>-->
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">权限节点: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <select name="process" lay-vertype="tips" lay-verify="required">-->
<!--                            <option value="">请选择状态</option>-->
<!--                            <option value="1-1">1-1</option>-->
<!--                            <option value="1-2">1-2</option>-->
<!--                            <option value="2-1">2-1</option>-->
<!--                            <option value="3-1">3-1</option>-->
<!--                            <option value="3-2">3-2</option>-->
<!--                            <option value="4-1">4-1</option>-->
<!--                            <option value="5-1">5-1</option>-->
<!--                            <option value="6-1">6-1</option>-->
<!--                            <option value="7-1">7-1</option>-->
<!--                        </select>-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">