123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- $(document).ready(() => {
- autoFlashHeight();
- const colSpread = SpreadJsObj.createNewSpread($('#spread-col')[0]);
- const colSheet = colSpread.getActiveSheet();
- const canCheck = function(data, col) {
- return data && data[col.relaField];
- };
- const colSpreadSetting = {
- cols: [
- { title: 'key', colSpan: '1', rowSpan: '2', field: 'key', hAlign: 0, width: 0, visible: false, formatter: '@', readOnly: true, },
- { title: '可显示列', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 200, formatter: '@', readOnly: true, },
- { title: '项目节\n清单', colSpan: '1', rowSpan: '2', field: 'bills_valid', hAlign: 1, width: 80, readOnly: true, cellType: 'signalCheckbox', show: canCheck, relaField: 'bills', },
- { title: '计量单元', colSpan: '1', rowSpan: '2', field: 'pos_valid', hAlign: 1, width: 80, readOnly: true, cellType: 'signalCheckbox', show: canCheck, relaField: 'pos', },
- { title: '配置项|是否显示', colSpan: '2|1', rowSpan: '1|1', field: 'valid', hAlign: 1, width: 60, cellType: 'checkbox', readOnly: true },
- { title: '|别名', colSpan: '|1', rowSpan: '1|1', field: 'alias', hAlign: 0, width: 120, formatter: '@', },
- ],
- headRows: 2,
- headRowHeight: [25, 25],
- defaultRowHeight: 21,
- headerFont: '12px 微软雅黑',
- font: '12px 微软雅黑',
- emptyRows: 0,
- getColor: function (sheet, data, row, col, defaultColor) {
- if (!data) return defaultColor;
- switch (col.field) {
- case 'bills_valid':
- case 'pos_valid':
- case 'valid':
- return data.fixed.indexOf('valid') >= 0 ? '#eeeeee' : defaultColor;
- case 'alias':
- return data.fixed.indexOf(col.field) >= 0 ? '#eeeeee' : defaultColor;
- default:
- return defaultColor;
- }
- },
- };
- SpreadJsObj.initSheet(colSheet, colSpreadSetting);
- const reloadData = function () {
- const data = [];
- colSet.forEach(x => {
- const baseCol = BaseSetCol.find(b => { return x.key === b.key });
- if (!baseCol) return;
- const colData = { ...x, ...baseCol };
- if (colData.bills && colData.bills_valid === undefined) colData.bills_valid = colData.valid;
- if (colData.pos && colData.pos_valid === undefined) colData.pos_valid = colData.valid;
- data.push(colData);
- });
- BaseSetCol.forEach(x => {
- const col = colSet.find(c => { return c.key === x.key });
- if (!col) data.push({ ...x, valid: 0});
- });
- SpreadJsObj.loadSheetData(colSheet, SpreadJsObj.DataType.Data, data);
- };
- const colSpreadObj = {
- refreshOperationValid: function (sheet, selection) {
- const setObjEnable = function (obj, enable) {
- if (enable) {
- obj.removeClass('disabled');
- } else {
- obj.addClass('disabled');
- }
- };
- const invalidAll = function () {
- setObjEnable($('a[name=base-opr][type=up-move]'), false);
- setObjEnable($('a[name=base-opr][type=down-move]'), false);
- };
- const sel = selection ? selection[0] : sheet.getSelections()[0];
- const row = sel ? sel.row : -1;
- const data = sheet.zh_data;
- const select = sheet.zh_data[row];
- if (!select) {
- invalidAll();
- return;
- }
- const pre = data[row-1];
- const next = data[row + 1];
- setObjEnable($('a[name=base-opr][type=up-move]'), !!pre && pre.fixed.indexOf('move') < 0 && select.fixed.indexOf('move') < 0);
- setObjEnable($('a[name=base-opr][type=down-move]'), !!next && next.fixed.indexOf('move') < 0 && select.fixed.indexOf('move') < 0);
- },
- selectionChanged: function (e, info) {
- if (info.newSelections) {
- if (!info.oldSelections || info.newSelections[0].row !== info.oldSelections[0].row) {
- colSpreadObj.refreshOperationValid(info.sheet, info.newSelections);
- }
- }
- },
- baseOpr: function (sheet, type) {
- const sel = sheet.getSelections()[0];
- const data = sheet.zh_data;
- if (type === 'up-move') {
- [data[sel.row - 1], data[sel.row]] = [data[sel.row], data[sel.row - 1]];
- SpreadJsObj.reLoadRowsData(sheet, [sel.row - 1, sel.row]);
- sheet.setSelection(sel.row - 1, sel.col, sel.rowCount, sel.colCount);
- SpreadJsObj.reloadRowsBackColor(sheet, [sel.row, sel.row - 1]);
- } else if (type === 'down-move') {
- [data[sel.row + 1], data[sel.row]] = [data[sel.row], data[sel.row + 1]];
- SpreadJsObj.reLoadRowsData(sheet, [sel.row, sel.row + 1]);
- sheet.setSelection(sel.row + 1, sel.col, sel.rowCount, sel.colCount);
- SpreadJsObj.reloadRowsBackColor(sheet, [sel.row, sel.row + 1]);
- }
- colSpreadObj.refreshOperationValid(sheet);
- },
- editStarting(e, info) {
- if (!info.sheet.zh_setting || !info.sheet.zh_data) return;
- const col = info.sheet.zh_setting.cols[info.col];
- const node = info.sheet.zh_data[info.row];
- if (!node) {
- info.cancel = true;
- return;
- }
- switch (col.field) {
- case 'bills_valid':
- info.cancel = !node.bills;
- break;
- case 'pos_valid':
- info.cancel = !node.pos;
- break;
- case 'alias':
- info.cancel = node.fixed.indexOf('alias') >= 0;
- break;
- }
- },
- editEnded: function (e, info) {
- if (!info.sheet.zh_setting) return;
- const col = info.sheet.zh_setting.cols[info.col];
- const sortData = info.sheet.zh_dataType === 'tree' ? info.sheet.zh_tree.nodes : info.sheet.zh_data;
- const node = sortData[info.row];
- // 未改变值则不提交
- const orgValue = node[col.field];
- const newValue = trimInvalidChar(info.editingText);
- if (orgValue == info.editingText || ((!orgValue || orgValue === '') && (newValue === ''))) {
- return;
- }
- node[col.field] = newValue;
- },
- deletePress: function (sheet) {
- if (!sheet.zh_setting) return;
- const sel = sheet.getSelections()[0], datas = [];
- for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
- let bDel = false;
- const node = sheet.zh_tree.nodes[iRow];
- const data = sheet.zh_tree.getNodeKeyData(node);
- for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
- const col = sheet.zh_setting.cols[iCol];
- const style = sheet.getStyle(iRow, iCol);
- if (style.locked || (['dgn_qty1', 'dgn_qty2'].indexOf(col.field) >= 0 && node.b_code)) continue;
- if (col.type === 'Number' && node.settle_status === settleStatus.finish) continue;
- if (['dgn_qty1', 'dgn_qty2'].indexOf(col.field) < 0 && sheet.zh_tree.checkNodeUsed(node, pos)) {
- toastr.warning('"' + (node.code || '') + (node.b_code || '') + ' ' + node.name +'"已计量,请勿修改');
- return;
- }
- data[col.field] = null;
- const exprInfo = getExprInfo(col.field);
- if (exprInfo) {
- data[exprInfo.expr] = '';
- }
- bDel = true;
- }
- if (bDel) datas.push(data);
- }
- if (datas.length > 0) {
- postData(window.location.pathname + '/update', {postType: 'update', postData: datas}, function (result) {
- const refreshNode = sheet.zh_tree.loadPostData(result);
- colSpreadObj.refreshTree(sheet, refreshNode);
- colSpreadObj.loadExprToInput(sheet);
- });
- }
- },
- buttonClicked: function(e, info) {
- if (!info.sheet.zh_setting) return;
- const col = info.sheet.zh_setting.cols[info.col];
- if (col.field.indexOf('valid') < 0) return;
- const node = SpreadJsObj.getSelectObject(info.sheet);
- if (col.field === 'pos_valid' && !node.pos) return;
- if (col.field === 'bills_valid' && !node.bills) return;
- if (node.fixed.indexOf('valid') >= 0) return;
- if (col.field === 'valid') {
- node.valid = !node.valid;
- node.bills_valid = node.valid && node.bills;
- node.pos_valid = node.valid && node.pos;
- } else {
- node[col.field] = !node[col.field];
- if (node.bills_valid || node.pos_valid) node.valid = 1;
- if (!node.bills_valid && !node.pos_valid) node.valid = 0;
- }
- SpreadJsObj.reLoadRowData(info.sheet, info.row);
- },
- };
- reloadData();
- colSpreadObj.refreshOperationValid(colSheet);
- colSpread.bind(spreadNS.Events.SelectionChanged, colSpreadObj.selectionChanged);
- colSpread.bind(spreadNS.Events.EditStarting, colSpreadObj.editStarting);
- colSpread.bind(spreadNS.Events.EditEnded, colSpreadObj.editEnded);
- colSpread.bind(spreadNS.Events.ButtonClicked, colSpreadObj.buttonClicked);
- $('a[name="base-opr"]').click(function () {
- colSpreadObj.baseOpr(colSheet, this.getAttribute('type'));
- });
- const getCurrentColSet = function() {
- const cols = { key: 0, name: 1, bills_valid: 2, pos_valid: 3, valid: 4, alias: 5};
- const rowCount = colSheet.getRowCount();
- const result = [];
- for (let iRow = 0; iRow < rowCount; iRow++) {
- const keyName = colSheet.getText(iRow, cols.key);
- const baseCol = BaseSetCol.find(x => { return x.key === keyName; });
- if (!baseCol) continue;
- const valid = colSheet.getText(iRow, cols.valid);
- const colSet = { key: keyName, valid: valid === '1' || valid === 'TRUE' ? 1 : 0 };
- if (baseCol.bills) {
- const bills_valid = colSheet.getText(iRow, cols.bills_valid);
- colSet.bills_valid = bills_valid === '1' || bills_valid === 'TRUE' ? 1 : 0;
- }
- if (baseCol.pos) {
- const pos_valid = colSheet.getText(iRow, cols.pos_valid);
- colSet.pos_valid = pos_valid === '1' || pos_valid === 'TRUE' ? 1 : 0;
- }
- if (baseCol.fixed.indexOf('alias') < 0) {
- const alias = colSheet.getText(iRow, cols.alias);
- if (alias) colSet.alias = alias;
- }
- result.push(colSet);
- }
- console.log(result);
- return result;
- };
- let previewSpreadSetting, previewBillsSpread, previewPosSpread;
- $('#preview-spread').on('shown.bs.modal', function () {
- if (!previewBillsSpread) {
- previewBillsSpread = SpreadJsObj.createNewSpread($('#preview-bills-spread')[0]);
- }
- const previewBillsSheet = previewBillsSpread.getActiveSheet();
- SpreadJsObj.initSheet(previewBillsSheet, previewSpreadSetting.billsSpread);
- if (!previewPosSpread) {
- previewPosSpread = SpreadJsObj.createNewSpread($('#preview-pos-spread')[0]);
- }
- const previewPosSheet = previewPosSpread.getActiveSheet();
- SpreadJsObj.initSheet(previewPosSheet, previewSpreadSetting.posSpread);
- });
- $('#spread-save').click(() => {
- const data = { sType, code: sCode, colSet: getCurrentColSet() };
- postData('/setting/spread/save', data, function(result) {
- colSet.length = 0;
- colSet.push(...result.colSet);
- reloadData();
- });
- });
- $('#spread-preview').click(() => {
- const data = { sType, colSet: getCurrentColSet() };
- postData('/setting/spread/preview', data, function(result) {
- previewSpreadSetting = result;
- $('#preview-spread').modal('show');
- })
- });
- $('#spread-reset').click(() => {
- const data = { sType, code: sCode };
- postData('/setting/spread/reset', data, function(result) {
- colSet.length = 0;
- colSet.push(...result.colSet);
- reloadData();
- });
- });
- });
|