From 83b02c918a02f548ac5fbe189891867a00a53fc2 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 13 三月 2021 14:11:59 +0800 Subject: [PATCH] # --- src/main/webapp/views/custOrder/custOrder.html | 2 src/main/webapp/static/layui/lay/modules/tableX.js | 645 +++++++++++++++++++++++++++++++++++++ src/main/webapp/static/layui/lay/modules/contextMenu.js | 228 +++++++++++++ src/main/webapp/static/js/custOrder/custOrder.js | 108 ++--- 4 files changed, 921 insertions(+), 62 deletions(-) diff --git a/src/main/webapp/static/js/custOrder/custOrder.js b/src/main/webapp/static/js/custOrder/custOrder.js index 2fd9c5f..0434960 100644 --- a/src/main/webapp/static/js/custOrder/custOrder.js +++ b/src/main/webapp/static/js/custOrder/custOrder.js @@ -14,18 +14,15 @@ } }); } - layui.config({ - base: '../../layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰� -}).extend({ - index: 'lib/index' //涓诲叆鍙fā鍧� -}).use(['table', 'laydate', 'form'], function(){ + base: baseUrl + "/static/layui/lay/modules/" // 閰嶇疆妯″潡鎵�鍦ㄧ殑鐩綍 +}).use(['table', 'laydate', 'form', 'tableX'], function(){ var table = layui.table; var $ = layui.jquery; var layer = layui.layer; var layDate = layui.laydate; var form = layui.form; - var admin = layui.admin; + var tableX = layui.tableX; // 鏁版嵁娓叉煋 tableIns = table.render({ @@ -116,20 +113,6 @@ table.on('toolbar(custOrder)', function (obj) { var checkStatus = table.checkStatus(obj.config.id); switch(obj.event) { - case 'addData': - layer.open({ - type: 2, - title: '鏂板', - maxmin: true, - area: [top.detailWidth, top.detailHeight], - content: 'custOrder_detail.html', - success: function(layero, index){ - layer.getChildFrame('#data-detail-submit-edit', index).hide(); - clearFormVal(layer.getChildFrame('#detail', index)); - layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"}); - } - }); - break; case 'deleteData': var data = checkStatus.data; if (data.length === 0){ @@ -203,7 +186,7 @@ switch (obj.event) { // 鎷h揣 case 'stockOut': - + var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/work/stock/out/preview", headers: {'token': localStorage.getItem('token')}, @@ -213,29 +196,51 @@ }), method: 'POST', success: function (res) { - console.log(res); + layer.close(loadIndex); + // 鎴愬姛 + if (res.code === 200){ + layer.open({ + type: 1 + ,title: false + ,closeBtn: false + ,offset: '100px' + ,area: '300px;' + ,shade: 0.5 + ,id: 'LAY_layuipro' + ,btn: ['椹笂鎷h揣', '绋嶅悗澶勭悊'] + ,btnAlign: 'c' + ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1 + ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">浣犵煡閬撳悧锛熶翰锛�<br>layer 鈮� layui<br><br>layer鍙槸浣滀负Layui鐨勪竴涓脊灞傛ā鍧楋紝鐢变簬鍏剁敤鎴峰熀鏁拌緝澶э紝鎵�浠ュ父甯镐細鏈変汉浠ヤ负layui鏄痩ayerui<br><br>layer铏界劧宸茶 Layui 鏀剁紪涓哄唴缃殑寮瑰眰妯″潡锛屼絾浠嶇劧浼氫綔涓轰竴涓嫭绔嬬粍浠跺叏鍔涚淮鎶ゃ�佸崌绾с��<br><br>鎴戜滑姝ゅ悗鐨勫緛閫旀槸鏄熻景澶ф捣 ^_^</div>' + ,success: function(layero){ + var btn = layero.find('.layui-layer-btn'); + btn.find('.layui-layer-btn0').attr({ + href: 'http://www.layui.com/' + ,target: '_blank' + }); + } + }); + // 缂烘枡 + } else if (res.code === 20001) { + layer.confirm(res.msg, { + shadeClose: true + , area: ['400px'] + , btn: ['搴撳瓨璋冩嫧', '鍙栨秷'] + }, function() { + // todo 搴撳瓨璋冩嫧 + layer.closeAll(); + }, function() { + // printPakouts(data.number); + layer.closeAll(); + } + ) + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 1}) + } } }) - // layer.open({ - // type: 1 - // ,title: false - // ,closeBtn: false - // ,offset: '100px' - // ,area: '300px;' - // ,shade: 0.5 - // ,id: 'LAY_layuipro' - // ,btn: ['鐏�熷洿瑙�', '娈嬪繊鎷掔粷'] - // ,btnAlign: 'c' - // ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1 - // ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">浣犵煡閬撳悧锛熶翰锛�<br>layer 鈮� layui<br><br>layer鍙槸浣滀负Layui鐨勪竴涓脊灞傛ā鍧楋紝鐢变簬鍏剁敤鎴峰熀鏁拌緝澶э紝鎵�浠ュ父甯镐細鏈変汉浠ヤ负layui鏄痩ayerui<br><br>layer铏界劧宸茶 Layui 鏀剁紪涓哄唴缃殑寮瑰眰妯″潡锛屼絾浠嶇劧浼氫綔涓轰竴涓嫭绔嬬粍浠跺叏鍔涚淮鎶ゃ�佸崌绾с��<br><br>鎴戜滑姝ゅ悗鐨勫緛閫旀槸鏄熻景澶ф捣 ^_^</div>' - // ,success: function(layero){ - // var btn = layero.find('.layui-layer-btn'); - // btn.find('.layui-layer-btn0').attr({ - // href: 'http://www.layui.com/' - // ,target: '_blank' - // }); - // } - // }); + // layer.confirm(data.number + ' 璁㈠崟寮�濮嬫嫞璐э紵', {shadeClose: true}, function(){ // layer.closeAll(); @@ -280,25 +285,6 @@ // } // }) // }); - break; - // 璇︽儏 - case 'detail': - layer.open({ - type: 2, - title: '璇︽儏', - maxmin: true, - area: [top.detailWidth, top.detailHeight], - shadeClose: true, - content: 'custOrder_detail.html', - success: function(layero, index){ - setFormVal(layer.getChildFrame('#detail', index), data, true); - top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true); - layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide(); - layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"}); - layero.find('iframe')[0].contentWindow.layui.form.render('select'); - layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); - } - }); break; // 鎵撳嵃 case 'print': diff --git a/src/main/webapp/static/layui/lay/modules/contextMenu.js b/src/main/webapp/static/layui/lay/modules/contextMenu.js new file mode 100644 index 0000000..2655031 --- /dev/null +++ b/src/main/webapp/static/layui/lay/modules/contextMenu.js @@ -0,0 +1,228 @@ +/** 鍙抽敭鑿滃崟妯″潡 date:2019-02-08 License By http://easyweb.vip */ +layui.define(["jquery"], function (exports) { + var $ = layui.jquery; + + var contextMenu = { + // 缁戝畾鍏冪礌 + bind: function (elem, items) { + $(elem).bind('contextmenu', function (e) { + contextMenu.show(items, e.clientX, e.clientY, e); + return false; + }); + }, + // 鍦ㄦ寚瀹氬潗鏍囨樉绀鸿彍鍗� + show: function (items, x, y, e) { + var xy = 'left: ' + x + 'px; top: ' + y + 'px;'; + var htmlStr = '<div class="ctxMenu" style="' + xy + '">'; + htmlStr += contextMenu.getHtml(items, ''); + htmlStr += ' </div>'; + contextMenu.remove(); + $('body').append(htmlStr); + // 璋冩暣婧㈠嚭浣嶇疆 + var $ctxMenu = $('.ctxMenu'); + if (x + $ctxMenu.outerWidth() > contextMenu.getPageWidth()) { + x -= $ctxMenu.outerWidth(); + } + if (y + $ctxMenu.outerHeight() > contextMenu.getPageHeight()) { + y = y - $ctxMenu.outerHeight(); + if (y < 0) { + y = 0; + } + } + $ctxMenu.css({'top': y, 'left': x}); + // 娣诲姞item鐐瑰嚮浜嬩欢 + contextMenu.setEvents(items, e); + // 鏄剧ず瀛愯彍鍗曚簨浠� + $('.ctxMenu-item').on('mouseenter', function (e) { + e.stopPropagation(); + $(this).parent().find('.ctxMenu-sub').css('display', 'none'); + if (!$(this).hasClass('haveMore')) return; + var $item = $(this).find('>a'); + var $sub = $(this).find('>.ctxMenu-sub'); + var top = $item.offset().top - $('body,html').scrollTop(); + var left = $item.offset().left + $item.outerWidth() - $('body,html').scrollLeft(); + if (left + $sub.outerWidth() > contextMenu.getPageWidth()) { + left = $item.offset().left - $sub.outerWidth(); + } + if (top + $sub.outerHeight() > contextMenu.getPageHeight()) { + top = top - $sub.outerHeight() + $item.outerHeight(); + if (top < 0) { + top = 0; + } + } + $(this).find('>.ctxMenu-sub').css({ + 'top': top, + 'left': left, + 'display': 'block' + }); + })/*.on('mouseleave', function () { + $(this).find('>.ctxMenu-sub').css('display', 'none'); + })*/; + }, + // 绉婚櫎鎵�鏈� + remove: function () { + var ifs = parent.window.frames; + for (var i = 0; i < ifs.length; i++) { + var tif = ifs[i]; + try { + tif.layui.jquery('body>.ctxMenu').remove(); + } catch (e) { + } + } + try { + parent.layui.jquery('body>.ctxMenu').remove(); + } catch (e) { + } + }, + // 璁剧疆浜嬩欢鐩戝惉 + setEvents: function (items, event) { + $('.ctxMenu').off('click').on('click', '[lay-id]', function (e) { + var itemId = $(this).attr('lay-id'); + var item = getItemById(itemId, items); + item.click && item.click(e, event); + }); + + function getItemById(id, list) { + for (var i = 0; i < list.length; i++) { + var one = list[i]; + if (id == one.itemId) { + return one; + } else if (one.subs && one.subs.length > 0) { + var temp = getItemById(id, one.subs); + if (temp) { + return temp; + } + } + } + } + }, + // 鏋勫缓鏃犻檺绾� + getHtml: function (items, pid) { + var htmlStr = ''; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.itemId = 'ctxMenu-' + pid + i; + if (item.subs && item.subs.length > 0) { + htmlStr += '<div class="ctxMenu-item haveMore" lay-id="' + item.itemId + '">'; + htmlStr += '<a>'; + if (item.icon) { + htmlStr += '<i class="' + item.icon + ' ctx-icon"></i>'; + } + htmlStr += item.name; + htmlStr += '<i class="layui-icon layui-icon-right icon-more"></i>'; + htmlStr += '</a>'; + htmlStr += '<div class="ctxMenu-sub" style="display: none;">'; + htmlStr += contextMenu.getHtml(item.subs, pid + i); + htmlStr += '</div>'; + } else { + htmlStr += '<div class="ctxMenu-item" lay-id="' + item.itemId + '">'; + htmlStr += '<a>'; + if (item.icon) { + htmlStr += '<i class="' + item.icon + ' ctx-icon"></i>'; + } + htmlStr += item.name; + htmlStr += '</a>'; + } + htmlStr += '</div>'; + if (item.hr == true) { + htmlStr += '<hr/>'; + } + } + return htmlStr; + }, + // 鑾峰彇css浠g爜 + getCommonCss: function () { + var cssStr = '.ctxMenu, .ctxMenu-sub {'; + cssStr += ' max-width: 250px;'; + cssStr += ' min-width: 110px;'; + cssStr += ' background: white;'; + cssStr += ' border-radius: 2px;'; + cssStr += ' padding: 5px 0;'; + cssStr += ' white-space: nowrap;'; + cssStr += ' position: fixed;'; + cssStr += ' z-index: 2147483647;'; + cssStr += ' box-shadow: 0 2px 4px rgba(0, 0, 0, .12);'; + cssStr += ' border: 1px solid #d2d2d2;'; + cssStr += ' overflow: visible;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu-item {'; + cssStr += ' position: relative;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu-item > a {'; + cssStr += ' font-size: 14px;'; + cssStr += ' color: #666;'; + cssStr += ' padding: 0 26px 0 35px;'; + cssStr += ' cursor: pointer;'; + cssStr += ' display: block;'; + cssStr += ' line-height: 36px;'; + cssStr += ' text-decoration: none;'; + cssStr += ' position: relative;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu-item > a:hover {'; + cssStr += ' background: #f2f2f2;'; + cssStr += ' color: #666;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu-item > a > .icon-more {'; + cssStr += ' position: absolute;'; + cssStr += ' right: 5px;'; + cssStr += ' top: 0;'; + cssStr += ' font-size: 12px;'; + cssStr += ' color: #666;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu-item > a > .ctx-icon {'; + cssStr += ' position: absolute;'; + cssStr += ' left: 12px;'; + cssStr += ' top: 0;'; + cssStr += ' font-size: 15px;'; + cssStr += ' color: #666;'; + cssStr += ' }'; + + cssStr += ' .ctxMenu hr {'; + cssStr += ' background-color: #e6e6e6;'; + cssStr += ' clear: both;'; + cssStr += ' margin: 5px 0;'; + cssStr += ' border: 0;'; + cssStr += ' height: 1px;'; + cssStr += ' }'; + + cssStr += ' .ctx-ic-lg {'; + cssStr += ' font-size: 18px !important;'; + cssStr += ' left: 11px !important;'; + cssStr += ' }'; + return cssStr; + }, + // 鑾峰彇娴忚鍣ㄩ珮搴� + getPageHeight: function () { + return document.documentElement.clientHeight || document.body.clientHeight; + }, + // 鑾峰彇娴忚鍣ㄥ搴� + getPageWidth: function () { + return document.documentElement.clientWidth || document.body.clientWidth; + }, + }; + + // 鐐瑰嚮浠绘剰浣嶇疆鍏抽棴鑿滃崟 + $(document).off('click.ctxMenu').on('click.ctxMenu', function () { + contextMenu.remove(); + }); + + // 鐐瑰嚮鏈夊瓙鑿滃崟鐨勮妭鐐逛笉鍏抽棴鑿滃崟 + $(document).off('click.ctxMenuMore').on('click.ctxMenuMore', '.ctxMenu-item', function (e) { + if ($(this).hasClass('haveMore')) { + if (e !== void 0) { + e.preventDefault(); + e.stopPropagation(); + } + } else { + contextMenu.remove(); + } + }); + + $('head').append('<style id="ew-css-ctx">' + contextMenu.getCommonCss() + '</style>'); + exports("contextMenu", contextMenu); +}); \ No newline at end of file diff --git a/src/main/webapp/static/layui/lay/modules/tableX.js b/src/main/webapp/static/layui/lay/modules/tableX.js new file mode 100644 index 0000000..90953ec --- /dev/null +++ b/src/main/webapp/static/layui/lay/modules/tableX.js @@ -0,0 +1,645 @@ +锘�/** 琛ㄦ牸鎵╁睍妯″潡 date:2020-02-29 License By http://easyweb.vip */ +layui.define(['layer', 'table', 'laytpl', 'contextMenu'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var table = layui.table; + var laytpl = layui.laytpl; + var contextMenu = layui.contextMenu; + var device = layui.device(); + var tbSearchAttr = 'tb-search'; // 鍓嶇鎼滅储灞炴�� + var tbRefreshAttr = 'tb-refresh'; // 鍒锋柊鎸夐挳灞炴�� + var tbExportAttr = 'tb-export'; // 瀵煎嚭鎸夐挳灞炴�� + var txFieldPre = 'txField_'; // templte鍒梖iled鍓嶇紑 + var tableX = {}; + + /* 鍚堝苟鐩稿悓鍗曞厓鏍� */ + tableX.merges = function (tableId, indexs, fields, sort) { + if (typeof fields === 'boolean') { + sort = fields; + fields = undefined; + } + var $tb = $('[lay-filter="' + tableId + '"]+.layui-table-view>.layui-table-box>.layui-table-body>table'); + var $trs = $tb.find('>tbody>tr'); + // 寰幆鍚堝苟姣忎竴鍒� + for (var i = 0; i < indexs.length; i++) { + if (fields) { + merge(tableId, indexs[i], fields[i]); + } else { + merge(tableId, indexs[i]); + } + } + $trs.find('[del="true"]').remove(); // 绉婚櫎澶氫綑鐨勫崟鍏冩牸 + // 鐩戝惉鎺掑簭浜嬩欢 + if (sort === undefined || sort) { + table.on('sort(' + tableId + ')', function () { + tableX.merges(tableId, indexs, fields, false); + }); + } + + // 鍚堝苟涓�鍒� + function merge(tableId, index, field) { + var data = table.cache[tableId]; + if (data.length > 0) { + var lastValue, spanNum = 1; + if (field) { + lastValue = data[0][field]; + } else { + lastValue = $trs.eq(0).find('td').eq(index).find('.layui-table-cell').html(); + } + for (var i = 1; i < data.length; i++) { + var currentValue; + if (field) { + currentValue = data[i][field]; + } else { + currentValue = $trs.eq(i).find('td').eq(index).find('.layui-table-cell').html(); + } + if (currentValue === lastValue) { + spanNum++; + if (i === data.length - 1) { + $trs.eq(i - spanNum + 1).find('td').eq(index).attr('rowspan', spanNum); + for (var j = 1; j < spanNum; j++) { + $trs.eq(i - j + 1).find('td').eq(index).attr('del', 'true'); + } + } + } else { + $trs.eq(i - spanNum).find('td').eq(index).attr('rowspan', spanNum); + for (var k = 1; k < spanNum; k++) { + $trs.eq(i - k).find('td').eq(index).attr('del', 'true'); + } + spanNum = 1; + lastValue = currentValue; + } + } + } + } + }; + + /* 琛ㄦ牸琛岀粦瀹氶紶鏍囧彸閿� */ + tableX.bindCtxMenu = function (tableId, items) { + var data = table.cache[tableId]; + var elem = '#' + tableId + '+.layui-table-view .layui-table-body tr'; + $(elem).bind('contextmenu', function (event) { + var $this = $(this); + $(elem).removeClass('layui-table-click'); + $this.addClass('layui-table-click'); + var ctxItems; + if (typeof items === 'function') ctxItems = items(data[$this.data('index')], event.currentTarget); + else ctxItems = items; + + function getCtxItems(menus) { + if (!menus) return; + var result = []; + for (var i = 0; i < menus.length; i++) { + result.push({ + icon: menus[i].icon, + name: menus[i].name, + _click: menus[i].click, + click: function (e, e2) { + var $tr = $(e2.currentTarget); + this._click && this._click(data[$tr.data('index')], e2.currentTarget); + $tr.removeClass('layui-table-click'); + }, + subs: getCtxItems(menus[i].subs) + }); + } + return result; + } + + contextMenu.show(getCtxItems(ctxItems), event.clientX, event.clientY, event); + return false; + }); + }; + + /* 瀵煎嚭浠绘剰鏁版嵁 */ + tableX.exportData = function (param) { + var cols = param.cols; // 琛ㄥご + var data = param.data; // 鏁版嵁 + var fileName = param.fileName; // 鏂囦欢鍚� + var fileType = param.expType; // 绫诲瀷锛寈ls銆乧sv + var option = param.option; // url鏂瑰紡鍔犺浇鐨勯厤缃� + option || (option = {}); + if (device.ie) return layer.msg('涓嶆敮鎸乮e瀵煎嚭'); + // data涓簎rl鍏堣姹傛暟鎹� + if (typeof data === 'string') { + var loadIndex = layer.load(2); + option.url = data; + tableX.loadUrl(option, function (res) { + layer.close(loadIndex); + param.data = res; + tableX.exportData(param); + }); + return; + } + // 鍒楀弬鏁拌ˉ鍏� + for (var i = 0; i < cols.length; i++) { + for (var j = 0; j < cols[i].length; j++) { + if (cols[i][j].type === undefined) { + cols[i][j].type = 'normal'; + } + if (cols[i][j].hide === undefined) { + cols[i][j].hide = false; + } + } + } + var titles = [], fields = [], expData = []; + // 鑾峰彇琛ㄥご鍜岃〃澶村瓧娈靛悕 + table.eachCols(undefined, function (i, item) { + if (item.type === 'normal' && !item.hide) { + titles.push(item.title || ''); + fields.push(item.field || (txFieldPre + i)); + } + }, cols); + // 鑾峰彇templet鍚庣殑鏁版嵁 + var fullData = tableX.parseTbData(cols, tableX.deepClone(data), true); + for (var n = 0; n < fullData.length; n++) { + var rowItem = []; + for (var m = 0; m < fields.length; m++) { + var text = fullData[n][fields[m]]; + text && (text = text.toString().replace(/,/g, '锛�')); + rowItem.push(text); + } + expData.push(rowItem.join(',')); + } + // 鍒涘缓涓嬭浇鏂囦欢鐨刟鏍囩 + var alink = document.createElement('a'); + var type = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[fileType || 'xls']; + var content = encodeURIComponent(titles.join(',') + '\r\n' + expData.join('\r\n')); + alink.href = 'data:' + type + ';charset=utf-8,\ufeff' + content; + alink.download = (fileName || 'table') + '.' + (fileType || 'xls'); + document.body.appendChild(alink); + alink.click(); + document.body.removeChild(alink); + }; + + /* 瀵煎嚭琛ㄦ牸鏁版嵁(楂樼骇) */ + tableX.exportDataX = function (param) { + layui.use('excel', function () { + var excel = layui.excel; + var cols = param.cols; // 琛ㄥご + var data = param.data; // 鏁版嵁 + var fileName = param.fileName; // 鏂囦欢鍚� + var fileType = param.expType; // 绫诲瀷锛寈ls銆亁lsx + var option = param.option; // url鏂瑰紡鍔犺浇鐨勯厤缃� + option || (option = {}); + fileType || (fileType = 'xlsx'); + // data涓簎rl鍏堣姹傛暟鎹� + if (data && typeof data === 'string') { + var loadIndex = layer.load(2); + option.url = data; + tableX.loadUrl(option, function (res) { + layer.close(loadIndex); + param.data = res; + tableX.exportDataX(param); + }); + return; + } + // 鍒楀弬鏁拌ˉ鍏� + for (var i = 0; i < cols.length; i++) { + for (var j = 0; j < cols[i].length; j++) { + if (cols[i][j].type === undefined) { + cols[i][j].type = 'normal'; + } + if (cols[i][j].hide === undefined) { + cols[i][j].hide = false; + } + } + } + // 鑾峰彇琛ㄥご鍜岃〃澶村瓧娈靛悕 + var titles = {}, fields = []; + table.eachCols(undefined, function (i, item) { + if (item.type === 'normal' && !item.hide) { + var field = item.field || (txFieldPre + i); + fields.push(field); + titles[field] = item.title || ''; + } + }, cols); + // 鏍煎紡鍖栨暟鎹� + var fullData = tableX.parseTbData(cols, tableX.deepClone(data), true); + var expData = excel.filterExportData(fullData, fields); + expData.unshift(titles); + excel.exportExcel({sheet1: expData}, (fileName || 'table') + '.' + fileType, fileType); + }); + }; + + /* 鍚庣瀵煎嚭鏁版嵁鎷兼帴鍙傛暟 */ + tableX.exportDataBack = function (url, where, method) { + where || (where = {}); + if (!method || method.toString().toLowerCase() === 'get') { + var param = ''; + for (var f in where) { + if (!param) { + param = ('?' + f + '=' + where[f]); + } else { + param += ('&' + f + '=' + where[f]); + } + } + window.open(url + param); + } else { + var htmlStr = '<html><body><form id="eFrom" action="' + url + '" method="' + method + '">'; + for (var f2 in where) { + htmlStr += ('<textarea name="' + f2 + '">' + where[f2] + '</textarea>'); + } + htmlStr += '</form></body></html>'; + $('#exportFrame').remove(); + $('body').append('<iframe id="exportFrame" style="display: none;"></iframe>'); + var eFrame = document.getElementById('exportFrame'); + var eWindow = eFrame.contentWindow; + var eDocument = eWindow.document; + eWindow.focus(); + eDocument.open(); + eDocument.write(htmlStr); + eDocument.close(); + eDocument.getElementById('eFrom').submit(); + } + }; + + /* 娓叉煋琛ㄦ牸锛屽悗绔帓搴� */ + tableX.render = function (param) { + var tableId = $(param.elem).attr('lay-filter'); + param.autoSort = false; // 鍏抽棴榛樿鎺掑簭 + var insTb = table.render(param); // 娓叉煋琛ㄦ牸 + // 鎺掑簭鐩戝惉 + table.on('sort(' + tableId + ')', function (obj) { + var sortField = obj.field, sortType = obj.type; // 鎺掑簭瀛楁銆佺被鍨� + var sortWhere = $.extend(param.where, {sort: sortField, order: sortType}); + insTb.reload({where: sortWhere, page: {curr: 1}}); + }); + return insTb; + }; + + /* 娓叉煋琛ㄦ牸锛屽墠绔垎椤� */ + tableX.renderFront = function (param) { + var insTb, tableId = $(param.elem).attr('lay-filter'); + param.autoSort = false; // 鍏抽棴榛樿鎺掑簭 + // 娌℃湁field鐨則emplet鍒楄ˉ涓婏紝鍥犱负鎺掑簭蹇呴』鏈塮iled瀛楁锛屽惁鍒欑偣鍑绘帓搴忎細鎶ラ敊 + for (var i = 0; i < param.cols.length; i++) { + for (var j = 0; j < param.cols[i].length; j++) { + if (param.cols[i][j].templet && !param.cols[i][j].field) { + param.cols[i][j].field = txFieldPre + i + '_' + j; + } + } + } + if (param.url) { // url鏂瑰紡 + var xParam = tableX.deepClone(param); + xParam.data = []; + xParam.url = undefined; + insTb = table.render(xParam); // 鍏堟覆鏌撹〃鏍肩粨鏋� + // 鎻愪緵鍒锋柊鏂规硶 + insTb.reloadUrl = function (p) { + var reParam = tableX.deepClone(param); + p && (reParam = $.extend(reParam, p)); + $(param.elem + '+.layui-table-view>.layui-table-box').append('<div class="layui-table-init"><i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i></div>'); + // 鑾峰彇url鏁版嵁 + tableX.loadUrl(reParam, function (data) { + insTb.reload({url: '', data: data, page: {curr: 1}}); + tableX.putTbData(tableId, tableX.parseTbData(reParam.cols, data)); // 缂撳瓨鏁版嵁 + $('input[' + tbSearchAttr + '="' + tableId + '"]').val(''); // 娓呯┖鎼滅储杈撳叆妗� + window.tbX.cacheSearch[tableId] = undefined; // 閲嶇疆鎼滅储缁撴灉 + }); + }; + insTb.reloadUrl(); + } else { + insTb = table.render(param); // 娓叉煋琛ㄦ牸 + // 鎻愪緵鍒锋柊鐨勬柟娉� + insTb.reloadData = function (p) { + insTb.reload(p); + tableX.parseTbData(param.cols, p.data); // 瑙f瀽temple鍒� + tableX.putTbData(tableId, p.data); + $('input[' + tbSearchAttr + '="' + tableId + '"]').val(''); // 娓呯┖鎼滅储杈撳叆妗� + window.tbX.cacheSearch[tableId] = undefined; // 閲嶇疆鎼滅储缁撴灉 + }; + tableX.putTbData(tableId, tableX.parseTbData(param.cols, param.data)); // 缂撳瓨鏁版嵁 + } + tableX.renderAllTool(insTb); // 娓叉煋宸ュ叿缁勪欢 + return insTb; + }; + + /* 鍔犺浇琛ㄦ牸鏁版嵁 */ + tableX.loadUrl = function (options, callback) { + // 鍝嶅簲鏁版嵁鐨勮嚜瀹氫箟鏍煎紡 + options.response = $.extend({ + statusName: 'code', + statusCode: 0, + msgName: 'msg', + dataName: 'data', + countName: 'count' + }, options.response); + var response = options.response; + var where = options.where; // 鍙傛暟 + if (options.contentType && options.contentType.indexOf('application/json') === 0) { + where = JSON.stringify(where); // 鎻愪氦 json 鏍煎紡 + } + $.ajax({ + type: options.method || 'get', + url: options.url, + contentType: options.contentType, + data: where, + dataType: 'json', + headers: options.headers || {}, + success: function (res) { + // 濡傛灉鏈夋暟鎹В鏋愮殑鍥炶皟锛屽垯鑾峰緱鍏惰繑鍥炵殑鏁版嵁 + if (typeof options.parseData === 'function') { + res = options.parseData(res) || res; + } + // 妫�鏌ユ暟鎹牸寮忔槸鍚︾鍚堣鑼� + if (res[response.statusName] != response.statusCode) { + var msgText = res[response.msgName] || ('杩斿洖鐨勬暟鎹笉绗﹀悎瑙勮寖锛屾纭殑鎴愬姛鐘舵�佺爜 (' + response.statusName + ') 搴斾负锛�' + response.statusCode); + layer.msg(msgText, {icon: 2}); + } else { + callback(res[response.dataName]); + } + }, + error: function (e, m) { + layer.msg('鏁版嵁鎺ュ彛璇锋眰寮傚父锛�' + m, {icon: 2}); + } + }); + }; + + /* 瑙f瀽鏁版嵁琛ㄦ牸templet鍒� */ + tableX.parseTbData = function (cols, dataList, overwrite) { + var templets = []; // 闇�瑕佽В鏋愮殑鍒� + table.eachCols(undefined, function (i, item) { + if (item.templet) { + var one = {field: ((item.field && (overwrite || item.field.indexOf(txFieldPre) === 0)) ? item.field : ('txField_' + i))}; + if (typeof item.templet === 'string') { + one.templet = function (d) { // templet鍒椾娇鐢╨aytpl娓叉煋 + var rsStr = undefined; + laytpl($(item.templet).html()).render(d, function (html) { + rsStr = html; + }); + return rsStr; + } + } else { + one.templet = item.templet; + } + templets.push(one); + } + }, cols); + for (var i = 0; i < dataList.length; i++) { + var current = dataList[i]; + for (var j = 0; j < templets.length; j++) { + var htmlStr = '<div>' + templets[j].templet(current) + '</div>'; + current[templets[j].field] = $(htmlStr).not('.export-hide').text().replace(/(^\s*)|(\s*$)/g, ''); // 鍘婚櫎鍓嶅悗绌烘牸 + } + } + return dataList; + }; + + /* 缂撳瓨琛ㄦ牸鐨勬暟鎹� */ + tableX.putTbData = function (tableId, dataList) { + window.tbX.cache[tableId] = dataList; + }; + + /* 鑾峰彇琛ㄦ牸缂撳瓨鐨勬暟鎹� */ + tableX.getTbData = function (tableId) { + var dataList = window.tbX.cache[tableId]; + return tableX.deepClone(dataList || table.cache[tableId]); + }; + + /* 鎼滅储鏁版嵁 */ + tableX.filterData = function (dataList, searchName, searchValue) { + var newList = [], sfs; + for (var i = 0; i < dataList.length; i++) { + var obj = dataList[i]; + if (!sfs) { // 鎼滅储鐨勫瓧娈� + if (!searchName) { + sfs = []; + for (var f in obj) { + if (!obj.hasOwnProperty(f)) continue; + sfs.push(f); + } + } else { + sfs = searchName.split(','); + } + } + for (var j = 0; j < sfs.length; j++) { + if (tableX.isContains(obj[sfs[j]], searchValue)) { + newList.push(obj); + break; + } + } + } + return newList; + }; + + /* 瀛楃涓叉槸鍚﹀寘鍚� */ + tableX.isContains = function (str1, str2) { + str1 || (str1 = ''); + str2 || (str2 = ''); + str1 = str1.toString().toLowerCase(); + str2 = str2.toString().toLowerCase(); + if (str1 === str2 || str1.indexOf(str2) >= 0) { + return true; + } + return false; + }; + + /* 娓叉煋鎵�鏈夌粍浠� */ + tableX.renderAllTool = function (insTb) { + renderRefresh(insTb); // 鍒锋柊 + renderFrontSort(insTb); // 鎺掑簭 + renderFrontSearch(insTb); // 鎼滅储 + renderExport(insTb); // 瀵煎嚭 + }; + + /* 娣卞害鍏嬮殕瀵硅薄 */ + tableX.deepClone = function (obj) { + var result; + var oClass = tableX.isClass(obj); + if (oClass === 'Object') { + result = {}; + } else if (oClass === 'Array') { + result = []; + } else { + return obj; + } + for (var key in obj) { + if (!obj.hasOwnProperty(key)) continue; + var copy = obj[key]; + if (tableX.isClass(copy) === 'Object') { + result[key] = arguments.callee(copy);//閫掑綊璋冪敤 + } else if (tableX.isClass(copy) === 'Array') { + result[key] = arguments.callee(copy); + } else { + result[key] = obj[key]; + } + } + return result; + }; + + /* 鑾峰彇鍙橀噺绫诲瀷 */ + tableX.isClass = function (o) { + if (o === null) + return 'Null'; + if (o === undefined) + return 'Undefined'; + return Object.prototype.toString.call(o).slice(8, -1); + }; + + // 鍒涘缓鏁版嵁缂撳瓨瀵硅薄 + window.tbX || (window.tbX = {}); + window.tbX.cache || (window.tbX.cache = {}); + window.tbX.cacheSearch || (window.tbX.cacheSearch = {}); + + // 鍓嶇鎼滅储 + var renderFrontSearch = function (insTb) { + var tableId = insTb.config.id, $input = $('input[' + tbSearchAttr + '="' + tableId + '"]'); + if (!($input && $input.length > 0)) { + return; + } + if (!$input.attr('placeholder')) { + $input.attr('placeholder', '杈撳叆鍏抽敭瀛楁寜鍥炶溅閿悳绱�'); + } + $input.off('keydown').on('keydown', function (event) { + if (event.keyCode !== 13) { + return; + } + var searchName = $input.attr('name'); // 鎼滅储鐨勫瓧娈靛悕锛岀敤閫楀彿鍒嗛殧 + var searchValue = $input.val().replace(/(^\s*)|(\s*$)/g, ''); // 鎼滅储鍏抽敭瀛� + var loadIndex = layer.msg('鎼滅储涓�..', {icon: 16, shade: 0.01, time: 0}); + var dataList = tableX.getTbData(tableId); + var newDataList = tableX.filterData(dataList, searchName, searchValue); + window.tbX.cacheSearch[tableId] = newDataList; // 缂撳瓨鎼滅储鍚庣殑鏁版嵁鐢ㄤ簬鎺掑簭 + insTb.reload({url: '', data: newDataList, page: {curr: 1}}); + layer.close(loadIndex); + }); + }; + + // 鍓嶇鎺掑簭 + var renderFrontSort = function (insTb) { + var tableId = insTb.config.id; + table.on('sort(' + tableId + ')', function (obj) { + var sortField = obj.field, sortType = obj.type; // 鎺掑簭瀛楁銆佺被鍨� + var loadIndex = layer.msg('鍔犺浇涓�..', {icon: 16, shade: 0.01, time: 0}); + var dataList = window.tbX.cacheSearch[tableId]; // 琛ㄦ牸鎼滅储鍚庣殑鏁版嵁 + dataList || (dataList = tableX.getTbData(tableId)); + if (sortType) { + dataList = dataList.sort(function (o1, o2) { + var o1Str = o1[sortField], o2Str = o2[sortField]; + if (sortType === 'asc') { // 鍗囧簭 + return (o1Str === o2Str) ? 0 : ((o1Str < o2Str) ? -1 : 1); + } else { // 闄嶅簭 + return (o1Str === o2Str) ? 0 : ((o1Str < o2Str) ? 1 : -1); + } + }); + } + insTb.reload({initSort: obj, url: '', data: dataList, page: {curr: 1}}); + layer.close(loadIndex); + }); + }; + + // 琛ㄦ牸鍒锋柊鎸夐垥 + var renderRefresh = function (insTb) { + $('[' + tbRefreshAttr + '="' + insTb.config.id + '"]').off('click').on('click', function () { + if (insTb.reloadUrl) { + insTb.reloadUrl(); + } else { + insTb.reload({page: {curr: 1}}); + } + }); + }; + + // 娓叉煋瀵煎嚭鎸夐挳 + var renderExport = function (insTb) { + var tableId = insTb.config.id; + $('[' + tbExportAttr + '="' + tableId + '"]').off('click').on('click', function (event) { + if ($(this).find('.tbx-dropdown-menu').length > 0) { + return; + } + if (event !== void 0) { + event.preventDefault(); + event.stopPropagation(); + } + var htmlStr = '<div class="tbx-dropdown-menu">'; + htmlStr += ' <div class="tbx-dropdown-menu-item" data-type="check">瀵煎嚭閫変腑鏁版嵁</div>'; + htmlStr += ' <div class="tbx-dropdown-menu-item" data-type="current">瀵煎嚭褰撳墠椤垫暟鎹�</div>'; + htmlStr += ' <div class="tbx-dropdown-menu-item" data-type="all">瀵煎嚭鍏ㄩ儴鏁版嵁</div>'; + htmlStr += ' </div>'; + $(this).append(htmlStr); + $(this).addClass('tbx-dropdown-btn'); + $(this).parent().css('position', 'relative'); + $(this).parent().css('z-index', '9998'); + $('.tbx-dropdown-menu').off('click').on('click', '.tbx-dropdown-menu-item', function (event) { + var type = $(this).data('type'); + if (type === 'check') { + var checkRows = table.checkStatus(tableId); + if (checkRows.data.length === 0) { + layer.msg('璇烽�夋嫨瑕佸鍑虹殑鏁版嵁', {icon: 2}); + } else { + $('.tbx-dropdown-menu').remove(); + tableX.exportData({ + fileName: insTb.config.title, + cols: insTb.config.cols, + data: checkRows.data + }); + } + } else if (type === 'current') { + tableX.exportData({ + fileName: insTb.config.title, + cols: insTb.config.cols, + data: table.cache[tableId] + }); + } else if (type === 'all') { + tableX.exportData({ + fileName: insTb.config.title, + cols: insTb.config.cols, + data: tableX.getTbData(tableId) + }); + } + if (event !== void 0) { + event.preventDefault(); + event.stopPropagation(); + } + }); + }); + $(document).off('click.tbxDropHide').on('click.tbxDropHide', function () { + $('.tbx-dropdown-menu').remove(); + }); + }; + + /* css鏍峰紡 */ + var getCommonCss = function () { + var cssStr = '.tbx-dropdown-btn {'; + cssStr += ' position: relative;'; + cssStr += ' }'; + cssStr += ' .tbx-dropdown-btn:hover {'; + cssStr += ' opacity: 1'; + cssStr += ' }'; + cssStr += ' .tbx-dropdown-menu {'; + cssStr += ' position: absolute;'; + cssStr += ' top: 100%;'; + cssStr += ' right: 0;'; + cssStr += ' padding: 5px 0;'; + cssStr += ' margin: 5px 0 0 0;'; + cssStr += ' overflow: visible;'; + cssStr += ' min-width: 110px;'; + cssStr += ' background: #fff;'; + cssStr += ' border-radius: 2px;'; + cssStr += ' box-shadow: 0 2px 4px rgba(0, 0, 0, .12);'; + cssStr += ' border: 1px solid #d2d2d2;'; + cssStr += ' z-index: 9998;'; + cssStr += ' cursor: default;'; + cssStr += ' }'; + cssStr += ' .tbx-dropdown-menu .tbx-dropdown-menu-item {'; + cssStr += ' display: block;'; + cssStr += ' color: #555;'; + cssStr += ' font-size: 14px;'; + cssStr += ' padding: 10px 15px;'; + cssStr += ' text-decoration: none;'; + cssStr += ' white-space: nowrap;'; + cssStr += ' cursor: pointer;'; + cssStr += ' user-select: none;'; + cssStr += ' line-height: normal;'; + cssStr += ' }'; + cssStr += ' .tbx-dropdown-menu .tbx-dropdown-menu-item:hover {'; + cssStr += ' background-color: #eeeeee;'; + cssStr += ' }'; + cssStr += ' .export-show {'; + cssStr += ' display: none;'; + cssStr += ' }'; + return cssStr; + }; + + $('head').append('<style id="ew-css-tbx" type="text/css">' + getCommonCss() + '</style>'); + exports("tableX", tableX); +}); \ No newline at end of file diff --git a/src/main/webapp/views/custOrder/custOrder.html b/src/main/webapp/views/custOrder/custOrder.html index 56e8d16..4f36cf7 100644 --- a/src/main/webapp/views/custOrder/custOrder.html +++ b/src/main/webapp/views/custOrder/custOrder.html @@ -31,7 +31,7 @@ <option value="1">寰呭鐞�</option> <option value="2">鏈嫞璐�</option> <option value="3">鍙栨秷</option> - <option value="3">宸插畬鎴�</option> + <option value="4">宸插畬鎴�</option> </select> </div> </div> -- Gitblit v1.9.1