中扬CRM客户关系管理系统
#
LSH
2023-11-29 f6af1863a4f68c1be2ec07cc6b5992f9e7464e52
#
13个文件已修改
194 ■■■■■ 已修改文件
src/main/java/com/zy/crm/manager/controller/DashboardController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/SmsCodeController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/entity/SmsCode.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/mapper/SmsCodeMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/service/impl/SmsCodeServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PlanMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/SmsCodeMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/plan/plan.js 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priOnline2/priOnline.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priQuote/priQuote.js 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/plan/plan.html 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/priOnline2/priOnline.html 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/priQuote/priQuote.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/DashboardController.java
@@ -239,9 +239,23 @@
            }else if (user.getRoleId()<3){
                item="true2";
            }
        }catch (Exception e){
        }catch (Exception ignored){ }
        return R.ok(item);
    }
    @RequestMapping("/dashboard/user/id/popup/auth")
    public R popupUserId(String token) {
        Long item = 0L;
        if (Cools.isEmpty(token)){
            return R.ok(item);
        }
        try{
            User user = getUser(token);
            if (Cools.isEmpty(user) || Cools.isEmpty(user.getId())){
                return R.ok(item);
            }
            item = user.getId();
        }catch (Exception ignored){ }
        return R.ok(item);
    }
src/main/java/com/zy/crm/manager/controller/SmsCodeController.java
@@ -168,10 +168,15 @@
            }
        }
        boolean sendSmsCode = smsCodeService.sendSmsCode(phone);
        if (!sendSmsCode) {
            return R.error();
        try{
            boolean sendSmsCode = smsCodeService.sendSmsCode(phone);
            if (!sendSmsCode) {
                return R.error("发送失败,请检查网络!");
            }
        }catch (Exception e){
            return R.error("发送失败,请检查网络!");
        }
        return R.ok();
    }
src/main/java/com/zy/crm/manager/entity/SmsCode.java
@@ -79,7 +79,8 @@
     * 发送人
     */
    @ApiModelProperty(value= "分类")
    private Integer type;
    @TableField("sms_type")
    private Integer smsType;
    public SmsCode() {}
