|  |  |  | 
|---|
|  |  |  | // var baseUrl = "http://127.0.0.1:8080/asrs"; | 
|---|
|  |  |  | var baseUrl = "/asrs"; | 
|---|
|  |  |  | var baseUrl = "/tzhnewms"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 详情窗口-高度 | 
|---|
|  |  |  | var detailHeight = '80%'; | 
|---|
|  |  |  | // 详情窗口-宽度 | 
|---|
|  |  |  | var detailWidth = '90%'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function checkPassword(password) { | 
|---|
|  |  |  | //密码必须包含字符和数字长度不能少于8位 | 
|---|
|  |  |  | let pattern = /(?=.*[0-9])(?=.*[a-zA-Z!@#$]).{8,}/ | 
|---|
|  |  |  | //不能包含连续数字 | 
|---|
|  |  |  | let pattern2 = /(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3}\d/ | 
|---|
|  |  |  | //重复数字不能超过四位 | 
|---|
|  |  |  | let pattern3 = /(\d)\1{3}/ | 
|---|
|  |  |  | if (pattern.test(password) && pattern2.test(password) === false && pattern3.test(password) === false) { | 
|---|
|  |  |  | //匹配放行 | 
|---|
|  |  |  | return true | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //不匹配要求修改密码1 | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 非空判断 | 
|---|
|  |  |  | function isEmpty(obj){ | 
|---|
|  |  |  | return typeof obj == "undefined" || obj == null || obj === ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); | 
|---|
|  |  |  | //       layer.close(loadIndex); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 时间 ==>> 字符串 | 
|---|
|  |  |  | function dateToStr(date) { | 
|---|
|  |  |  | function dateToStr(date, millisecond) { | 
|---|
|  |  |  | var time = new Date(date); | 
|---|
|  |  |  | var y = time.getFullYear(); | 
|---|
|  |  |  | var M = time.getMonth() + 1; | 
|---|
|  |  |  | 
|---|
|  |  |  | m = m < 10 ? ("0" + m) : m; | 
|---|
|  |  |  | var s = time.getSeconds(); | 
|---|
|  |  |  | s = s < 10 ? ("0" + s) : s; | 
|---|
|  |  |  | return y + "-" + M + "-" + d + " " + h + ":" + m + ":" + s; | 
|---|
|  |  |  | if (!millisecond) { | 
|---|
|  |  |  | return y + "-" + M + "-" + d + " " + h + ":" + m + ":" + s; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | var p = time.getMilliseconds(); | 
|---|
|  |  |  | if (p < 10) { | 
|---|
|  |  |  | p = "00" + p; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (p <  100) { | 
|---|
|  |  |  | p = "0" + p; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return y + "-" + M + "-" + d + " " + h + ":" + m + ":" + s + "," + p; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 字符串 ===>> 时间 | 
|---|
|  |  |  | 
|---|
|  |  |  | (child?parent:window).$('.'+res.data[i].code).css("display", "inline-block"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = "/"; | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // http请求 | 
|---|
|  |  |  | !function (n) { | 
|---|
|  |  |  | "use strict"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var http = { | 
|---|
|  |  |  | toAjax: function (params) { | 
|---|
|  |  |  | $.ajax(params); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | get: function (url, data, callback) { | 
|---|
|  |  |  | http.toAjax({ | 
|---|
|  |  |  | method: 'GET', | 
|---|
|  |  |  | url: url, | 
|---|
|  |  |  | data: data, | 
|---|
|  |  |  | dataType: 'json', | 
|---|
|  |  |  | header: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | timeout: 10000, | 
|---|
|  |  |  | cache: false, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | callback(res); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | }  else { | 
|---|
|  |  |  | layer.msg(res.msg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | error: function (res, type) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 默认表单 | 
|---|
|  |  |  | post: function (url, param, callback, type) { | 
|---|
|  |  |  | var headerType; | 
|---|
|  |  |  | if (type === 'json') { | 
|---|
|  |  |  | headerType = {'Content-Type': 'application/json'} | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | headerType = {'Content-Type': 'application/x-www-form-urlencoded'} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | headerType['token'] = localStorage.getItem('token'); | 
|---|
|  |  |  | http.toAjax({ | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | url: url, | 
|---|
|  |  |  | data: param, | 
|---|
|  |  |  | dataType: 'json', | 
|---|
|  |  |  | headers: headerType, | 
|---|
|  |  |  | timeout: 10000, | 
|---|
|  |  |  | cache: false, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | callback(res); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | }  else { | 
|---|
|  |  |  | layer.msg(res.msg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | error: function (res, type) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | "function" == typeof define && define.amd ? define(function () { | 
|---|
|  |  |  | return http | 
|---|
|  |  |  | }) : "object" == typeof module && module.exports ? module.exports = http : n.http = http | 
|---|
|  |  |  | }(this); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*************************************************************************************************************/ | 
|---|
|  |  |  | /********************************************** 物料业务抽象 ***************************************************/ | 
|---|
|  |  |  | /*************************************************************************************************************/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function arrRemove(arr, key, val) { | 
|---|
|  |  |  | for(var i=arr.length-1; i>=0; i--){ | 
|---|
|  |  |  | if(arr[i][key] === val){ | 
|---|
|  |  |  | arr.splice(i,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var matCols = [ | 
|---|
|  |  |  | {field: 'matnr', align: 'center',title: '商品编号', width: 180} | 
|---|
|  |  |  | // {field: 'id', align: 'center',title: 'ID'} | 
|---|
|  |  |  | // ,{field: 'uuid', align: 'center',title: '编号'} | 
|---|
|  |  |  | // ,{field: 'tagId$', align: 'center',title: '所属归类'} | 
|---|
|  |  |  | ,{field: 'maktx', align: 'center',title: '商品名称'} | 
|---|
|  |  |  | // ,{field: 'name', align: 'center',title: '别名'} | 
|---|
|  |  |  | ,{field: 'specs', align: 'center',title: '规格'} | 
|---|
|  |  |  | ,{field: 'origin', align: 'center',title: '产地'} | 
|---|
|  |  |  | ,{field: 'model', align: 'center',title: '代码', hide: true} | 
|---|
|  |  |  | ,{field: 'color', align: 'center',title: '颜色', hide: true} | 
|---|
|  |  |  | ,{field: 'brand', align: 'center',title: '品牌', hide: true} | 
|---|
|  |  |  | ,{field: 'unit', align: 'center',title: '单位', hide: true} | 
|---|
|  |  |  | ,{field: 'price', align: 'center',title: '单价', hide: true} | 
|---|
|  |  |  | ,{field: 'sku', align: 'center',title: 'sku', hide: true} | 
|---|
|  |  |  | ,{field: 'units', align: 'center',title: '单位量', hide: true} | 
|---|
|  |  |  | ,{field: 'barcode', align: 'center',title: '条码', hide: true} | 
|---|
|  |  |  | ,{field: 'origin', align: 'center',title: '产地', hide: true} | 
|---|
|  |  |  | ,{field: 'manu', align: 'center',title: '厂家', hide: true} | 
|---|
|  |  |  | ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} | 
|---|
|  |  |  | ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} | 
|---|
|  |  |  | ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} | 
|---|
|  |  |  | ,{field: 'weight', align: 'center',title: '单箱净重', hide: true} | 
|---|
|  |  |  | ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} | 
|---|
|  |  |  | ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} | 
|---|
|  |  |  | ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} | 
|---|
|  |  |  | ,{field: 'supp', align: 'center',title: '供应商', hide: true} | 
|---|
|  |  |  | ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true} | 
|---|
|  |  |  | ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true} | 
|---|
|  |  |  | ,{field: 'deadTime', align: 'center',title: '保质期', hide: true} | 
|---|
|  |  |  | ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true} | 
|---|
|  |  |  | ,{field: 'source$', align: 'center',title: '制购', hide: true} | 
|---|
|  |  |  | ,{field: 'check$', align: 'center',title: '要求检验', hide: true} | 
|---|
|  |  |  | ,{field: 'danger$', align: 'center',title: '危险品', hide: true} | 
|---|
|  |  |  | // ,{field: 'status$', align: 'center',title: '状态'} | 
|---|
|  |  |  | // ,{field: 'createBy$', align: 'center',title: '添加人员'} | 
|---|
|  |  |  | // ,{field: 'createTime$', align: 'center',title: '添加时间'} | 
|---|
|  |  |  | ,{field: 'updateBy$', align: 'center',title: '修改人员', hide: true} | 
|---|
|  |  |  | ,{field: 'updateTime$', align: 'center',title: '修改时间', hide: true} | 
|---|
|  |  |  | ,{field: 'memo', align: 'center',title: '备注', hide: true} | 
|---|
|  |  |  | ,{field: 'inventoryMax', align: 'center',title: '库存上限', hide: false} | 
|---|
|  |  |  | ,{field: 'inventoryMin', align: 'center',title: '库存下限', hide: false} | 
|---|
|  |  |  | ,{field: 'inventoryAgeMax', align: 'center',title: '库龄上限', hide: false} | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var detlCols = [ | 
|---|
|  |  |  | {field: 'matnr', align: 'center',title: '商品编号', sort:true} | 
|---|
|  |  |  | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} | 
|---|
|  |  |  | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true} | 
|---|
|  |  |  | ,{field: 'batch', align: 'center',title: '批号', sort:true} | 
|---|
|  |  |  | ,{field: 'anfme', align: 'center',title: '数量(件)',hide: false} | 
|---|
|  |  |  | ,{field: 'zpallet', align: 'center',title: '托盘条码',hide: false} | 
|---|
|  |  |  | ,{field: 'specs', align: 'center',title: '规格',hide: true} | 
|---|
|  |  |  | ,{field: 'model', align: 'center',title: '代码', hide: false} | 
|---|
|  |  |  | ,{field: 'color', align: 'center',title: '颜色', hide: true} | 
|---|
|  |  |  | ,{field: 'brand', align: 'center',title: '品牌', hide: true} | 
|---|
|  |  |  | ,{field: 'unit', align: 'center',title: '单位', hide: true} | 
|---|
|  |  |  | ,{field: 'price', align: 'center',title: '单价', hide: true} | 
|---|
|  |  |  | ,{field: 'sku', align: 'center',title: 'sku', hide: true} | 
|---|
|  |  |  | ,{field: 'units', align: 'center',title: '单位量', hide: true} | 
|---|
|  |  |  | ,{field: 'barcode', align: 'center',title: '条码', hide: true} | 
|---|
|  |  |  | ,{field: 'origin', align: 'center',title: '产地', hide: true} | 
|---|
|  |  |  | ,{field: 'manu', align: 'center',title: '厂家', hide: true} | 
|---|
|  |  |  | ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} | 
|---|
|  |  |  | ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} | 
|---|
|  |  |  | ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} | 
|---|
|  |  |  | ,{field: 'weight', align: 'center',title: '重量', hide: false} | 
|---|
|  |  |  | ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} | 
|---|
|  |  |  | ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} | 
|---|
|  |  |  | ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} | 
|---|
|  |  |  | ,{field: 'supp', align: 'center',title: '供应商', hide: true} | 
|---|
|  |  |  | ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true} | 
|---|
|  |  |  | ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true} | 
|---|
|  |  |  | ,{field: 'deadTime', align: 'center',title: '保质期', hide: true} | 
|---|
|  |  |  | ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true} | 
|---|
|  |  |  | ,{field: 'source$', align: 'center',title: '制购', hide: true} | 
|---|
|  |  |  | ,{field: 'check$', align: 'center',title: '要求检验', hide: true} | 
|---|
|  |  |  | ,{field: 'danger$', align: 'center',title: '危险品', hide: true} | 
|---|
|  |  |  | ,{field: 'owner$', align: 'center',title: '货主', hide: false} | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var plaCols = [ | 
|---|
|  |  |  | {field: 'id', title: 'id', align: 'center',hide:true} | 
|---|
|  |  |  | ,{type: 'checkbox',totalRow:true} | 
|---|
|  |  |  | ,{field:'id', width:80, title: '', sort: true, totalRowText: '合计:',hide: true} | 
|---|
|  |  |  | ,{field: 'pakinTime$', title: '入库时间', align: 'center' , sort:true} | 
|---|
|  |  |  | ,{field: 'matnr', align: 'center',title: '存货编码',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'brand', align: 'center',title: '牌号',edit:true} | 
|---|
|  |  |  | ,{field: 'batch', align: 'center',title: '批号',edit:true, width: 150, sort:true} | 
|---|
|  |  |  | ,{field: 'packageNo', align: 'center',title: '包装号',edit:true, sort:true} | 
|---|
|  |  |  | ,{field: 'proDate', align: 'center',title: '生产日期',edit:true, width: 100} | 
|---|
|  |  |  | ,{field: 'weight', align: 'center',title: '重量KG',edit:true,totalRow:true} | 
|---|
|  |  |  | ,{field: 'packageType', align: 'center',title: '包装类型',edit:true} | 
|---|
|  |  |  | ,{field: 'zpalletType', align: 'center',title: '托盘类型',edit:true} | 
|---|
|  |  |  | ,{field: 'filmWrap', align: 'center',title: '缠膜',edit:true,hide:true} | 
|---|
|  |  |  | ,{field: 'fingerMelting', align: 'center',title: '熔指,g/10min',edit:true} | 
|---|
|  |  |  | ,{field: 'water', align: 'center',title: '水分,ppm', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'fusingPoint', align: 'center',title: '熔点,℃',edit:true} | 
|---|
|  |  |  | ,{field: 'vadf1', align: 'center',title: '挥发段,%', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'vadf2', align: 'center',title: '分解段,%', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'yellowness', align: 'center',title: '黄度',edit:true} | 
|---|
|  |  |  | ,{field: 'opacity', align: 'center',title: '不透明度,%',edit:true} | 
|---|
|  |  |  | ,{field: 'l', align: 'center',title: 'L*', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'a', align: 'center',title: 'a*', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'b', align: 'center',title: 'b*', hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'fillIn', align: 'center',title: '填充,%',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str1', align: 'center',title: '拉伸强度,MPa',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str2', align: 'center',title: '断裂伸长率,%',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str3', align: 'center',title: '缺口冲击,KJ/m2',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str4', align: 'center',title: '维卡,℃',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str5', align: 'center',title: '半结晶时间,min',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'str6', align: 'center',title: '结晶度,%',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'massState', align: 'center',title: '质量状态',edit:true} | 
|---|
|  |  |  | ,{field: 'problem', align: 'center',title: '备注',edit:true,hide:true} | 
|---|
|  |  |  | ,{field: 'direction', align: 'center',title: '应用方向',edit:true,hide:true} | 
|---|
|  |  |  | ,{field: 'position', align: 'center',title: '存放位置',edit:true,hide:true} | 
|---|
|  |  |  | ,{field: 'stash', align: 'center',title: '仓库',edit:true,hide:true} | 
|---|
|  |  |  | ,{field: 'locNo', align: 'center',title: '库位',edit:true} | 
|---|
|  |  |  | ,{field: 'owner', align: 'center',title: '主体',edit:true} | 
|---|
|  |  |  | ,{field: 'type', align: 'center',title: '物资类别',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'proOrderNo', align: 'center',title: '生产订单编号',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'workshop', align: 'center',title: '生产车间',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'line', align: 'center',title: '生产线',hide:true,edit:true} | 
|---|
|  |  |  | ,{field: 'weightAnfme', align: 'center',title: '剩余重量(KG)',edit:true,totalRow:true} | 
|---|
|  |  |  | ,{field: 'qtyAnfme', align: 'center',title: '待出库重量(KG)',hide:true} | 
|---|
|  |  |  | ,{field: 'status', align: 'center',title: '状态', templet: setState ,edit:true} | 
|---|
|  |  |  | ,{field: 'stockFreeze', align: 'center',title: '库存冻结', templet: '#stockFreezeTpl'} | 
|---|
|  |  |  | ,{field: 'stockFreezeBy', align: 'center',title: '操作人员',hide:true} | 
|---|
|  |  |  | ,{field: 'stockFreezeDate$', align: 'center',title: '操作日期',hide:true} | 
|---|
|  |  |  | ,{align: 'center', title: '流转明细', toolbar: '#tbLook'} | 
|---|
|  |  |  | ,{field: 'createTime$', title: '创建时间', align: 'center' , sort:true} | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function setState(data){ | 
|---|
|  |  |  | if(data.status === "待入库"){ | 
|---|
|  |  |  | return  "<span style='color: orange'>待入库</span>" | 
|---|
|  |  |  | }else if(data.status === "已入库"){ | 
|---|
|  |  |  | return  "<span style='color: blue'>已入库</span>" | 
|---|
|  |  |  | }else if(data.status === "待出库"){ | 
|---|
|  |  |  | return  "<span style='color: red'>待出库</span>" | 
|---|
|  |  |  | }else if(data.status === "部分出库"){ | 
|---|
|  |  |  | return  "<span style='color: black'>部分出库</span>" | 
|---|
|  |  |  | }else if(data.status === "全部出库"){ | 
|---|
|  |  |  | return  "<span style='color: gray'>全部出库</span>" | 
|---|
|  |  |  | }else if(data.status === "暂入库"){ | 
|---|
|  |  |  | return  "<span style='color: purple'>暂入库</span>" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function getQueryVariable(variable) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var query = window.location.search.substring(1); | 
|---|
|  |  |  | var vars = query.split("&"); | 
|---|
|  |  |  | for (var i=0;i<vars.length;i++) { | 
|---|
|  |  |  | var pair = vars[i].split("="); | 
|---|
|  |  |  | if(pair[0] == variable){return pair[1];} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|