var SelectorSource = {}; /*时间格式化*/ Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month "d+": this.getDate(), //day "h+": this.getHours(), //hour "m+": this.getMinutes(), //minute "s+": this.getSeconds(), //second "q+": Math.floor((this.getMonth() + 3) / 3), //quarter "S": this.getMilliseconds() //millisecond } if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); return format; } layui.define(['form', 'vue', 'element', 'jquery', 'table'],function (exports) { var form = layui.form, layer = layui.layer, element = layui.element, $ = layui.jquery, excel = layui.excel, table = layui.table; //获取url的参数值 $.getUrlParam = function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } var clearData = null, u = function () { this.config = { tokenInvalid: "登入信息已失效,系统将自动跳转到登入页!", urlLogin: "/Login/Index", titleError: "错误信息", titleadd: "新增", titleDeleteSuccess: "删除成功", titleSelectOneRowData: "请至少选择一条数据", titleConfirmDelete: "确定要删除所选信息", msgOpenTime:200 } } //cookie Token 失效返回登入页 u.prototype.cookieVerification = function () { var i = this; var cookie = i.cookie("Token"); if (cookie == null) { layer.msg(i.config.tokenInvalid, { icon: 6, shade: 0.4, time: 1000 }); setTimeout(function () { window.location.href = i.config.urlLogin; }, 1500); } } //cookie set ,read[value 是空 read] u.prototype.cookie = function (key, value, options) { if (typeof value !== "undefined") {//write options = options || {} var cookie = encodeURIComponent(key) + "=" + encodeURIComponent(value); if (typeof options.expries === "number") { var date = new Date(); date.setDate(date.getDate() + options.expries); cookie += ";expries=" + date.toUTCString(); } if (options.path) cookie += ";path=" + options.path; if (options.domain) cookie += ";domain=" + options.domain; if (options.secure) cookie += ";secure"; document.cookie = cookie; } var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var readCookie = cookies[i].split("="); var name = decodeURIComponent(readCookie.shift()); if ($.trim(name) === key) return decodeURIComponent(readCookie.join("=")); } return null; } //ajax u.prototype.ajax = function (parameter) { var i = this; i.cookieVerification(); //在这里可以判断cooke 失效 重定性 var index = layer.load(); var objs = $.extend({ dataType: "json", data: parameter.data, error: function (xmlHttpRequest, textStatus, errorThrown) { layer.alert(errorThrown, { icon: 2, shadeClose: true, title: i.config.errorTitle }); }, success: parameter.success, type: "post", beforeSend: function (request) { request.setRequestHeader("Authorization", "x"); }, complete: function (xmlHttpRequest, status) { layer.close(index); } }, parameter); $.ajax(objs); } // add or edit from init vue data u.prototype.initAddVueData = function (vm) { if (clearData == null) console.log(" vml 属性 clearData 数据为空。"); var i = this; //清空初始化 vue 对象 var allKeys = Object.keys(vm.$data); //新增的时候删除 编辑data 属性【delete】 for (var item in allKeys) { if (!Object.prototype.hasOwnProperty.call(allKeys, item)) continue; var isOk = true; for (var tempKey in clearData) { if (!Object.prototype.hasOwnProperty.call(clearData, tempKey)) continue; if (allKeys[item] == tempKey) { isOk = false; break; } } if (isOk && clearData != null) Vue.delete(vm.$data, allKeys[item]); } if (clearData != null) Object.assign(vm.$data, clearData); Vue.set(vm.$data, "disabled", false); Vue.set(vm.$data, "readonly", false); } /* * 表单扩展验证 layui 自带的 存在bug 在某些时候额外处理一遍 */ u.prototype.requiredExtend = function (form) { var result = true; for (var i = 0; i < form.length; i++) { if (form[i].nodeName == "SELECT") { var seElem = $(form[i]), seValue = seElem.find("option:selected").val(), seVerify = seElem.attr("lay-verify"); if (seVerify === "required" && (seValue == null || seValue === "")) { result = false; layer.msg("必填项不能为空", { icon: 2, shift: 6 }); $(form[i + 1]).focus(); form[i + 1].style.cssText += 'border-color: red !important;'; break; } } } return result; } /* * 清除下拉框数据 */ u.prototype.clearSelect = function (tableName, $, form) { $('.ClearSelector_' + tableName).each(function () { var selDom = ($(this)); selDom.val(""); }); form.render("select"); } /* * ajax 成功状态判断 */ u.prototype.successBefore = function (result) { var i = this; var isOk = false; if (result.Code !== 200 || !result.Status) { layer.alert(result.Message, { icon: 2, shadeClose: true, title: i.config.errorTitle }); isOk = true; } return isOk; } /* * excel 导出数据【tableObj】当前表格信息,【result】后台返回的数据 http://excel.wj2015.com/ */ u.prototype.ExcelExportData = function (tableObj, result) { setTimeout(function () { var tableCols = tableObj.config.cols[0], //第一行是列头,后面的是数据 resultData = [], exelData = [], tempChTitle = []; for (var i = 0; i < tableCols.length; i++) { if (tableCols[i].type == "normal") { exelData[tableCols[i].field] = tableCols[i].title; tempChTitle.push(tableCols[i].title); } } resultData.push(tempChTitle); var title = Object.keys(exelData); for (var xp = 0; xp < result.data.length; xp++) { var nowData = []; for (var j = 0; j < title.length; j++) { var cols = title[j]; nowData.push(result.data[xp][cols]); } resultData.push(nowData); } var curmenu = JSON.parse(sessionStorage.getItem("curmenu")), newTime = new Date().format("yyyymmddhhMMss"), fileName = curmenu == null ? newTime : curmenu.title + newTime; excel.exportExcel({ sheet1: resultData }, fileName + ".xlsx", 'xlsx'); layer.msg("导出完成!", { icon: 6, shade: 0.4, time: 200 }); }, 0); } /* * excel 下载模板 读取的表格table 列 过滤 noExel属性, 且读取 type=normal的 */ u.prototype.exelDownTemplate = function (mainList) { var tableCols = mainList.Table.config.cols[0], //第一行是列头,第2行是中文描述 resultData = [], englishTitle = [], chTitle = []; for (var i = 0; i < tableCols.length; i++) { if (typeof (tableCols[i].noExel) != "undefined" || tableCols[i].noExel) continue; if (tableCols[i].type === "normal") { englishTitle[tableCols[i].field] = tableCols[i].title; chTitle.push(tableCols[i].title); } } resultData.push(Object.keys(englishTitle)); resultData.push(chTitle); var curmenu = JSON.parse(sessionStorage.getItem("curmenu")), newTime = new Date().format("yyyymmddhhMMss"), fileName = curmenu == null ? newTime : curmenu.title + newTime; excel.exportExcel({ sheet1: resultData }, "模板"+fileName + ".xlsx", 'xlsx'); } /* *创建select【dom】 $dom,【dataSource】数据源,【selLabel】 text, 【selValue】 value,【isRender】layui 重新渲染 次方法有可能多次调用 */ u.prototype.createSelectElement = function ($dom, dataSource, selLabel, selValue, isRender,key) { if (dataSource == null || dataSource.length===0) { console.log("数据源:[" + key + "]配置有误或者当前url查询无数据,请联系管理员!"); return; } if ($dom == null) return; //组装html 元素 一次性写入文档节点 var tempArr = []; tempArr.push("<option selected value='' >请选择</option>"); for (var k = 0; k < dataSource.length; k++) { tempArr.push("<option value = '" + dataSource[k][selValue] + "'>" + dataSource[k][selLabel] + "</option>"); } for (var i = 0; i < $dom.length; i++) { if ($dom[i].length == 0) continue; $dom[i].empty(); $dom[i].append(tempArr.join("")); $dom[i][0].setAttribute("lay-search","") } if (isRender) form.render('select'); } /* * 字典数组对象查询 通过属性 Property */ u.prototype.arrFilterByProperty = function (property, propertyValue) { return window.top.sysDic.data.filter(item => item[property] === propertyValue); } var objUniversal = { mmain: function (areaName, tableName, vm, vmq, editInfo, selfBtn, mainList) { clearData = Object.assign({}, vm.$data); var sysU = new u(); mainList.Load(); //监听行单击事件(双击事件为:rowDouble) table.on('row(mainList)', function (obj) { table.on('checkbox(mainList)', function (obj) { obj.checked ? obj.tr.addClass('layui-table-click') : obj.tr.removeClass('layui-table-click') }); }); //监听表格排序 initSort 【field】排序字段、【排序方式】、【initSort】记录初始排序,如果不设的话,将无法标记表头的排序状态 table.on('sort(mainList)', function (obj) { var urlLoad = "/" + areaName + "/" + tableName + '/Load'; table.reload('mainList', { url: urlLoad , initSort: obj, method: "post", where: { field: obj.field, order: obj.type } }); }); var openWidth = mainList["openWidth"] == null ? ["750px", "450px"] : mainList.openWidth; //头工具栏事件 table.on('toolbar(mainList)', function (obj) { sysU.cookieVerification(); var checkStatus = table.checkStatus('mainList'), //选中的行数 count = checkStatus.data.length, tableObj = obj; //数据 false分页 Vue.set(vmq.$data, "Exel", false); switch (obj.event) { //新增数据 case "tabAdd": case "btnAdd": $("#modifyForm form")[0].reset(); if (selfBtn['DomConfig'] !== undefined) { var add = selfBtn['DomConfig'].call(null, function() { sysU.initAddVueData(vm); }); if (add) return; } else { $("#modifyForm form")[0].reset(); sysU.initAddVueData(vm); } var addOpenIndex = layer.open({ title: sysU.config.titleadd, area: openWidth, maxmin: true, type: 1, content: $('#modifyForm'), btn: ['保存', '关闭'], end: function (index, layero) { layer.close(index); sysU.clearSelect(tableName, $, form); }, success: function(layero, index) { form.render().verify(); form.on("submit(fromAdd)", function (data) { var result = sysU.requiredExtend(data.form); if (!result) return; var ajaxConfig = { data: { entity: vm.$data }, url: "/" + areaName + "/" + tableName + "/Ins", success: function (result) { if (sysU.successBefore(result)) return; layer.close(addOpenIndex); layer.msg('新增成功', { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); mainList.Load(); if (selfBtn['SaveSuccess'] !== undefined) selfBtn['SaveSuccess'].call(null, "Add"); if (selfBtn["allActionAfter"] !== undefined) selfBtn["allActionAfter"].call(null, null); } }; sysU.ajax(ajaxConfig); }); }, yes: function (index, layero) { if (mainList["action"]) { mainList['actionMethod'].call(null, "add", addOpenIndex); return; } layero.find('button[name=fromAdd]').click(); } }); break; //编辑单笔数据 case "btnEdit": if (count === 1) { $("#modifyForm form")[0].reset(); if (selfBtn["DomConfig"] !== undefined) { var r = selfBtn["DomConfig"].call(null, function() { editInfo(checkStatus.data[0]); Vue.set(vm.$data, "disabled", true); Vue.set(vm.$data, "readonly", true); }, checkStatus.data[0]); if (r) return; } else { editInfo(checkStatus.data[0]); Vue.set(vm.$data, "disabled", true); Vue.set(vm.$data, "readonly", true); } var eiditOpenIndex = layer.open({ title: '编辑', area: openWidth, maxmin: true, type: 1, content: $('#modifyForm'), btn: ['保存', '关闭'], end: function (index, layero) { layer.close(index); sysU.clearSelect(tableName, $, form); }, success: function (layero, index) { form.render().verify(); form.on("submit(fromUpdate)", function (data) { var result = sysU.requiredExtend(data.form); if (!result) return; var ajaxConfig = { data: { entity: vm.$data }, url: "/" + areaName + "/" + tableName + "/Upd", success: function (result) { if (sysU.successBefore(result)) return; layer.msg("修改成功!", { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); layer.close(eiditOpenIndex); mainList.Load(); if (selfBtn['SaveSuccess'] !== undefined) selfBtn['SaveSuccess'].call(null, "Edit"); if (selfBtn["allActionAfter"] !== undefined) selfBtn["allActionAfter"].call(null, null); } }; sysU.ajax(ajaxConfig); }); }, yes: function (index, layero) { if (mainList["action"]) { mainList['actionMethod'].call(null, "edit", eiditOpenIndex); return; } layero.find('button[name=fromUpdate]').click(); } }); } else layer.alert("请选择一条数据", { icon: 2, shadeClose: true, title: "错误信息" }); break; //上传数据 case "btnUpload": var url = "/" + areaName + "/" + tableName + "/Import"; objUniversal.ImportExcel(sysU, url, mainList); break; //导出数据 case "btnExport": //数据 true不分页 Vue.set(vmq.$data, "Exel", true); var ajaxConfig = { data: vmq.$data, url: "/" + areaName + "/" + tableName + "/Export", success: function (result) { if (result.code !== 0 || result.count <= 0) { layer.msg("该条件没有查询到数据!", { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); return; } sysU.ExcelExportData(tableObj, result); } }; sysU.ajax(ajaxConfig); break; //检索按钮,弹出检索区 case "btnSelect": panelSearch(); if (selfBtn["DomConfig"] !== undefined) selfBtn["DomConfig"].call(null, null); break; //刷新数据 case "btnRefresh": mainList.Load(); $('.layui-collapse').hide(); break; //批量删除数据 case "btnDelete": if (count == 0) { layer.alert(sysU.config.titleSelectOneRowData, { icon: 2, shadeClose: true, title: sysU.config.titleError }); return; } //删除前方法 if (selfBtn['SaveBefore'] !== undefined) selfBtn['SaveBefore'].call(null, "Delete", checkStatus); var urlDelete = mainList["urlDelete"] == null ? `/${areaName}/${tableName}/DelByIds` : mainList["urlDelete"]; //是否确定删除 layer.confirm(sysU.config.titleConfirmDelete, { icon: 3 }, function (index) { var data = checkStatus.data; //获取选中行的数据 var ajaxConfig = { data: { ids: data.map(function (e) { return e.id; }) }, url: urlDelete, success: function (result) { if (sysU.successBefore(result)) return; layer.close(index); layer.msg(sysU.config.titleDeleteSuccess, { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); mainList.Load(); if (selfBtn['SaveSuccess'] !== undefined) selfBtn['SaveSuccess'].call(null, "Delete"); $('.layui-collapse').hide(); if (selfBtn["allActionAfter"] !== undefined) selfBtn["allActionAfter"].call(null, null); } }; sysU.ajax(ajaxConfig); }); break; } //自定义按钮方法遍历 for (var key in selfBtn) { if (!Object.prototype.hasOwnProperty.call(selfBtn, key)) continue; if (obj.event == key) selfBtn[key](); } }); //监听页面主按钮操作 var active = { //检索区的查询按钮 btnQuery: function () { //不导出 Vue.set(vmq.$data, "Exel", false); table.reload('mainList', { page: { curr: 1 }, url: "/" + areaName + "/" + tableName + "/Load", method: "post", where: vmq.$data }); panelSearch(); }, //检索区重置按钮 btnReset: function () { for (var item in vmq.$data) { vmq.$data[item] = null; $("[name='q" + item + "']").val(''); layui.form.render(); //下拉框等页面元素需要重渲染 } }, //检索区关闭按钮 btnClose: function () { panelSearch(); }, //下载模板 btnTemplate: function () { sysU.exelDownTemplate(mainList); } }; $('.layui-btn').on('click', function () { var type = $(this).data('type'); active[type] ? active[type].call(this) : ""; }); function panelSearch() { $('#panelSearch').toggle("fast"); } }, BindSelector: function (vml, selector, fnCallBack, seData) { if (selector == null) return; var sysU = new u(); let vmList = vml[0]; let fn = fnCallBack; var allSelector = Object.keys(selector), seLength = allSelector.length, index = 0; allSelector.forEach(function (key) { let selectObj = { Dom: selector[key]["Dom"], SelType: selector[key].SelType, SelFrom: selector[key].SelFrom, SelLabel: selector[key].SelLabel, SelValue: selector[key].SelValue }; if (selectObj.SelType === "FromUrl") { var ajaxConfig = { data: { limit: 1000 }, url: selectObj.SelFrom, success: function (result) { if (result.data === 0 ) { layer.alert(result.Message, { icon: 2, shadeClose: true, title: i.config.errorTitle }); return; } SelectorSource[key] = result.data; if (typeof seData != "undefined" && seData != null) seData[key] = result.data; sysU.createSelectElement(selectObj.Dom, result.data, selectObj.SelLabel, selectObj.SelValue,false, selectObj.SelFrom); objUniversal.bindSelectorAfter(vmList); if (index >= seLength&& fn != null) fn(); } }; sysU.ajax(ajaxConfig); } else if (selectObj.SelType === "FromDict") { var tempData = sysU.arrFilterByProperty("DictType", selectObj.SelFrom); SelectorSource[key] = tempData; if (typeof seData != "undefined" && seData != null) seData[key] = tempData; sysU.createSelectElement(selectObj.Dom, tempData, selectObj.SelLabel, selectObj.SelValue, false, selectObj.SelFrom); if (index >= seLength && fn != null) fn(); } index++; }); objUniversal.bindSelectorAfter(vmList); }, mainDtl: function (selfbtn, All) { var sysU = new u(); var DtlShowbool = {};//所有折叠的当前状态 var Dtl = {};//当前点击All数据 var Value = {};//主表数据缓存数据 var Values = new Array();//主表数据缓存数据集合 //所有折叠状态初始化 for (i = 0; i < All.length; i++) { DtlShowbool[All[i].TableNameDtl] = false; } //监听单元格点击 table.on('tool(mainList)', function (obj) { var Dtlbtn = {}; var mainListDtl; for (i = 0; i < All.length; i++) { if (obj.event === All[i].TableNameDtl) { Dtl = All[i]; } } if (Dtl == {}) return; for (i = 0; i < Object.keys(Dtl.NameDtl).length; i++) { //主表数据赋值 Value[Object.keys(Dtl.NameDtl)[i]] = obj.data[Dtl.NameDtl[Object.keys(Dtl.NameDtl)[i]]]; Values[Dtl.TableNameDtl] = Value; //重载赋值(防止主子表字段名不一样) if (obj.data[Dtl.NameDtl[Object.keys(Dtl.NameDtl)[i]]] != null) { Dtl.vmqDtl.$data[Object.keys(Dtl.NameDtl)[i]] = obj.data[Dtl.NameDtl[Object.keys(Dtl.NameDtl)[i]]]; } else { Dtl.vmqDtl.$data[Object.keys(Dtl.NameDtl)[i]] = '###'; } } //重载方法 mainListDtl = { mainListDtl: function (mainDtl) { mainDtl.mainListDtl.Load(mainDtl.vmqDtl.$data); } }; //监听折叠 element.on('collapse(DisplayDtl)', function (data) { //记录当前折叠状态 DtlShowbool[data.title[0].id.split('_')[1]] = data.show; //头工具栏事件 table.on('toolbar(mainListDtl' + data.title[0].id.split('_')[1] + ')', function (obj) { for (i = 0; i < All.length; i++) { if (obj.event.split('_')[1] === All[i].TableNameDtl) { Dtlbtn = All[i]; } } var checkStatus = table.checkStatus('mainListDtl' + Dtlbtn.TableNameDtl); var count = checkStatus.data.length;//选中的行数 switch (obj.event) { case 'tabAddDtl_' + Dtlbtn.TableNameDtl: //跳转至单据页面,新增数据 //新增前的处理方法 if (selfbtn['DomConfig_' + Dtlbtn.TableNameDtl] !== undefined) { var rtn = selfbtn['DomConfig_' + Dtlbtn.TableNameDtl].call(null, "Add", Dtlbtn.vmqDtl._data); if (rtn == false) { return null; } } layer.open({ type: 1 , area: ['600px', '500px'] , content: $('#modifyFormDtl_' + Dtlbtn.TableNameDtl) , success: function (layero, index) { for (i = 0; i < Object.keys(Values[Dtlbtn.TableNameDtl]).length; i++) { Dtlbtn.vmDtl.$set(Object.keys(Values[Dtlbtn.TableNameDtl])[i], Value[Object.keys(Values[Dtlbtn.TableNameDtl])[i]]) } } , btn: ['保存', '取消'] , yes: function (index, layero) { //保存前方法 if (selfbtn['SaveBefore_' + Dtlbtn.TableNameDtl] !== undefined) { var rtn = selfbtn['SaveBefore_' + Dtlbtn.TableNameDtl].call(null, "Add"); if (rtn != null) { if ($(rtn[0]).context.tagName == "SELECT") { $($(rtn[0]).next()[0].children[0].firstChild).attr("placeholder", "此项为必填项"); } layer.msg("必填项不能为空", { icon: 2, shadeClose: true }); $(rtn).focus(); return null; } } //新增 $.ajax({ url: "/" + Dtlbtn.AreaNameDtl + "/" + Dtlbtn.TableNameDtl + "/Ins", type: "post", data: { entity: Dtlbtn.vmDtl.$data }, dataType: "json", success: function (result) { if (result.Code == 200 && result.Status) { layer.msg('新增成功', { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); mainListDtl.mainListDtl(Dtlbtn);//重载TABLE if (selfbtn["allActionAfter"] !== undefined) selfbtn["allActionAfter"].call(null, null); //新增成功回调方法 if (selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl] !== undefined) { selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl].call(null, "Add"); } } else { layer.alert(result.Message, { icon: 2, shadeClose: true, title: "错误信息" }); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.alert(errorThrown, { icon: 2, shadeClose: true, title: "错误信息" }); } }); layer.close(index); } , btn2: function (index, layero) { Dtlbtn.vmDtl.$set('$data', {}); layer.close(index); } , end: function (index, layero) { sysU.clearSelect(Dtlbtn.TableNameDtl, $, form); Dtlbtn.vmDtl.$set('$data', {}); } }); break; case 'btnRefreshDtl_' + Dtlbtn.TableNameDtl: //刷新数据 mainListDtl.mainListDtl(Dtlbtn); break; case 'btnEditDtl_' + Dtlbtn.TableNameDtl: //编辑单笔数据 if (count == 1) { Dtlbtn.EditInfoDtl(checkStatus.data[0]); //编辑前的处理方法 if (selfbtn['DomConfig_' + Dtlbtn.TableNameDtl] !== undefined) { var rtn = selfbtn['DomConfig_' + Dtlbtn.TableNameDtl].call(null, "Edit", Dtlbtn.vmqDtl._data); if (rtn == false) { return null; } } layer.open({ type: 1 , area: ['600px', '500px'] , content: $('#modifyFormDtl_' + Dtlbtn.TableNameDtl) , success: function (layero, index) { } , btn: ['保存', '取消'] , yes: function (index, layero) { //保存前方法 if (selfbtn['SaveBefore_' + Dtlbtn.TableNameDtl] !== undefined) { var rtn = selfbtn['SaveBefore_' + Dtlbtn.TableNameDtl].call(null, "Edit"); if (rtn != null) { if ($(rtn[0]).context.tagName == "SELECT") { $($(rtn[0]).next()[0].children[0].firstChild).attr("placeholder", "此项为必填项"); } layer.msg("必填项不能为空", { icon: 2, shadeClose: true }); $(rtn).focus(); return null; } } //编辑 $.ajax({ url: "/" + Dtl.AreaNameDtl + "/" + Dtlbtn.TableNameDtl + "/Upd", type: "POST", data: { entity: Dtlbtn.vmDtl.$data }, dataType: "json", success: function (result) { if (result.Code == 200 && result.Status) { layer.msg("修改成功!", { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); mainListDtl.mainListDtl(Dtlbtn); //保存成功方法 if (selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl] !== undefined) { selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl].call(null, "Edit"); } if (selfbtn["allActionAfter"] !== undefined) selfbtn["allActionAfter"].call(null, null); } else { layer.alert(result.Message, { icon: 2, shadeClose: true, title: "错误信息" }); } } }); layer.close(index); } , btn2: function (index, layero) { Dtlbtn.vmDtl.$set('$data', {}); layer.close(index); } , end: function (index, layero) { sysU.clearSelect(Dtlbtn.TableNameDtl, $, form); Dtlbtn.vmDtl.$set('$data', {}); } }); } else layer.alert("请选择一条数据", { icon: 2, shadeClose: true, title: "错误信息" }); break; case 'btnDeleteDtl_' + Dtlbtn.TableNameDtl: //批量删除数据 if (count > 0) { //删除前方法 if (selfbtn['DomConfig_' + Dtlbtn.TableNameDtl] !== undefined) { var rtn = selfbtn['DomConfig_' + Dtlbtn.TableNameDtl].call(null, "Delete", Dtlbtn.vmqDtl._data); if (rtn == false) { return null; } } layer.confirm('确定要删除所选信息', { icon: 3 }, function (index) { var data = checkStatus.data; //获取选中行的数据 $.ajax({ url: "/" + Dtlbtn.AreaNameDtl + "/" + Dtlbtn.TableNameDtl + "/DelByIds", type: "post", data: { ids: data.map(function (e) { return e.Id; }) }, dataType: "json", success: function (result) { if (result.Code == 200 && result.Status) { layer.msg('删除成功', { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); layer.close(index); mainListDtl.mainListDtl(Dtlbtn);//重载TABLE //保存成功方法 if (selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl] !== undefined) { selfbtn['SaveSuccess_' + Dtlbtn.TableNameDtl].call(null, "Delete"); } if (selfbtn["allActionAfter"] !== undefined) selfbtn["allActionAfter"].call(null, null); } else { layer.alert(result.Message, { icon: 2, shadeClose: true, title: "错误信息" }); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.alert(errorThrown, { icon: 2, shadeClose: true, title: "错误信息" }); } }); }); } else layer.alert("请至少选择一条数据", { icon: 2, shadeClose: true, title: "错误信息" }); break; //导出数据 case 'btnExportDtl_' + Dtlbtn.TableNameDtl: debugger var index = layer.load(); $.ajax({ url: "/" + Dtlbtn.AreaNameDtl + "/" + Dtlbtn.TableNameDtl + "/Export", type: "POST", data: Dtlbtn.vmqDtl._data, dataType: "json", success: function (result) { layer.close(index); var ExportTitle = new Array(); var ExportData = result.data; for (var i = 0; i < result.count; i++) { var data = result.data[i]; for (var item in data) { if (i == 0) { ExportTitle.push(item); } } } table.exportFile(ExportTitle, ExportData, 'csv') layer.msg("导出完成!", { icon: 6, shade: 0.4, time: sysU.config.msgOpenTime }); }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.close(index); layer.alert(errorThrown, { icon: 2, shadeClose: true, title: "错误信息" }); } }); break; } for (var key in selfbtn) { if (obj.event == key) selfbtn[key](); } }); }); //单元格对checkbox失效 $(obj.tr[1]).click(); //字体颜色转换 obj.tr.siblings().find('.' + Dtl.TableNameDtl + 'Class').css('color', 'cornflowerblue'); obj.tr.find('.' + Dtl.TableNameDtl + 'Class').css('color', 'sandybrown'); //显示折叠 $('.layui-collapse').show(); $('#DisplayDtl' + Dtl.TableNameDtl).show(); for (i = 0; i < Object.keys(DtlShowbool).length; i++) { if (DtlShowbool[Object.keys(DtlShowbool)[i]] == true && Object.keys(DtlShowbool)[i] != DtlShowbool[Dtl.TableNameDtl]) { //关闭其他折叠 $('#title_' + Object.keys(DtlShowbool)[i]).click(); DtlShowbool[Object.keys(DtlShowbool)[i]] = false; } } if (DtlShowbool[Dtl.TableNameDtl] == false) { //打开当前数据对应折叠 $('#title_' + Dtl.TableNameDtl).click(); } mainListDtl.mainListDtl(Dtl); }); }, //下拉框绑定 BindSelectorExtend: function (vml, data, sysU) { let vmList = vml[0]; for (var i = 0; i < data.length; i++) { sysU.createSelectElement(data[i].Dom, data[i].data, data[i].SelLabel, data[i].SelValue, false, "BindSelectorExtend"); } objUniversal.bindSelectorAfter(vmList); }, bindSelectorAfter: function (vmList) { //搜索框下拉触发选择事件,完成vue赋值 form.on('select(qform)', function (data) { vmList['vmq'].$data[$(data.elem).data("model")] = data.value; }); //编辑页面 下拉触发选择事件,完成vue赋值 form.on('select(eform)', function (data) { if (vmList['vmDtl' + $(data.elem)[0].classList[1].split('_')[1]] == undefined) { vmList['vm'].$data[$(data.elem).data("model")] = data.value; } else { vmList['vmDtl' + $(data.elem)[0].classList[1].split('_')[1]].$data[$(data.elem).data("model")] = data.value; } }); setTimeout(function () { form.render('select'); }, 10); }, ImportExcel: function (sysU,url, mainList) { layer.open({ type: 1, skin: 'layui-layer-molv', anim: 1, id: 'LAY_layuipro', //设定一个id,防止重复弹出 btnAlign: 'c', moveType: 1, //拖拽模式,0或者1 title: "请选择需导入的文件:", //不显示标题 area: ['400px', '300px'], //宽高 content: $('#ImportData'), //捕获的元素 scrollbar: false, btn: ['导入', '关闭'], yes: function () { var index1 = layer.load(); var fileObj = document.getElementById("excelfile").files[0]; // js 获取文件对象 if (typeof (fileObj) == "undefined" || fileObj.size <= 0) { layer.alert("请先选择需要上传的文件!", { skin: 'layui-layer-molv', anim: 1, icon: 2 }); layer.close(index1); return; } var formFile = new FormData(); formFile.append("excelfile", fileObj); //加入文件对象 var ajaxConfig = { data: formFile, url: url, cache: false,//上传文件无需缓存 processData: false,//用于对data参数进行序列化处理 这里必须false contentType: false, //必须 success: function (result) { if (result.Code == 200) { if (result.Status) { layer.msg(result.Message, { icon: 6 }); } else { layer.alert(result.Message, { icon: 2, shade: 0.4, shadeClose: true, title: '导入失败' }); } $('#excelfile').val(""); mainList.Load(); } layer.closeAll(); } }; sysU.ajax(ajaxConfig); }, cancel: function (index) { layer.close(index); } }); }, u: u }; exports('Universal', objUniversal); }); function GetLabel(DataKey, columnKey, reKey, columnKeyValue) { var temp = SelectorSource[DataKey]; if (temp == null) return columnKeyValue; var result = ""; for (var i = 0; i < temp.length; i++) { if (temp[i][columnKey] != columnKeyValue) continue; result= temp[i][reKey]; } return result; } var sbList = {}; function loadMenus(modulecode, areaMenus) { if (sbList[areaMenus] != undefined) { return sbList[areaMenus]; } var urlMenu = `/base/SysModule/LoadAuthorizedMenus?modulecode=${modulecode}&AreaMenus=${areaMenus}`; var strArr = []; $.ajax({ url: urlMenu, success: function (data) { if (data === "") { return } var elementJosn = JSON.parse(data); for (var i = 0; i < elementJosn.length; i++) { strArr.push(`<a href='javascript:;' lay-event=${elementJosn[i].DomId} class='layui-btn layui-btn-sm ${elementJosn[i].Class}'>`); if (elementJosn[i].Icon != null && elementJosn[i].Icon != '') { strArr.push(`<i class='layui-icon'>${elementJosn[i].Icon}</i>`); } strArr.push(`${elementJosn[i].Name} </a>`); } var tempStr = strArr.join(""); sbList[areaMenus] = tempStr; var quanxian = $(".layui-btn-container"); if (quanxian.length > 1) { quanxian.eq(1).append(tempStr); } else { quanxian.append(tempStr); } } }); }