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);
}
}
});
}