/**
* 模块名:基础脚本
* 程序名: 项目方法封装函数
**/
//属性
var com = com || {};
$.extend(com, {
/**
* 调试或发布状态
*/
config: {
isDebug: true
},
/**
* 服务层api访问s根地址
*/
baseUrl: '/api/services/app',
json: {}
});
//扩展方法
$.extend(com, {
/**
* datagrid行内编辑封装
* @param {element} grid $('#dgGrid')
* @returns {Object<>} 当前对象实例
*/
EditGridViewModel: function (grid) {
var self = this;
this.begin = function (index, row) {
if (index == undefined || typeof index === 'object') {
row = grid.datagrid('getSelected');
index = grid.datagrid('getRowIndex', row);
}
self.editIndex = self.ended() ? index : self.editIndex;
grid.datagrid('selectRow', self.editIndex).datagrid('beginEdit', self.editIndex);
};
this.ended = function () {
if (self.editIndex == undefined) return true;
if (grid.datagrid('validateRow', self.editIndex)) {
grid.datagrid('endEdit', self.editIndex);
self.editIndex = undefined;
return true;
}
grid.datagrid('selectRow', self.editIndex);
return false;
};
this.addnew = function (rowData) {
if (self.ended()) {
if (Object.prototype.toString.call(rowData) != '[object Object]') rowData = {};
rowData = $.extend({ _isnew: true }, rowData);
grid.datagrid('appendRow', rowData);
self.editIndex = grid.datagrid('getRows').length - 1;
grid.datagrid('selectRow', self.editIndex);
self.begin(self.editIndex, rowData);
}
};
this.deleterow = function () {
var selectRow = grid.datagrid('getSelected');
if (selectRow) {
var selectIndex = grid.datagrid('getRowIndex', selectRow);
if (selectIndex == self.editIndex) {
grid.datagrid('cancelEdit', self.editIndex);
self.editIndex = undefined;
}
grid.datagrid('deleteRow', selectIndex);
}
};
/**
* addnew 多行之后 若是出现删除bug,可在addnew 之后 调用 grid.datagrid('clearSelections');
*/
this.deleteallrows = function () {
var rows = grid.datagrid('getSelections');
var selectRows = rows.concat();
if (selectRows.length) {
for (var i in selectRows) {
if (selectRows.hasOwnProperty(i)) {
var selectIndex = grid.datagrid('getRowIndex', selectRows[i]);
if (selectIndex == self.editIndex) {
grid.datagrid('cancelEdit', self.editIndex);
self.editIndex = undefined;
}
grid.datagrid('deleteRow', selectIndex);
}
}
grid.datagrid('clearSelections');
return true;
}
grid.datagrid('clearSelections');
return false;
};
this.reject = function () {
grid.datagrid('rejectChanges');
};
this.accept = function () {
grid.datagrid('acceptChanges');
var rows = grid.datagrid('getRows');
for (var i in rows) delete rows[i]._isnew;
};
this.getChanges = function (include, ignore) {
if (!include) include = [], ignore = true;
var deleted = com.filterProperties(grid.datagrid('getChanges', "deleted"), include, ignore),
updated = com.filterProperties(grid.datagrid('getChanges', "updated"), include, ignore),
inserted = com.filterProperties(grid.datagrid('getChanges', "inserted"), include, ignore);
var changes = { deleted: deleted, inserted: com.minusArray(inserted, deleted), updated: com.minusArray(updated, deleted) };
changes._changed = (changes.deleted.length + changes.updated.length + changes.inserted.length) > 0;
return changes;
};
this.isChangedAndValid = function () {
return self.ended() && self.getChanges()._changed;
};
this.isValid = function () {
return self.ended();
}
},
/**
* treegrid行内编辑封装、此方法请在treeGrid的onLoadSuccess方法中写,不然会出错,得不到options中的idField
*/
EditTreeGridViewModel: function (grid) {
var self = this, option = grid.treegrid('options'), idField = option.idField;
this.begin = function (row) {
row = row || grid.treegrid('getSelected');
if (row) {
self.editIndex = self.ended() ? row[idField] : self.editIndex;
grid.treegrid('beginEdit', self.editIndex);
}
};
this.ended = function () {
if (self.editIndex == undefined) return true;
if (grid.treegrid('validateRow', self.editIndex)) {
grid.treegrid('endEdit', self.editIndex);
self.editIndex = undefined;
return true;
}
grid.treegrid('select', self.editIndex);
return false;
};
this.addnew = function (rowData, parentId) {
if (self.ended()) {
if (Object.prototype.toString.call(rowData) != '[object Object]') rowData = {};
rowData = $.extend({ _isnew: true }, rowData), parentId = parentId || '';
if (!rowData[idField]) {
if (rowData.Id == null || rowData.Id == undefined) {//随机生成的id不是int型
rowData[idField] = com.uuid();
} else {
rowData[idField] = rowData.Id;
}
}
grid.treegrid('append', { parent: parentId, data: [rowData] });
//grid.$element().data("datagrid").insertedRows.push(rowData);
grid.treegrid('select', rowData[idField]);
self.begin(rowData);
}
};
this.deleterow = function () {
var row = grid.treegrid('getSelected');
if (row) {
if (row[idField] == self.editIndex) {
grid.treegrid('cancelEdit', self.editIndex);
self.editIndex = undefined;
}
grid.treegrid('remove', row[idField]);
grid.$element().data("datagrid").deletedRows.push(row);
}
};
this.reject = function () {
throw "未实现此方法!";
};
this.accept = function () {
grid.treegrid('acceptChanges');
var rows = grid.$element().datagrid('getRows');
for (var i in rows) delete rows[i]._isnew;
};
this.getChanges = function (include, ignore) {
if (!include) include = [], ignore = true;
var deleted = com.filterProperties(grid.datagrid('getChanges', "deleted"), include, ignore),
updated = com.filterProperties(grid.datagrid('getChanges', "updated"), include, ignore),
inserted = com.filterProperties(grid.datagrid('getChanges', "inserted"), include, ignore);
var changes = { deleted: deleted, inserted: com.minusArray(inserted, deleted), updated: com.minusArray(updated, deleted) };
changes._changed = (changes.deleted.length + changes.updated.length + changes.inserted.length) > 0;
return changes;
};
this.isChangedAndValid = function () {
return self.ended() && self.getChanges()._changed;
};
},
/**
* json格式转树状结构
*/
// * @param {json} json数据
// * @param {String} id的字符串
// * @param {String} 父id的字符串
// * @param {String} children的字符串
// * @return {Array} 数组
toTreeData: function (a, idStr, pidStr, childrenStr) {
var r = [], hash = {}, len = (a || []).length;
for (var i = 0; i < len; i++) {
hash[a[i][idStr]] = a[i];
}
for (var j = 0; j < len; j++) {
var aVal = a[j], hashVP = hash[aVal[pidStr]];
if (hashVP) {
!hashVP[childrenStr] && (hashVP[childrenStr] = []);
hashVP[childrenStr].push(aVal);
} else {
r.push(aVal);
}
}
return r;
},
eachTreeRow: function (treeData, eachHandler) {
for (var i in treeData) {
if (eachHandler(treeData[i]) == false) break;
if (treeData[i].children)
com.eachTreeRow(treeData[i].children, eachHandler);
}
},
isInChild: function (treeData, pid, id) {
var isChild = false;
com.eachTreeRow(treeData, function (curNode) {
if (curNode.id == pid) {
com.eachTreeRow([curNode], function (row) {
if (row.id == id) {
isChild = true;
return false;
}
});
return false;
}
});
return isChild;
},
compareObject: function (v1, v2) {
var countProps = function (obj) {
var count = 0;
for (k in obj) if (obj.hasOwnProperty(k)) count++;
return count;
};
if (typeof (v1) !== typeof (v2)) {
return false;
}
if (typeof (v1) === "function") {
return v1.toString() === v2.toString();
}
if (v1 instanceof Object && v2 instanceof Object) {
if (countProps(v1) !== countProps(v2)) {
return false;
}
var r = true;
for (k in v1) {
r = com.compareObject(v1[k], v2[k]);
if (!r) {
return false;
}
}
return true;
} else {
return v1 === v2;
}
},
minusArray: function (arr1, arr2) {
var arr = [];
for (var i in arr1) {
var b = true;
for (var j in arr2) {
if (com.compareObject(arr1[i], arr2[j])) {
b = false;
break;
}
}
if (b) {
arr.push(arr1[i]);
}
}
return arr;
},
filterProperties: function (obj, props, ignore) {
var ret;
if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
ret = [];
for (var k in obj) {
if (obj.hasOwnProperty(k)) {
ret.push(com.filterProperties(obj[k], props, ignore));
}
}
}
else if (typeof obj === 'object') {
ret = {};
if (ignore) {
var map = {};
for (var k in props) {
if (props.hasOwnProperty(k)) {
map[props[k]] = true;
}
}
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
if (!map[i]) ret[i] = obj[i];
}
}
}
else {
for (var i in props) {
if (props.hasOwnProperty(i)) {
if (typeof props[i] == 'function') continue;
var arr = props[i].split(" as ");
ret[arr[1] || arr[0]] = obj[arr[0]];
}
}
}
}
else {
ret = obj;
}
return ret;
},
copyProperty: function (obj, sourcePropertyName, newPropertyName, overWrite) {
if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
for (var k in obj)
com.copyProperty(obj[k], sourcePropertyName, newPropertyName);
}
else if (typeof obj === 'object') {
if (sourcePropertyName instanceof Array || Object.prototype.toString.call(sourcePropertyName) === "[object Array]") {
for (var i in sourcePropertyName) {
com.copyProperty(obj, sourcePropertyName[i], newPropertyName[i]);
}
}
else if (typeof sourcePropertyName === 'string') {
if ((obj[newPropertyName] && overWrite) || (!obj[newPropertyName]))
obj[newPropertyName] = obj[sourcePropertyName];
}
}
return obj;
},
functionComment: function (fn) {
return fn.toString().replace(/^.*\r?\n?.*\/\*|\*\/([.\r\n]*).+?$/gm, '');
},
/**
* 生成随机guid值
* @returns {}
*/
uuid: function () {
var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
var h = a, e = [], d = Math.random;
var g;
e[8] = e[13] = e[18] = e[23] = "-";
e[14] = "4";
for (var c = 0; c < 36; c++) {
if (!e[c]) {
g = 0 | d() * 16; e[c] = h[(c == 19) ? (g & 3) | 8 : g & 15];
}
}
return e.join("").toLowerCase();
},
loadAbp:function(data) {
var result;
if (data.__abp === true) {
result = data.result;
} else {
result = data;
}
return result;
}
});
(function () {
function newIframe(url) {
var ifrStr = "<iframe src='" + url + "' frameborder=0 style='width:100%;height:99%;border:0' ></iframe>";
return ifrStr;
}
//项目通用操作方法
$.extend(com,
{
status: {
tempSave: 0,
submit: 1,
release: 2,
audited: 3,
notPassAudited: 4,
'defriend': 5,
deleted: 6,
enable: 7,
forbidden: 8
},
statusCombox: [{
id: '0',
text: '暂存'
}, {
id: '1',
text: '已提交'
}, {
id: '2',
text: '发布'
}, {
id: '3',
text: '审核通过'
}, {
id: '4',
text: '审核不通过'
}, {
id: '5',
text: '拉黑'
}, {
id: '6',
text: '删除'
}, {
id: '7',
text: '启用'
}, {
id: '8',
text: '禁用'
}],
/**
*
* @param {String} val
* @param {String} objMsg
* @example
* val 为 ture 'true' 1 是显示文本 '是'
* var objMsg = {
"success": {
text: "是",
'case': [true, 'true', 1]
},
"danger": {
text: "否",
'case': [false, 'false', 0]
}
};
*/
formatMsg: function (val, objMsg) {
var text = "数据为空", labelClass = 'warning';
$.each(objMsg,
function (i, v) {
if (objMsg.hasOwnProperty(i)) {
$.each(v['case'],
function (j, caseValue) {
if (v['case'].hasOwnProperty(j)) {
if (val == caseValue) {
text = v.text;
labelClass = i;
return false;
}
}
});
}
});
return $.string.format('<span class="label label-{0}">{1}</span>', labelClass, text);
},
/**
* 将true/false 转为文本 是/否
* @param {String/Int/boolean} value
*/
formatYes: function (value) {
var objMsg = {
"success": {
text: "是",
'case': [true, 'true', 1]
},
"danger": {
text: "否",
'case': [false, 'false', 0]
}
};
return com.formatMsg(value, objMsg);
},
formatEnable: function (value) {
var objMsg = {
"success": {
text: "启用",
'case': [true, 'true', 1]
},
"danger": {
text: "禁用",
'case': [false, 'false', 0]
}
};
return com.formatMsg(value, objMsg);
},
formatStatus: function (value) {
var status = com.statusCombox;
var labelClass = ['success', "danger", "default", "primary", "info","warning"];
var i = 0;
var objMsg = {};
while (i < status.length) {
if (objMsg[labelClass[i % 6]] != undefined) {
objMsg[labelClass[i % 6]].case.push(status[i].id);
} else {
objMsg[labelClass[i % 6]] = {
'text': status[i].text,
'case': [status[i].id]
};
}
i++;
}
return com.formatMsg(value+"", objMsg);
},
dialog: function (options) {
var query = $, fnClose = options.onClose;
var uuid = 'dd' + com.uuid();
var opts = $.extend({
modal: true,
id: uuid,
cache: true,
collapsible: true,
maximizable: true,
html: '',
url: '',
viewModel: query.noop,
onLoadError: function () {
abp.message.warn("发生了异常的错误,请尝试重新打开!");
}
},
options);
opts.onClose = function () {
if (query.isFunction(fnClose)) fnClose();
query(this).dialog('destroy');
};
if (query.isFunction(opts.html))
opts.html = com.functionComment(opts.html);
else if (/^\#.*\-template$/.test(opts.html))
opts.html = $(opts.html).html();
var win = query('<div></div>').appendTo('body').html(opts.html);
if (opts.url)
query.ajax({ async: false, url: opts.url, success: function (d) { win.empty().html(d); } });
var closeBtns = {
text: '关闭',
iconCls: 'icon-cancel',
handler: function () {
$('#' + uuid).dialog('close');
}
};
if (opts.buttons && opts.buttons.length > 0) {
opts.buttons.push(closeBtns);
} else {
opts.buttons = [closeBtns];
}
var windowHeight = $(window).height();
var windowWidth = $(window).width();
if (opts.height > windowHeight) {
opts.height = windowHeight;
}
if (opts.width > windowWidth) {
opts.width = windowWidth;
}
win.dialog(opts);
query.parser.onComplete = function () {
opts.viewModel(win);
query.parser.onComplete = query.noop;
};
query.parser.parse(win);
return win;
},
/**
* 将dialog的按钮置为禁用或者启用,防止多次提交
*/
setBusy: function (dialogModal, isOn) {
if (isOn) {
dialogModal.parent().find(".dialog-button").hide();
} else {
dialogModal.parent().find(".dialog-button").show();
}
},
filter: function (formElement, gridElemnt, paramsOrCallback) {
var data = $(formElement).formSerialize();
if (typeof (paramsOrCallback) == "object") {
if (!!paramsOrCallback) {
data = $.extend(data, paramsOrCallback);
}
} else {
if ($.isFunction(paramsOrCallback)) {
var params = paramsOrCallback(data);
if (!!params) {
data = $.extend(data, params);
}
}
}
var grid = $(gridElemnt);
if (grid.datagrid('options').treeField === undefined) {
grid.datagrid('unselectAll');
grid.datagrid('load', data);
} else {
grid.treegrid('options').queryParams = data;
grid.treegrid('reload');
}
},
refreshTab: function (title) {
if (title == undefined || title == "") {
var currentTab = top.$('#centerTabs').tabs('getSelected');
var url = $($(currentTab.panel('options')).attr('content')).attr('src');
top.$('#centerTabs').tabs('update',
{
tab: currentTab,
options: {
href: url
}
});
currentTab.panel('refresh');
return;
}
var tab = top.$('#centerTabs').tabs('getTab', title);
top.$('#centerTabs').tabs("update",
{
tab: tab,
options: tab.panel('options')
});
},
createTab: function (node) {
var text = node.text;
var url = node.attributes.url;
if (top.$('#centerTabs').tabs("exists", text)) {
top.$('#centerTabs').tabs("select", text);
} else {
//新增tab页时,加载进度条
$.messager.progress({
text: '页面加载中....',
interval: 100
});
window.setTimeout(function () {
$.messager.progress('close');
},
1000);
top.$('#centerTabs').tabs('add',
{
title: text,
content: newIframe(url),
closable: true,
iconCls: node.iconCls
});
}
},
/**
* 关闭当前的tabs
*/
closeCurrentTab: function () {
var tab = top.$('#centerTabs').tabs('getSelected'); //获取当前选中tabs
var index = top.$('#centerTabs').tabs('getTabIndex', tab); //获取当前选中tabs的index
top.$('#centerTabs').tabs('close', index); //关闭对应index的tabs
},
/**
* 编辑前统一提示信息,当Id为0时,说明未选中任何记录,其他时,将Id,作为回调函数的参数
* @param {String} element '#dgGrid'
* @param {Function} callback 回调函数 function(id){} id为当前选中的id;node:当前数据记录
* @returns {}
*/
edit: function (element, callback) {
if (!element) {
element = '#dgGrid';
}
var $grid = $(element);
var node = $grid.datagrid('getSelected');
if (!node) {
abp.message.warn('在操作之前,请先选中一条记录!');
} else {
callback(node.Id, node);
}
},
/**
*
* @param {} backendService 后台abp接口服务
* @param {String} element 要操作的列表id
* @param {String} message 自定义删除提示信息(默认为"您确认删除这条记录吗?”)
* @param {String} deleteService 后台删除方法名(默认为"delete")
* @returns {}
*/
deleted: function (backendService, element, message, deleteService) {
var id = 0;
if (!element) {
element = '#dgGrid';
}
var template = '<span style="font-weight:bold;">{0}</span>';
if (!message) {
message = '您确认删除这条记录吗?';
}
if (!deleteService) {
deleteService = "delete";
}
var showMessage = $.string.format(template, message);
id = com.getSelectId(element);
if (!id) {
abp.message.warn('在操作之前,请先选中一条记录!');
} else {
abp.message.confirm(showMessage,
'系统提示',
function (r) {
if (r) {
backendService[deleteService](id).done(function () {
abp.message.success('删除成功');
com.btnRefresh(element);
});
}
});
}
},
/**
*
* @param {} element
*/
getSelectId: function (element) {
if (!element) {
element = '#dgGrid';
}
var id = 0;
var $grid = $(element);
var node = $grid.datagrid('getSelected');
if (node != null) {
id = node.Id;
}
return id;
},
btnRefresh: function (element) {
if (!element) {
element = '#dgGrid';
}
var $grid = $(element);
if ($grid.datagrid('options').treeField === undefined) {
$grid.datagrid('reload').datagrid('clearSelections');
} else {
$grid.treegrid('load').treegrid('unselectAll');
}
},
setForm: function (id, callback, isLoad, url, pDialog) {
if (id == undefined) {
id = 0;
}
if (isLoad == undefined) {
isLoad = true;
}
if (url == undefined) {
url = 'GetInfoForEdit?Id=' + id;
} else {
url = url + '?Id=' + id;
}
var elemForm;
if (pDialog == undefined) {
elemForm = $('#editForm');
} else {
elemForm = pDialog.find('#editForm');
}
abp.ajax(
{
url: url,
success: function (data) {
if (isLoad === true) {
elemForm.form('load', data);
}
callback && callback(data);
},
showLoading: false
});
},
depJsTree: function (opts) {
var depService = abp.services.app.organizationUnit;
return depService.getComBoTreeJson(false,
{
showLoading: false
}).done(function (dataJson) {
opts.data = dataJson;
$('#depTree').tree(opts);
});
},
nofind: function (img) {
img.src = "/Content/images/user.png";
img.onerror = null; //如果错误图片也不存在就会死循环一直跳
},
loadSwithButton: function (pDialog, data) {
var switchArray = pDialog.find('#editForm').find('input.easyui-switchbutton.switchbutton-f');
$.each(switchArray,
function (i, v) {
var id = $(v).attr('id');
if (data && data.hasOwnProperty(id)) {
pDialog.find('#' + id)
.switchbutton((data[id] === true || data[id] === 1) ? 'check' : 'uncheck');
}
});
},
loadCityPicker: function (e, province, city, district) {
if (province) {
e.citypicker({
province: province,
city: city || "",
district: district || ""
});
} else {
e.citypicker();
}
$('.city-picker-span').css("width", "270px");
},
formatAddress: function (row, arrayData) {
var result = '';
if (arrayData && arrayData.length > 0) {
$.each(arrayData,
function (i, v) {
if (v != null && v != "") {
result += row[v] + "-";
}
});
}
result = result.substring(0, result.length - 1);
return result;
},
loadCheckBox: function (element, data) {
var checkboxArray = $(element).find('input.easyui-checkbox');
$.each(checkboxArray,
function (i, v) {
var id = $(v).attr('id');
if (data && data.hasOwnProperty(id)) {
$(element).find('#' + id)
.checkbox((data[id] === true || data[id] === 1) ? 'check' : 'uncheck');
}
});
},
selectIcon: function (formId) {
com.dialog({
id: "select-icon",
title: '选取图标',
href: '/Admin/SysMenu/Icon',
width: "1000",
height: "70%"
});
},
/**
* 默认不清空Id的数据
* @param {} formElement form表单element
* @param {} gridElement grid列表的element
* @param {} paramsOrCallback 额外的参数或者回调函数
* @returns {}
*/
clear: function (formElement, gridElement, paramsOrCallback) {
com.clearById("Id", formElement, gridElement, paramsOrCallback);
},
/**
* 清空Id以外的所有文本框的值
* @param {} id 不清空字段
* @param {} formElement
* @param {} gridElement
* @param {} paramsOrCallback
* @returns {}
*/
clearById: function (id, formElement, gridElement, paramsOrCallback) {
var grid = $(gridElement);
$(formElement).form('clear');
com.json = {}; //清空数据
if (grid.datagrid('options').treeField === undefined) {
grid.datagrid('unselectAll');
if (typeof (paramsOrCallback) == "object") {
if (!!paramsOrCallback) {
com.json = $.extend(com.json, paramsOrCallback);
}
} else {
if ($.isFunction(paramsOrCallback)) {
var params = paramsOrCallback(com.json);
if (!!params) {
com.json = $.extend(com.json, params);
}
}
}
grid.datagrid('load', com.json);
} else {
grid.treegrid('options').queryParams = com.json;
grid.treegrid('reload');
}
$(formElement).find('.select-item').html("");
$(formElement).find('.title').html("");
$(formElement).find('.placeholder').show();
},
/**
* 控制按钮的授权
* @param {Array} toolbar 当前菜单对应的按钮权限
* @returns {Array} 返回当前用户拥有的按钮权限
* @example var baseEnCode = "Admin.OrganizationUnit.";
var toolbar = [
{ 'text': '刷新', iconCls: 'icon-reload', handler: function() { com.btnRefresh(dgTreeGridId); },EnCode:baseEnCode+'GetTreeGrid' },
{ 'text': '新增', iconCls: 'icon-add', handler: gridUI.btnAdd, EnCode: baseEnCode + 'Add' },
{ 'text': '编辑', iconCls: 'icon-edit', handler: gridUI.btnEdit, EnCode: baseEnCode + 'Edit'},
{ 'text': '删除', iconCls: 'icon-remove', handler: gridUI.btnDelete, EnCode: baseEnCode + 'Delete' }
];
toolbar = com.authorizeButton(toolbar);
*/
authorizeButton: function (toolbar) {
var grantedPermissions = abp.auth.grantedPermissions;
var newToolbar = [];
if (grantedPermissions && toolbar && toolbar.length > 0) {
newToolbar = toolbar.filter(function (v) {
var hasPermssion = grantedPermissions[v.EnCode];
return v.EnCode == undefined || grantedPermissions[v.EnCode];
});
}
return newToolbar;
},
/**
* 去除表单中所有按钮,并且将所有文本框置为禁用
* @param {} dom jquery对象
* @param {Boolean} hasButton
* @example com.ignoreEle($('#editForm'));
*/
ignoreEle: function (dom, hasButton) {
if (hasButton == undefined||hasButton==false) {
/**
* 删除除关闭外的其他按钮
*/
dom.find('.dialog-button,.datagrid-toolbar').find('a').each(function (r) {
if ($(this).text().trim() != '关闭') {
$(this).remove();
}
});
dom.find('button.btn').each(function (r) {
if ($(this).text().trim() != '关闭') {
$(this).remove();
}
});
dom.parent().parent().find('.dialog-button').find('a').each(function (r) {
if ($(this).text().trim() != '关闭') {
$(this).remove();
}
});
}
dom.find('input,select,textarea').not('input[type=hidden]').each(function (r) {
var $this = $(this);
var name = $this.attr('id');
try {
$this.combobox('disable');
} catch (e) {
}
switch (true) {
case $this.is("[class*=easyui-textbox]"):
$this.textbox('disable');
break;
case $this.is("[class*=easyui-switchbutton]"):
$this.switchbutton('disable');
break;
case $this.is("[class*=easyui-combobox]"):
$this.combo('disable');
break;
case $this.is("[class*=easyui-numberbox]"):
$this.numberbox('disable');
break;
default:
$this.css('border', 'none');
$this.attr('disabled', 'disabled');
$this.attr('readonly', 'readonly');
break;
}
});
},
/**
* 以Post形式打开新页面,可传递参数
* @param {string}url
* @param {Object}formData
*/
openPostWindow: function (url, formData) {
var tempForm = document.createElement("form");
tempForm.id = "tempForm1";
tempForm.method = "post";
tempForm.action = url;
tempForm.target = "_blank";
$.each(formData,
function (i, v) {
var hideInput1 = document.createElement("input");
hideInput1.type = "hidden";
hideInput1.name = i; //后台要接受这个参数来取值
hideInput1.value = v; //后台实际取到的值
tempForm.appendChild(hideInput1);
});
if (document.all) {
tempForm.attachEvent("onsubmit", function () { }); //IE
} else {
var subObj = tempForm.addEventListener("submit", function () { }, false); //firefox
}
document.body.appendChild(tempForm);
if (document.all) {
tempForm.fireEvent("onsubmit");
} else {
tempForm.dispatchEvent(new Event("submit"));
}
tempForm.submit();
document.body.removeChild(tempForm);
},
/**
* 得到IE浏览器的版本号
* @returns {string} 7/8/9/10/6/edge/11/-1 -1非ie浏览器
*/
IEVersion: function () {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIe = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIe; //判断是否IE的Edge浏览器
var isIe11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
if (isIe) {
var reIe = new RegExp("MSIE (\\d+\\.\\d+);");
reIe.test(userAgent);
var fIeVersion = parseFloat(RegExp["$1"]);
if (fIeVersion == 7) {
return 7;
} else if (fIeVersion == 8) {
return 8;
} else if (fIeVersion == 9) {
return 9;
} else if (fIeVersion == 10) {
return 10;
} else {
return 6; //IE版本<=7
}
} else if (isEdge) {
return 'edge'; //edge
} else if (isIe11) {
return 11; //IE11
} else {
return -1; //不是ie浏览器
}
},
formatCombobox: function (value, key) {
var objSpan = {};
$.each(com[key],
function (i, v) {
objSpan[v.id] = v.text;
});
return objSpan[value];
},
formatDate: function (value, row) {
if (value != null && value != "") {
return value.split(' ')[0];
} else {
return "";
}
},
/**
* 限制自定义上传格式
*/
accept: {
excel: {
title: 'excel',
extensions: 'xls,xlsx,csv',
mimeTypes: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,.csv'
},
txt: {
title: 'txt',
extensions: 'txt',
mimeTypes: 'text/plain'
},
spss: {
title: 'spss',
extensions: 'sav',
mimeTypes: '.sav'
}
},
enumsToCombox: function (data) {
var dataArray = [];
$.each(data,
function (i, v) {
dataArray.push({
id: v.id,
text: v.text
});
});
return dataArray;
},
guid: {
empty: "00000000-0000-0000-0000-000000000000"
},
/**
* 将表格导出成excel
* @param {string} elemId 表格选择器
* @param {string} newName 导出的新表格名称
*/
exportExcel: function (elemId, newName) {
if (newName == undefined) {
newName = com.uuid();
}
$(elemId).table2excel({
name: newName,
exclude: '.noExl',
filename: newName,
exclude_img: true,
exclude_links: true,
exclude_inputs: true
});
},
/**
* 将表格导出成word
* @param {string} tableElem 表格选择器
* @param {string} newFileName 导出的excel的文件名
*/
exportWord: function (tableElem, newFileName) {
var style = '<style>table{ width:100%;text-align:center;}\
table, th, td\
{\
border: 1px solid blue;\
}\
table\
{\
border-collapse: collapse;\
}\
table, th, td\
{\
border: 1px solid black;\
}' +
'.layui-layer-content { padding: 30px; }\
.table > thead: first-child > tr: first-child > td { border-top: 1px solid #d0d0d0; border-bottom: 1px solid #d0d0d0; }\
.table > tbody > tr > td, .table > thead > tr > td { padding: 12px; border-left: 1px solid #d0d0d0; border-top: 1px solid #d0d0d0; }\
.table: last-child { border-left: none; border-right: 1px solid #d0d0d0; }\
.table > tbody > tr.border-bottom > td { border-bottom: 1px solid #d0d0d0; }\
.table > thead > tr { background-color: #d4ebf1; font-weight: bold; }\
.table-head { padding-right: 17px; color: #000; }\
.table-body { width: 100%; height: 394px;}\
.table-head table, .table-body table { width: 100 %; }</style> ';
var tempRows = "";
$(tableElem +'>tbody>tr,'+tableElem+'>thead>tr').not('.noExl').each(function (i, p) {
tempRows += "<tr>";
$(p).children("td,th").not('.noExl').each(function (i, q) {
var rc = {
rows: $(this).attr("rowspan"),
cols: $(this).attr("colspan"),
flag: $(q).find('.noExl')
};
if (rc.flag.length > 0) {
tempRows += "<td> </td>"; // exclude it!!
} else {
if (rc.rows & rc.cols) {
tempRows += "<td>" + $(q).html() + "</td>";
} else {
tempRows += "<td";
if (rc.rows > 0) {
tempRows += " rowspan=\'" + rc.rows + "\' ";
}
if (rc.cols > 0) {
tempRows += " colspan=\'" + rc.cols + "\' ";
}
tempRows += "/>" + $(q).html() + "</td>";
}
}
});
tempRows += "</tr>";
});
com.openPostWindow('/File/ExportDoc',
{
tableHtml: style + "<table>" + tempRows+"</table>",
newFileName: newFileName
});
},
exportGrid: function (dgGridId, isAll) {
var opts = $(dgGridId).datagrid('options');
if (isAll == undefined) { isAll = true; }
var eventData = $.fn.datagrid.extensions.parseContextMenuEventData($(dgGridId), opts, null);
$.messager.progress();
setTimeout(function () {
$.messager.progress('close');
},
1000);
$('#searchForm').form('submit', {
url: opts.exportUrl,
onSubmit: function (param) {
param.page = eventData.page;
param.rows = eventData.pageSize;
param.sort = eventData.sort;
param.order = eventData.order;
param.isAll = isAll;
},
success: function () {
}
});
//alert("导出" + (isAll ? "全部" : "当前页") + "数据");
},
/**
* 导入excel文件
* @param {string} excelName excel的文件名无后缀
* @param {string} importUrl 导入文件的后台地址
* @param {Object}extendParams 上传文件时,增加其他参数传递
* @param {function} callback 上传成功后,点击确认按钮的回调事件
*/
btnImport: function (excelName, importUrl, extendParams,callback) {
var pDialog = com.dialog({
title: "导入",
width: '620',
height: '320',
href: "/File/ImportDetailModal?excelName=" + encodeURIComponent(excelName),
buttons: [{
text: '确认',
iconCls: 'icon-ok',
handler: function () {
var fileToken = GetFilesAddress();
if (fileToken == "") {
abp.message.warn('请先选择导入的文件!');
return;
}
com.setBusy(pDialog, true);
var params = {};
if (extendParams != undefined) {
params = $.extend(extendParams,
{
fileToken: fileToken
});
} else {
params = {
fileToken: fileToken
}
}
abp.ajax({
url: importUrl,
data: JSON.stringify(params)
}).done(function (d) {
abp.message.success(d);
callback && callback();
com.filter('#searchForm', '#dgGrid');
pDialog.dialog('close');
}).always(function () {
com.setBusy(pDialog, false);
});
}
}]
});
},
/**
* 填写单个提示信息,增加表单验证功能
* @param {string} promptMessage 提示信息
* @param {function} okCallback 确定时的回调事件
*/
prompt: function (promptMessage, okCallback) {
var pDialog = com.dialog({
title: '提示信息',
cls:'prompt-center',
minimizable: false,
maximizable: false,
width: 300,
height: 189,
href: '/File/PromptModal?promptMessage=' + encodeURIComponent(promptMessage),
buttons: [
{
text: '确定',
iconCls: 'icon-ok',
handler: function () {
var valid = pDialog.find('form').form('validate');
if (!valid) return false;
okCallback && okCallback(pDialog);
}
}
]
});
},
/**
* 弹出显示pdf的框
* @param {string} title 标题
* @param {string} pdfName pdf的token,即后台存的文件名
*/
pdfModal: function(title,pdfName) {
com.dialog({
title: title,
href: '/File/PdfChartModal?fileToken=' + pdfName,
fit:true
});
},
/**
* 修改验证码
* @param {element} that 当前图片对象
* @example <img src="/Account/GetAuthCode" title="单击可刷新" alt="单击可刷新" onclick="com.changeCode(this);" />
*/
changeCode:function(that) {
$(that).attr('src', '/Account/GetAuthCode?r='+com.uuid());
}
});
})();