'use strict';
/**
*
*
* @author Mai
* @date
* @version
*/
let curProject = {};
const showModal = function (obj) {
const tr = obj.parentNode.parentNode;
curProject.id = tr.getAttribute('tree_id');
curProject.name = tr.getAttribute('pname');
curProject.rela_tender = tr.getAttribute('rela-tender');
$(obj.getAttribute('data-target')).modal('show');
};
$(document).ready(() => {
autoFlashHeight();
const projectTreeObj = (function(setting){
const projectTree = createDragTree(setting.treeSetting);
projectTree.loadDatas(setting.source);
const TableObj = $(setting.table);
const Utils = {
getRowTdHtml: function (node, tree) {
const html = [];
// 名称
html.push('
');
if (node.is_folder) {
if (node.children.length > 0) {
html.push(' ', node.name);
} else {
html.push(' ', node.name);
}
} else {
html.push(`${tree.isLastSibling(node) ? '└' : '├'}`);
html.push(``, node.name, '');
}
html.push(' | ');
// 管理单位
html.push(`${node.management} | `);
// 创建时间
if (node.is_folder) {
html.push(` | `);
} else {
html.push(`${moment(node.create_time).format('YYYY-MM-DD')} | `);
}
// 操作
if (node.is_folder) {
html.push(` | `);
} else {
html.push(``);
if (node.manage_permission.indexOf(1) >= 0) html.push('');
html.push(' | ');
}
return html.join('');
},
getNodeTrHtml: function (node, tree) {
const html = [];
html.push(``);
html.push(Utils.getRowTdHtml(node, tree));
html.push(`
`);
return html.join('');
},
reloadTable: function () {
const html = [];
for (const node of projectTree.nodes) {
html.push(Utils.getNodeTrHtml(node, projectTree));
}
TableObj.html(html.join(''));
},
getSelectNode: function() {
const selectId = $('tr.table-active').attr('tree_id');
return selectId ? projectTree.getItems(selectId) : null;
},
getSelectNodeId: function() {
const selectId = $('tr.table-active').attr('tree_id');
return selectId || setting.treeSetting.rootId;
},
};
Utils.reloadTable();
return { projectTree, TableObj, ...Utils };
})({
treeSetting: { id: 'id', pid: 'tree_pid', level: 'tree_level', order: 'tree_order', rootId: '-1' },
source: projectList,
table: '#projectList',
});
class srObject {
constructor() {
const self = this;
this.selectTree = null;
const srSpreadSetting = {
cols: [
{title: '选择', field: 'selected', hAlign: 1, width: 40, formatter: '@', cellType: 'checkbox'},
{title: '名称', field: 'name', hAlign: 0, width: 180, formatter: '@', cellType: 'tree'},
{title: '期数', field: 'lastStageOrder', hAlign: 1, width: 60, formatter: '@'},
{title: '审批状态', field: 'lastStageStatus', hAlign: 1, width: 60, formatter: '@'},
],
emptyRows: 0,
headRows: 1,
headRowHeight: [32],
defaultRowHeight: 21,
headerFont: '12px 微软雅黑',
font: '12px 微软雅黑',
headColWidth: [30],
selectedBackColor: '#fffacd',
readOnly: true,
};
this.spread = SpreadJsObj.createNewSpread($('#sr-spread')[0]);
this.sheet = this.spread.getActiveSheet();
SpreadJsObj.initSheet(this.sheet, srSpreadSetting);
this.spread.bind(spreadNS.Events.ButtonClicked, function (e, info) {
if (!info.sheet.zh_setting) return;
const col = info.sheet.zh_setting.cols[info.col];
if (col.field !== 'selected') return;
const node = SpreadJsObj.getSelectObject(info.sheet);
self.selectNode(node, !node[col.field]);
SpreadJsObj.reloadColData(info.sheet, 0);
});
$('#sr-select-all').click(function () {
if (!self.selectTree) return;
for (const n of self.selectTree.nodes) {
n.selected = this.checked;
}
SpreadJsObj.reloadColData(self.sheet, 0);
});
$('#select-rela-ok').click(() => {
const rela = self.getSelects();
postData('/subproj/rela/save', { id: curProject.id, rela_tender: rela.join(',') }, function () {
$(`[tree_id=${curProject.id}]`)[0].setAttribute('rela-tender', rela.join(','));
$('#select-rela').modal('hide');
});
});
}
selectNode(node, select) {
const posterity = this.selectTree.getPosterity(node);
posterity.unshift(node);
for (const p of posterity) {
p.selected = select;
}
}
getSelects() {
const select = [];
for (const n of this.selectTree.nodes) {
if ((!n.children || n.children.length === 0) && n.selected) select.push(n.tid);
}
return select;
}
init() {
$('#sr-select-all')[0].checked = false;
const self = this;
postData(`/subproj/rela?id=${curProject.id}`, {}, tenders => {
const rela = curProject.rela_tender ? curProject.rela_tender.split(',') : [];
self.selectTree = Tender2Tree.convert(category, tenders, null, null, function (node, source) {
node.lastStageOrder = `第${source.lastStageOrder}期`;
node.lastStageStatus = source.lastStageStatus;
});
for (const node of self.selectTree.nodes) {
node.selected = rela.indexOf(node.tid + '') >= 0;
}
SpreadJsObj.loadSheetData(this.sheet, SpreadJsObj.DataType.Tree, this.selectTree);
});
}
}
let srSelect;
$('#select-rela').on('shown.bs.modal', () => {
if (!srSelect) srSelect = new srObject();
srSelect.init();
});
});