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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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