You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

485 lines
17 KiB

4 years ago
define(function(require, exports, module) {
var Biz = require('system/base/biz');
var etpTpl = require('text!apps/edp/frs/frs004/etp.tpl');
var QuickSetEtp = require('apps/edp/frs/frs004/QuickSetEtp');
var multiWindow = require("system/views/pages/multiwindow/multiwindow");
var utils = require('system/base/extend');
var FuncScriptwin = require('apps/edp/frs/frs004/funcscriptwin');
var fixQuery;
var fill = 'edp-stretch';
var _treeId; //当前选定树的菜单编码
var _funcName; //当前选定树的功能名称
var _propData; //用于保存对象编码对应的企业模板字段属性数据
var _langData; //用于保存对象编码对应的企业模板显示属性数据
var _langItem; //保存原始对象编码的显示属性信息
function EtpBiz(vm) {
Biz.call(this, vm);
};
inherits(EtpBiz, Biz);
EtpBiz.prototype.initCompleted = function() {
this.dsMaster.onlySaveCurrent = true;
this.super('initCompleted');
var self = this;
var dsEtpTree = this.getDataSrc('dsEtpMenuTree');
dsEtpTree.defaultOrder = 'MenuCode';
dsEtpTree.search(function(isOk) {
if (isOk) {
var treedata = parseMenuData(dsEtpTree.rows);
self.callView('setTreeData', treedata);
self.treedata = treedata;
}
});
self.dsDetail2.on('onCollectChanged', function(ds, e) {
ds.allowInsert = ds.rows.length > 0 ? false : true;
});
};
EtpBiz.prototype.treeSelected = function(selectValue, selectColName, treeNode) {
var self = this;
var dsMaster = this.dsMaster;
var moduleCode = treeNode.id;
_treeId = moduleCode;
_funcName = treeNode.name;
if (moduleCode && moduleCode != 'other') {
if (moduleCode !== '*') {
fixQuery = {
'FuncCode': selectValue
};
} else {
fixQuery = {};
}
dsMaster.fixQuery = fixQuery;
dsMaster.search();
}
if(moduleCode === 'other'){
self.dsMaster.clear();
self.getOtherDataSrc(self);
}
}
EtpBiz.prototype.refresh = function() {
var self = this;
if (_treeId === 'other') {
self.dsMaster.clear();
self.getOtherDataSrc(self);
} else {
utils.refresh(this);
}
};
//对主表其它节点灌入数据
EtpBiz.prototype.getOtherDataSrc = function(win) {
var self = win;
var params = {
plugin: 'etpTreeOtherPlugin',
pluginData: {}
};
Store.services.executeplugin(params, function(isOk, result) {
if (isOk) {
self.dsMaster.loadData(result.data);
if (self.callback) {
self.callback();
}
};
});
}
EtpBiz.prototype.getCustomTpl = function() {
//多语言转换
etpTpl = Store.compile(etpTpl, {
FRS004_01: Store.MSG.FRS004_01,
FRS004_04: Store.MSG.FRS004_04,
});
return $('<div data-options="region:\'south\',split:false" style="height:180px">')
.append(etpTpl);
}
EtpBiz.prototype.getTreeTitle = function() {
return Store.MSG.FRS004_03
};
EtpBiz.prototype.getOpEnabled = function(opCode) {
var self = this;
if (self.dsMaster !== null) {
var currentRow = self.dsMaster.currentRow;
switch (opCode) {
case 'quickSet':
if (currentRow === null || self.getState() === 'edit') {
return false;
}
break;
case 'reset':
if (self.getState() === 'edit') {
return false;
}
break;
}
}
return this.super('getOpEnabled', opCode);
};
EtpBiz.prototype.doOp = function(opCode) {
this.super('doOp');
var self = this;
switch (opCode) {
//快速设置按钮操作事件
case 'quickSet':
var curRow = this.dsMaster.currentRow;
if (!curRow) {
Store.messager.warn(Store.MSG.FRS004_12); //请先选择一条数据后进行快速设置。
return;
}
var UiObjCode = curRow["FuncObjCode"];
var quickSetEtp = new QuickSetEtp(UiObjCode, function() {
//self.opRouter("refresh");
self.dsMaster.loadDetails();
});
quickSetEtp.open();
break;
case 'exportscript':
var dstree = this.getDataSrc('dsEtpMenuTree');
var args = {
dsEtpMenuTree: dstree,
treedata: this.treedata
};
var scriptwin = new FuncScriptwin(args);
scriptwin.open();
break;
case 'reset':
if (_treeId === undefined) {
Store.messager.tip(Store.MSG.FRS004_24); //当前未选中任何树节点,请先在左侧树中选中要执行恢复默认功能的树节点。
return;
}
//确定要将({0})节点下的企业模板数据恢复默认设置吗?
Store.messager.confirm(Store.format(Store.MSG.FRS004_21, _funcName), function(confirmIsOk) {
if (confirmIsOk) {
var params = {
plugin: 'etpResetPlugin',
pluginData: {
menuCode: _treeId
}
};
Store.services.executeplugin(params, function(isOk, result) {
if (isOk) {
self.dsMaster.loadDetails();
Store.messager.tip(Store.MSG.FRS004_22); //恢复成功。
} else {
Store.messager.tip(Store.MSG.FRS004_23); //恢复失败,请重试。
}
});
}
});
break;
}
return true;
}
EtpBiz.prototype.dataColumnValidate = function(dataSrc, dr, dc, value) {
var self = this;
if (dataSrc.uiObjCode === 'tEtpUIProp01') {
if ((dc.fieldName === 'IsEditable' || dc.fieldName === 'IsRequired' || dc.fieldName === 'IsStrictRef' || dc.fieldName === 'IsZeroSpace') && value !== '' && value !== null && value !== "N" && value !== "0" && value !== "1") {
Store.messager.warn(Store.MSG.FRS004_19); //该字段值只能为0或1请重新输入。
return false;
}
if (dc.fieldName === "DefaultValue") {
var defaultValue;
_.each(_propData, function(item, index) {
if (item['fieldname'] === dr.FieldName) {
defaultValue = item["DefaultValue".toLowerCase()];
return false;
}
});
//if ((defaultValue === null || defaultValue === '') && value !== '' && value != 'N/A') {
// Store.messager.tip(Store.MSG.FRS004_17); //初始默认值为空时,不允许设置默认值。
// dr.setColumnText('DefaultValue', "N/A");
// return false;
//}
if (defaultValue !== null && (value === "" || value === "N/A")) {
Store.messager.tip(Store.MSG.FRS004_16); //默认值不允许修改为空,请重新输入。
return false;
}
}
if (dc.fieldName === "IsRequired") {
var isRequired;
_.each(_propData, function(item, index) {
if (item['fieldname'] === dr.FieldName) {
isRequired = item["IsRequired".toLowerCase()];
return false;
}
});
if (isRequired === "1" && value !== '1') {
Store.messager.tip(Store.MSG.FRS004_18); //初始值为必填时,不允许修改为不必填。
dr.setColumnText('IsRequired', "1");
return false;
}
}
}
return this.super('dataColumnValidate');
};
EtpBiz.prototype.fieldChanged = function(dataSrc, dr, dc, value) {
var self = this;
if (dataSrc.uiObjCode === 'tEtpUIProp01' && dc.fieldName === 'FieldName' && !value && value !== 0) {
dr.setColumnValue('DispIndex', "-1");
dr.setColumnValue('IsEditable', "N");
dr.setColumnValue('IsRequired', "N");
dr.setColumnValue('IsStrictRef', "N");
dr.setColumnValue('IsZeroSpace', "N");
dr.setColumnValue('DispPosition', "N/A");
dr.setColumnValue('DefaultValue', "N/A");
dr.setColumnValue('DispFormat', "N/A");
dr.setColumnValue('KeyBoardType', "N/A");
var uiObjCode = dr['UIObjCode'];
var fieldName = dr['FieldName'];
if (uiObjCode === null || fieldName === null) return;
self.getLangData(uiObjCode, fieldName);
self.dsDetail1.columns.forEach(function(c) {
if (c == dc) return;
self.dsDetail1.onValueChanged(dr, c);
});
}
if (dataSrc.uiObjCode === 'tEtpUIPropLang01' && dc.fieldName === 'LangCode' && !value && value !== 0) {
dr.setColumnValue('DispName', "N/A");
dr.setColumnValue('DispWidth', "-1");
dr.setColumnValue('LabelWidth', "-1");
dr.setColumnValue('HeaderWidth', "-1");
self.dsDetail3.columns.forEach(function(c) {
if (c == dc) return;
self.dsDetail3.onValueChanged(dr, c);
});
}
}
EtpBiz.prototype.currentChanged = function(dataSrc, oldRow, newRow) {
//this.super('currentChanged', dataSrc, oldRow, newRow);
var self = this;
if (dataSrc === this.dsMaster) {
var curRow = self.dsMaster.currentRow;
if (curRow === null) return;
var uiObjCode = curRow['FuncObjCode'];
if (uiObjCode === null) return;
self.getPropData(uiObjCode);
}
if (dataSrc === this.dsDetail1) {
var curDetailRow = self.dsDetail1.currentRow;
if (curDetailRow === null) return;
var uiObjCode = curDetailRow['UIObjCode'];
var fieldName = curDetailRow['FieldName'];
if (uiObjCode === null || fieldName === null) return;
self.getLangData(uiObjCode, fieldName);
}
};
EtpBiz.prototype.getColumnFormatter = function(dc, defaultFormatter) {
var self = this;
//对字段属性显示的重置
if (dc.dataSrc.uiObjCode === 'tEtpUIProp01') {
return function DispFormatter(row, cell, value, columnDef, dataContext) {
var data = _propData;
var dispValue = '';
_.each(_propData, function(item, index) {
if (item['fieldname'] === dataContext.FieldName) {
//若修改了值,应带出修改的值
if (value !== 'N' && value !== 'N/A' && value !== '-1') {
if (dc.fieldName === 'FieldName' || dc.fieldName === 'DispName') {
dispValue = value;
} else {
dispValue = "<span style='color:SpringGreen'>" + value + "</span>";
}
} else {
dispValue = item[dc.fieldName.toLowerCase()];
}
}
});
return dispValue;
}
}
//对显示属性显示的重置
if (dc.dataSrc.uiObjCode === 'tEtpUIPropLang01') {
return function DispFormatter(row, cell, value, columnDef, dataContext) {
var data = _langData;
var dispValue = null;
_.each(_langData, function(item, index) {
if (item['langid'] === '*') {
_langItem = item;
}
if (item['langid'] === dataContext.LangID && item['fieldname'] === dataContext.FieldName) {
if (value !== 'N' && value !== 'N/A' && value !== '-1') {
if (dc.fieldName === 'LangCode') {
dispValue = value;
} else {
dispValue = "<span style='color:SpringGreen'>" + value + "</span>";
}
} else {
dispValue = item[dc.fieldName.toLowerCase()];
}
}
});
//对界面直接新增的语言进行展示
if (dispValue === null) {
if (value !== 'N' && value !== 'N/A' && value !== '-1') {
if (dc.fieldName === 'LangCode') {
dispValue = value;
} else {
dispValue = "<span style='color:SpringGreen'>" + value + "</span>";
}
} else {
dispValue = _langItem[dc.fieldName.toLowerCase()];
}
}
return dispValue;
}
}
return this.super('getColumnFormatter');
};
/**
* 获取对应对象编码的企业模板最新数据用于字段属性的展示
* @param {[type]} uiObjCode [对象编码]
*/
EtpBiz.prototype.getPropData = function(uiObjCode) {
var params = {
sync: 1, //同步操作获取数据
plugin: 'quickSetEtpFrushPlugin',
pluginData: {
uiobjcode: uiObjCode,
}
};
Store.services.executeplugin(params, function(isOk, result) {
if (isOk) {
_propData = result.data;
};
});
}
/**
* [getData 获取对应对象编码的企业模板最新数据用于显示属性的展示]
* @param {[type]} uiObjCode [对象编码]
* @param {[type]} fieldName [字段编码]
*/
EtpBiz.prototype.getLangData = function(uiObjCode, fieldName) {
var params = {
sync: 1, //同步操作获取数据
plugin: 'quickSetEtpLanPlugin',
pluginData: {
uiobjcode: uiObjCode,
fieldname: fieldName
}
};
Store.services.executeplugin(params, function(isOk, result) {
if (isOk) {
_langData = result.data;
};
});
}
EtpBiz.prototype.beforeSave = function () {
var self =this;
self.dsDetail3.removeEmptyRow();
var detailRows = self.dsDetail3.getAllRows();
for(var j=0; j<detailRows.length; j++){
if(!detailRows[j].DispName || !detailRows[j].DispWidth ||
!detailRows[j].LabelWidth || !detailRows[j].HeaderWidth){
Store.messager.err(Store.format(this.funcRes.FRS004_001,
this.dsDetail3.getColumn('FieldName').dispName,
detailRows[j].FieldName,
this.dsDetail3.getColumn('DispName').dispName,
this.dsDetail3.getColumn('LabelWidth').dispName,
this.dsDetail3.getColumn('DispWidth').dispName,
this.dsDetail3.getColumn('HeaderWidth').dispName ));
return false;
}
}
return this.super('beforeSave');
}
/**
* [强制转换为树结构数据]
* @param {[type]} data [要转换树菜单结构的数据此处为功能菜单数据]
*/
function parseMenuData(data) {
var nodes = [];
var preNode = {
id: '*',
pId: '',
value: '*',
icon: './images/icons/node.png',
name: Store.MSG.FRS004_20, //全部
open: true
};
nodes.push(preNode);
$.each(data, function(index, item) {
var node = {
icon: './images/icons/node.png'
}
node.id = item.MenuCode;
var idLen = item.MenuCode.length;
node.pId = idLen > 2 ? item.MenuCode.substring(0, idLen - 2) : "*";
node.name = item.MenuCaption;
node.value = item.FuncCode || '';
node.checked = false;
if (idLen > 4) {
node.icon = './images/icons/node2.png';
}
nodes.push(node);
});
var node = {
icon: './images/icons/node.png'
}
node.id = 'other';
var idLen = '';
node.pId = '';
node.name = Store.MSG.FRS004_26, //其它
node.value = "*";
node.checked = false;
nodes.push(node);
return nodes;
}
return EtpBiz;
})