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