|
@@ -33,7 +33,7 @@ let calcProgramManage = {
|
|
|
],
|
|
|
view:{
|
|
|
comboBox:[],
|
|
|
- lockColumns:[0,1,2,5,6],
|
|
|
+ lockColumns:[2,5],
|
|
|
colHeaderHeight: CP_Col_Width.colHeader,
|
|
|
rowHeaderWidth: CP_Col_Width.rowHeader
|
|
|
}
|
|
@@ -59,9 +59,8 @@ let calcProgramManage = {
|
|
|
me.detailSpread.getSheet(0).getRange(-1, 4, -1, 1).cellType(fieldName);
|
|
|
|
|
|
me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell);
|
|
|
- me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged);
|
|
|
- me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onDetailEditEnded);
|
|
|
- me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
|
|
|
+ me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.ValueChanged, me.onDetailValueChanged);
|
|
|
+ me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onDetailEnterCell);
|
|
|
|
|
|
let mSheet = me.mainSpread.getSheet(0);
|
|
|
sheetCommonObj.showData(mSheet, me.mainSetting, me.datas);
|
|
@@ -86,41 +85,55 @@ let calcProgramManage = {
|
|
|
sheetCommonObj.showData(dSheet, me.detailSetting, dData);
|
|
|
me.detailSpread.resumePaint();
|
|
|
},
|
|
|
- onDetailEditEnded: function(sender, args) {
|
|
|
+ onDetailValueChanged: function(sender, args) {
|
|
|
$.bootstrapLoading.start();
|
|
|
-
|
|
|
let me = calcProgramManage;
|
|
|
let editInfo= me.getSelectionInfo();
|
|
|
- if (me.detailSetting.header[args.col].dataCode == 'feeRate') {
|
|
|
+ let curCalcItem = editInfo.calcItem;
|
|
|
+ let dataCode = me.detailSetting.header[args.col].dataCode;
|
|
|
+
|
|
|
+ if (dataCode == 'feeRate') {
|
|
|
projectObj.project.FeeRate.updateFeeRateFromCalc(args.editingText,editInfo);
|
|
|
- }
|
|
|
- else {
|
|
|
- if (me.detailSetting.header[args.col].dataCode == 'displayFieldName') {
|
|
|
- if (editInfo.calcItem.displayFieldName == args.editingText) {
|
|
|
- $.bootstrapLoading.end();
|
|
|
- return;
|
|
|
- }
|
|
|
- editInfo.calcItem.fieldName = projectObj.project.calcProgram.compiledFeeTypeMaps[args.editingText];
|
|
|
- editInfo.calcItem.displayFieldName = args.editingText; // 这句不入库,仅用于切换后再切换回来时界面正确显示
|
|
|
- }
|
|
|
- else if (me.detailSetting.header[args.col].dataCode == 'dispExprUser'){ // 除非直接改单元格,弹窗不会走这里
|
|
|
- alert(editInfo.calcItem.dispExprUser);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ return;
|
|
|
+ };
|
|
|
+
|
|
|
+ if (dataCode == 'displayFieldName') {
|
|
|
+ if (curCalcItem.displayFieldName == args.newValue) {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ return;
|
|
|
};
|
|
|
|
|
|
- let data = {
|
|
|
- 'projectID': projectObj.project.ID(),
|
|
|
- 'templatesID': editInfo.template.ID,
|
|
|
- 'calcItem': editInfo.calcItem
|
|
|
+ if (analyzer.fieldNameIsUsed(me.getSelectionInfo().template, args.newValue)){
|
|
|
+ let sheet = me.detailSpread.getActiveSheet();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ sheet.setValue(args.row, args.col, args.oldValue);
|
|
|
+ sheet.resumeEvent();
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ alert(`“${args.newValue}” 已被其它行使用,不允许重复选择!`);
|
|
|
+ return;
|
|
|
};
|
|
|
- me.saveCalcItem(data, function (rst) {
|
|
|
- if (rst){
|
|
|
- projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
- $.bootstrapLoading.end();
|
|
|
- }
|
|
|
- });
|
|
|
+
|
|
|
+ curCalcItem.fieldName = projectObj.project.calcProgram.compiledFeeTypeMaps[args.newValue];
|
|
|
}
|
|
|
+ else if (dataCode == 'dispExprUser'){ // 除非直接改单元格,弹窗不会走这里
|
|
|
+ alert('用户修改dispExprUser值,触发onDetailEditEnded事件。');
|
|
|
+ };
|
|
|
+
|
|
|
+ curCalcItem[dataCode] = args.newValue;
|
|
|
+ let data = {
|
|
|
+ 'projectID': projectObj.project.ID(),
|
|
|
+ 'templatesID': editInfo.template.ID,
|
|
|
+ 'calcItem': curCalcItem
|
|
|
+ };
|
|
|
+ me.saveCalcItem(data, function (rst) {
|
|
|
+ if (rst){
|
|
|
+ projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $.bootstrapLoading.end();
|
|
|
},
|
|
|
- onEnterCell: function (sender, args) {
|
|
|
+ onDetailEnterCell: function (sender, args) {
|
|
|
// let t = calcProgramManage.getSelectionInfo().template;
|
|
|
// let c = calcProgramManage.getSelectionInfo().calcItem;
|
|
|
// let lc = analyzer.calcItemLabourCoe(c);
|
|
@@ -167,10 +180,9 @@ let calcProgramManage = {
|
|
|
calcProgramManage.buildSheet();
|
|
|
calcProgramManage.mainSpread.getActiveSheet().setSelection(ts.length - 1, 0, 1, 1);
|
|
|
calcProgramManage.refreshDetailSheet();
|
|
|
- $.bootstrapLoading.end();
|
|
|
}
|
|
|
- else $.bootstrapLoading.end();
|
|
|
});
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
},
|
|
|
"reNameTemplate": {
|
|
@@ -213,10 +225,9 @@ let calcProgramManage = {
|
|
|
if (rst){
|
|
|
projectObj.project.calcProgram.compileTemplate(template);
|
|
|
sheetCommonObj.showData(calcProgramManage.mainSpread.getSheet(0), calcProgramManage.mainSetting, calcProgramManage.datas);
|
|
|
- $.bootstrapLoading.end();
|
|
|
}
|
|
|
- else $.bootstrapLoading.end();
|
|
|
});
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
},
|
|
|
"spr1": '--------',
|
|
@@ -248,10 +259,9 @@ let calcProgramManage = {
|
|
|
calcProgramManage.buildSheet();
|
|
|
calcProgramManage.mainSpread.getActiveSheet().setSelection(idx - 1, 0, 1, 1);
|
|
|
calcProgramManage.refreshDetailSheet();
|
|
|
- $.bootstrapLoading.end();
|
|
|
}
|
|
|
- else $.bootstrapLoading.end();
|
|
|
});
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -268,6 +278,7 @@ let calcProgramManage = {
|
|
|
name: "插入行",
|
|
|
icon: 'fa-sign-in',
|
|
|
callback: function () {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
let template = calcProgramManage.getSelectionInfo().template;
|
|
|
let idx = calcProgramManage.detailSpread.getActiveSheet().getActiveRowIndex();
|
|
|
|
|
@@ -276,7 +287,7 @@ let calcProgramManage = {
|
|
|
// newItem.name = '新建';
|
|
|
newItem.memo = '自定义';
|
|
|
newItem.custom = true;
|
|
|
- newItem.expression = '0';
|
|
|
+ newItem.expression = '0'; // 这里必须得有值,否则程序内部公式解析会出现诸多问题
|
|
|
template.calcItems.splice(idx + 1, 0, newItem);
|
|
|
let data = {
|
|
|
'projectID': projectObj.project.ID(),
|
|
@@ -289,9 +300,9 @@ let calcProgramManage = {
|
|
|
calcProgramManage.refreshDetailSheet();
|
|
|
calcProgramManage.detailSpread.getActiveSheet().setSelection(idx + 1, 0, 1, 1);
|
|
|
projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
- $.bootstrapLoading.end();
|
|
|
}
|
|
|
});
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
},
|
|
|
"spr1": '--------',
|
|
@@ -299,30 +310,38 @@ let calcProgramManage = {
|
|
|
name: '删除行',
|
|
|
icon: 'fa-remove',
|
|
|
callback: function () {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
let template = calcProgramManage.getSelectionInfo().template;
|
|
|
let idx = calcProgramManage.detailSpread.getActiveSheet().getActiveRowIndex();
|
|
|
let item = template.calcItems[idx];
|
|
|
|
|
|
+ if (item.fieldName == 'common'){
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ alert(`费用类别为“工程造价”的行不允许删除!`);
|
|
|
+ return;
|
|
|
+ };
|
|
|
+
|
|
|
if (analyzer.calcItemIsUsed(template, item)){
|
|
|
+ $.bootstrapLoading.end();
|
|
|
alert(`第 ${idx + 1} 行“${item.name}”已被第 ${item.tempUsed + 1} 行引用,不允许删除!`);
|
|
|
delete item.tempUsed;
|
|
|
- }
|
|
|
- else{
|
|
|
- template.calcItems.splice(idx, 1);
|
|
|
- let data = {
|
|
|
- 'projectID': projectObj.project.ID(),
|
|
|
- 'ID': template.ID,
|
|
|
- 'calcItems': template.calcItems
|
|
|
- };
|
|
|
- calcProgramManage.updateTemplate(data, function (rst) {
|
|
|
- if (rst){
|
|
|
- projectObj.project.calcProgram.compileTemplate(template);
|
|
|
- calcProgramManage.refreshDetailSheet();
|
|
|
- projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
- $.bootstrapLoading.end();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ return;
|
|
|
+ };
|
|
|
+
|
|
|
+ template.calcItems.splice(idx, 1);
|
|
|
+ let data = {
|
|
|
+ 'projectID': projectObj.project.ID(),
|
|
|
+ 'ID': template.ID,
|
|
|
+ 'calcItems': template.calcItems
|
|
|
+ };
|
|
|
+ calcProgramManage.updateTemplate(data, function (rst) {
|
|
|
+ if (rst){
|
|
|
+ projectObj.project.calcProgram.compileTemplate(template);
|
|
|
+ calcProgramManage.refreshDetailSheet();
|
|
|
+ projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
}
|
|
|
}
|