| | |
| | | @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, // 项目编号[非空] |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | |
| | | # 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: |
| | |
| | | <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> |
| | | |
| | | |
| | |
| | | // 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'; |
| | |
| | | |
| | | 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: { |
| | |
| | | /* 表格搜索 */ |
| | | 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; |
| | | }); |
| | | |
| | |
| | | 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}}); |
| | | }); |
| | | |
| | | /* 显示表单弹窗 */ |
New file |
| | |
| | | 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} |
| | | }); |
| | | } |
New file |
| | |
| | | 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} |
| | | }); |
| | | } |
New file |
| | |
| | | <!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> |
| | | |
New file |
| | |
| | | <!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> |
| | | |
| | |
| | | <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> |