1066 lines
46 KiB
JavaScript
1066 lines
46 KiB
JavaScript
![]() |
/**
|
|||
|
* date:2020/02/27
|
|||
|
* author:Mr.Q
|
|||
|
* version:1.6
|
|||
|
* description:watercloud 主体框架扩展
|
|||
|
*/
|
|||
|
layui.define(["jquery", "layer", 'table', 'treeTable', 'xmSelect', 'miniTab'], function (exports) {
|
|||
|
var $ = layui.jquery,
|
|||
|
miniTab = layui.miniTab,
|
|||
|
layer = layui.layer,
|
|||
|
treeTable = layui.treeTable,
|
|||
|
xmSelect = layui.xmSelect;
|
|||
|
|
|||
|
var obj = {
|
|||
|
//tabletree渲染封装里面有字段权限
|
|||
|
rendertreetable: function (options) {
|
|||
|
//样式不协调,先不加
|
|||
|
var serchHeight = parseInt(60 + ($(".table-search-fieldset").height() || 0));
|
|||
|
var defaults = {
|
|||
|
elem: '#currentTableId',//主键
|
|||
|
toolbar: '#toolbarDemo',//工具栏
|
|||
|
defaultToolbar: ['filter', 'exports', 'print'],//默认工具栏
|
|||
|
search: true,//搜索按钮
|
|||
|
loading: false,
|
|||
|
checkOther:false,//关闭复选框联动
|
|||
|
tree: {
|
|||
|
iconIndex: 0, // 折叠图标显示在第几列 多选等记得修改
|
|||
|
isPidData: true, // 是否是id、pid形式数据
|
|||
|
idName: 'F_Id', // id字段名称
|
|||
|
pidName: 'F_ParentId', // pid字段名称
|
|||
|
arrowType: 'arrow2',
|
|||
|
getIcon: 'ew-tree-icon-style2',
|
|||
|
},
|
|||
|
height: 'full-' + serchHeight,
|
|||
|
method: 'get',//请求方法
|
|||
|
cellMinWidth: 60,//最小宽度
|
|||
|
authorizeFields: true, // 字段权限开关
|
|||
|
parseData: function (res) { //res 即为原始返回的数据
|
|||
|
return {
|
|||
|
"code": res.state, //解析接口状态
|
|||
|
"msg": res.message, //解析提示文本
|
|||
|
"count": res.count, //解析数据长度
|
|||
|
"data": res.data //解析数据列表
|
|||
|
};
|
|||
|
}
|
|||
|
};
|
|||
|
var doneCallback = options.done;
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
if (document.body.clientWidth < 500 && !!options.defaultToolbar) {
|
|||
|
for (var i = 0; i < options.defaultToolbar.length; i++) {
|
|||
|
if (options.defaultToolbar[i] == "print") {
|
|||
|
options.defaultToolbar.splice(i, 1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//搜索框按钮
|
|||
|
if (options.search) {
|
|||
|
options.defaultToolbar = !options.defaultToolbar? [] : options.defaultToolbar;
|
|||
|
options.defaultToolbar.push({
|
|||
|
title: '搜索',
|
|||
|
layEvent: 'TABLE_SEARCH',
|
|||
|
icon: 'layui-icon-search'
|
|||
|
});
|
|||
|
}
|
|||
|
//ie缓存问题
|
|||
|
//options.url = obj.urlAddTime(options.url);
|
|||
|
//字段权限
|
|||
|
if (options.authorizeFields) {
|
|||
|
options.cols = obj.tableAuthorizeFields(options.cols);
|
|||
|
}
|
|||
|
options.done = function (res, curr, count) {
|
|||
|
//关闭加载
|
|||
|
//layer.closeAll('loading');
|
|||
|
if (doneCallback) {
|
|||
|
doneCallback(res, curr, count);
|
|||
|
}
|
|||
|
};
|
|||
|
return treeTable.render(options);
|
|||
|
},
|
|||
|
//treetable刷新
|
|||
|
reloadtreetable: function (tree, options) {
|
|||
|
var loading = layer.load(0, { shade: false });
|
|||
|
var defaults = {
|
|||
|
where: {}
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
options.where.time = new Date().Format("yyyy-MM-dd hh:mm:ss");
|
|||
|
//执行搜索重载
|
|||
|
tree.reload({
|
|||
|
where: options.where
|
|||
|
});
|
|||
|
//关闭加载
|
|||
|
layer.closeAll('loading');
|
|||
|
},
|
|||
|
//msg
|
|||
|
modalMsg: function (content, type) {
|
|||
|
if (type != undefined) {
|
|||
|
var icon = 0;
|
|||
|
if (type == 'success') {
|
|||
|
icon = 1;
|
|||
|
}
|
|||
|
else if (type == 'error') {
|
|||
|
icon = 2;
|
|||
|
}
|
|||
|
else if (type == 'warning') {
|
|||
|
icon = 7;
|
|||
|
}
|
|||
|
else {
|
|||
|
icon = 5;
|
|||
|
}
|
|||
|
top.layer.msg(content, {
|
|||
|
icon: icon, time: 1000, shift: 5,
|
|||
|
});
|
|||
|
} else {
|
|||
|
top.layer.msg(content);
|
|||
|
}
|
|||
|
},
|
|||
|
//alert
|
|||
|
modalAlert: function (content, type) {
|
|||
|
var icon = 0;
|
|||
|
if (type == 'success') {
|
|||
|
icon = 1;
|
|||
|
}
|
|||
|
if (type == 'error') {
|
|||
|
icon = 2;
|
|||
|
}
|
|||
|
if (type == 'warning') {
|
|||
|
icon = 7;
|
|||
|
}
|
|||
|
top.layer.alert(content, {
|
|||
|
icon: icon,
|
|||
|
title: "系统提示",
|
|||
|
id: "系统提示",
|
|||
|
btn: ['确认'],
|
|||
|
btnclass: ['btn btn-primary'],
|
|||
|
yes: function (index) {
|
|||
|
top.layer.close(index);
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
//界面关闭
|
|||
|
modalClose: function () {
|
|||
|
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
|||
|
var $IsdialogClose = top.$("#layui-layer" + index).find('.layui-layer-btn').find("#IsdialogClose");
|
|||
|
var IsClose = $IsdialogClose.is(":checked");
|
|||
|
if ($IsdialogClose.length == 0) {
|
|||
|
IsClose = true;
|
|||
|
}
|
|||
|
if (IsClose) {
|
|||
|
if (window.top.iframesList) {
|
|||
|
delete window.top.iframesList[index];
|
|||
|
}
|
|||
|
parent.layer.close(index);
|
|||
|
} else {
|
|||
|
location.reload();
|
|||
|
}
|
|||
|
},
|
|||
|
//创建界面
|
|||
|
modalOpen: function (options) {
|
|||
|
var defaults = {
|
|||
|
title: '系统窗口',
|
|||
|
width: "100px",
|
|||
|
height: "100px",
|
|||
|
anim: 0,//动画
|
|||
|
isOutAnim: true,//关闭动画
|
|||
|
maxmin: true, //开启最大化最小化按钮
|
|||
|
url: '',
|
|||
|
shade: 0.3,
|
|||
|
dataJson: null,//传参
|
|||
|
btn: ['确认', '关闭'],
|
|||
|
btnclass: ['layui-btn', 'layui-btn-primary'],
|
|||
|
isMax: false,//最大化属性 默认不是
|
|||
|
callBack: null,
|
|||
|
end: null,
|
|||
|
yes: function (index, layero) {
|
|||
|
var iframeWindow = window['layui-layer-iframe' + index]
|
|||
|
, submitID = 'submit'
|
|||
|
, submit = layero.find('iframe').contents().find('#' + submitID);
|
|||
|
submit.trigger('click');
|
|||
|
}
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
//ie缓存问题
|
|||
|
//options.url = obj.urlAddTime(options.url);
|
|||
|
//options.url = obj.urlAddTime(options.url);
|
|||
|
//高度宽度超出就适应屏幕
|
|||
|
var _width = document.body.clientWidth > parseInt(options.width.replace('px', '')) ? options.width : document.body.clientWidth - 20 + 'px';
|
|||
|
var _height = document.body.clientHeight > parseInt(options.height.replace('px', '')) ? options.height : document.body.clientHeight - 20 + 'px';
|
|||
|
if (obj.currentWindow()) {
|
|||
|
_width = obj.currentWindow().document.body.clientWidth > parseInt(options.width.replace('px', '')) ? options.width : obj.currentWindow().document.body.clientWidth - 20 + 'px';
|
|||
|
_height = obj.currentWindow().document.body.clientHeight > parseInt(options.height.replace('px', '')) ? options.height : obj.currentWindow().document.body.clientHeight - 20 + 'px';
|
|||
|
}
|
|||
|
var index = top.layer.open({
|
|||
|
type: 2,
|
|||
|
shade: options.shade,
|
|||
|
title: options.title,
|
|||
|
isOutAnim: options.isOutAnim,//关闭动画
|
|||
|
maxmin: options.maxmin, //开启最大化最小化按钮
|
|||
|
fix: false,
|
|||
|
area: [_width, _height],
|
|||
|
content: options.url,
|
|||
|
id: !!options.id ? options.id : options.title,
|
|||
|
btn: options.btn,
|
|||
|
success: function (layero, index) {
|
|||
|
$(layero).addClass("scroll-wrapper");//苹果 iframe 滚动条失效解决方式
|
|||
|
//建立父子关系
|
|||
|
if (!window.top.iframesList) {
|
|||
|
window.top.iframesList = {};
|
|||
|
}
|
|||
|
window.top.iframesList[index] = window;
|
|||
|
//新增传值方式
|
|||
|
window.top.iframesList[index].dataJson = options.dataJson;
|
|||
|
if (!!options.success) {
|
|||
|
options.success(layero, index);
|
|||
|
}
|
|||
|
},
|
|||
|
//btnclass: options.btnclass,
|
|||
|
yes: function (index, layero) {
|
|||
|
if (!!options.yes) {
|
|||
|
options.yes(index, layero);
|
|||
|
}
|
|||
|
}, btn2: function (index, layero) {
|
|||
|
if (!!options.btn2) {
|
|||
|
options.btn2(index, layero);
|
|||
|
}
|
|||
|
else {
|
|||
|
if (window.top.iframesList) {
|
|||
|
delete window.top.iframesList[index];
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
}, cancel: function (index, layero) {
|
|||
|
if (window.top.iframesList) {
|
|||
|
delete window.top.iframesList[index];
|
|||
|
}
|
|||
|
if (!!options.cancel) {
|
|||
|
options.cancel(index, layero);
|
|||
|
}
|
|||
|
else {
|
|||
|
return true;
|
|||
|
}
|
|||
|
},
|
|||
|
end: function () {
|
|||
|
if (!!options.end) {
|
|||
|
options.end();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
if (options.isMax) {
|
|||
|
top.layer.full(index);
|
|||
|
}
|
|||
|
return index;
|
|||
|
},
|
|||
|
//表单提交
|
|||
|
submitForm: function (options) {
|
|||
|
var defaults = {
|
|||
|
url: "",
|
|||
|
param: [],
|
|||
|
success: null,
|
|||
|
close: true,
|
|||
|
preventReuse:'.site-demo-active'//防止重复的参数
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
//ie缓存问题
|
|||
|
options.url = obj.urlAddTime(options.url);
|
|||
|
// 单击之后提交按钮不可选,防止重复提交
|
|||
|
if (!!options.preventReuse) {
|
|||
|
$(options.preventReuse).addClass('layui-btn-disabled');
|
|||
|
$(options.preventReuse).attr('disabled', 'disabled');
|
|||
|
}
|
|||
|
window.setTimeout(function () {
|
|||
|
if ($('[name=__RequestVerificationToken]').length > 0) {
|
|||
|
var csrfToken = $('[name=__RequestVerificationToken]').val();
|
|||
|
}
|
|||
|
var index = parent.layer.load(0, {
|
|||
|
shade: [0.5, '#000'], //0.1透明度的背景
|
|||
|
});
|
|||
|
$.ajax({
|
|||
|
url: options.url,
|
|||
|
data: options.param,
|
|||
|
type: "post",
|
|||
|
dataType: "json",
|
|||
|
headers: {
|
|||
|
"X-CSRF-TOKEN": csrfToken
|
|||
|
},
|
|||
|
success: function (data) {
|
|||
|
if (data.state == "success") {
|
|||
|
options.success(data);
|
|||
|
obj.modalMsg(data.message, data.state);
|
|||
|
if (options.close) {
|
|||
|
try {
|
|||
|
obj.modalClose();
|
|||
|
}
|
|||
|
catch (err) {
|
|||
|
parent.layer.close(index);
|
|||
|
miniTab.deleteCurrentByIframe();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
} else {
|
|||
|
obj.modalAlert(data.message, data.state);
|
|||
|
}
|
|||
|
if (!!options.preventReuse) {
|
|||
|
$(options.preventReuse).removeClass('layui-btn-disabled');
|
|||
|
$(options.preventReuse).removeAttr('disabled');
|
|||
|
}
|
|||
|
},
|
|||
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
|||
|
parent.layer.close(index);
|
|||
|
obj.modalAlert(errorThrown, "error");
|
|||
|
if (!!options.preventReuse) {
|
|||
|
$(options.preventReuse).removeClass('layui-btn-disabled');
|
|||
|
$(options.preventReuse).removeAttr('disabled');
|
|||
|
}
|
|||
|
},
|
|||
|
beforeSend: function () {
|
|||
|
},
|
|||
|
complete: function () {
|
|||
|
parent.layer.close(index);
|
|||
|
}
|
|||
|
});
|
|||
|
return false;
|
|||
|
}, 500);
|
|||
|
},
|
|||
|
//二次确认框
|
|||
|
modalConfirm: function (content, callBack) {
|
|||
|
var index= top.layer.confirm(content, {
|
|||
|
icon: "fa-exclamation-circle",
|
|||
|
title: "系统提示",
|
|||
|
id: "系统提示",
|
|||
|
btn: ['确认', '取消'],
|
|||
|
btnclass: ['btn btn-primary', 'btn btn-danger'],
|
|||
|
}, function () {
|
|||
|
top.layer.close(index);
|
|||
|
callBack(true);
|
|||
|
}, function () {
|
|||
|
callBack(false)
|
|||
|
});
|
|||
|
},
|
|||
|
//文档弹窗
|
|||
|
modalPrompt: function (type, title, callBack) {
|
|||
|
if (type < 0 || type > 3) {
|
|||
|
type = 0;
|
|||
|
}
|
|||
|
top.layer.prompt({
|
|||
|
formType: type,
|
|||
|
value: '',
|
|||
|
title: title,
|
|||
|
id:title,
|
|||
|
btn: ['确认', '取消'],
|
|||
|
btnclass: ['btn btn-primary', 'btn btn-danger'],
|
|||
|
}, function (value, index, elem) {
|
|||
|
top.layer.close(index);
|
|||
|
callBack(true, value);
|
|||
|
});
|
|||
|
},
|
|||
|
//删除
|
|||
|
deleteForm: function (options) {
|
|||
|
var defaults = {
|
|||
|
prompt: "注:您确定要删除选中数据吗?",
|
|||
|
url: "",
|
|||
|
param: [],
|
|||
|
success: null,
|
|||
|
close: false
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
//ie缓存问题
|
|||
|
options.url = obj.urlAddTime(options.url);
|
|||
|
if ($('[name=__RequestVerificationToken]').length > 0) {
|
|||
|
var csrfToken = $('[name=__RequestVerificationToken]').val();
|
|||
|
}
|
|||
|
obj.modalConfirm(options.prompt, function (r) {
|
|||
|
if (r) {
|
|||
|
var index = parent.layer.load(0, {
|
|||
|
shade: [0.5, '#000'], //0.1透明度的背景
|
|||
|
});
|
|||
|
window.setTimeout(function () {
|
|||
|
$.ajax({
|
|||
|
url: options.url,
|
|||
|
data: options.param,
|
|||
|
type: "post",
|
|||
|
dataType: "json",
|
|||
|
headers: {
|
|||
|
"X-CSRF-TOKEN": csrfToken
|
|||
|
},
|
|||
|
success: function (data) {
|
|||
|
if (data.state == "success") {
|
|||
|
options.success(data);
|
|||
|
obj.modalMsg(data.message, data.state);
|
|||
|
if (options.close) {
|
|||
|
obj.modalClose();
|
|||
|
}
|
|||
|
} else {
|
|||
|
obj.modalAlert(data.message, data.state);
|
|||
|
}
|
|||
|
},
|
|||
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
|||
|
parent.layer.close(index);
|
|||
|
obj.modalMsg(errorThrown, "error");
|
|||
|
},
|
|||
|
beforeSend: function () {
|
|||
|
},
|
|||
|
complete: function () {
|
|||
|
parent.layer.close(index);
|
|||
|
}
|
|||
|
});
|
|||
|
}, 500);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
//post提交
|
|||
|
submitPost: function (options) {
|
|||
|
var defaults = {
|
|||
|
prompt: options.title,
|
|||
|
url: "",
|
|||
|
param: [],
|
|||
|
success: null,
|
|||
|
close: false
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
//ie缓存问题
|
|||
|
options.url = obj.urlAddTime(options.url);
|
|||
|
if ($('[name=__RequestVerificationToken]').length > 0) {
|
|||
|
var csrfToken = $('[name=__RequestVerificationToken]').val();
|
|||
|
}
|
|||
|
obj.modalConfirm(options.prompt, function (r) {
|
|||
|
if (r) {
|
|||
|
var index = parent.layer.load(0, {
|
|||
|
shade: [0.5, '#000'], //0.1透明度的背景
|
|||
|
});
|
|||
|
window.setTimeout(function () {
|
|||
|
$.ajax({
|
|||
|
url: options.url,
|
|||
|
data: options.param,
|
|||
|
type: "post",
|
|||
|
dataType: "json",
|
|||
|
headers: {
|
|||
|
"X-CSRF-TOKEN": csrfToken
|
|||
|
},
|
|||
|
success: function (data) {
|
|||
|
if (data.state == "success") {
|
|||
|
options.success(data);
|
|||
|
obj.modalMsg(data.message, data.state);
|
|||
|
if (options.close) {
|
|||
|
obj.modalClose();
|
|||
|
}
|
|||
|
} else {
|
|||
|
obj.modalAlert(data.message, data.state);
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
|||
|
parent.layer.close(index);
|
|||
|
obj.modalMsg(errorThrown, "error");
|
|||
|
},
|
|||
|
beforeSend: function () {
|
|||
|
},
|
|||
|
complete: function () {
|
|||
|
parent.layer.close(index);
|
|||
|
}
|
|||
|
});
|
|||
|
}, 500);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
//Form序列化方法
|
|||
|
val: function (filter, formdate) {
|
|||
|
var element = $('div[lay-filter=' + filter + ']');
|
|||
|
if (!!formdate) {
|
|||
|
for (var key in formdate) {
|
|||
|
var $id = element.find('#' + key);
|
|||
|
var value = $.trim(formdate[key]).replace(/ /g, '');
|
|||
|
var type = $id.attr('type');
|
|||
|
if ($id.hasClass("select2-hidden-accessible")) {
|
|||
|
type = "select";
|
|||
|
}
|
|||
|
if ($id.find("input[type=radio]").length>0) {
|
|||
|
type = "radio";
|
|||
|
}
|
|||
|
switch (type) {
|
|||
|
case "checkbox":
|
|||
|
if (value == "true") {
|
|||
|
$id.attr("checked", 'checked');
|
|||
|
} else {
|
|||
|
$id.removeAttr("checked");
|
|||
|
}
|
|||
|
break;
|
|||
|
case "select":
|
|||
|
$id.val(value).trigger("change");
|
|||
|
break;
|
|||
|
case "radio":
|
|||
|
$("input[name=" + key + "][value=" + value + "]").prop("checked", "true");
|
|||
|
break;
|
|||
|
default:
|
|||
|
$id.val(value);
|
|||
|
break;
|
|||
|
}
|
|||
|
};
|
|||
|
return false;
|
|||
|
}
|
|||
|
var postdata = {};
|
|||
|
element.find('input,select,textarea').each(function (r) {
|
|||
|
var $this = $(this);
|
|||
|
var id = $this.attr('id');
|
|||
|
var type = $this.attr('type');
|
|||
|
switch (type) {
|
|||
|
case "checkbox":
|
|||
|
postdata[id] = $this.is(":checked");
|
|||
|
break;
|
|||
|
case "radio":
|
|||
|
postdata[id] = $this.is(":checked");
|
|||
|
break;
|
|||
|
default:
|
|||
|
var value = $this.val() == "" ? " " : $this.val();
|
|||
|
if (!$.request("keyValue")) {
|
|||
|
value = value.replace(/ /g, '');
|
|||
|
}
|
|||
|
postdata[id] = value;
|
|||
|
break;
|
|||
|
}
|
|||
|
});
|
|||
|
return postdata;
|
|||
|
},
|
|||
|
//父窗体刷新(按钮刷新)
|
|||
|
parentreload: function (filter) {
|
|||
|
obj.parentWindow().$('button[lay-filter="' + filter + '"]').click();
|
|||
|
},
|
|||
|
//父窗体
|
|||
|
parentWindow: function () {
|
|||
|
var index = parent.layer.getFrameIndex(window.name);
|
|||
|
if (window.top.iframesList) {
|
|||
|
return window.top.iframesList[index];
|
|||
|
}
|
|||
|
else {
|
|||
|
return null;
|
|||
|
}
|
|||
|
},
|
|||
|
//当前tab窗体
|
|||
|
currentWindow: function () {
|
|||
|
var iframes = top.$(".layui-show>iframe");
|
|||
|
if (iframes.length > 0) {
|
|||
|
return iframes[0].contentWindow;
|
|||
|
}
|
|||
|
else {
|
|||
|
return window.parent;
|
|||
|
}
|
|||
|
},
|
|||
|
//当前页刷新(按钮刷新)
|
|||
|
reload: function (filter) {
|
|||
|
$('button[lay-filter="' + filter + '"]').click();//按钮刷新
|
|||
|
},
|
|||
|
//下载方法
|
|||
|
download: function (url, data, method) {
|
|||
|
if (url && data) {
|
|||
|
data = typeof data == 'string' ? data : jQuery.param(data);
|
|||
|
var inputs = '';
|
|||
|
$.each(data.split('&'), function () {
|
|||
|
var pair = this.split('=');
|
|||
|
inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />';
|
|||
|
});
|
|||
|
$('<form action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>').appendTo('body').submit().remove();
|
|||
|
};
|
|||
|
},
|
|||
|
//设置Form只读
|
|||
|
setReadOnly: function (filter) {
|
|||
|
var readForm = layui.$('[lay-filter="' + filter + '"]');
|
|||
|
readForm.find('input,textarea,select').prop('disabled', true);
|
|||
|
readForm.find('input,textarea,select').removeAttr('lay-verify');
|
|||
|
readForm.find('.layui-layedit iframe').contents().find('body').prop('contenteditable', false);
|
|||
|
},
|
|||
|
//按钮权限(控制js模板,格式必须严格,新)
|
|||
|
authorizeButtonNew: function (innerHTML) {
|
|||
|
//行操作权限控制
|
|||
|
var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id");
|
|||
|
if (!moduleId) {
|
|||
|
moduleId = location.pathname;
|
|||
|
}
|
|||
|
var returnhtml = '';
|
|||
|
//没有就全清
|
|||
|
if (!top.clients || !top.clients.authorizeButton) {
|
|||
|
return returnhtml;
|
|||
|
}
|
|||
|
var dataJson = top.clients.authorizeButton[moduleId.split("?")[0]];
|
|||
|
if (innerHTML.indexOf('</button>') > -1) {
|
|||
|
var buttonHumanized = sessionStorage.getItem('watercloudButtonHumanized');
|
|||
|
var tempList = innerHTML.split('</button>');
|
|||
|
for (var i = 0; i < tempList.length; i++) {
|
|||
|
if (tempList[i].indexOf('<button ') > -1) {
|
|||
|
var itemList = tempList[i].split('<button ');
|
|||
|
returnhtml = returnhtml + itemList[0];
|
|||
|
if (itemList[1].indexOf(' authorize') == -1) {
|
|||
|
returnhtml = returnhtml + '<button ' + itemList[1] + '</button>';
|
|||
|
}
|
|||
|
else if (dataJson != undefined) {
|
|||
|
$.each(dataJson, function (i) {
|
|||
|
if (itemList[1].indexOf('id="' + dataJson[i].F_EnCode + '"') > -1) {
|
|||
|
returnhtml = returnhtml + '<button ' + itemList[1] + '</button>';
|
|||
|
return false;
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
if (!!buttonHumanized) {
|
|||
|
returnhtml = returnhtml.replace('layui-hide','');
|
|||
|
}
|
|||
|
if (itemList.length>2) {
|
|||
|
returnhtml = returnhtml + itemList[2];
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
returnhtml = returnhtml + tempList[i];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else if (innerHTML.indexOf('</a>') > -1){
|
|||
|
var tempList = innerHTML.split('</a>');
|
|||
|
for (var i = 0; i < tempList.length; i++) {
|
|||
|
if (tempList[i].indexOf('<a ') > -1) {
|
|||
|
var itemList = tempList[i].split('<a ');
|
|||
|
returnhtml = returnhtml + itemList[0];
|
|||
|
if (itemList[1].indexOf(' authorize') == -1) {
|
|||
|
returnhtml = returnhtml + '<a ' + itemList[1] + '</a>';
|
|||
|
}
|
|||
|
else if (dataJson != undefined) {
|
|||
|
$.each(dataJson, function (i) {
|
|||
|
if (itemList[1].indexOf('id="' + dataJson[i].F_EnCode + '"') > -1) {
|
|||
|
returnhtml = returnhtml + '<a ' + itemList[1] + '</a>';
|
|||
|
return false;
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
if (itemList.length > 2) {
|
|||
|
returnhtml = returnhtml + itemList[2];
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
returnhtml = returnhtml + tempList[i];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//去除隐藏
|
|||
|
//returnhtml = returnhtml.replace(/ layui-hide/g, '');
|
|||
|
return returnhtml;
|
|||
|
},
|
|||
|
//权限按钮(控制dom,只控制button,旧)
|
|||
|
authorizeButton: function (id) {
|
|||
|
var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id");
|
|||
|
if (!moduleId) {
|
|||
|
moduleId = location.pathname;
|
|||
|
}
|
|||
|
//没有就全清
|
|||
|
if (!top.clients || !top.clients.authorizeButton) {
|
|||
|
$element.find('button[authorize=yes]').attr('authorize', 'no');
|
|||
|
$element.find("[authorize=no]").parents('button').prev('.split').remove();
|
|||
|
$element.find("[authorize=no]").parents('button').remove();
|
|||
|
$element.find('[authorize=no]').remove();
|
|||
|
return false;
|
|||
|
}
|
|||
|
var dataJson = top.clients.authorizeButton[moduleId.split("?")[0]];
|
|||
|
var $element = $('#' + id);
|
|||
|
$element.find('button[authorize=yes]').attr('authorize', 'no');
|
|||
|
if (dataJson != undefined) {
|
|||
|
var buttonHumanized = sessionStorage.getItem('watercloudButtonHumanized');
|
|||
|
$.each(dataJson, function (i) {
|
|||
|
$element.find("#" + dataJson[i].F_EnCode).attr('authorize', 'yes');
|
|||
|
//去除隐藏
|
|||
|
if (!!buttonHumanized) {
|
|||
|
$element.find("#" + dataJson[i].F_EnCode).removeClass('layui-hide');
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
$element.find("[authorize=no]").parents('button').prev('.split').remove();
|
|||
|
$element.find("[authorize=no]").parents('button').remove();
|
|||
|
$element.find('[authorize=no]').remove();
|
|||
|
},
|
|||
|
//权限控制单个按钮,返回是否
|
|||
|
authorizeButtonOne: function (id) {
|
|||
|
var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id");
|
|||
|
if (!moduleId) {
|
|||
|
moduleId = location.pathname;
|
|||
|
}
|
|||
|
var isOk = false;
|
|||
|
if (!top.clients || !top.clients.authorizeButton || !top.clients.authorizeButton[moduleId.split("?")[0]]) {
|
|||
|
isOk = false;
|
|||
|
}
|
|||
|
else {
|
|||
|
var dataJson = top.clients.authorizeButton[moduleId.split("?")[0]];
|
|||
|
|
|||
|
for (var i = 0; i < dataJson.length; i++) {
|
|||
|
if (dataJson[i].F_EnCode == id) {
|
|||
|
isOk = true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (isOk) {
|
|||
|
$("#" + id).parent().removeClass('layui-hide');
|
|||
|
}
|
|||
|
else {
|
|||
|
$("#" + id).remove();;
|
|||
|
$("#" + id).parent().remove();;
|
|||
|
}
|
|||
|
return isOk;
|
|||
|
},
|
|||
|
//表单权限字段
|
|||
|
authorizeFields: function (filter) {
|
|||
|
var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id");
|
|||
|
if (!moduleId) {
|
|||
|
moduleId = location.pathname;
|
|||
|
}
|
|||
|
var element = $('div[lay-filter=' + filter + ']');
|
|||
|
//没有就全清
|
|||
|
if (!top.clients || !top.clients.moduleFields) {
|
|||
|
element.find('input,select,textarea').each(function (r) {
|
|||
|
$this.parent().parent().remove();
|
|||
|
});
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (!!top.clients.moduleFields[moduleId.split("?")[0]] && top.clients.moduleFields[moduleId.split("?")[0]] == true) {
|
|||
|
var dataJson = top.clients.authorizeFields[moduleId.split("?")[0]];
|
|||
|
element.find('input,select,textarea').each(function (r) {
|
|||
|
var $this = $(this);
|
|||
|
var id = $this.attr('id');
|
|||
|
$this.addClass('layui-hide');
|
|||
|
$this.attr('authorize', 'no');
|
|||
|
if (dataJson != undefined) {
|
|||
|
for (var i = 0; i < dataJson.length; i++) {
|
|||
|
if (id == dataJson[i].F_EnCode) {
|
|||
|
$this.parent().parent().removeClass('layui-hide');
|
|||
|
$this.removeClass('layui-hide');
|
|||
|
$this.attr('authorize', 'yes');
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
//dataJson.find(item => {
|
|||
|
// if (id == item.F_EnCode) {
|
|||
|
// $this.parent().parent().removeClass('layui-hide');
|
|||
|
// $this.removeClass('layui-hide');
|
|||
|
// }
|
|||
|
//});
|
|||
|
}
|
|||
|
});
|
|||
|
element.find('[authorize=no]').parent().parent().remove();
|
|||
|
}
|
|||
|
else {
|
|||
|
element.find('input,select,textarea').each(function (r) {
|
|||
|
var $this = $(this);
|
|||
|
$this.parent().parent().removeClass('layui-hide');
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
//iframe定时器方法
|
|||
|
iframeInterval:function(func, time){
|
|||
|
console.log("启动定时器", func, time);
|
|||
|
//点击iframe对应的标签则直接执行定时器方法。不过注意,这里我默认只执行最后一个定时器方法,如果有多个定时器请自行更改。
|
|||
|
top.$("li[lay-id='" + $(self.frameElement).attr("src") + "']").unbind('click').click(function () {
|
|||
|
console.log(func, "方法调用");
|
|||
|
func.call();
|
|||
|
});
|
|||
|
return setInterval(function () {
|
|||
|
console.log("定时器调用");
|
|||
|
if ($(self.frameElement.parentElement).hasClass("layui-show")) {
|
|||
|
//判断所在的页面是否显示
|
|||
|
console.log(func, "方法调用");
|
|||
|
console.log("定时器间隔" + time);
|
|||
|
func.call();
|
|||
|
}
|
|||
|
}, time);
|
|||
|
},
|
|||
|
//xmselect多选
|
|||
|
multipleSelectRender: function (options) {
|
|||
|
var defaults = {
|
|||
|
filterable: true,//搜索模式
|
|||
|
autoRow: true,//自动换行
|
|||
|
empty: '没有数据!',//空数据提示
|
|||
|
toolbar: { show: true },//工具栏
|
|||
|
remoteSearch: true,//远程搜索
|
|||
|
paging: true,//分页
|
|||
|
pageSize: 4,//分页大小
|
|||
|
direction: 'auto',//下拉方向
|
|||
|
data: [],
|
|||
|
prop: {
|
|||
|
name: 'text',
|
|||
|
value: 'id',
|
|||
|
},
|
|||
|
remoteMethod: function (val, cb, show) {
|
|||
|
//远程数据方法
|
|||
|
//val 搜索参数
|
|||
|
//cb data的值
|
|||
|
//show 执行完显示值
|
|||
|
}
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
return xmSelect.render(options);
|
|||
|
},
|
|||
|
//xmselect单选
|
|||
|
radioSelectRender: function (options) {
|
|||
|
var defaults = {
|
|||
|
filterable: true,//搜索模式
|
|||
|
toolbar: { show: true, list: ["CLEAR"] },//工具栏
|
|||
|
empty: '没有数据!',//空数据提示
|
|||
|
remoteSearch: true,//远程搜索
|
|||
|
paging: true,//分页
|
|||
|
pageSize: 4,//分页大小
|
|||
|
data: [],
|
|||
|
radio: true,//单选
|
|||
|
clickClose: true,//选择关闭
|
|||
|
direction: 'auto',//下拉方向
|
|||
|
prop: {
|
|||
|
name: 'text',
|
|||
|
value: 'id',
|
|||
|
},
|
|||
|
model: {
|
|||
|
icon: 'hidden',//图标隐藏
|
|||
|
label: {
|
|||
|
type: 'text'//显示
|
|||
|
}
|
|||
|
},
|
|||
|
remoteMethod: function (val, cb, show) {
|
|||
|
//远程数据方法
|
|||
|
//val 搜索参数
|
|||
|
//cb data的值
|
|||
|
//show 执行完显示值
|
|||
|
}
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
return xmSelect.render(options);
|
|||
|
},
|
|||
|
//ajax封装
|
|||
|
ajax: function (options) {
|
|||
|
var defaults = {
|
|||
|
dataType: "json",
|
|||
|
async: true,
|
|||
|
type: "GET"
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
//ie缓存问题
|
|||
|
options.url = obj.urlAddTime(options.url);
|
|||
|
return $.ajax(options);
|
|||
|
},
|
|||
|
//打开新Tab页签
|
|||
|
openNewTabByIframe: function (options) {
|
|||
|
var defaults = {
|
|||
|
title: "",
|
|||
|
href: "",
|
|||
|
checkOpen: true
|
|||
|
};
|
|||
|
var options = $.extend(defaults, options);
|
|||
|
if (options.checkOpen && miniTab.check(options.href.split("?")[0], true)) {
|
|||
|
obj.modalAlert("界面已打开,请关闭后重试", "warning");
|
|||
|
}
|
|||
|
miniTab.openNewTabByIframe({
|
|||
|
title: options.title,
|
|||
|
href: options.href
|
|||
|
});
|
|||
|
},
|
|||
|
//刷新tab Iframe
|
|||
|
reloadIframe: function (src, filter) {
|
|||
|
var iframes = top.$('.layui-tab-item>iframe[src="' + src + '"]');
|
|||
|
if (iframes.length>0) {
|
|||
|
iframes[0].contentWindow.$('button[lay-filter="' + filter + '"]').click();
|
|||
|
}
|
|||
|
},
|
|||
|
//url参数注入(//ie缓存问题)
|
|||
|
urlAddTime: function (url) {
|
|||
|
if (!!url) {
|
|||
|
if (url.indexOf("?") >= 0) {
|
|||
|
url = url+ '&v=' + new Date().Format("yyyy-MM-dd hh:mm:ss");
|
|||
|
}
|
|||
|
else {
|
|||
|
url = url + '?v=' + new Date().Format("yyyy-MM-dd hh:mm:ss");
|
|||
|
}
|
|||
|
return url;
|
|||
|
}
|
|||
|
else {
|
|||
|
return null;
|
|||
|
}
|
|||
|
},
|
|||
|
//表格权限字段(过滤cols)
|
|||
|
tableAuthorizeFields: function (cols) {
|
|||
|
var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id");
|
|||
|
if (!moduleId) {
|
|||
|
moduleId = location.pathname;
|
|||
|
}
|
|||
|
//没有权限就返回无
|
|||
|
if (!top.clients||!top.clients.moduleFields) {
|
|||
|
return [];
|
|||
|
}
|
|||
|
if (!!top.clients.moduleFields[moduleId.split("?")[0]] && top.clients.moduleFields[moduleId.split("?")[0]] == true) {
|
|||
|
var dataJson = top.clients.authorizeFields[moduleId.split("?")[0]];
|
|||
|
var array = [];
|
|||
|
$.each(cols[0], function (i) {
|
|||
|
//添加非常规列
|
|||
|
if (!!cols[0][i].type && cols[0][i].type != 'normal') {
|
|||
|
array.push(cols[0][i]);
|
|||
|
} else if (!cols[0][i].field && cols[0][i].title == "操作") {
|
|||
|
array.push(cols[0][i]);
|
|||
|
}
|
|||
|
if (!!dataJson) {
|
|||
|
for (var j = 0; j < dataJson.length; j++) {
|
|||
|
if (cols[0][i].field == dataJson[j].F_EnCode) {
|
|||
|
array.push(cols[0][i]);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
cols[0] = array;
|
|||
|
};
|
|||
|
//手机端去除固定列
|
|||
|
return obj.checkPhone(cols);
|
|||
|
},
|
|||
|
//treetable行点击事件及按钮显示控制
|
|||
|
treeTableRowClick: function (type, rendertree, tableId, oneList, moreList, clickfunction) {
|
|||
|
var oneList = !!oneList ? oneList : [];
|
|||
|
var moreList = !!moreList ? moreList : [];
|
|||
|
treeTable.on('row(' + tableId + ')', function (obj) {
|
|||
|
obj.tr.addClass("layui-table-click").siblings().removeClass("layui-table-click");
|
|||
|
obj.tr.find("div.layui-unselect.layui-form-" + type)[0].click();
|
|||
|
if (type == "radio") {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
if (clickfunction) {
|
|||
|
clickfunction(obj);
|
|||
|
}
|
|||
|
})
|
|||
|
//多选框监听
|
|||
|
treeTable.on(type + '(' + tableId + ')', function (obj) {
|
|||
|
var buttonHumanized = sessionStorage.getItem('watercloudButtonHumanized');
|
|||
|
//控制按钮
|
|||
|
var data = rendertree.checkStatus(false);
|
|||
|
if (!buttonHumanized) {
|
|||
|
if (obj.type == "all") {
|
|||
|
if (obj.checked && rendertree.options.data.length != 0) {
|
|||
|
if (rendertree.options.data.length > 1) {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
if (data.length > 1) {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
else if (data.length == 1) {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').addClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
for (var i = 0; i < oneList.length; i++) {
|
|||
|
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
for (var i = 0; i < moreList.length; i++) {
|
|||
|
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
//form参数过滤方法,值不存在直接删除
|
|||
|
removeEmpty: function (filter, formdate) {
|
|||
|
var element = $('div[lay-filter=' + filter + ']');
|
|||
|
if (!!formdate) {
|
|||
|
for (var key in formdate) {
|
|||
|
var $id = element.find('#' + key);
|
|||
|
if (!!$id && formdate[key] != 0 && formdate[key]!=false && !formdate[key]) {
|
|||
|
$id.parent().parent().remove();
|
|||
|
}
|
|||
|
};
|
|||
|
return false;
|
|||
|
}
|
|||
|
},
|
|||
|
checkPhone:function (cols) {
|
|||
|
var sUserAgent = navigator.userAgent.toLowerCase();
|
|||
|
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
|
|||
|
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
|
|||
|
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
|
|||
|
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
|
|||
|
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
|
|||
|
var bIsAndroid = sUserAgent.match(/android/i) == "android";
|
|||
|
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
|
|||
|
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
|
|||
|
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
|
|||
|
//跳转移动端页面
|
|||
|
$.each(cols[0], function (i) {
|
|||
|
delete cols[0][i].fixed;
|
|||
|
});
|
|||
|
return cols;
|
|||
|
} else {
|
|||
|
//跳转pc端页面
|
|||
|
return cols;
|
|||
|
}
|
|||
|
}
|
|||
|
//表格单元格自动列宽
|
|||
|
//tableResize: function (id) {
|
|||
|
// //动态监听表头高度变化,冻结行跟着改变高度
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-header tr").resize(function () {
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-header tr").each(function (index, val) {
|
|||
|
// $($("div [lay-id='" + id + "'] .layui-table-fixed .layui-table-header table tr")[index]).height($(val).height());
|
|||
|
// });
|
|||
|
// });
|
|||
|
// //初始化高度,使得冻结行表头高度一致
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-header tr").each(function (index, val) {
|
|||
|
// $($("div [lay-id='" + id + "'] .layui-table-fixed .layui-table-header table tr")[index]).height($(val).height());
|
|||
|
// });
|
|||
|
// //动态监听表体高度变化,冻结行跟着改变高度
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-main tr").resize(function () {
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-body tr").each(function (index, val) {
|
|||
|
// $($("div [lay-id='" + id + "'] .layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
|
|||
|
// });
|
|||
|
// });
|
|||
|
// //初始化高度,使得冻结行表体高度一致
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-main tr").each(function (index, val) {
|
|||
|
// $($("div [lay-id='" + id + "'] .layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
|
|||
|
// });
|
|||
|
|
|||
|
// //初始化滚动条
|
|||
|
// $("div [lay-id='" + id + "'] .layui-table-fixed .layui-table-body").animate({ scrollTop: $("div [lay-id='" + id + "'] .layui-table-main").scrollTop() }, 0);
|
|||
|
//},
|
|||
|
}
|
|||
|
exports("common", obj);
|
|||
|
});
|