|
@@ -75,7 +75,7 @@ $(document).ready(() => {
|
|
|
const posCol = {
|
|
|
readOnly: {
|
|
|
isChangeAdd: function (data) {
|
|
|
- return !readOnly && !data.formc;
|
|
|
+ return !readOnly && !data.formc && (data.settle_status && data.settle_status === settleStatus.finish);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -96,6 +96,12 @@ $(document).ready(() => {
|
|
|
},
|
|
|
},
|
|
|
];
|
|
|
+ billsSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
|
|
|
+ if (data && data.settle_status && data.settle_status === settleStatus.finish) {
|
|
|
+ return spreadColor.stage.settle;
|
|
|
+ }
|
|
|
+ return defaultColor;
|
|
|
+ };
|
|
|
billsSpreadSetting.localCache = {
|
|
|
key: 'changes-ledger-spread',
|
|
|
colWidth: true,
|
|
@@ -121,6 +127,12 @@ $(document).ready(() => {
|
|
|
},
|
|
|
},
|
|
|
];
|
|
|
+ posSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
|
|
|
+ if (data && data.settle_status && data.settle_status === settleStatus.finish) {
|
|
|
+ return spreadColor.stage.settle;
|
|
|
+ }
|
|
|
+ return defaultColor;
|
|
|
+ };
|
|
|
posSpreadSetting.localCache = {
|
|
|
key: 'changes-pos-spread',
|
|
|
colWidth: true,
|
|
@@ -313,7 +325,7 @@ $(document).ready(() => {
|
|
|
invalidAll();
|
|
|
return;
|
|
|
}
|
|
|
- let last = first, sameParent = true, nodeUsed = first.used;
|
|
|
+ let last = first, sameParent = true, nodeUsed = first.used, settleFinish = first.settle_status === settleStatus.finish;
|
|
|
if (sel.rowCount > 1 && first) {
|
|
|
for (let r = 1; r < sel.rowCount; r++) {
|
|
|
const rNode = tree.nodes[sel.row + r];
|
|
@@ -326,6 +338,7 @@ $(document).ready(() => {
|
|
|
break;
|
|
|
}
|
|
|
nodeUsed = nodeUsed || rNode.used;
|
|
|
+ settleFinish = settleFinish || rNode.settle_status === settleStatus.finish;
|
|
|
if (rNode.level > first.level) continue;
|
|
|
if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
|
|
|
sameParent = false;
|
|
@@ -345,16 +358,16 @@ $(document).ready(() => {
|
|
|
}
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
|
|
|
- setObjEnable($('a[name=base-opr][type=add]'), valid && first && first.level > 1);
|
|
|
- setObjEnable($('a[name=base-opr][type=delete]'), valid && first && sameParent && first.level > 1 && !nodeUsed && first.formc);
|
|
|
+ setObjEnable($('a[name=base-opr][type=add]'), valid && first && first.level > 1 && first.settle_status !== settleStatus.finish);
|
|
|
+ setObjEnable($('a[name=base-opr][type=delete]'), valid && first && sameParent && first.level > 1 && !nodeUsed && first.formc && !settleFinish);
|
|
|
setObjEnable($('a[name=base-opr][type=up-move]'), valid && first && sameParent && first.level > 1 && preNode && first.formc);
|
|
|
setObjEnable($('a[name=base-opr][type=down-move]'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last) && first.formc);
|
|
|
const posRange = last ? pos.getLedgerPos(last.id) : [];
|
|
|
setObjEnable($('a[name=base-opr][type=up-level]'), valid && first && sameParent && tree.getParent(first) && !nodeUsed
|
|
|
- && first.level > 2 && ((!posRange || posRange.length === 0) || tree.isLastSibling(last)) && upPower && first.formc);
|
|
|
+ && first.level > 2 && ((!posRange || posRange.length === 0) || last.settle_status !== settleStatus.finish || tree.isLastSibling(last)) && upPower && first.formc);
|
|
|
const preNodePosRange = preNode ? pos.getLedgerPos(preNode.id) : [];
|
|
|
setObjEnable($('a[name=base-opr][type=down-level]'), valid && first && sameParent
|
|
|
- && first.level > 1 && preNode && (preNode.children.length > 0 || (preNode.children.length === 0 && preNode.formc && (!preNodePosRange || preNodePosRange.length === 0))) && !preNode.used && first.formc);
|
|
|
+ && first.level > 1 && preNode && (preNode.children.length > 0 || (preNode.children.length === 0 && preNode.formc && (!preNodePosRange || preNodePosRange.length === 0))) && !preNode.used && first.formc && preNode.settle_status !== settleStatus.finish);
|
|
|
setObjEnable($('#cut'), valid);
|
|
|
setObjEnable($('#paste'), valid);
|
|
|
},
|
|
@@ -446,32 +459,62 @@ $(document).ready(() => {
|
|
|
toastr.warning('选中的节点已计量,不可删除');
|
|
|
return;
|
|
|
}
|
|
|
+ if (child.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('选中的节点已结算,不可删除');
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
} else if (type === 'up-level') {
|
|
|
const parent = tree.getParent(node);
|
|
|
const children = parent ? parent.children : tree.children;
|
|
|
const index = children.indexOf(node);
|
|
|
- for (let i = index; i < children.length; i++) {
|
|
|
- const child = children[index];
|
|
|
- if (tree.checkNodeUsed(child, pos)) {
|
|
|
- if (i >= index + count) {
|
|
|
- toastr.warning('其后节点已计量,选中的节点不可升级');
|
|
|
- } else {
|
|
|
- toastr.warning('选中的节点已计量,不可升级');
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
+ const lastSelect = children[index + count - 1];
|
|
|
+ if (tree.checkNodeUsed(lastSelect, pos) && (!lastSelect.children || lastSelect.children.length === 0) && (children.length > index + count)) {
|
|
|
+ toastr.warning('选中的节点已计量,不可升级');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (lastSelect.settle_status === settleStatus.finish && (children.length > index + count)) {
|
|
|
+ toastr.warning('选中的节点已结算,不可升级');
|
|
|
+ return;
|
|
|
}
|
|
|
+ // for (let i = index; i < children.length; i++) {
|
|
|
+ // const child = children[index];
|
|
|
+ // if (tree.checkNodeUsed(child, pos)) {
|
|
|
+ // if (i >= index + count) {
|
|
|
+ // toastr.warning('其后节点已计量,选中的节点不可升级');
|
|
|
+ // } else {
|
|
|
+ // toastr.warning('选中的节点已计量,不可升级');
|
|
|
+ // }
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
} else if (type === 'down-level') {
|
|
|
const parent = tree.getParent(node);
|
|
|
const children = parent ? parent.children : tree.children;
|
|
|
const index = children.indexOf(node);
|
|
|
- for (let i = 0; i < count; i++) {
|
|
|
+ if (index > 0 && children[index-1].used) {
|
|
|
+ toastr.warning('其前节点已计量,选中的节点不可降级');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (index > 0 && children[index-1].settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('其前节点已结算,选中的节点不可降级');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (let i = index; i < count; i++) {
|
|
|
const child = children[i+index];
|
|
|
if (tree.checkNodeUsed(child, pos)) {
|
|
|
toastr.warning('选中的节点已计量,不可降级');
|
|
|
return;
|
|
|
}
|
|
|
+ if (tree.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('选中的节点已结算,不可降级');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type === 'add') {
|
|
|
+ if (node.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('选中的节点已结算,不可新增子项');
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -654,6 +697,7 @@ $(document).ready(() => {
|
|
|
gcl: {type: 'warning', msg: '工程量清单,不可粘贴项目节数量'},
|
|
|
posXmj: {type: 'warning', msg: '清单含有计量单元,不可粘贴项目节编号'},
|
|
|
// sameParent: {type: 'warning', msg: '仅可粘贴同层节点'},
|
|
|
+ settle: {type: 'warning', msg: '已结算节点,不可修改数量、单价、金额'},
|
|
|
};
|
|
|
const datas = [], filterNodes = [];
|
|
|
|
|
@@ -708,6 +752,10 @@ $(document).ready(() => {
|
|
|
toastMessageUniq (hint.usedUp);
|
|
|
continue;
|
|
|
}
|
|
|
+ if (colSetting.type === 'Number' && node.settle_status === settleStatus.finish) {
|
|
|
+ toastMessageUniq(hint.settle);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (colSetting.type === 'Number') {
|
|
|
const num = _.toNumber(value);
|
|
|
if (num) {
|
|
@@ -873,6 +921,7 @@ $(document).ready(() => {
|
|
|
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 +'"已计量,请勿修改');
|
|
@@ -900,6 +949,10 @@ $(document).ready(() => {
|
|
|
const self = this;
|
|
|
const sheet = spread.getActiveSheet();
|
|
|
const [tree, node] = this.getDefaultSelectInfo(spread.getActiveSheet());
|
|
|
+ if (node.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('选中的节点已结算,不可粘贴整块');
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
postData(window.location.pathname + '/update', {
|
|
|
postType: 'paste-block',
|
|
@@ -944,7 +997,7 @@ $(document).ready(() => {
|
|
|
info.cancel = posRange && posRange.length > 0;
|
|
|
break;
|
|
|
case 'unit_price':
|
|
|
- info.cancel = (node.children && node.children.length > 0) || node.used;
|
|
|
+ info.cancel = (node.children && node.children.length > 0) || node.used || node.settle_status === settleStatus.finish;
|
|
|
break;
|
|
|
case 'sgfh_qty':
|
|
|
case 'sgfh_tp':
|
|
@@ -954,11 +1007,11 @@ $(document).ready(() => {
|
|
|
case 'qtcl_tp':
|
|
|
case 'deal_qty':
|
|
|
case 'deal_tp':
|
|
|
- info.cancel = (node.children && node.children.length > 0);
|
|
|
+ info.cancel = (node.children && node.children.length > 0) || node.settle_status === settleStatus.finish;
|
|
|
break;
|
|
|
case 'dgn_qty1':
|
|
|
case 'dgn_qty2':
|
|
|
- info.cancel = !_.isEmpty(node.b_code);
|
|
|
+ info.cancel = !_.isEmpty(node.b_code || node.settle_status === settleStatus.finish);
|
|
|
break;
|
|
|
}
|
|
|
},
|
|
@@ -1168,7 +1221,7 @@ $(document).ready(() => {
|
|
|
if (!tree) return true;
|
|
|
const first = sheet.zh_tree.nodes[row];
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
- return !(valid && first && first.level > 1);
|
|
|
+ return !(valid && first && first.level > 1 && first.settle_status !== settleStatus.finish);
|
|
|
}
|
|
|
};
|
|
|
billsContextMenuOptions.items.delete = {
|
|
@@ -1185,7 +1238,7 @@ $(document).ready(() => {
|
|
|
const tree = sheet.zh_tree;
|
|
|
if (!tree) return true;
|
|
|
const first = sheet.zh_tree.nodes[row];
|
|
|
- let last = first, sameParent = true, nodeUsed = first.used;
|
|
|
+ let last = first, sameParent = true, nodeUsed = first.used, settleFinish = first.settle_status === settleStatus.finish;
|
|
|
if (sel.rowCount > 1 && first) {
|
|
|
for (let r = 1; r < sel.rowCount; r++) {
|
|
|
const rNode = tree.nodes[sel.row + r];
|
|
@@ -1197,6 +1250,7 @@ $(document).ready(() => {
|
|
|
return true;
|
|
|
}
|
|
|
nodeUsed = nodeUsed || rNode.used;
|
|
|
+ settleFinish = settleFinish || rNode.settle_status === settleStatus.finish;
|
|
|
if (rNode.level > first.level) continue;
|
|
|
if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
|
|
|
sameParent = false;
|
|
@@ -1206,7 +1260,7 @@ $(document).ready(() => {
|
|
|
}
|
|
|
}
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
- return !(valid && first && sameParent && !(first.level === 1 && first.node_type) && !nodeUsed && first.formc);
|
|
|
+ return !(valid && first && sameParent && !(first.level === 1 && first.node_type) && !nodeUsed && first.formc && !settleFinish);
|
|
|
}
|
|
|
};
|
|
|
billsContextMenuOptions.items.sprBase = '----';
|
|
@@ -1348,7 +1402,7 @@ $(document).ready(() => {
|
|
|
if (!tree) return true;
|
|
|
const first = sheet.zh_tree.nodes[row];
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
- return !(valid && first && first.level > 1);
|
|
|
+ return !(valid && first && first.level > 1 && first.settle_status !== settleStatus.finish);
|
|
|
}
|
|
|
};
|
|
|
billsContextMenuOptions.items.batchInsertBillsPos = {
|
|
@@ -1362,10 +1416,10 @@ $(document).ready(() => {
|
|
|
const select = SpreadJsObj.getSelectObject(billsSheet);
|
|
|
if (select) {
|
|
|
if (select.code && select.code !== '') {
|
|
|
- return !billsTree.isLeafXmj(select);
|
|
|
+ return !billsTree.isLeafXmj(select) || select.settle_status === settleStatus.finish;
|
|
|
} else {
|
|
|
const parent = billsTree.getParent(select);
|
|
|
- return !(parent && billsTree.isLeafXmj(parent));
|
|
|
+ return !(parent && billsTree.isLeafXmj(parent)) || !(parent && parent.settle_status === settleStatus.finish);
|
|
|
}
|
|
|
} else {
|
|
|
return false;
|
|
@@ -1447,7 +1501,7 @@ $(document).ready(() => {
|
|
|
? (data[exprInfo.expr] ? data[exprInfo.expr] : data[col.field])
|
|
|
: data[col.field];
|
|
|
$('#pos-expr').val(value).attr('field', col.field).attr('org', data[col.field])
|
|
|
- .attr('readOnly', readOnly || (!data.formc && cell.locked())).attr('data-row', sel.row);
|
|
|
+ .attr('readOnly', readOnly || (!data.formc && cell.locked()) || data.settle_status === settleStatus.finish).attr('data-row', sel.row);
|
|
|
} else {
|
|
|
$('#pos-expr').val('').attr('readOnly', true);
|
|
|
$('#pos-expr').removeAttr('data-row');
|
|
@@ -1467,7 +1521,7 @@ $(document).ready(() => {
|
|
|
if (node) {
|
|
|
const posData = pos.getLedgerPos(node.id) || [];
|
|
|
SpreadJsObj.loadSheetData(posSheet, 'data', posData);
|
|
|
- posSheet.zh_setting.readOnly = readOnly || (node.used && posData.length === 0);
|
|
|
+ posSheet.zh_setting.readOnly = readOnly || (node.used && posData.length === 0) || (node.settle_status && node.settle_status === settleStatus.finish);
|
|
|
} else {
|
|
|
SpreadJsObj.loadSheetData(posSheet, 'data', []);
|
|
|
posSheet.zh_setting.readOnly = true;
|
|
@@ -1502,6 +1556,10 @@ $(document).ready(() => {
|
|
|
toastr.error('"' + posData.name + '"已计量,请勿删除');
|
|
|
return;
|
|
|
}
|
|
|
+ if (posData.settle_status) {
|
|
|
+ toastr.error('"' + posData.name + '"已结算,请勿删除');
|
|
|
+ return;
|
|
|
+ }
|
|
|
data.postData.push(sheet.zh_data[iRow + row].id);
|
|
|
}
|
|
|
}
|
|
@@ -1525,7 +1583,12 @@ $(document).ready(() => {
|
|
|
}
|
|
|
}
|
|
|
data.postData.push(nextUpdate);
|
|
|
-
|
|
|
+ } else if (type === 'add') {
|
|
|
+ const billsNode = SpreadJsObj.getSelectObject(billsSheet);
|
|
|
+ if (billsNode.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('清单已结算,不可新增计量单元');
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
if (data.postData.length > 0) {
|
|
|
postData(window.location.pathname + '/update', data, function (result) {
|
|
@@ -1560,6 +1623,9 @@ $(document).ready(() => {
|
|
|
info.sheet.getCell(info.row, info.col).text(node[exprInfo.expr]);
|
|
|
}
|
|
|
}
|
|
|
+ if (col.type === 'Number' && node.settle_status === settleStatus.finish) {
|
|
|
+ info.cancel = true;
|
|
|
+ }
|
|
|
},
|
|
|
/**
|
|
|
* 编辑单元格响应事件
|
|
@@ -1605,12 +1671,22 @@ $(document).ready(() => {
|
|
|
const sortData = info.sheet.zh_data;
|
|
|
const order = (!sortData || sortData.length === 0) ? 1 : Math.max(sortData[sortData.length - 1].porder + 1, sortData.length + 1);
|
|
|
data.postData = { name: newText, lid: node.id, porder: order};
|
|
|
+ if (node.settle_status === settleStatus.finish) {
|
|
|
+ toastr.error('已结算清单不可插入计量单元');
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
} else {
|
|
|
return;
|
|
|
}
|
|
|
} else {
|
|
|
data.posPostType = 'update';
|
|
|
data.postData = {id: posData.id, name: newText};
|
|
|
+ if (col.type === 'Number' && posData.settle_status === settleStatus.finish) {
|
|
|
+ toastr.error('计量单元已结算,不可修改');
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
} else if (!posData) {
|
|
|
toastr.warning('新增计量单元请先输入名称');
|
|
@@ -1728,6 +1804,10 @@ $(document).ready(() => {
|
|
|
toastr.error('"' + posData.name + '"已计量,请勿删除');
|
|
|
return;
|
|
|
}
|
|
|
+ if (posData.settle_status === settleStatus.finish) {
|
|
|
+ toastr.error(`"${posData.name}"已计量,请勿删除`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
data.postData.push(sortData[iRow + row].id);
|
|
|
}
|
|
|
}
|
|
@@ -1762,6 +1842,11 @@ $(document).ready(() => {
|
|
|
posSpreadObj.loadCurPosData();
|
|
|
return;
|
|
|
}
|
|
|
+ if (node.settle_status === settleStatus.finish) {
|
|
|
+ toastr.error('清单已结算,请勿修改计量单元数据');
|
|
|
+ posSpread.loadCurPosData();
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (!info.sheet.zh_setting) {
|
|
|
posSpreadObj.loadCurPosData();
|
|
|
return;
|
|
@@ -1769,6 +1854,10 @@ $(document).ready(() => {
|
|
|
|
|
|
const data = [];
|
|
|
const sortData = info.sheet.zh_data || [];
|
|
|
+ const hint = {
|
|
|
+ expr: {type: 'warning', msg: '粘贴了表达式非法,已过滤'},
|
|
|
+ settle: {type: 'warning', msg: '计量单元已结算,不可修改台账数据,已过滤'},
|
|
|
+ };
|
|
|
if (sortData.length === 0 || info.cellRange.row + info.cellRange.rowCount > sortData.length) {
|
|
|
if (info.cellRange.col !== 0) {
|
|
|
toastr.warning('新增计量单元请先输入名称');
|
|
@@ -1788,6 +1877,11 @@ $(document).ready(() => {
|
|
|
if (!colSetting) continue;
|
|
|
|
|
|
posData[colSetting.field] = trimInvalidChar(info.sheet.getText(curRow, curCol));
|
|
|
+ if (posData.id && colSetting.type === 'Number' && sortData[curRow].settle_status === settleStatus.finish) {
|
|
|
+ bPaste = false;
|
|
|
+ toastMessageUniq(hint.settle);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (colSetting.type === 'Number') {
|
|
|
const num = _.toNumber(posData[colSetting.field]);
|
|
|
if (num) {
|
|
@@ -1915,7 +2009,15 @@ $(document).ready(() => {
|
|
|
disabled: function (key, opt) {
|
|
|
if (posSheet.zh_data) {
|
|
|
const selection = posSheet.getSelections();
|
|
|
- return (posSheet.zh_data.length < selection[0].row + selection[0].rowCount) || (posSheet.zh_data[selection[0].row] && !posSheet.zh_data[selection[0].row].formc);
|
|
|
+ const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
+ const row = sel ? sel.row : -1;
|
|
|
+ const rowCount = sel.rowCount;
|
|
|
+ let settleFinish = false;
|
|
|
+ for (let i = row; i < row + rowCount; i++) {
|
|
|
+ if (!posSheet.zh_data[i]) continue;
|
|
|
+ settleFinish = settleFinish || posSheet.zh_data[i].settle_status === settleStatus.finish;
|
|
|
+ }
|
|
|
+ return (posSheet.zh_data.length < selection[0].row + selection[0].rowCount) || (posSheet.zh_data[selection[0].row] && !posSheet.zh_data[selection[0].row].formc) || settleFinish;
|
|
|
} else {
|
|
|
return true;
|
|
|
}
|
|
@@ -1980,6 +2082,10 @@ $(document).ready(() => {
|
|
|
toastr.warning('非最底层项目下,不应添加节点');
|
|
|
return;
|
|
|
}
|
|
|
+ if (mainNode.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('已结算节点下,不应添加签约清单');
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
postData(window.location.pathname + '/update', {
|
|
|
postType: 'add-deal',
|
|
@@ -2386,6 +2492,19 @@ $(document).ready(() => {
|
|
|
toastr.warning('非最底层项目下,不应添加节点');
|
|
|
return;
|
|
|
}
|
|
|
+ if (mainNode.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('已结算节点下,不可添加工程量清单');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const stdNodes = stdTree.getAllParents(stdNode);
|
|
|
+ for (const node of stdNodes) {
|
|
|
+ const parent = mainTree.datas.find(x => { return x.code === node.code && x.name === node.name; });
|
|
|
+ if (parent && parent.settle_status === settleStatus.finish) {
|
|
|
+ toastr.warning('项目节父项已结算,不可添加节点');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
postData(window.location.pathname + '/update', {
|