.
18516761980
2022-03-01 0efa0c7736c1554ea54de545e91a4577b64603df
.
6个文件已修改
4个文件已添加
1398 ■■■■■ 已修改文件
src/main/java/zy/cloud/wms/manager/entity/Item.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ItemMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/hostTable.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/itemBusiness/itemBusiness.js 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/itemManager/itemManager.js 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/itemBusiness/itemBusiness.html 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/itemManager/itemManager.html 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/projectPlan/projectPlan.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/Item.java
@@ -175,9 +175,192 @@
    @TableField("project_status")
    private Integer projectStatus;
    /**
     * 订单类型
     */
    @ApiModelProperty(value= "订单类型")
    @TableField("orderDesc")
    private String orderDesc;
    /**
     * 业务员
     */
    @ApiModelProperty(value= "业务员")
    @TableField("salesman")
    private String salesman;
    /**
     * 售前核价金额
     */
    @ApiModelProperty(value= "售前核价金额")
    @TableField("presaleAmt")
    private Double presaleAmt;
    /**
     * 销售预交货期
     */
    @ApiModelProperty(value= "销售预交货期")
    @TableField("predeDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date predeDate;
    /**
     * 销售预安装期
     */
    @ApiModelProperty(value= "销售预安装期")
    @TableField("preinDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date preinDate;
    /**
     * 产品重量
     */
    @ApiModelProperty(value= "产品重量")
    @TableField("weight")
    private Double weight;
    /**
     * 是否安装
     */
    @ApiModelProperty(value= "安装")
    @TableField("installMk")
    private Integer installMk;
    /**
     * 是否运输
     */
    @ApiModelProperty(value= "运输")
    @TableField("deliveryMk")
    private Integer deliveryMk;
    /**
     * 客户联系人
     */
    @ApiModelProperty(value= "客户联系人")
    @TableField("custMan")
    private String custMan;
    /**
     * 联系方式
     */
    @ApiModelProperty(value= "联系方式")
    @TableField("custMobile")
    private String custMobile;
    /**
     * 联系地址
     */
    @ApiModelProperty(value= "联系地址")
    @TableField("custAdress")
    private String custAdress;
    /**
     * 进度
     */
    @ApiModelProperty(value= "进度")
    @TableField("progressRate")
    private String progressRate;
    /**
     * 车辆信息
     */
    @ApiModelProperty(value= "车辆信息")
    @TableField("planCarInfo")
    private String planCarInfo;
    /**
     * 预计发货日期
     */
    @ApiModelProperty(value= "预计发货日期")
    @TableField("plandeDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date plandeDate;
    /**
     * 实际发货日期
     */
    @ApiModelProperty(value= "实际发货日期")
    @TableField("realdeDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date realdeDate;
    /**
     * 预计安装日期
     */
    @ApiModelProperty(value= "预计安装日期")
    @TableField("planinDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date planinDate;
    /**
     * 实际安装日期
     */
    @ApiModelProperty(value= "实际安装日期")
    @TableField("realinDate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date realinDate;
    /**
     * 预计运费
     */
    @ApiModelProperty(value= "预计运费")
    @TableField("plandeAmt")
    private Double plandeAmt;
    /**
     * 实际运费
     */
    @ApiModelProperty(value= "实际运费")
    @TableField("realdeAmt")
    private Double realdeAmt;
    /**
     * 预计安装费
     */
    @ApiModelProperty(value= "预计安装费")
    @TableField("planinAmt")
    private Double planinAmt;
    /**
     * 实际安装费
     */
    @ApiModelProperty(value= "实际安装费")
    @TableField("realinAmt")
    private Double realinAmt;
    /**
     * 预计初验日期
     */
    @ApiModelProperty(value= "预计初验日期")
    @TableField("planFADate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date planFADate;
    /**
     * 实际初验日期
     */
    @ApiModelProperty(value= "实际初验日期")
    @TableField("realFADate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date realFADate;
    /**
     * 预计终验日期
     */
    @ApiModelProperty(value= "预计终验日期")
    @TableField("planLADate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date planLADate;
    /**
     * 实际终验日期
     */
    @ApiModelProperty(value= "实际终验日期")
    @TableField("realLADate")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date realLADate;
    public Item() {}
//    Item item = new Item(
//            null,    // 项目编号[非空]
@@ -476,6 +659,74 @@
        this.memo = memo;
    }
    public String getPredeDate$(){
        if (Cools.isEmpty(this.predeDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.predeDate);
    }
    public String getPreinDate$(){
        if (Cools.isEmpty(this.preinDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.preinDate);
    }
}
    public String getPlandeDate$(){
        if (Cools.isEmpty(this.plandeDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plandeDate);
    }
    public String getRealdeDate$(){
        if (Cools.isEmpty(this.realdeDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.realdeDate);
    }
    public String getPlaninDate$(){
        if (Cools.isEmpty(this.planinDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.planinDate);
    }
    public String getRealinDate$(){
        if (Cools.isEmpty(this.realinDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.realinDate);
    }
    public String getPlanFADate$(){
        if (Cools.isEmpty(this.planFADate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.planFADate);
    }
    public String getRealFADate$(){
        if (Cools.isEmpty(this.realFADate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.realFADate);
    }
    public String getPlanLADate$(){
        if (Cools.isEmpty(this.planLADate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.planLADate);
    }
    public String getRealLADate$(){
        if (Cools.isEmpty(this.realLADate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.realLADate);
    }
}
src/main/resources/application.yml
@@ -14,11 +14,12 @@
#    password: xltys1995
    # sql-server
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:51433;databasename=zypms
    username: sa
    password: Zoneyung@zy56$
#    url: jdbc:sqlserver://127.0.0.1:51433;databasename=zypms
#    username: sa
#    password: sa@123
#    password: Zoneyung@zy56$
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=zypms
    username: sa
    password: sa@123
  mvc:
    static-path-pattern: /**
  redis:
src/main/resources/mapper/ItemMapper.xml
@@ -21,7 +21,39 @@
        <result column="update_by" property="updateBy" />
        <result column="update_time" property="updateTime" />
        <result column="memo" property="memo" />
        <result column="type" property="type" />
        <result column="real_start_time" property="realStartTime" />
        <result column="real_end_time" property="realEndTime" />
        <result column="real_month" property="realMonth" />
        <result column="duty_department" property="dutyDepartment" />
        <result column="duty_man" property="dutyMan" />
        <result column="origin_area" property="originArea" />
        <result column="project_status" property="projectStatus" />
        <result column="orderDesc" property="orderDesc" />
        <result column="salesman" property="salesman" />
        <result column="presaleAmt" property="presaleAmt" />
        <result column="predeDate" property="predeDate" />
        <result column="preinDate" property="preinDate" />
        <result column="weight" property="weight" />
        <result column="installMk" property="installMk" />
        <result column="deliveryMk" property="deliveryMk" />
        <result column="custMan" property="custMan" />
        <result column="custMobile" property="custMobile" />
        <result column="custAdress" property="custAdress" />
        <result column="progressRate" property="progressRate" />
        <result column="planCarInfo" property="planCarInfo" />
        <result column="plandeDate" property="plandeDate" />
        <result column="realdeDate" property="realdeDate" />
        <result column="planinDate" property="planinDate" />
        <result column="realinDate" property="realinDate" />
        <result column="plandeAmt" property="plandeAmt" />
        <result column="realdeAmt" property="realdeAmt" />
        <result column="planinAmt" property="planinAmt" />
        <result column="realinAmt" property="realinAmt" />
        <result column="planFADate" property="planFADate" />
        <result column="realFADate" property="realFADate" />
        <result column="planLADate" property="planLADate" />
        <result column="realLADate" property="realLADate" />
    </resultMap>
src/main/webapp/static/js/config.js
@@ -1,2 +1,2 @@
// var baseurl = 'http://127.0.0.1:8080';
var baseurl = 'http://47.97.1.152:58080';
var baseurl = 'http://127.0.0.1:8080';
// var baseurl = 'http://47.97.1.152:58080';
src/main/webapp/static/js/hostTable.js
@@ -12,7 +12,7 @@
    var insTb = table.render({
        elem: '#originTable',
        url: baseUrl + '/item/list/auth',
        url: baseUrl + '/host/list/auth',
        height: 'full-100',
        headers: {token: localStorage.getItem('token')},
        request: {
@@ -54,7 +54,7 @@
    /* 表格搜索 */
    form.on('submit(originTbReset)', function (data) {
        insTb.reload();
        insTb2.reload({where: {item_id: null}, page: {curr: 1}});
        insTb2.reload({where: {host_id: null}, page: {curr: 1}});
        return false;
    });
@@ -80,7 +80,7 @@
    table.on('row(originTable)', function (obj) {
        selObj = obj;
        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
        insTb2.reload({where: {item_id: obj.data.id}, page: {curr: 1}});
        insTb2.reload({where: {host_id: obj.data.id}, page: {curr: 1}});
    });
    /* 显示表单弹窗 */
src/main/webapp/static/js/itemBusiness/itemBusiness.js
New file
@@ -0,0 +1,301 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#item',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/item/list/auth',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox'}
            // ,{field: 'id', align: 'center',title: 'ID'}
            // ,{field: 'hostId', align: 'center',title: ''}
            ,{field: 'uuid', align: 'center',title: '项目编号'}
            ,{field: 'name', align: 'center',title: '项目名称'}
            ,{field: 'inUuid', align: 'center',title: '内部编号', hide: true}
            // ,{field: 'cstmrUuid', align: 'center',title: '客户编号'}
            ,{field: 'cstmrUuid$', align: 'center',title: '客户名称'}
            ,{field: 'projectStatus$', align: 'center', title: '项目进度'}
            // ,{field: 'member', align: 'center',title: '项目成员'}
            // ,{field: 'leader', align: 'center',title: '项目经理'}
            ,{field: 'startTime0$', align: 'center',title: '计划开始时间'}
            ,{field: 'endTime0$', align: 'center',title: '计划结束时间'}
            ,{field: 'realStartTime0$', align: 'center', title: '实际开始时间'}
            ,{field: 'realEndTime0$', align: 'center', title: '实际结束时间'}
            ,{field: 'type$', align: 'center', title: '项目类型'}
            ,{field: 'originArea', align: 'center', title: '生产地'}
            ,{field: 'realMonth', align: 'center', title: '时间跨度(月)'}
            ,{field: 'dutyMan', align: 'center', title: '责任人'}
            ,{field: 'dutyDepartment', align: 'center', title: '责任部门'}
            ,{field: 'status$', align: 'center',title: '状态'}
            // ,{field: 'createBy$', align: 'center',title: '添加人员'}
            // ,{field: 'createTime$', align: 'center',title: '添加时间'}
            // ,{field: 'updateBy$', align: 'center',title: '修改人员'}
            // ,{field: 'updateTime$', align: 'center',title: '修改时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            // console.log(res)
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(item)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(item)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               var ids = checkStatus.map(function (d) {
                   return d.id;
               });
               del(ids);
               break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'item': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/item/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(item)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                var ids = [data.id];
                del(ids);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '项目信息',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/item/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要禁用选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/item/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    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});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(mData) {
        // console.log(mData)
        setTimeout(function () {
            layDate.render({
                elem: '#startTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['startTime$']):null
            });
            layDate.render({
                elem: '#realStartTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['realStartTime$']):null
            });
            layDate.render({
                elem: '#endTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['endTime$']):null
            });
            layDate.render({
                elem: '#realEndTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['realEndTime$']):null
            });
            layDate.render({
                elem: '#createTime\\$',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['createTime$']):null
            });
            layDate.render({
                elem: '#modifyTime\\$',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['modifyTime$']):null
            });
        }, 500);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/static/js/itemManager/itemManager.js
New file
@@ -0,0 +1,301 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#item',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/item/list/auth',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox'}
            // ,{field: 'id', align: 'center',title: 'ID'}
            // ,{field: 'hostId', align: 'center',title: ''}
            ,{field: 'uuid', align: 'center',title: '项目编号'}
            ,{field: 'name', align: 'center',title: '项目名称'}
            ,{field: 'inUuid', align: 'center',title: '内部编号', hide: true}
            // ,{field: 'cstmrUuid', align: 'center',title: '客户编号'}
            ,{field: 'cstmrUuid$', align: 'center',title: '客户名称'}
            ,{field: 'projectStatus$', align: 'center', title: '项目进度'}
            // ,{field: 'member', align: 'center',title: '项目成员'}
            // ,{field: 'leader', align: 'center',title: '项目经理'}
            ,{field: 'startTime0$', align: 'center',title: '计划开始时间'}
            ,{field: 'endTime0$', align: 'center',title: '计划结束时间'}
            ,{field: 'realStartTime0$', align: 'center', title: '实际开始时间'}
            ,{field: 'realEndTime0$', align: 'center', title: '实际结束时间'}
            ,{field: 'type$', align: 'center', title: '项目类型'}
            ,{field: 'originArea', align: 'center', title: '生产地'}
            ,{field: 'realMonth', align: 'center', title: '时间跨度(月)'}
            ,{field: 'dutyMan', align: 'center', title: '责任人'}
            ,{field: 'dutyDepartment', align: 'center', title: '责任部门'}
            ,{field: 'status$', align: 'center',title: '状态'}
            // ,{field: 'createBy$', align: 'center',title: '添加人员'}
            // ,{field: 'createTime$', align: 'center',title: '添加时间'}
            // ,{field: 'updateBy$', align: 'center',title: '修改人员'}
            // ,{field: 'updateTime$', align: 'center',title: '修改时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            // console.log(res)
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(item)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(item)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               var ids = checkStatus.map(function (d) {
                   return d.id;
               });
               del(ids);
               break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'item': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/item/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(item)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                var ids = [data.id];
                del(ids);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '项目信息',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/item/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要禁用选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/item/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    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});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(mData) {
        // console.log(mData)
        setTimeout(function () {
            layDate.render({
                elem: '#startTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['startTime$']):null
            });
            layDate.render({
                elem: '#realStartTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['realStartTime$']):null
            });
            layDate.render({
                elem: '#endTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['endTime$']):null
            });
            layDate.render({
                elem: '#realEndTime',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['realEndTime$']):null
            });
            layDate.render({
                elem: '#createTime\\$',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['createTime$']):null
            });
            layDate.render({
                elem: '#modifyTime\\$',
                type: 'datetime',
                value: mData!==null&&mData!==undefined?strToDate(mData['modifyTime$']):null
            });
        }, 500);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/views/itemBusiness/itemBusiness.html
New file
@@ -0,0 +1,242 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/common.css" media="all">
</head>
<body>
<!-- 搜索栏 -->
<div id="search-box" class="layui-form layui-card-header">
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
    </div>
</div>
<!-- 表格 -->
<div class="layui-form">
    <table class="layui-hide" id="item" lay-filter="item"></table>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">禁用</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <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>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/itemBusiness/itemBusiness.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="uuid" placeholder="请输入项目编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">内部编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="inUuid" placeholder="请输入内部编号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">客户名称: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input id="cstmrUuid" class="layui-input" name="cstmrUuid" placeholder="请输入客户名称" style="display: none" lay-vertype="tips" lay-verify="required">
                        <input id="cstmrUuid$" name="cstmrUuid$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入客户名称" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input"   data-key="cstmrUuidBycstmrUuid" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select"  data-key="cstmrUuidBycstmrUuidSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">计划开始时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="startTime" id="startTime" placeholder="请输入计划开始时间" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">实际开始时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realStartTime" id="realStartTime" placeholder="请输入实际开始时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">状态: </label>
                    <div class="layui-input-block">
                        <select name="status">
                            <option value="">请选择状态</option>
                            <option value="1">正常</option>
                            <option value="2">禁用</option>
                            <option value="3">完结</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">责任人: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="dutyMan" id="dutyMan$" placeholder="请输入责任人">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">实施周期(月): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number" lay-verify="required"
                               onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               oninput="if(value>200)value=200;if(value<=0)value=1">
                    </div>
                </div>
            </div>
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="name" placeholder="请输入项目名称" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">客户编号: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="cstmrUuid" placeholder="请输入客户名称" lay-vertype="tips" lay-verify="required">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目进度: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input id="projectStatus" class="layui-input" name="projectStatus" placeholder="请输入项目进度" style="display: none" lay-vertype="tips" lay-verify="required">
                        <input id="projectStatus$" name="projectStatus$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目进度" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="projectStatusByprojectStatus" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="projectStatusByprojectStatusSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">客户: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="cstmr" placeholder="请输入客户">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目类型: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="type" placeholder="请输入项目类型" style="display: none" lay-vertype="tips" lay-verify="required">
                        <!--                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目类型" onfocus=this.blur()>-->
                        <input id="type$" name="type$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目类型" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="typeBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="typeBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">计划结束时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="endTime" id="endTime" placeholder="请输入计划结束时间" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">实际结束时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realEndTime" id="realEndTime" placeholder="请输入实际结束时间">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">项目类型: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="type" placeholder="请输入项目类型" lay-vertype="tips" lay-verify="required" type="number">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">生产地: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="originArea" placeholder="请输入生产地" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">责任部门: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="dutyDepartment" id="dutyDepartment$" placeholder="请输入责任部门">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">添加人员: </label>-->
<!--                    <div class="layui-input-block cool-auto-complete">-->
<!--                        <input class="layui-input" name="createBy" placeholder="请输入添加人员" style="display: none">-->
<!--                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入添加人员" onfocus=this.blur()>-->
<!--                        <div class="cool-auto-complete-window">-->
<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
<!--                            </select>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                </div>-->
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">添加时间: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="createTime" id="createTime$" placeholder="请输入添加时间">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/itemManager/itemManager.html
New file
@@ -0,0 +1,242 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/common.css" media="all">
</head>
<body>
<!-- 搜索栏 -->
<div id="search-box" class="layui-form layui-card-header">
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
    </div>
</div>
<!-- 表格 -->
<div class="layui-form">
    <table class="layui-hide" id="item" lay-filter="item"></table>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">禁用</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <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>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/itemManager/itemManager.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="uuid" placeholder="请输入项目编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">内部编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="inUuid" placeholder="请输入内部编号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">客户名称: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input id="cstmrUuid" class="layui-input" name="cstmrUuid" placeholder="请输入客户名称" style="display: none" lay-vertype="tips" lay-verify="required">
                        <input id="cstmrUuid$" name="cstmrUuid$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入客户名称" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input"   data-key="cstmrUuidBycstmrUuid" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select"  data-key="cstmrUuidBycstmrUuidSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">计划开始时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="startTime" id="startTime" placeholder="请输入计划开始时间" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">实际开始时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realStartTime" id="realStartTime" placeholder="请输入实际开始时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">状态: </label>
                    <div class="layui-input-block">
                        <select name="status">
                            <option value="">请选择状态</option>
                            <option value="1">正常</option>
                            <option value="2">禁用</option>
                            <option value="3">完结</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">责任人: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="dutyMan" id="dutyMan$" placeholder="请输入责任人">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">实施周期(月): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number" lay-verify="required"
                               onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               oninput="if(value>200)value=200;if(value<=0)value=1">
                    </div>
                </div>
            </div>
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="name" placeholder="请输入项目名称" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">客户编号: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="cstmrUuid" placeholder="请输入客户名称" lay-vertype="tips" lay-verify="required">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目进度: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input id="projectStatus" class="layui-input" name="projectStatus" placeholder="请输入项目进度" style="display: none" lay-vertype="tips" lay-verify="required">
                        <input id="projectStatus$" name="projectStatus$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目进度" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="projectStatusByprojectStatus" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="projectStatusByprojectStatusSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">客户: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="cstmr" placeholder="请输入客户">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">项目类型: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="type" placeholder="请输入项目类型" style="display: none" lay-vertype="tips" lay-verify="required">
                        <!--                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目类型" onfocus=this.blur()>-->
                        <input id="type$" name="type$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目类型" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="typeBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="typeBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">计划结束时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="endTime" id="endTime" placeholder="请输入计划结束时间" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">实际结束时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realEndTime" id="realEndTime" placeholder="请输入实际结束时间">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label layui-form-required">项目类型: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="type" placeholder="请输入项目类型" lay-vertype="tips" lay-verify="required" type="number">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">生产地: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="originArea" placeholder="请输入生产地" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">责任部门: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="dutyDepartment" id="dutyDepartment$" placeholder="请输入责任部门">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">添加人员: </label>-->
<!--                    <div class="layui-input-block cool-auto-complete">-->
<!--                        <input class="layui-input" name="createBy" placeholder="请输入添加人员" style="display: none">-->
<!--                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入添加人员" onfocus=this.blur()>-->
<!--                        <div class="cool-auto-complete-window">-->
<!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">-->
<!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">-->
<!--                            </select>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                </div>-->
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">添加时间: </label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input class="layui-input" name="createTime" id="createTime$" placeholder="请输入添加时间">-->
<!--                    </div>-->
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>
src/main/webapp/views/projectPlan/projectPlan.html
@@ -130,7 +130,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/hostTable.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/itemTable.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/projectPlan/projectPlan.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js" charset="utf-8"></script>
</body>