src/main/java/com/zy/crm/manager/mapper/SmsCodeMapper.java
@@ -3,12 +3,13 @@
import com.zy.crm.manager.entity.SmsCode;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface SmsCodeMapper extends BaseMapper<SmsCode> {
    SmsCode selectByPhone(String phone,Integer type);
    SmsCode selectByPhone(@Param("phone") String phone,@Param("smsType") Integer smsType);
}
src/main/java/com/zy/crm/manager/service/impl/SmsCodeServiceImpl.java
@@ -21,8 +21,8 @@
    private ConfigService configService;
    @Override
    public SmsCode selectByPhone(String phone,Integer type) {
        return this.baseMapper.selectByPhone(phone,type);
    public SmsCode selectByPhone(String phone,Integer smsType) {
        return this.baseMapper.selectByPhone(phone,smsType);
    }
    @Override
@@ -84,7 +84,7 @@
        smsCode.setStatus(0);
        smsCode.setCreateTime(new Date());
        smsCode.setUserId(userId);
        smsCode.setType(param.id);
        smsCode.setSmsType(param.id);
        if (this.baseMapper.insert(smsCode) <= 0) {
            return false;
        }
src/main/resources/mapper/PlanMapper.xml
@@ -118,7 +118,7 @@
        <if test="director != null and director != ''">
            or mp.director = #{director}
        </if>
        ORDER BY mp.create_time DESC
        ORDER BY mp.update_time DESC,mp.create_time DESC
    </select>
</mapper>
src/main/resources/mapper/SmsCodeMapper.xml
@@ -12,14 +12,14 @@
        <result column="send_time" property="sendTime" />
        <result column="use_time" property="useTime" />
        <result column="user_id" property="userId" />
        <result column="type" property="type" />
        <result column="sms_type" property="smsType" />
    </resultMap>
    <select id="selectByPhone" resultMap="BaseResultMap">
        select top 1 * from sys_sms_code
        where phone = #{phone}
        and type  = #{type}
        and sms_type  = #{smsType}
        order by create_time desc
    </select>
src/main/webapp/static/js/plan/plan.js
@@ -3,6 +3,21 @@
var treeCond;
var admin;
var planNeedXmlSelData;
let nowUserId2 = 0;
fPlan();
function fPlan() {
    layui.jquery.ajax({
        url: baseUrl + "/dashboard/user/id/popup/auth",
        data:{token : localStorage.getItem('token')},
        method: 'GET',
        success: function (res) {
            if (res.code === 200) {
                nowUserId2 = res.data;
            }
        }
    })
}
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
@@ -142,7 +157,7 @@
            ,{field: 'id', align: 'center',title: 'ID'}
            // ,{field: 'hostId$', align: 'center',title: '所属商户'}
            ,{field: 'userId$', align: 'left',title: '业务员',hide: false, width: 100, sort:true}
            ,{field: 'cstmrId', align: 'left',title: '业务员',hide: true, width: 100, sort:true}
            ,{field: 'cstmrId', align: 'left',title: 'cstmrId',hide: true}
            , {
                field: 'cstmrId$',
                align: 'center',
@@ -152,7 +167,7 @@
                width: 350,
                hide: false, sort:true
            }
            ,{field: 'planType$', align: 'left',title: '业务类型', width: 150,hide: false, sort:true}
            ,{field: 'planType$', align: 'left',title: '业务类型', width: 130,hide: false, sort:true}
            ,{
                field: 'name',
                align: 'left',
@@ -171,7 +186,8 @@
                templet:function(d){
                    return emptyShow(d.planNeed$)
                },
                hide: false
                hide: false,
                width: 200
            }
            , {field: 'settleSize', align: 'center', title: '流程长度', hide: true}
            ,{field: 'deptId$', align: 'left',title: '所属部门',hide: true}
@@ -181,13 +197,12 @@
                field: 'orderId$',
                align: 'left',
                title: '跟踪项目',
                width: 220,
                width: 120,
                style: 'color: #1890ff;cursor:pointer',
                event: 'orderMore',
                hide: false,
                sort:true
            }
            ,{field: 'appleTime$', align: 'left',title: '申请日期', hide: false, sort:true}
            // ,{field: 'beItem$', align: 'center',title: '立项'}
            // ,{field: 'planner', align: 'left',title: '规划员', templet:function(d){return emptyShow(d.planner)}}
            // ,{field: 'finishTime$', align: 'center',title: '完成时间'}
@@ -201,16 +216,20 @@
            ,{field: 'settle$', align: 'center',title: '进度', width: 150, sort:true}
            // ,{field: 'settleMsg', align: 'center',title: '审核进度'}
            // ,{field: 'comment', align: 'center',title: '评论'}
            ,{field: 'statusAll$', align: 'center',title: '状态', sort:true, sort:true}
            ,{field: 'createTime$', align: 'left',title: '添加日期', width: 160, hide: true, sort:true}
            ,{field: 'statusAll$', align: 'center',title: '状态', hide:true, sort:true,width: 100}
            ,{field: 'createTime$', align: 'left',title: '添加日期', hide: true, sort:true,width: 120}
            ,{field: 'updateBy$', align: 'left',title: '修改人', width: 100, sort:true}
            ,{field: 'updateTime$', align: 'left',title: '修改时间', hide: true, sort:true}
            ,{field: 'updateTime$', align: 'left',title: '更新时间', hide: false, sort:true,width: 120}
            ,{field: 'memo', align: 'left',title: '注释', hide: true, sort:true}
            ,{field: 'center', align: 'left',title: '关联流程', toolbar: '#tbLook', minWidth: 160, hide: false}
            ,{field: 'assistantHostSign$', align: 'left',title: '主副标记', hide: false}
            ,{field: 'assistantHostSign$', align: 'left',title: '主副标记', hide: false,width: 80}
            ,{field: 'assistantHostSign', align: 'left',title: '主副标记', hide: true}
            ,{field: 'hostPlanId', align: 'left',title: '主ID', hide: true}
            ,{field: 'assistantPlanId', align: 'left',title: '副ID', hide: true}
            ,{field: 'appleTime$', align: 'left',title: '申请日期', hide: false, sort:true,width: 120}
            ,{field: 'nowUserId', title: 'nowUserId', hide: true, templet:function(){return nowUserId2}}
            ,{field: 'userId',title: 'userId', hide: true}
            ,{field: 'director',title: 'director', hide: true}
            // ,{field: 'assistantPlanIdSignType', align: 'left',title: '集成货架标志', hide: true}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 340}
        ]],
