| var pageCurr; | 
| var printMatCodeNos = []; | 
| var admin; | 
|   | 
| function getCol() { | 
|     var cols = [ | 
|         {type: 'checkbox'} | 
|         , {field: 'tagId$', align: 'center', title: '归类', templet: '#tagTpl'} | 
|         , {field: 'locType$', align: 'center', title: '库位类型'} | 
|         // ,{field: 'store_max', align: 'center',title: '库存上限'} | 
|         // ,{field: 'store_min', align: 'center',title: '库存下限'} | 
|         // ,{field: 'store_max_date', align: 'center',title: '库龄上限(天)'} | 
|     ]; | 
|     cols.push.apply(cols, matCols); | 
|     cols.push( | 
|         {fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 150} | 
|     ) | 
|     return cols; | 
| } | 
|   | 
| layui.config({ | 
|     base: baseUrl + "/static/layui/lay/modules/" | 
| }).extend({ | 
|     dropdown: 'dropdown/dropdown', | 
| }).use(['table', 'laydate', 'form', 'treeTable', 'admin', 'xmSelect', 'dropdown', 'element'], function () { | 
|     var table = layui.table; | 
|     var $ = layui.jquery; | 
|     var layer = layui.layer; | 
|     var layDate = layui.laydate; | 
|     var form = layui.form; | 
|     admin = layui.admin; | 
|     var treeTable = layui.treeTable; | 
|     var xmSelect = layui.xmSelect; | 
|   | 
|     // 商品分类数据 | 
|     var insTb = treeTable.render({ | 
|         elem: '#tag', | 
|         url: baseUrl + '/tag/list/auth', | 
|         headers: {token: localStorage.getItem('token')}, | 
|         tree: { | 
|             iconIndex: 2,           // 折叠图标显示在第几列 | 
|             isPidData: true,        // 是否是id、pid形式数据 | 
|             idName: 'id',           // id字段名称 | 
|             pidName: 'parentId'     // pid字段名称 | 
|         }, | 
|         cols: [], | 
|         done: function (data) { | 
|             $('.ew-tree-table-box').css('height', '100%'); | 
|             insTb.expandAll(); | 
|         } | 
|     }); | 
|   | 
|     // 数据渲染 | 
|     tableIns = table.render({ | 
|         elem: '#mat', | 
|         headers: {token: localStorage.getItem('token')}, | 
|         url: baseUrl + '/mat/list/auth', | 
|         page: true, | 
|         limit: 16, | 
|         limits: [16, 30, 50, 100, 200, 500], | 
|         toolbar: '#toolbar', | 
|         cellMinWidth: 50, | 
|         height: 'full-105', | 
|         cols: [getCol()], | 
|         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) { | 
|             if (res.code === 403) { | 
|                 top.location.href = baseUrl + "/"; | 
|             } | 
|             pageCurr = curr; | 
|             limit(); | 
|             form.on('checkbox(tableCheckbox)', function (data) { | 
|                 var _index = $(data.elem).attr('table-index') || 0; | 
|                 if (data.elem.checked) { | 
|                     res.data[_index][data.value] = 'Y'; | 
|                 } else { | 
|                     res.data[_index][data.value] = 'N'; | 
|                 } | 
|             }); | 
|         } | 
|     }); | 
|   | 
|     // 监听排序事件 | 
|     table.on('sort(locMast)', 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 | 
|             }, | 
|             done: function (res, curr, count) { | 
|                 if (res.code === 403) { | 
|                     top.location.href = baseUrl + "/"; | 
|                 } | 
|                 pageCurr = curr; | 
|                 limit(); | 
|             } | 
|         }); | 
|     }); | 
|   | 
|     // 监听头工具栏事件 | 
|     table.on('toolbar(mat)', function (obj) { | 
|         var checkStatus = table.checkStatus(obj.config.id); | 
|         switch (obj.event) { | 
|             case 'addData': | 
|                 showEditModel() | 
|                 break; | 
|             case 'deleteData': | 
|                 var data = checkStatus.data; | 
|                 if (data.length === 0) { | 
|                     layer.msg('请选择数据'); | 
|                 } else { | 
|                     layer.confirm('确定删除' + (data.length === 1 ? '此' : data.length) + '条数据吗', function () { | 
|                         $.ajax({ | 
|                             url: baseUrl + "/mat/delete/auth", | 
|                             headers: {'token': localStorage.getItem('token')}, | 
|                             data: {param: JSON.stringify(data)}, | 
|                             method: 'POST', | 
|                             traditional: true, | 
|                             success: function (res) { | 
|                                 if (res.code === 200) { | 
|                                     layer.closeAll(); | 
|                                     tableReload(false); | 
|                                 } else if (res.code === 403) { | 
|                                     top.location.href = baseUrl + "/"; | 
|                                 } else { | 
|                                     layer.msg(res.msg) | 
|                                 } | 
|                             } | 
|                         }) | 
|                     }); | 
|                 } | 
|                 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 = { | 
|                         'mat': exportData, | 
|                         'fields': fields | 
|                     }; | 
|                     $.ajax({ | 
|                         url: baseUrl + "/mat/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) | 
|                             } | 
|                         } | 
|                     }); | 
|                 }); | 
|                 break; | 
|             // 批量打印 | 
|             case "btnPrintBatch": | 
|                 printMatCodeNos = []; | 
|                 var data = checkStatus.data; | 
|                 if (data.length === 0) { | 
|                     layer.msg('请选择打印数据'); | 
|                 } else { | 
|                     layer.open({ | 
|                         type: 1, | 
|                         title: '批量打印 [数量' + data.length + ']', | 
|                         area: ['500px'], | 
|                         shadeClose: true, | 
|                         content: $('#printDataDiv'), | 
|                         success: function (layero, index) { | 
|                             for (var i = 0; i < data.length; i++) { | 
|                                 printMatCodeNos.push(data[i].matnr); | 
|                             } | 
|                         }, | 
|                         end: function () { | 
|                         } | 
|                     }); | 
|                 } | 
|                 break; | 
|             case "batchModifties": | 
|                 var selected = checkStatus.data; | 
|                 if (selected.length === 0) { | 
|                     layer.msg('请选择修改数据'); | 
|                 } else { | 
|                     let selIds = selected.map(item => { | 
|                        return  item.id | 
|                     }); | 
|                     layer.open({ | 
|                         type: 1, | 
|                         title: '批量修改', | 
|                         area: ['500px'], | 
|                         shadeClose: true, | 
|                         content: $('#batchModifties'), | 
|                         success: function (layero, index) { | 
|                             layer.iframeAuto(index); | 
|                             form.on('submit(batchModify)', function (data) { | 
|                                 let params = {...data?.field} | 
|                                 params.id = selIds | 
|                                 $.ajax({ | 
|                                     url: baseUrl + "/mat/batch/auth", | 
|                                     headers: {'token': localStorage.getItem('token')}, | 
|                                     data: JSON.stringify(params), | 
|                                     dataType: 'json', | 
|                                     contentType: 'application/json;charset=UTF-8', | 
|                                     method: 'POST', | 
|                                     success: function (res) { | 
|                                         layer.closeAll(); | 
|                                         if (res.code === 200) { | 
|   | 
|                                         } else if (res.code === 403) { | 
|                                             top.location.href = baseUrl + "/"; | 
|                                         } else { | 
|                                             layer.msg(res.msg) | 
|                                         } | 
|                                     } | 
|                                 }); | 
|                                 layer.closeAll(); | 
|                             }); | 
|                         }, | 
|                         end: function () { | 
|   | 
|                         } | 
|                     }); | 
|                 } | 
|                 break; | 
|             default: | 
|                 break; | 
|         } | 
|     }); | 
|   | 
|     // 监听行工具事件 | 
|     table.on('tool(mat)', function (obj) { | 
|         var data = obj.data; | 
|         switch (obj.event) { | 
|             // 打印 | 
|             case "btnPrint": | 
|                 printMatCodeNos = []; | 
|                 layer.open({ | 
|                     type: 1, | 
|                     title: data.matnr + ' [数量:1]', | 
|                     area: ['500px'], | 
|                     shadeClose: true, | 
|                     content: $('#printDataDiv'), | 
|                     success: function (layero, index) { | 
|                         layer.iframeAuto(index); | 
|                         printMatCodeNos.push(data.matnr); | 
|                     }, | 
|                     end: function () { | 
|                     } | 
|                 }); | 
|                 break; | 
|             // 编辑 | 
|             case 'edit': | 
|                 showEditModel(data) | 
|                 break; | 
|         } | 
|     }); | 
|   | 
|     /* 显示表单弹窗 */ | 
|     function showEditModel(mData) { | 
|         admin.open({ | 
|             type: 1, | 
|             area: '600px', | 
|             title: (mData ? '修改' : '添加') + '商品', | 
|             content: $('#editDialog').html(), | 
|             success: function (layero, dIndex) { | 
|                 // 回显表单数据 | 
|                 form.val('detail', mData); | 
|                 // 新增自动生成商品编号 | 
|                 if (!mData) { | 
|                     http.get(baseUrl + "/mat/auto/matnr/auth", null, function (res) { | 
|                         $('#matnr').val(res.data); | 
|                     }) | 
|                 } | 
|                 // 表单提交事件 | 
|                 form.on('submit(editSubmit)', function (data) { | 
|                     data.field.tagId = insXmSel.getValue('valueStr'); | 
|                     if (isEmpty(data.field.tagId)) { | 
|                         layer.msg('分类不能为空', {icon: 2}); | 
|                         return false; | 
|                     } | 
|                     var loadIndex = layer.load(2); | 
|                     $.ajax({ | 
|                         url: baseUrl + "/mat/" + (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}); | 
|                                 $(".layui-laypage-btn")[0].click(); | 
|                             } else if (res.code === 403) { | 
|                                 top.location.href = baseUrl + "/"; | 
|                             } else { | 
|                                 layer.msg(res.msg, {icon: 2}); | 
|                             } | 
|                         } | 
|                     }) | 
|                     return false; | 
|                 }); | 
|                 // 渲染下拉树 | 
|                 var insXmSel = xmSelect.render({ | 
|                     el: '#tagSel', | 
|                     height: '250px', | 
|                     data: insTb.options.data, | 
|                     initValue: mData ? [mData.tagId] : [], | 
|                     model: {label: {type: 'text'}}, | 
|                     prop: { | 
|                         name: 'name', | 
|                         value: 'id' | 
|                     }, | 
|                     radio: true, | 
|                     clickClose: true, | 
|                     tree: { | 
|                         show: true, | 
|                         indent: 15, | 
|                         strict: false, | 
|                         expandedKeys: true | 
|                     } | 
|                 }); | 
|                 // 弹窗不出现滚动条 | 
|                 $(layero).children('.layui-layer-content').css('overflow', 'visible'); | 
|                 layui.form.render('select'); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     // 模板选择 | 
|     form.on('radio(selectTemplateRadio)', function (data) { | 
|         $('.template-preview').hide(); | 
|         $('#template-preview-' + data.value).show(); | 
|     }); | 
|   | 
|     // 开始打印 | 
|     form.on('submit(doPrint)', function (data) { | 
|         var templateNo = data.field.selectTemplate; | 
|         $.ajax({ | 
|             url: baseUrl + "/mat/print/auth", | 
|             headers: {'token': localStorage.getItem('token')}, | 
|             data: {param: printMatCodeNos}, | 
|             method: 'POST', | 
|             async: false, | 
|             success: function (res) { | 
|                 if (res.code === 200) { | 
|                     layer.closeAll(); | 
|                     for (let i = 0; i < res.data.length; i++) { | 
|                         var templateDom = $("#templatePreview" + templateNo); | 
|                         var className = templateDom.attr("class"); | 
|                         if (className === 'template-barcode') { | 
|                             res.data[i]["barcodeUrl"] = baseUrl + "/mac/code/auth?type=1¶m=" + res.data[i].matnr; | 
|                         } else { | 
|                             res.data[i]["barcodeUrl"] = baseUrl + "/mac/code/auth?type=2¶m=" + res.data[i].matnr; | 
|                         } | 
|                     } | 
|                     var tpl = templateDom.html(); | 
|                     var template = Handlebars.compile(tpl); | 
|                     var html = template(res); | 
|                     var box = $("#box"); | 
|                     box.html(html); | 
|                     box.show(); | 
|                     box.print({mediaPrint: true}); | 
|                     box.hide(); | 
|                 } else if (res.code === 403) { | 
|                     top.location.href = baseUrl + "/"; | 
|                 } else { | 
|                     layer.msg(res.msg) | 
|                 } | 
|             } | 
|         }) | 
|     }); | 
|   | 
|     // 搜索栏搜索事件 | 
|     form.on('submit(search)', function (data) { | 
|         pageCurr = 1; | 
|         tableReload(false); | 
|     }); | 
|   | 
|     // 搜索栏重置事件 | 
|     form.on('submit(reset)', function (data) { | 
|         pageCurr = 1; | 
|         clearFormVal($('#search-box')); | 
|         tableReload(false); | 
|     }); | 
|   | 
|     // 时间选择器 | 
|     layDate.render({ | 
|         elem: '#createTime\\$', | 
|         type: 'datetime' | 
|     }); | 
|     layDate.render({ | 
|         elem: '#updateTime\\$', | 
|         type: 'datetime' | 
|     }); | 
|   | 
|   | 
| }); | 
|   | 
| // excel导入模板下载 | 
| function excelMouldDownload() { | 
|     layer.load(1, {shade: [0.1, '#fff']}); | 
|     location.href = baseUrl + "/mat/excel/import/mould"; | 
|     layer.closeAll('loading'); | 
| } | 
|   | 
| // excel导入 | 
| function importExcel() { | 
|     $("#importExcel").trigger("click"); | 
| } | 
|   | 
| function upload(obj) { | 
|     if (!obj.files) { | 
|         return; | 
|     } | 
|     var file = obj.files[0]; | 
|     admin.confirm('确认同步 [' + file.name + '] 文件吗?', function (index) { | 
|         layer.load(1, {shade: [0.1, '#fff']}); | 
|         var url = baseUrl + "/mat/excel/import/auth"; | 
|         var form = new FormData(); | 
|         form.append("file", file); | 
|         xhr = new XMLHttpRequest(); | 
|         xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。 | 
|         xhr.setRequestHeader('token', localStorage.getItem('token')); | 
|         xhr.onload = uploadComplete; //请求完成 | 
|         xhr.onerror = uploadFailed; //请求失败 | 
|         xhr.onloadend = function () { // // 上传完成重置文件流 | 
|             layer.closeAll('loading'); | 
|             $("#importExcel").val(""); | 
|         }; | 
|         // xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】 | 
|         xhr.upload.onloadstart = function () {//上传开始执行方法 | 
|             ot = new Date().getTime();   //设置上传开始时间 | 
|             oloaded = 0;//设置上传开始时,以上传的文件大小为0 | 
|         }; | 
|         xhr.send(form); | 
|     }, function (index) { | 
|         $("#importExcel").val(""); | 
|     }); | 
| } | 
|   | 
| function uploadComplete(evt) { | 
|     var res = JSON.parse(evt.target.responseText); | 
|     if (res.code === 200) { | 
|         layer.msg(res.msg, {icon: 1}); | 
|         loadTree(""); | 
|     } else { | 
|         layer.msg(res.msg, {icon: 2}); | 
|     } | 
| } | 
|   | 
| function uploadFailed(evt) { | 
|     var res = JSON.parse(evt.target.responseText); | 
|     layer.msg(res.msg, {icon: 2}); | 
| } | 
|   | 
| // excel导出 | 
| function exportExcel() { | 
|   | 
| } | 
|   | 
|   | 
| function tableReload(child) { | 
|     var searchData = {}; | 
|     $.each($('#search-box [name]').serializeArray(), function () { | 
|         searchData[this.name] = this.value; | 
|     }); | 
|     (child ? parent.tableIns : tableIns).reload({ | 
|         where: searchData, | 
|         page: { | 
|             curr: pageCurr | 
|         }, | 
|         done: function (res, curr, count) { | 
|             if (res.code === 403) { | 
|                 top.location.href = baseUrl + "/"; | 
|             } | 
|             pageCurr = curr; | 
|             if (res.data.length === 0 && count !== 0) { | 
|                 tableIns.reload({ | 
|                     where: searchData, | 
|                     page: { | 
|                         curr: pageCurr - 1 | 
|                     } | 
|                 }); | 
|                 pageCurr -= 1; | 
|             } | 
|             limit(child); | 
|         } | 
|     }); | 
| } | 
|   | 
| function clearFormVal(el) { | 
|     $(':input', el) | 
|         .val('') | 
|         .removeAttr('checked') | 
|         .removeAttr('selected'); | 
| } | 
|   | 
| $('body').keydown(function () { | 
|     if (event.keyCode === 13) { | 
|         $("#search").click(); | 
|     } | 
| }); |