/**
* Created by Zhong on 2017/12/18.
*/
const locked = lockUtil.getLocked();
const moduleName = 'stdRation';
//上下拖动div节点的高度
const verticalResize = 10;
let pageOprObj = {
rationLibName: null,
rationLibId: null,
gljLibId: null,
initPage: function (libInfo) {
this.rationLibId = libInfo.ID;
this.gljLibId = libInfo.gljLib;
this.rationLibName = libInfo.dispName;
$('#rationname').html(`定额库${this.rationLibName}`);
if (!this.gljLibId || this.gljLibId === -1) {
alert('没有引用人材机库');
setTimeout(() => window.location.href = '/rationRepository/main', 2000);
}
//job
jobContentOprObj.radiosChange(jobContentOprObj.radios, jobContentOprObj.tableAll, jobContentOprObj.tablePartial);
$('#addConBtn').click(jobContentOprObj.bindAddConBtn());
$('#updateConBtn').click(jobContentOprObj.bindUpdateConBtn());
jobContentOprObj.bindAllEvents($('#txtareaAll'));
//fz
annotationOprObj.radiosChange(annotationOprObj.radios, annotationOprObj.fzTableAll, annotationOprObj.fzTablePartial);
$('#fzAddConBtn').click(annotationOprObj.bindAddConBtn());
$('#fzUpdateConBtn').click(annotationOprObj.bindUpdateConBtn());
annotationOprObj.bindAllEvents($('#fzTxtareaAll'));
},
};
let sectionTreeObj = {
cache: null,//ref to tree.items
tree: null,
controller: null,
workBook: null,
sheet: null,
updateType: { new: 'new', update: 'update' },
insertBtn: $('#tree_Insert'),
removeBtn: $('#tree_remove'),
upLevelBtn: $('#tree_upLevel'),
downLevelBtn: $('#tree_downLevel'),
downMoveBtn: $('#tree_downMove'),
upMoveBtn: $('#tree_upMove'),
setting: {
sheet: {
cols: [
{
head: {
titleNames: ['ID'],
spanCols: [1],
spanRows: [2],
vAlign: [1, 1],
hAlign: [1, 1],
font: 'Arial'
},
data: {
field: 'ID',
vAlign: 1,
hAlign: 0,
font: 'Arial'
},
width: 40
},
{
head: {
titleNames: ['名称'],
spanCols: [1],
spanRows: [2],
vAlign: [1, 1],
hAlign: [1, 1],
font: 'Arial'
},
data: {
field: 'name',
vAlign: 1,
hAlign: 0,
font: 'Arial'
},
width: 370
},
{
head: {
titleNames: ['目录编码'],
spanCols: [1],
spanRows: [2],
vAlign: [1, 1],
hAlign: [1, 1],
font: 'Arial'
},
data: {
field: 'code',
vAlign: 1,
hAlign: 0,
font: 'Arial'
},
width: 80
}
],
headRows: 1,
headRowHeight: [25],
emptyRows: 0,
treeCol: 1
},
tree: {
id: 'ID',
pid: 'ParentID',
nid: 'NextSiblingID',
rootId: -1
},
options: {
tabStripVisible: false,
allowContextMenu: false,
allowCopyPasteExcelStyle: false,
allowExtendPasteRange: false,
allowUserDragDrop: false,
allowUserDragFill: false,
scrollbarMaxAlign: true
}
},
isDef: function (v) {
return v !== undefined && v !== null;
},
isFunc: function (v) {
return this.isDef(v) && typeof v === 'function';
},
//sheet things
setOptions: function (workbook, opts) {
for (let opt in opts) {
workbook.options[opt] = opts[opt];
}
},
renderFunc: function (sheet, func) {
sheet.suspendPaint();
sheet.suspendEvent();
if (this.isFunc(func)) {
func();
}
sheet.resumePaint();
sheet.resumeEvent();
},
buildSheet: function () {
if (!this.isDef(this.workBook)) {
this.workBook = new GC.Spread.Sheets.Workbook($('#sectionSpread')[0], { sheetCount: 1 });
sheetCommonObj.bindEscKey(this.workBook, [{ sheet: this.workBook.getSheet(0), editStarting: this.onEditStarting, editEnded: this.onEditEnded }]);
this.sheet = this.workBook.getActiveSheet();
this.setOptions(this.workBook, this.setting.options);
this.sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
this.bindEvents(this.sheet);
this.buildContextMenu();
}
},
bindEvents: function (sheet) {
let me = sectionTreeObj;
const Events = GC.Spread.Sheets.Events;
sheet.bind(Events.SelectionChanged, me.onSelectionChanged);
sheet.bind(Events.EditStarting, me.onEditStarting);
sheet.bind(Events.EditEnded, me.onEditEnded);
sheet.bind(Events.ClipboardPasting, me.onClipboardPasting);
sheet.bind(Events.ClipboardPasted, me.onClipboardPasted);
},
onSelectionChanged: function (sender, info) {
let me = sectionTreeObj;
let row = info.newSelections[0].row;
let section = me.cache[row];
me.initSelection(section);
},
onEditStarting: function (sender, args) {
let me = sectionTreeObj;
let dataCode = me.setting.sheet.cols[args.col]['data']['field'];
if (dataCode === 'ID') {
args.cancel = true;
}
},
onEditEnded: function (sender, args) {
let me = sectionTreeObj;
let postData = [];
let v = me.isDef(args.editingText) ? args.editingText.toString().trim() : '';
const prop = sectionTreeObj.setting.sheet.cols[args.col].data.field;
let node = me.cache[args.row];
if (me.isDef(node) && node.data[prop] !== v) {
let updateObj = prop === 'name' ? me.getUpdateObj(me.updateType.update, node.getID(), null, null, v, null) : me.getUpdateObj(me.updateType.update, node.getID(), null, null, null, null, v);
postData.push(updateObj);
//ajax
//update
me.sectionTreeAjax(postData, function (rstData) {
node.data[prop] = v;
}, function () {
args.sheet.setValue(args.row, args.col, node.data[prop] ? node.data[prop] : '');
});
}
},
onClipboardPasting: function (sender, info) {
let me = sectionTreeObj;
if (info.cellRange.col === 0) {
info.cancel = true;
}
},
onClipboardPasted: function (sender, info) {
let me = sectionTreeObj;
let items = sheetCommonObj.analyzePasteData({ header: [{ dataCode: 'ID' }, { dataCode: 'name' }, { dataCode: 'code' }] }, info);
let postData = [];
let frontData = [];
for (let i = 0, len = items.length; i < len; i++) {
let row = info.cellRange.row + i;
let node = me.cache[row];
const updateParams = [me.updateType.update, node.getID(), null, null, null, null, null];
if (me.isDef(node) && me.isDef(items[i].name) && node.data.name !== items[i].name) {
updateParams[4] = items[i].name;
}
if (me.isDef(node) && me.isDef(items[i].code) && node.data.code !== items[i].code) {
updateParams[6] = items[i].code;
}
if (me.isDef(updateParams[4]) || me.isDef(updateParams[6])) {
let updateObj = me.getUpdateObj(...updateParams);
postData.push(updateObj);
frontData.push({ row: row, name: me.isDef(items[i].name) ? items[i].name : node.data.name, code: me.isDef(items[i].code) ? items[i].code : node.data.code });
if (me.isDef(items[i].name)) {
node.data.name = items[i].name;
}
if (me.isDef(items[i].code)) {
node.data.code = items[i].code;
}
}
}
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
for (let i = 0, len = frontData.length; i < len; i++) {
let node = me.cache[frontData[i]['row']];
if (me.isDef(node)) {
node.data.name = frontData[i]['name'];
node.data.code = frontData[i]['code'];
}
}
}, function () {
for (let i = 0, len = frontData.length; i < len; i++) {
let node = me.cache[frontData[i]['row']];
me.sheet.setValue(frontData[i]['row'], 1, me.isDef(node) ? node.data.name : '');
me.sheet.setValue(frontData[i]['row'], 2, me.isDef(node) ? node.data.code : '');
}
});
}
},
loadRateWidth: function () {
/* if (this.workBook) {
//ID列固定40宽度
let spreadWidth = $('#sectionSpread').width() - 65; //65: 列头宽度和垂直滚动条宽度和
let IDRate = 40 / spreadWidth,
nameRate = 1 - IDRate;
sheetCommonObj.setColumnWidthByRate($('#sectionSpread').width() - 65, this.workBook, [{ rateWidth: IDRate }, { rateWidth: nameRate }]);
} */
},
buildContextMenu: function () {//右键菜单
const me = this;
$.contextMenu({
selector: '#sectionSpread',
build: function ($triggerElement, e) {
//控制允许右键菜单在哪个位置出现
const target = SheetDataHelper.safeRightClickSelection($triggerElement, e, me.workBook);
const sheet = me.workBook.getSheet(0);
if (target.hitTestType === 3) {
if (typeof target.row !== 'undefined') {
const section = me.cache[target.row];
me.initSelection(section);
}
return {
callback: function () { },
items: {
"setManage": {
name: "设置管理费率",
disabled: function () {
const section = me.cache[target.row];
return locked || !section;
},
icon: "fa-pencil-square-o",
callback: function (key, opt) {
$('#set-rate-dialog').modal('show');
}
},
"setJobContent": {
name: "设置工作内容",
disabled: function () {
const section = me.cache[target.row];
return locked || !section;
},
icon: "fa-pencil-square-o",
callback: function (key, opt) {
$('#set-job-content-dialog').modal('show');
}
}
}
};
}
}
});
},
// 获取章节节点的叶子章节列表ID(自身及后代)
getSectionLeafList: function (section) {
if (!section) {
return [];
}
const posterity = section.getPosterity();
const allSections = [section, ...posterity];
return allSections
.filter(section => !section.children.length)
.map(section => section.data.ID);
},
initSectionTree: function (sectionTree) {
//init
this.buildSheet();
this.initTree(sectionTree);
this.cache = this.tree.items;
this.bindBtn();
this.initController(this.tree, this.sheet, this.setting.sheet);
this.controller.showTreeData();
this.sheet.setFormatter(-1, 0, '@');
this.initSelection(this.tree.selected);
explanatoryOprObj.bindEvents(explanatoryOprObj.exEditor, explanatoryOprObj.erratumEditor, explanatoryOprObj.calcEditor);
this.loadRateWidth();
this.autoLocate();
},
//自动定位
autoLocate: function () {
const hash = window.location.hash;
const $searchInput = $('#rationSearch');
if (hash) {
const rationCode = hash.replace('#', '');
this.locateToSection(rationCode);
}
},
initTree: function (datas) {
this.tree = idTree.createNew(this.setting.tree);
this.tree.loadDatas(datas);
this.tree.selected = this.tree.items.length > 0 ? this.tree.items[0] : null;
},
initController: function (tree, sheet, setting) {
this.controller = TREE_SHEET_CONTROLLER.createNew(tree, sheet, setting);
},
refreshBtn: function (selected) {
if (locked) {
return;
}
let me = this;
me.insertBtn.removeClass('disabled');
me.removeBtn.removeClass('disabled');
me.upLevelBtn.removeClass('disabled');
me.downLevelBtn.removeClass('disabled');
me.downMoveBtn.removeClass('disabled');
me.upMoveBtn.removeClass('disabled');
if (!me.isDef(selected)) {
me.removeBtn.addClass('disabled');
me.upLevelBtn.addClass('disabled');
me.downLevelBtn.addClass('disabled');
me.downMoveBtn.addClass('disabled');
me.upMoveBtn.addClass('disabled');
}
else {
if (!me.isDef(selected.preSibling)) {
me.downLevelBtn.addClass('disabled');
me.upMoveBtn.addClass('disabled');
}
if (!me.isDef(selected.nextSibling)) {
me.downMoveBtn.addClass('disabled');
}
if (!me.isDef(selected.parent)) {
me.upLevelBtn.addClass('disabled');
}
}
},
bindBtn: function () {
let me = this;
me.insertBtn.click(function () {
me.insert();
});
$('#delConfirm').click(function () {
if (me.canRemoveSection) {
me.remove(me.tree.selected);
}
else {
$('#delAlert').modal('hide');
}
});
me.removeBtn.click(function () {
//不可删除有子节点或有定额数据的节点
let section = me.cache[me.workBook.getActiveSheet().getActiveRowIndex()];
if (!section) {
return;
}
let sectionName = me.isDef(section.data.name) ? section.data.name : '';
let sectionRations = rationOprObj.currentRations[`_SEC_ID_${section.data.ID}`];
if (section.children.length > 0 || (sectionRations && sectionRations.length > 0)) {
me.canRemoveSection = false;
$('#delAlert').find('.modal-body h5').text('当前节点下有数据,不可删除。');
}
else {
me.canRemoveSection = true;
$('#delAlert').find('.modal-body h5').text(`确认要删除章节 “${sectionName}”吗?`);
}
$('#delAlert').modal('show');
});
me.upLevelBtn.click(function () {
me.upLevel(me.tree.selected);
});
me.downLevelBtn.click(function () {
me.downLevel(me.tree.selected);
});
me.downMoveBtn.click(function () {
me.downMove(me.tree.selected);
});
me.upMoveBtn.click(function () {
me.upMove(me.tree.selected);
});
// 设置管理费费率,设置给其下所有定额
$('#set-rate-confirm').click(function () {
$.bootstrapLoading.start();
const rate = $('#manage-fee-rate').val();
const section = me.tree.selected;
const sectionList = me.getSectionLeafList(section);
const postData = {
rationRepId: pageOprObj.rationLibId,
sectionList,
updateData: { manageFeeRate: rate }
};
$('#manage-fee-rate').val('');
CommonAjax.post('/rationRepository/api/updateRationBySection', postData, function () {
me.initSelection(section);
$.bootstrapLoading.end();
}, function () {
$.bootstrapLoading.end();
});
});
// 设置默认工作内容,设置给其下所有定额
$('#set-job-content-confirm').click(function () {
$.bootstrapLoading.start();
const jobContentText = $('#default-job-content').val();
const section = me.tree.selected;
const sectionList = me.getSectionLeafList(section);
const postData = {
rationRepId: pageOprObj.rationLibId,
sectionList,
updateData: { jobContentText: jobContentText }
};
$('#default-job-content').val('');
CommonAjax.post('/rationRepository/api/updateRationBySection', postData, function () {
me.initSelection(section);
$.bootstrapLoading.end();
}, function () {
$.bootstrapLoading.end();
});
});
},
insert: function () {
let me = sectionTreeObj;
me.insertBtn.addClass('disabled');
let postData = [];
CommonAjax.post('api/getNewRationTreeID', {}, function (newID) {
if (!me.isDef(newID)) {
return;
}
me.tree.maxNodeID(newID - 1);
let selected = me.tree.selected;
let insertObj = me.getUpdateObj(me.updateType.new, newID, -1, -1, '', null);
if (me.isDef(selected)) {
let updateObj = me.getUpdateObj(me.updateType.update, selected.getID(), newID, null, null, null);
postData.push(updateObj);
insertObj.updateData.ParentID = selected.getParentID();
if (me.isDef(selected.nextSibling)) {
insertObj.updateData.NextSiblingID = selected.getNextSiblingID();
}
}
postData.push(insertObj);
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
me.controller.insert();
me.refreshBtn(me.tree.selected);
//fresh tools
me.initTools(me.tree.selected);
me.workBook.focus();
me.initSelection(me.tree.selected);
});
}
});
},
remove: function (selected) {
let me = this;
me.removeBtn.addClass('disabled');
let postData = [], IDs = [];
if (!selected) {
return;
}
getDelIds(selected);
function getDelIds(node) {
if (me.isDef(node)) {
IDs.push(node.getID());
if (node.children.length > 0) {
for (let i = 0, len = node.children.length; i < len; i++) {
getDelIds(node.children[i]);
}
}
}
}
if (me.isDef(selected.preSibling)) {
let updateObj = me.getUpdateObj(me.updateType.update, selected.preSibling.getID(), selected.getNextSiblingID(), null, null, null);
postData.push(updateObj);
}
if (IDs.length > 0) {
for (let i = 0, len = IDs.length; i < len; i++) {
let delObj = me.getUpdateObj(me.updateType.update, IDs[i], null, null, null, true);
postData.push(delObj);
}
}
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
$('#delAlert').modal('hide');
me.removeRationsCodes(rationOprObj.currentRations["_SEC_ID_" + selected.data.ID]);
me.controller.delete();
me.refreshBtn(me.tree.selected);
me.initTools(me.tree.selected);
me.initSelection(me.tree.selected);
me.workBook.focus();
});
}
},
removeRationsCodes: function (rations) {
for (let ration of rations) {
rationOprObj.rationsCodes.splice(rationOprObj.rationsCodes.indexOf(ration.code), 1);
}
},
getSameDepthNodes: function () {
let rst = [];
let sel = this.sheet.getSelections()[0];
let selectedDepth = this.tree.selected.depth();
for (let i = 0; i < sel.rowCount; i++) {
let row = sel.row + i;
if (this.cache[row].depth() === selectedDepth) {
rst.push(this.cache[row]);
}
}
return rst;
},
upLevel: function (selected) {
let me = this;
me.upLevelBtn.addClass('disabled');
let postData = [];
let selNodes = me.getSameDepthNodes();
if (selNodes.length <= 0) {
return;
}
let firstParent = selNodes[0].parent;
if (!me.isDef(firstParent)) {
return;
}
//更新父节点
postData.push(me.getUpdateObj(me.updateType.update, firstParent.getID(), selNodes[0].getID(), null, null, null));
//更新前节点
if (me.isDef(selNodes[0].preSibling)) {
postData.push(me.getUpdateObj(me.updateType.update, selNodes[0].preSibling.getID(), -1, null, null, null));
}
//更新选中节点的后兄弟节点
let lastSelNode = selNodes[selNodes.length - 1];
let nextIDs = [];
getNext(lastSelNode);
function getNext(node) {
if (me.isDef(node.nextSibling)) {
nextIDs.push(node.getNextSiblingID());
getNext(node.nextSibling);
}
}
for (let nextID of nextIDs) {
postData.push(me.getUpdateObj(me.updateType.update, nextID, null, lastSelNode.getID(), null, null));
}
//更新选中节点
for (let i = 0; i < selNodes.length; i++) {
let selNode = selNodes[i];
let nid = i === selNodes.length - 1 ? firstParent.getNextSiblingID() : selNode.getNextSiblingID();
postData.push(me.getUpdateObj(me.updateType.update, selNode.getID(), nid, firstParent.getParentID(), null, null));
}
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
for (let selNode of selNodes) {
me.controller.setTreeSelected(selNode);
me.controller.upLevel();
}
me.refreshBtn(me.tree.selected);
me.workBook.focus();
});
}
},
downLevel: function (selected) {
let me = this;
me.downLevelBtn.addClass('disabled');
let postData = [];
let selNodes = me.getSameDepthNodes();
if (selNodes.length <= 0) {
return;
}
let firstPreSibling = selNodes[0].preSibling;
if (!me.isDef(firstPreSibling)) {
return;
}
//更新前节点
postData.push(me.getUpdateObj(me.updateType.update, firstPreSibling.getID(), selNodes[selNodes.length - 1].getNextSiblingID(), null, null, null));
//更新前节点最末子节点
if (firstPreSibling.children.length > 0) {
postData.push(me.getUpdateObj(me.updateType.update, firstPreSibling.children[firstPreSibling.children.length - 1].getID(), selNodes[0].getID(), null, null, null));
}
//更新选中节点
for (let i = 0; i < selNodes.length; i++) {
let selNode = selNodes[i];
postData.push(me.getUpdateObj(me.updateType.update, selNode.getID(), i === selNodes.length - 1 ? -1 : selNode.getNextSiblingID(), firstPreSibling.getID(), null, null));
}
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
for (let selNode of selNodes) {
me.controller.setTreeSelected(selNode);
me.controller.downLevel();
}
me.refreshBtn(me.tree.selected);
me.workBook.focus();
});
}
},
upMove: function (selected) {
let me = this;
me.upMoveBtn.addClass('disabled');
let postData = [];
if (!me.isDef(selected)) {
return;
}
if (!me.isDef(selected.preSibling)) {
return;
}
let updateObj = me.getUpdateObj(me.updateType.update, selected.getID(), selected.preSibling.getID(), null, null, null);
postData.push(updateObj);
let updatePre = me.getUpdateObj(me.updateType.update, selected.preSibling.getID(), selected.getNextSiblingID(), null, null, null);
postData.push(updatePre);
if (me.isDef(selected.preSibling.preSibling)) {
let updatePrepre = me.getUpdateObj(me.updateType.update, selected.preSibling.preSibling.getID(), selected.getID(), null, null, null);
postData.push(updatePrepre);
}
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
me.controller.upMove();
me.refreshBtn(me.tree.selected);
me.workBook.focus();
});
}
},
downMove: function (selected) {
let me = this;
me.downMoveBtn.addClass('disabled');
let postData = [];
if (!me.isDef(selected)) {
return;
}
if (!me.isDef(selected.nextSibling)) {
return;
}
if (me.isDef(selected.preSibling)) {
let updatePre = me.getUpdateObj(me.updateType.update, selected.preSibling.getID(), selected.getNextSiblingID(), null, null, null);
postData.push(updatePre);
}
let updateObj = me.getUpdateObj(me.updateType.update, selected.getID(), selected.nextSibling.getNextSiblingID(), null, null, null);
postData.push(updateObj);
let updateNext = me.getUpdateObj(me.updateType.update, selected.getNextSiblingID(), selected.getID(), null, null, null);
postData.push(updateNext);
if (postData.length > 0) {
//ajax
me.sectionTreeAjax(postData, function (rstData) {
me.controller.downMove();
me.refreshBtn(me.tree.selected);
me.workBook.focus();
});
}
},
getUpdateObj: function (updateType, id, nid, pid, name, deleted, code) {
let updateObj = Object.create(null);
updateObj.updateType = '';
updateObj.updateData = Object.create(null);
updateObj.updateData.rationRepId = pageOprObj.rationLibId;
if (this.isDef(updateType)) {
updateObj.updateType = updateType;
}
if (this.isDef(id)) {
updateObj.updateData.ID = id;
}
if (this.isDef(nid)) {
updateObj.updateData.NextSiblingID = nid;
}
if (this.isDef(pid)) {
updateObj.updateData.ParentID = pid;
}
if (this.isDef(name)) {
updateObj.updateData.name = name;
}
if (this.isDef(deleted)) {
updateObj.updateData.isDeleted = true;
}
if (this.isDef(code)) {
updateObj.updateData.code = code;
}
return updateObj;
},
sectionTreeAjax: function (postData, scFunc, errFunc) {
CommonAjax.post('api/updateNodes', { updateData: postData, lastOpr: userAccount }, scFunc, errFunc);
},
initTools: function (node) {
if (this.isDef(node)) {
explanatoryOprObj.setAttribute(explanatoryOprObj.currentTreeNode ? explanatoryOprObj.currentTreeNode : node, node, node.data.explanation, node.data.erratumRecord, node.data.ruleText);
explanatoryOprObj.showText(node.data.explanation, node.data.erratumRecord, node.data.ruleText);
//job
jobContentOprObj.currentSituation = typeof node.data.jobContentSituation !== 'undefined' ? node.data.jobContentSituation : jobContentOprObj.situations.ALL;
jobContentOprObj.setAttribute(jobContentOprObj.currentTreeNode ? jobContentOprObj.currentTreeNode : node, node);
jobContentOprObj.clickUpdate($('#txtareaAll'));
//fz
annotationOprObj.currentSituation = typeof node.data.annotationSituation !== 'undefined' ? node.data.annotationSituation : annotationOprObj.situations.ALL;
annotationOprObj.clickUpdate($('#fzTxtareaAll'));
}
},
//模仿默认点击
initSelection: function (node, doAfterGetRation = null) {
if (node && node.tree) {
node.tree.selected = node ? node : null;
}
let me = this;
if (!me.isDef(node)) {
sheetCommonObj.cleanSheet(rationOprObj.workBook.getActiveSheet(), rationOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationGLJOprObj.sheet, rationGLJOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationAssistOprObj.sheet, rationAssistOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationCoeOprObj.sheet, rationCoeOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationInstObj.sheet, rationInstObj.setting, -1);
return;
}
//me.workBook.getActiveSheet().setActiveCell(node.serialNo(), me.workBook.getActiveSheet().getActiveColumnIndex());
me.initTools(node);
me.refreshBtn(node);
if (!me.isDef(node.children) || node.children.length === 0) {
//需要根据章节树下是否含有定额数据判断是否可以删除,在异步获取定额数据前将删除按钮无效化
me.removeBtn.addClass('disabled');
rationOprObj.canRations = true;
rationOprObj.workBook.getSheet(0).clearSelection();
//获取定额后的回调操作:1.正常变更章节树节点,则默认获取定额后定位至首行定额 2.搜索定额后,获取定额后定位至匹配到的定额
if (doAfterGetRation && typeof doAfterGetRation === 'function') {
rationOprObj.doAfterGetRation = doAfterGetRation;
} else {
rationOprObj.doAfterGetRation = function (rations) {
rationOprObj.workBook.getActiveSheet().setActiveCell(0, 0);
rationOprObj.rationSelInit(0, true);
rationOprObj.workBook.getActiveSheet().showRow(0, GC.Spread.Sheets.VerticalPosition.top);
};
}
rationOprObj.getRationItems(node.data.ID, rationOprObj.doAfterGetRation);
rationOprObj.setCombo(rationOprObj.workBook.getSheet(0), 'dynamic');
}
else {
rationOprObj.canRations = false;
rationOprObj.currentSectionId = node.data.ID;
rationOprObj.workBook.getSheet(0).setRowCount(30);
rationOprObj.setCombo(rationOprObj.workBook.getSheet(0), null);
jobContentOprObj.setRadiosDisabled(true, jobContentOprObj.radios);
jobContentOprObj.hideTable($('#tableAll'), $('#tablePartial'));
annotationOprObj.setRadiosDisabled(true, annotationOprObj.radios);
annotationOprObj.hideTable($('#fzTableAll'), $('#fzTablePartial'));
sheetCommonObj.cleanSheet(rationOprObj.workBook.getSheet(0), rationOprObj.setting, -1);
rationGLJOprObj.sheet.getParent().focus(false);
sheetCommonObj.cleanSheet(rationGLJOprObj.sheet, rationGLJOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationAssistOprObj.sheet, rationAssistOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationCoeOprObj.sheet, rationCoeOprObj.setting, -1);
sheetCommonObj.cleanSheet(rationInstObj.sheet, rationInstObj.setting, -1);
}
me.workBook.focus(true);
},
//根据定额定位至章节树
locateToSection: function (rationCode) {
const me = this;
const $seach = $('#rationSearch');
$seach.val(rationCode);
//去后台搜索该定额
$.bootstrapLoading.start();
CommonAjax.post('/rationRepository/api/getRationItem', { rationLibId: pageOprObj.rationLibId, code: rationCode }, function (rstData) {
if (!rstData) {
alert(`不存在定额${rationCode}`);
$.bootstrapLoading.end();
return;
}
//定位至相关章节
let sectionId = rstData.sectionId;
if (!sectionId) {
$.bootstrapLoading.end();
return;
}
let sectionNode = me.tree.nodes[`id_${sectionId}`];
if (!sectionNode) {
$.bootstrapLoading.end();
return;
}
let sectionRow = sectionNode.serialNo();
me.sheet.setActiveCell(sectionRow, 1);
me.sheet.showRow(sectionRow, GC.Spread.Sheets.VerticalPosition.top);
$.bootstrapLoading.end();
let doAfterGetRation = function (rations) {
let findRation = _.find(rations, { code: rationCode }),
rIdx = rations.indexOf(findRation),
rationSheet = rationOprObj.workBook.getActiveSheet();
rationSheet.setActiveCell(rIdx, 0);
rationOprObj.rationSelInit(rIdx, true);
rationOprObj.workBook.getActiveSheet().showRow(rIdx, GC.Spread.Sheets.VerticalPosition.top);
};
me.initSelection(sectionNode, doAfterGetRation);
}, function () {
$.bootstrapLoading.end();
});
}
};
$(document).ready(function () {
$('#rationSearch').keydown(function (event) {
if (event.keyCode === 13) {
$(this).blur();
let rationCode = $(this).val().toUpperCase();
if (rationCode) {
sectionTreeObj.locateToSection(rationCode);
}
}
});
});