@@ -219,6 +238,9 @@
            pageSize: 'limit'
        },
        parseData: function (res) {
            res.data.records.forEach((item,index) => {
                item.nowUserId = nowUserId2
            })
            return {
                'code': res.code,
                'msg': res.msg,
@@ -752,7 +774,7 @@
                                ,{field: 'assistantHostSign', align: 'left',title: '主副标记', hide: true}
                                ,{field: 'hostPlanId', align: 'left',title: '主ID', hide: true}
                                ,{field: 'assistantPlanId', align: 'left',title: '副ID', hide: true}
                                ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 340}
                                // ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 340}
                            ]],
                            request: {
                                pageName: 'curr',
src/main/webapp/static/js/priOnline2/priOnline.js
@@ -1,6 +1,20 @@
var pageCurr;
var admin;
var treeCond;
let nowUserId2 = 0;
fPriOnline();
function fPriOnline() {
    layui.jquery.ajax({
        url: baseUrl + "/dashboard/user/id/popup/auth",
        data:{token : localStorage.getItem('token')},
        method: 'GET',
        success: function (res) {
            if (res.code === 200) {
                nowUserId2 = res.data;
            }
        }
    })
}
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
@@ -119,14 +133,17 @@
            , {field: 'settleSize', align: 'center', title: '流程长度', hide: true}
            , {field: 'user$', align: 'center', title: '业务员', hide: false}
            , {field: 'deptId$', align: 'center', title: '部门', hide: true}
            , {field: 'checkDataStatus$', align: 'center', title: '报价数据', hide: false}
            , {field: 'createTime$', align: 'center', title: '创建时间', hide: true}
            , {field: 'updateUserId$', align: 'center', title: '更新人员', hide: false}
            , {field: 'updateTime$', align: 'center', title: '更新时间', hide: false}
            ,{field: 'assistantHostSign$', align: 'left',title: '主副标记', hide: false}
            ,{field: 'assistantHostSign', align: 'left',title: '主副标记', hide: true}
            ,{field: 'hostPlanId', align: 'left',title: '主ID', hide: true}
            ,{field: 'assistantPlanId', align: 'left',title: '副ID', hide: true}
            , {field: 'checkDataStatus$', align: 'center', title: '报价数据', hide: false,width: 80}
            , {field: 'createTime$', align: 'center', title: '创建时间', hide: true,width: 120}
            , {field: 'updateUserId$', align: 'center', title: '更新人员', hide: false,width: 80}
            , {field: 'updateTime$', align: 'center', title: '更新时间', hide: false,width: 120}
            ,{field: 'assistantHostSign$', align: 'left',title: '主副标记', hide: false,width: 80}
            ,{field: 'assistantHostSign', align: 'left',title: '主副标记', hide: true,width: 80}
            ,{field: 'hostPlanId', align: 'left',title: '主ID', hide: true,width: 80}
            ,{field: 'assistantPlanId', align: 'left',title: '副ID', hide: true,width: 80}
            ,{field: 'nowUserId', title: 'nowUserId', hide: true, templet:function(){return nowUserId2}}
            ,{field: 'userId',title: 'userId', hide: true}
            ,{field: 'memberId',title: 'memberId', hide: true}
            , {fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 350}
        ]],
        request: {
@@ -134,6 +151,9 @@
            pageSize: 'limit'
        },
        parseData: function (res) {
            res.data.records.forEach((item,index) => {
                item.nowUserId = nowUserId2
            })
            return {
                'code': res.code,
                'msg': res.msg,
src/main/webapp/static/js/priQuote/priQuote.js
@@ -1,5 +1,19 @@
var pageCurr;
var admin;
let nowUserId2 = 0;
fPriQuote();
function fPriQuote() {
    layui.jquery.ajax({
        url: baseUrl + "/dashboard/user/id/popup/auth",
        data:{token : localStorage.getItem('token')},
        method: 'GET',
        success: function (res) {
            if (res.code === 200) {
                nowUserId2 = res.data;
            }
        }
    })
}
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
@@ -106,9 +120,9 @@
                align: 'center',
                title: '规划单号',
                style: 'color: #1890ff;cursor:pointer',
                event: 'morePlan'}
                event: 'morePlan',hide: false,width: 80}
            ,{field: 'itemId', align: 'center',title: '规划单ID', hide: true, sort:true}
            ,{field: 'planName$', align: 'center',title: '规划单名称',hide: false}
            ,{field: 'planName$', align: 'center',title: '规划单名称',hide: false,width: 120}
            ,{
                field: 'settle$',
                align: 'center',
@@ -118,11 +132,14 @@
                width: 150,
                hide: false
            }
            ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false}
            ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false}
            ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false,width: 120}
            ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false,width: 120}
            // ,{field: 'memberId$', align: 'center',title: '业务员',hide: false}
            ,{field: 'userId$', align: 'center',title: '业务员',hide: true}
            ,{field: 'updateUserId$', align: 'center',title: '更新人员',hide: false}
            ,{field: 'updateUserId$', align: 'center',title: '更新人员',hide: false,width: 80}
            ,{field: 'nowUserId', title: 'nowUserId', hide: true, templet:function(){return nowUserId2}}
            ,{field: 'userId',title: 'userId', hide: true}
            ,{field: 'memberId',title: 'memberId', hide: true}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:280}
        ]],
        request: {
src/main/webapp/views/plan/plan.html
@@ -143,25 +143,22 @@
</div>
<script type="text/html" id="operate">
    {{# if (d.settle == 1) { }}
    {{# if ((((d.settle == 2 || d.settle == 3) && d.settleSize==4) || d.settle == 1) && d.nowUserId==d.director) { }}
        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a>
    {{# } }}
    {{# if ((d.settle == 2 || d.settle == 3) && d.settleSize==4) { }}
        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a>
    {{# } }}
    {{# if ((d.settle == 2 || d.settle == 3)&& d.settleSize==4) { }}
    {{# if (((d.settle == 2 || d.settle == 3)&& d.settleSize==4) && d.nowUserId==d.director) { }}
        <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) { }}
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">附件</a>
    {{# if (d.settle == 1 && d.nowUserId==d.userId) { }}
        <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
        <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
    {{# } }}
    {{# if ((d.assistantHostSign == 0 && d.assistantPlanId==0)&& d.settleSize==4) { }}
    {{# if ((d.assistantHostSign == 0 && d.assistantPlanId==0)&& d.settleSize==4 && d.nowUserId==d.userId ) { }}
        <a class="layui-btn layui-btn-xs btn-edit" lay-event="assistantPlan">创建货架规划任务</a>
    {{# } }}
</script>
<!--<a class="layui-btn layui-btn-xs btn-edit" lay-event="assistantPlan">{{d.nowUserId}}+-+{{d.director}}+-+{{d.userId}}</a>-->
<script type="text/html" id="plannerListDialog">
    <div class="layui-form admin-form">
@@ -175,7 +172,6 @@
        </div>
    </div>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/FileSaver.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
src/main/webapp/views/priOnline2/priOnline.html
@@ -109,21 +109,21 @@
</div>
<script type="text/html" id="operate">
    {{# if ((d.settle == 0) || (d.settle == 1 && d.settleSize == 4)){ }}
    <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 == 0 && d.nowUserId == d.memberId){ }}
        <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 && d.settleSize == 3) || (d.settle == 2 && d.settleSize == 4)){ }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">确认</a>
    {{# } }}
    {{# if (d.settle == 1 || (d.settle == 2 && d.settleSize == 4)){ }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a>
    {{# if (d.settle == 1 && d.nowUserId == d.memberId){ }}
        <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>
    <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>
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">编辑</a>-->
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="upload">上传询价</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="viewCheck">查看询价</a>
    {{# if (d.nowUserId == d.userId){ }}
        <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="viewCheck">查看询价</a>
    {{# } }}
</script>
<script type="text/html" id="plannerListDialog">
src/main/webapp/views/priQuote/priQuote.html
@@ -127,16 +127,16 @@
</script>
<script type="text/html" id="operate">
    {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3) { }}
    {{# if ((d.settle == 1 || d.settle == 2 || d.settle == 3) && d.nowUserId == d.memberId) { }}
        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a>
    {{# } }}
    {{# if (d.settle == 2 || d.settle == 3) { }}
    {{# if ((d.settle == 2 || d.settle == 3) && d.nowUserId == d.memberId) { }}
        <a class="layui-btn layui-btn-xs btn-edit" lay-event="refuse">回退审批</a>
    {{# } }}
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">附件</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="quote">报价</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">编辑</a>-->
<!--    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>-->
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>