|
@@ -7,29 +7,94 @@ let gljComponentOprObj = {
|
|
|
processDecimal: -6,
|
|
|
setting: {
|
|
|
owner: "gljComponent",
|
|
|
- header:[
|
|
|
- {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
|
- {headerName:"名称",headerWidth:90,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
- {headerName:"单位",headerWidth:45,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
- {headerName:"单价",headerWidth:60,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
- {headerName:"消耗量",headerWidth:70,dataCode:"consumeAmt", dataType: "Number", formatter: "0.000", hAlign: "right", vAlign: "center"}
|
|
|
+ header: [
|
|
|
+ { headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center" },
|
|
|
+ { headerName: "名称", headerWidth: 90, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center" },
|
|
|
+ { headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center" },
|
|
|
+ { headerName: "单价", headerWidth: 60, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center" },
|
|
|
+ { headerName: "消耗量", headerWidth: 70, dataCode: "consumeAmt", dataType: "Number", formatter: "0.000", hAlign: "right", vAlign: "center" }
|
|
|
],
|
|
|
view: {
|
|
|
- lockedCols:[0, 1, 2, 3]
|
|
|
+ lockedCols: [0, 1, 2, 3]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //生成列头(多单价)(多消耗量)
|
|
|
+ initHeaders: function (priceProperties, consumeAmtProperties) {
|
|
|
+ let headers = [
|
|
|
+ { headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center" },
|
|
|
+ { headerName: "名称", headerWidth: 90, dataCode: "name", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center" },
|
|
|
+ { headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center" },
|
|
|
+ ];
|
|
|
+ //生成消耗量列
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ headers.push({ headerName: "消耗量", headerWidth: 70, dataCode: "consumeAmt", dataType: "Number", formatter: "0.000", hAlign: "right", vAlign: "center" });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ for (let consumeAmtProp of consumeAmtProperties) {
|
|
|
+ let colData = {
|
|
|
+ headerName: consumeAmtProp.consumeAmt.dataName,
|
|
|
+ headerWidth: 60,
|
|
|
+ dataCode: consumeAmtProp.consumeAmt.dataCode,
|
|
|
+ dataType: 'Number',
|
|
|
+ formatter: '0.000',
|
|
|
+ hAlign: 'right',
|
|
|
+ vAlign: 'center'
|
|
|
+ };
|
|
|
+ headers.push(colData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //生成单价列
|
|
|
+ if (!priceProperties || priceProperties.length === 0) {
|
|
|
+ headers.push({ headerName: "定额价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center" });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ for (let priceProp of priceProperties) {
|
|
|
+ let colData = {
|
|
|
+ headerName: priceProp.price.dataName,
|
|
|
+ headerWidth: 100,
|
|
|
+ dataCode: priceProp.price.dataCode,
|
|
|
+ dataType: 'Number',
|
|
|
+ formatter: '0.00',
|
|
|
+ hAlign: 'right',
|
|
|
+ vAlign: 'center'
|
|
|
+ };
|
|
|
+ headers.push(colData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return headers;
|
|
|
+ },
|
|
|
+ setFrozen: function (sheet) {
|
|
|
+ const fixedHeadersLen = 3;
|
|
|
+ let frozenCol = 0;
|
|
|
+ if (consumeAmtProperties && consumeAmtProperties.length > 0) {
|
|
|
+ frozenCol = fixedHeadersLen + consumeAmtProperties.length;
|
|
|
+ }
|
|
|
+ else if (priceProperties && priceProperties.length > 0) {
|
|
|
+ frozenCol = fixedHeadersLen + 1;
|
|
|
+ }
|
|
|
+ if (frozenCol > 0) {
|
|
|
+ sheet.frozenColumnCount(frozenCol);
|
|
|
}
|
|
|
},
|
|
|
buildHeader: function (sheet, header) {
|
|
|
sheet.setRowCount(2, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
for (let i = 0; i < header.length; i++) {
|
|
|
sheet.setValue(1, i, header[i].headerName, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
- sheet.setColumnWidth(i, header[i].headerWidth? header[i].headerWidth:100);
|
|
|
+ sheet.setColumnWidth(i, header[i].headerWidth ? header[i].headerWidth : 100);
|
|
|
}
|
|
|
sheet.setValue(0, 0, '组成物信息', GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
sheet.addSpan(0, 0, 1, header.length, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
},
|
|
|
- buildSheet: function(container) {
|
|
|
+ buildSheet: function (container) {
|
|
|
let me = gljComponentOprObj;
|
|
|
+ //生成人材机组成物表格列头
|
|
|
+ me.setting.header = me.initHeaders(priceProperties, consumeAmtProperties);
|
|
|
+ //生成人材机组成物列映射
|
|
|
+ sheetCommonObj.initColMapping(me, me.setting.header);
|
|
|
+ repositoryGljObj.initPriceCols.call(me, priceProperties, me.colMapping);
|
|
|
+ me.initConsumeAmtCols(consumeAmtProperties, me.colMapping);
|
|
|
me.workBook = sheetOpr.buildSheet(container, me.setting, 30, false);
|
|
|
+ me.setFrozen(me.workBook.getSheet(0));
|
|
|
me.buildHeader(me.workBook.getSheet(0), me.setting.header);
|
|
|
sheetCommonObj.spreadDefaultStyle(me.workBook);
|
|
|
me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
|
|
@@ -45,15 +110,24 @@ let gljComponentOprObj = {
|
|
|
|
|
|
},
|
|
|
getRowData: function (sheet, row, setting) {
|
|
|
- let rst = {};
|
|
|
- for(let i = 0; i < setting.header.length; i++){
|
|
|
- rst[setting.header[i].dataCode] = sheet.getValue(row, i);
|
|
|
+ let rst = { priceProperty: {}, consumeAmtProperty: {} };
|
|
|
+ for (let i = 0; i < setting.header.length; i++) {
|
|
|
+ let v = sheet.getValue(row, i);
|
|
|
+ if (this.pricePropertyCols.includes(i)) {
|
|
|
+ rst.priceProperty[setting.header[i].dataCode] = v && v !== '' ? v : 0;
|
|
|
+ }
|
|
|
+ else if (this.consumeAmtPropertyCols.includes(i)) {
|
|
|
+ rst.consumeAmtProperty[setting.header[i].dataCode] = v && v !== '' ? v : 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ rst[setting.header[i].dataCode] = v;
|
|
|
+ }
|
|
|
}
|
|
|
return rst;
|
|
|
},
|
|
|
getComponent: function (sheet, rowCount) {
|
|
|
let component = [];
|
|
|
- for(let row = 0; row < rowCount; row++){
|
|
|
+ for (let row = 0; row < rowCount; row++) {
|
|
|
let obj = {};
|
|
|
obj.consumeAmt = sheet.getValue(row, 4);
|
|
|
obj.ID = sheet.getTag(row, 0);
|
|
@@ -61,122 +135,194 @@ let gljComponentOprObj = {
|
|
|
}
|
|
|
return component;
|
|
|
},
|
|
|
+ //根据消耗量字段设置组成物消耗量
|
|
|
+ setConsumeAmt: function (component, field, value) {
|
|
|
+ const compareStr = 'consumeAmt';
|
|
|
+ if (field.includes(compareStr)) {
|
|
|
+ if (field === compareStr) {
|
|
|
+ component[field] = value;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ component['consumeAmtProperty'][field] = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ initConsumeAmtCols: function (consumeAmtProperties, colMapping) {
|
|
|
+ let consumeAmtCols = [],
|
|
|
+ consumeAmtPropertyCols = [];
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ consumeAmtCols.push(colMapping.fieldToCol['consumeAmt']);
|
|
|
+ }
|
|
|
+ for (let consumeAmtProp of consumeAmtProperties) {
|
|
|
+ consumeAmtPropertyCols.push(colMapping.fieldToCol[consumeAmtProp.consumeAmt.dataCode]);
|
|
|
+ consumeAmtCols.push(colMapping.fieldToCol[consumeAmtProp.consumeAmt.dataCode]);
|
|
|
+ }
|
|
|
+ this.consumeAmtCols = consumeAmtCols;
|
|
|
+ this.consumeAmtPropertyCols = consumeAmtPropertyCols;
|
|
|
+ },
|
|
|
+ //消耗量赋初值
|
|
|
+ initConsumeAmt: function (component) {
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ component.consumeAmt = 0;
|
|
|
+ } else {
|
|
|
+ let consumeAmtProperty = {};
|
|
|
+ for (let consumeAmtProp of consumeAmtProperties) {
|
|
|
+ consumeAmtProperty[consumeAmtProp.consumeAmt.dataCode] = 0;
|
|
|
+ }
|
|
|
+ component.consumeAmtProperty = consumeAmtProperty;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ copyConsumeAmt: function (gljA, gljB) {
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ gljA.consumeAmt = gljB.consumeAmt;
|
|
|
+ } else {
|
|
|
+ gljA.consumeAmtProperty = _.cloneDeep(gljB.consumeAmtProperty);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ consumeAmtChanged: function (component, consumeAmt, col) {
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ if (consumeAmt !== component.consumeAmt) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (consumeAmt !== component.consumeAmtProperty[this.colMapping.colToField[col]]) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ consumeAmtIsEqual: function (consumeAmtA, consumeAmtB) {
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ return consumeAmtA.consumeAmt === consumeAmtB.consumeAmt;
|
|
|
+ }
|
|
|
+ return _.isEqual(consumeAmtA.consumeAmtProperty, consumeAmtB.consumeAmtProperty);
|
|
|
+ },
|
|
|
onContextmenuOpr: function () {
|
|
|
let me = gljComponentOprObj, that = repositoryGljObj, co = componentOprObj;
|
|
|
$.contextMenu({
|
|
|
selector: '#gljComponentSheet',
|
|
|
- build: function($triggerElement, e){
|
|
|
+ build: function ($triggerElement, e) {
|
|
|
//控制允许右键菜单在哪个位置出现
|
|
|
let sheet = me.workBook.getSheet(0);
|
|
|
let offset = $("#gljComponentSheet").offset(),
|
|
|
x = e.pageX - offset.left,
|
|
|
y = e.pageY - offset.top;
|
|
|
let target = sheet.hitTest(x, y);
|
|
|
- if(target.hitTestType === 3 && typeof target.row !== 'undefined' && typeof target.col !== 'undefined'){//在表格内
|
|
|
+ if (target.hitTestType === 3 && typeof target.row !== 'undefined' && typeof target.col !== 'undefined') {//在表格内
|
|
|
sheet.setActiveCell(target.row, target.col);
|
|
|
//getCurrentGlj
|
|
|
let thatRow = that.workBook.getSheet(0).getSelections()[0].row
|
|
|
that.currentGlj = thatRow < that.currentCache.length ? that.currentCache[thatRow] : null;
|
|
|
- that.currentComponent = that.currentGlj ? that.getCurrentComponent(that.currentGlj.component) : [];
|
|
|
+ that.currentComponent = that.currentGlj ? that.getCurrentComponent(that.currentGlj.component) : [];
|
|
|
//控制按钮是否可用
|
|
|
let insertDis = false,
|
|
|
delDis = false;
|
|
|
- if(!(that.currentGlj && allowComponent.includes(that.currentGlj.gljType)) || (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList)))){
|
|
|
+ if (!(that.currentGlj && allowComponent.includes(that.currentGlj.gljType)) || (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList)))) {
|
|
|
insertDis = true;
|
|
|
}
|
|
|
- if(!that.currentGlj || typeof that.currentComponent === 'undefined' || (typeof that.currentComponent !== 'undefined' && target.row >= that.currentComponent.length)){//右键定位在有组成物的行,删除键才显示可用
|
|
|
+ if (!that.currentGlj || typeof that.currentComponent === 'undefined' || (typeof that.currentComponent !== 'undefined' && target.row >= that.currentComponent.length)) {//右键定位在有组成物的行,删除键才显示可用
|
|
|
delDis = true;
|
|
|
}
|
|
|
return {
|
|
|
- callback: function(){},
|
|
|
+ callback: function () { },
|
|
|
items: {
|
|
|
- "insert": {name: "插入", disabled: insertDis, icon: "fa-sign-in", callback: function (key, opt) {
|
|
|
- let oprFunc = function () {
|
|
|
- //默认radio所有工料机
|
|
|
- co.initRadio();
|
|
|
- co.gljCurTypeId = null;
|
|
|
- //默认点击树根节点
|
|
|
- co.initClassTree('std', gljClassTreeObj.treeData.std);
|
|
|
- //弹出窗口
|
|
|
- $('#component').modal('show');
|
|
|
- };
|
|
|
- if (repositoryGljObj.pullCompleteData) {
|
|
|
- oprFunc();
|
|
|
- } else {
|
|
|
- repositoryGljObj.getStdItems(pageOprObj.stdGljLibId, oprFunc);
|
|
|
- }
|
|
|
- }},
|
|
|
- "delete": {name: "删除", disabled: delDis, icon: "fa-remove", callback: function (key, opt) {
|
|
|
- //删除
|
|
|
- let deleteObj = that.currentComponent[target.row];
|
|
|
- let gljComponent = that.currentGlj.component;
|
|
|
- let updateArr = [];
|
|
|
- //更新当前工料机的组成物列表
|
|
|
- for(let i = 0, len = gljComponent.length; i < len; i++){
|
|
|
- if(gljComponent[i].ID === deleteObj.ID){
|
|
|
- gljComponent.splice(i, 1);
|
|
|
- break;
|
|
|
+ "insert": {
|
|
|
+ name: "插入", disabled: insertDis, icon: "fa-sign-in", callback: function (key, opt) {
|
|
|
+ let oprFunc = function () {
|
|
|
+ //默认radio所有工料机
|
|
|
+ co.initRadio();
|
|
|
+ co.gljCurTypeId = null;
|
|
|
+ //默认点击树根节点
|
|
|
+ co.initClassTree('std', gljClassTreeObj.treeData.std);
|
|
|
+ //弹出窗口
|
|
|
+ $('#component').modal('show');
|
|
|
+ };
|
|
|
+ if (repositoryGljObj.pullCompleteData) {
|
|
|
+ oprFunc();
|
|
|
+ } else {
|
|
|
+ repositoryGljObj.getStdItems(pageOprObj.stdGljLibId, oprFunc);
|
|
|
}
|
|
|
}
|
|
|
- //重新计算工料机
|
|
|
- let gljBasePrc = me.reCalGljBasePrc(that.getCurrentComponent(gljComponent));
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
- that.reshowGljBasePrc(that.currentGlj);
|
|
|
- //updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
+ },
|
|
|
+ "delete": {
|
|
|
+ name: "删除", disabled: delDis, icon: "fa-remove", callback: function (key, opt) {
|
|
|
+ //删除
|
|
|
+ let deleteObj = that.currentComponent[target.row];
|
|
|
+ let gljComponent = that.currentGlj.component;
|
|
|
+ let updateArr = [];
|
|
|
+ //更新当前工料机的组成物列表
|
|
|
+ for (let i = 0, len = gljComponent.length; i < len; i++) {
|
|
|
+ if (gljComponent[i].ID === deleteObj.ID) {
|
|
|
+ gljComponent.splice(i, 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //重新计算工料机
|
|
|
+ let gljBasePrc = me.reCalGljBasePrc(that.getCurrentComponent(gljComponent));
|
|
|
+ if (that.isGljPriceChange(that.currentGlj, gljBasePrc)) {
|
|
|
+ that.setPrice(that.currentGlj, gljBasePrc);
|
|
|
+ that.reshowGljBasePrc(that.currentGlj);
|
|
|
+ //updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
+ }
|
|
|
+ /* if (gljBasePrc !== that.currentGlj.basePrice) {
|
|
|
+ that.currentGlj.basePrice = gljBasePrc;
|
|
|
+ that.reshowGljBasePrc(that.currentGlj);
|
|
|
+ //updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
+ } */
|
|
|
+ updateArr.push(that.currentGlj);
|
|
|
+ me.updateComponent(updateArr);
|
|
|
}
|
|
|
- updateArr.push(that.currentGlj);
|
|
|
- me.updateComponent(updateArr);
|
|
|
- }}
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
gljComponentDelOpr: function () {
|
|
|
- let me = gljComponentOprObj, that = repositoryGljObj, updateArr = [], removeArr = [], isUpdate = false, updateBasePrc= [];
|
|
|
- me.workBook.commandManager().register('gljComponentDel', function () {
|
|
|
+ let me = gljComponentOprObj, that = repositoryGljObj, updateArr = [], removeArr = [], isUpdate = false, updateBasePrc = [];
|
|
|
+ /* me.workBook.commandManager().register('gljComponentDel', function () {
|
|
|
let sels = me.workBook.getSheet(0).getSelections();
|
|
|
- if(sels.length > 0 && that.currentComponent.length > 0){
|
|
|
+ if (sels.length > 0 && that.currentComponent.length > 0) {
|
|
|
let component = that.currentGlj.component;
|
|
|
- for(let i = 0; i < sels.length > 0; i++){
|
|
|
- if(sels[i].colCount === me.setting.header.length){//可删除
|
|
|
- for(let j = 0; j < sels[i].rowCount; j++){
|
|
|
- if(sels[i].row + j < that.currentComponent.length){
|
|
|
+ for (let i = 0; i < sels.length > 0; i++) {
|
|
|
+ if (sels[i].colCount === me.setting.header.length) {//可删除
|
|
|
+ for (let j = 0; j < sels[i].rowCount; j++) {
|
|
|
+ if (sels[i].row + j < that.currentComponent.length) {
|
|
|
removeArr.push(that.currentComponent[sels[i].row + j].ID);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else if(sels[i].col === 0){
|
|
|
- //编码不可为空
|
|
|
- alert("编码不可为空!");
|
|
|
+ else if (sels[i].col === 0) {
|
|
|
+ //编码不可为空
|
|
|
+ alert("编码不可为空!");
|
|
|
|
|
|
}
|
|
|
- else if(sels[i].col === 4){//消耗量修改为0
|
|
|
- if(sels[i].row === -1){//全修改
|
|
|
- for(let j = 0; j < that.currentComponent.length; j++){
|
|
|
- isUpdate = true;
|
|
|
- that.currentComponent[j].consumeAmt = 0;
|
|
|
- for(let k = 0; k < component.length; k++){
|
|
|
- if(component[k].ID === that.currentComponent[j].ID){
|
|
|
- component[k].consumeAmt = 0;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ else if (sels[i].col === 4) {//消耗量修改为0
|
|
|
+ if (sels[i].row === -1) {//全修改
|
|
|
+ for (let j = 0; j < that.currentComponent.length; j++) {
|
|
|
+ isUpdate = true;
|
|
|
+ that.currentComponent[j].consumeAmt = 0;
|
|
|
+ for (let k = 0; k < component.length; k++) {
|
|
|
+ if (component[k].ID === that.currentComponent[j].ID) {
|
|
|
+ component[k].consumeAmt = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- else{//部分修改
|
|
|
- for(let j = 0; j < sels[i].rowCount; j++){
|
|
|
- if(sels[i].row + j < that.currentComponent.length){
|
|
|
+ else {//部分修改
|
|
|
+ for (let j = 0; j < sels[i].rowCount; j++) {
|
|
|
+ if (sels[i].row + j < that.currentComponent.length) {
|
|
|
isUpdate = true;
|
|
|
that.currentComponent[sels[i].row + j].consumeAmt = 0;
|
|
|
- for(let k = 0; k < component.length; k++){
|
|
|
- if(component[k].ID === that.currentComponent[sels[i].row + j].ID){
|
|
|
+ for (let k = 0; k < component.length; k++) {
|
|
|
+ if (component[k].ID === that.currentComponent[sels[i].row + j].ID) {
|
|
|
component[k].consumeAmt = 0;
|
|
|
break;
|
|
|
}
|
|
@@ -187,47 +333,48 @@ let gljComponentOprObj = {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(removeArr.length > 0 || isUpdate){
|
|
|
- for(let i = 0; i < removeArr.length; i++){
|
|
|
- for(let j = 0; j < that.currentComponent.length; j++){
|
|
|
- if(that.currentComponent[j].ID === removeArr[i]){
|
|
|
+ if (removeArr.length > 0 || isUpdate) {
|
|
|
+ for (let i = 0; i < removeArr.length; i++) {
|
|
|
+ for (let j = 0; j < that.currentComponent.length; j++) {
|
|
|
+ if (that.currentComponent[j].ID === removeArr[i]) {
|
|
|
that.currentComponent.splice(j--, 1);
|
|
|
}
|
|
|
}
|
|
|
- for(let j = 0; j < component.length; j++){
|
|
|
- if(component[j].ID === removeArr[i]){
|
|
|
+ for (let j = 0; j < component.length; j++) {
|
|
|
+ if (component[j].ID === removeArr[i]) {
|
|
|
component.splice(j--, 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//重新计算工料机
|
|
|
let gljBasePrc = me.reCalGljBasePrc(that.currentComponent);
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
+ if (gljBasePrc !== that.currentGlj.basePrice) {
|
|
|
that.currentGlj.basePrice = gljBasePrc;
|
|
|
that.reshowGljBasePrc(that.currentGlj);
|
|
|
- updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
+ updateBasePrc.push({ gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice });
|
|
|
}
|
|
|
updateArr.push(that.currentGlj);
|
|
|
me.updateComponent(updateArr);
|
|
|
- if(updateBasePrc.length > 0){
|
|
|
+ if (updateBasePrc.length > 0) {
|
|
|
that.updateRationBasePrcRq(updateBasePrc);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+ }); */
|
|
|
me.workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
//me.workBook.commandManager().setShortcutKey('gljComponentDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
},
|
|
|
- onCellEditStart: function(sender, args) {
|
|
|
+ onCellEditStart: function (sender, args) {
|
|
|
let me = gljComponentOprObj, that = repositoryGljObj;
|
|
|
let rObj = me.getRowData(args.sheet, args.row, me.setting);
|
|
|
me.currentEditingComponent = rObj;
|
|
|
let thatRow = that.workBook.getSheet(0).getSelections()[0].row;
|
|
|
- if(thatRow < that.currentCache.length){
|
|
|
+ if (thatRow < that.currentCache.length) {
|
|
|
that.currentGlj = that.currentCache[thatRow];
|
|
|
- if(me.setting.view.lockedCols.indexOf(args.col) !== -1 || !allowComponent.includes(that.currentGlj.gljType) ||
|
|
|
- (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList))) ||
|
|
|
- (args.col === 4 && (!that.currentComponent|| args.row >= that.currentComponent.length))){
|
|
|
+ //消耗量可编辑
|
|
|
+ if (!(me.colMapping.colToField[args.col].includes('consumeAmt')) || !allowComponent.includes(that.currentGlj.gljType) ||
|
|
|
+ (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.gljList)) ||
|
|
|
+ (args.col === 4 && (!that.currentComponent || args.row >= that.currentComponent.length))) {
|
|
|
args.cancel = true;
|
|
|
}
|
|
|
}
|
|
@@ -237,124 +384,44 @@ let gljComponentOprObj = {
|
|
|
},
|
|
|
onCellEditEnd: function (sender, args) {
|
|
|
let me = gljComponentOprObj, that = repositoryGljObj, updateBasePrc = [];
|
|
|
- let gljList = that.gljList, updateArr = [], materialComponent = [202, 203, 204], machineComponent = [302, 303];
|
|
|
- // if(args.editingText !== me.currentEditingComponent.code){
|
|
|
- //编码
|
|
|
- /* if(args.col === 0 && args.editingText && args.editingText.trim().length > 0 &&args.editingText !== me.currentEditingComponent.code){
|
|
|
- let component = that.currentGlj.component, hasCode = false;
|
|
|
- for(let i = 0; i < gljList.length; i++){
|
|
|
- if(gljList[i].code === args.editingText){//有效的组成物
|
|
|
- hasCode = true;
|
|
|
- if((materialComponent.indexOf(that.currentGlj.gljType) !== -1 && gljList[i].gljType === 201)
|
|
|
- || (that.currentGlj.gljType === 301 && machineComponent.indexOf(gljList[i].gljType) !== -1 )){//普通材料
|
|
|
- //是否与原有组成物不同
|
|
|
- let isExist = false;
|
|
|
- for(let j = 0; j < component.length; j++){
|
|
|
- if(component[j].ID === gljList[i].ID){
|
|
|
- isExist = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(!isExist){
|
|
|
- let rObj = {};
|
|
|
- rObj.ID = gljList[i].ID;
|
|
|
- //rObj.basePrice = gljList[i].basePrice;
|
|
|
- if(typeof that.currentComponent[args.row] !== 'undefined'){
|
|
|
- rObj.consumeAmt = that.currentComponent[args.row].consumeAmt;
|
|
|
- let index;
|
|
|
- for(let j = 0; j < component.length; j++){
|
|
|
- if(component[j].ID === that.currentComponent[args.row].ID){
|
|
|
- index = j;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- component.splice(index, 1);
|
|
|
- component.splice(index, 0, rObj);
|
|
|
- //计算工料机单价
|
|
|
- let gljBasePrc = me.reCalGljBasePrc(that.getCurrentComponent(component));
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
- that.reshowGljBasePrc(that.currentGlj);
|
|
|
- //工料机单价改变,重算引用了该工料机的定额单价
|
|
|
- updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
- }
|
|
|
- updateArr.push(that.currentGlj);
|
|
|
- }
|
|
|
- else{
|
|
|
- rObj.consumeAmt = 0;
|
|
|
- component.push(rObj);
|
|
|
- //计算工料机单价
|
|
|
- let gljBasePrc = me.reCalGljBasePrc(that.getCurrentComponent(component));
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
- that.reshowGljBasePrc(that.currentGlj);
|
|
|
- //工料机单价改变,重算引用了该工料机的定额单价
|
|
|
- updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
- }
|
|
|
- updateArr.push(that.currentGlj);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- else{
|
|
|
- //已存在
|
|
|
- alert("已存在!");
|
|
|
- args.sheet.setValue(args.row, args.col, me.currentEditingComponent[me.setting.header[args.col].dataCode] ?
|
|
|
- me.currentEditingComponent[me.setting.header[args.col].dataCode]: '');
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else{
|
|
|
- if(materialComponent.indexOf(that.currentGlj.gljType) === 1){
|
|
|
- alert("该组成物只能是普通材料!");
|
|
|
- }
|
|
|
- else if(that.currentGlj.gljType === 301){
|
|
|
- alert("该组成物只能是机械组成物或机上人工!")
|
|
|
- }
|
|
|
- args.sheet.setValue(args.row, args.col, me.currentEditingComponent[me.setting.header[args.col].dataCode] ?
|
|
|
- me.currentEditingComponent[me.setting.header[args.col].dataCode]: '');
|
|
|
- //无效
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if(!hasCode){
|
|
|
- alert("不存在此工料机,请先添加!");
|
|
|
- args.sheet.setValue(args.row, args.col, me.currentEditingComponent[me.setting.header[args.col].dataCode] ?
|
|
|
- me.currentEditingComponent[me.setting.header[args.col].dataCode] : '');
|
|
|
- //不存在
|
|
|
- }
|
|
|
- }*/
|
|
|
- if(args.col === 4 && me.currentEditingComponent.code && args.editingText && args.editingText.trim().length > 0){//消耗量
|
|
|
+ let updateArr = [];
|
|
|
+ let dataCode = me.colMapping.colToField[args.col];
|
|
|
+ if (dataCode.includes('consumeAmt') && me.currentEditingComponent.code && args.editingText && args.editingText.trim().length > 0) {//消耗量
|
|
|
let consumeAmt = parseFloat(args.editingText);
|
|
|
- if(!isNaN(consumeAmt) && consumeAmt !== me.currentEditingComponent.consumeAmt){
|
|
|
+ if (!isNaN(consumeAmt) && me.consumeAmtChanged(me.currentEditingComponent, consumeAmt, args.col)) {
|
|
|
let roundCons = scMathUtil.roundTo(parseFloat(consumeAmt), -3);
|
|
|
let component = that.currentGlj.component;
|
|
|
- for(let i = 0; i < component.length; i++){
|
|
|
- if(component[i].ID === that.currentComponent[args.row].ID){
|
|
|
- component[i].consumeAmt = roundCons;
|
|
|
+ for (let i = 0; i < component.length; i++) {
|
|
|
+ if (component[i].ID === that.currentComponent[args.row].ID) {
|
|
|
+ me.setConsumeAmt(component[i], dataCode, roundCons);
|
|
|
+ //component[i].consumeAmt = roundCons;
|
|
|
}
|
|
|
}
|
|
|
- that.currentComponent[args.row].consumeAmt = roundCons;
|
|
|
+ //that.currentComponent[args.row].consumeAmt = roundCons;
|
|
|
+ me.setConsumeAmt(that.currentComponent[args.row], dataCode, roundCons);
|
|
|
//计算工料机单价
|
|
|
let gljBasePrc = me.reCalGljBasePrc(that.currentComponent);
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
+ if (that.isGljPriceChange(that.currentGlj, gljBasePrc)) {
|
|
|
+ that.setPrice(that.currentGlj, gljBasePrc);
|
|
|
that.reshowGljBasePrc(that.currentGlj);
|
|
|
//工料机单价改变,重算引用了该工料机的定额单价
|
|
|
//updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
}
|
|
|
updateArr.push(that.currentGlj);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
//只能输入数值
|
|
|
- args.sheet.setValue(args.row, args.col, me.currentEditingComponent[me.setting.header[args.col].dataCode] ?
|
|
|
- me.currentEditingComponent[me.setting.header[args.col].dataCode]: 0);
|
|
|
+ sheetOpr.showData(me, me.workBook.getSheet(0), me.setting, that.currentComponent);
|
|
|
+ /* args.sheet.setValue(args.row, args.col, me.currentEditingComponent[me.setting.header[args.col].dataCode] ?
|
|
|
+ me.currentEditingComponent[me.setting.header[args.col].dataCode] : 0); */
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- else{
|
|
|
- args.sheet.setValue(args.row, args.col, me.currentEditingComponent.consumeAmt);
|
|
|
+ else {
|
|
|
+ //args.sheet.setValue(args.row, args.col, me.currentEditingComponent.consumeAmt);
|
|
|
+ sheetOpr.showData(me, me.workBook.getSheet(0), me.setting, that.currentComponent);
|
|
|
}
|
|
|
- if(updateArr.length > 0){
|
|
|
+ if (updateArr.length > 0) {
|
|
|
me.updateComponent(updateArr);
|
|
|
/*if(updateBasePrc.length > 0){
|
|
|
that.updateRationBasePrcRq(updateBasePrc)
|
|
@@ -364,123 +431,86 @@ let gljComponentOprObj = {
|
|
|
onClipboardPasting: function (sender, info) {
|
|
|
let me = gljComponentOprObj, that = repositoryGljObj;
|
|
|
let maxCol = info.cellRange.col + info.cellRange.colCount - 1;
|
|
|
+ /* if (info.cellRange.col !== 4 && info.cellRange.colCount > 1 || (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList)))) {
|
|
|
+ args.cancel = true;
|
|
|
+ } */
|
|
|
//复制的列数超过正确的列数,不可复制
|
|
|
- if(info.cellRange.col !== 4 && info.cellRange.colCount > 1 || (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList)))){
|
|
|
- args.cancel = true;
|
|
|
+ if (maxCol > me.setting.header.length - 1) {
|
|
|
+ return info.cancel = true;
|
|
|
+ }
|
|
|
+ if (that.currentGlj.gljType === 4 && that.isComponent(that.currentGlj.ID, that.stdGljList.concat(that.complementaryGljList))) {
|
|
|
+ return info.cancel = true;
|
|
|
+ }
|
|
|
+ //粘贴的字段只能是消耗量
|
|
|
+ for (let i = 0; i < info.cellRange.colCount; i++) {
|
|
|
+ let col = info.cellRange.col + i;
|
|
|
+ let dataCode = me.colMapping.colToField[col];
|
|
|
+ if (!dataCode.includes('consumeAmt')) {
|
|
|
+ return info.cancel = true;
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
onClipboardPasted: function (sender, info) {
|
|
|
- let me = gljComponentOprObj, that = repositoryGljObj, updateArr = [] ,materialComponent = [202, 203, 204], machineComponent = [302, 303],
|
|
|
+ let me = gljComponentOprObj, that = repositoryGljObj, updateArr = [], materialComponent = [202, 203, 204], machineComponent = [302, 303],
|
|
|
component = that.currentGlj.component, newComponent = [], concatComponent = [], isChange = false, updateBasePrc = [];
|
|
|
- let items = sheetOpr.analyzePasteData(me.setting, info);
|
|
|
let gljCache = that.gljList;
|
|
|
- //编码
|
|
|
- /* if(info.cellRange.col === 0){
|
|
|
- for(let i = 0; i < items.length; i++){
|
|
|
- for(let j = 0; j < gljCache.length; j++){
|
|
|
- if(items[i].code === gljCache[j].code){
|
|
|
- if((materialComponent.indexOf(that.currentGlj.gljType) !== -1 && gljCache[j].gljType === 201)
|
|
|
- || (that.currentGlj.gljType === 301 && machineComponent.indexOf(gljCache[j].gljType) !== -1 )){
|
|
|
- //是否与原有组成物不同
|
|
|
- let isExist = false;
|
|
|
- for(let k = 0; k < component.length; k++){
|
|
|
- if(component[k].ID === gljCache[j].ID){
|
|
|
- isExist = true;
|
|
|
- me.workBook.getSheet(0).setValue(info.cellRange.row + i, info.cellRange.col,
|
|
|
- typeof that.currentComponent[info.cellRange.row + i] !== 'undefined'? that.currentComponent[info.cellRange.row + i].code : '');
|
|
|
+ //消耗量
|
|
|
+ if (me.colMapping.colToField[info.cellRange.col].includes('consumeAmt')) {
|
|
|
+ let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
+ let row = info.cellRange.row;
|
|
|
+ for (let i = 0; i < items.length; i++) {
|
|
|
+ if (row + i < that.currentComponent.length) {
|
|
|
+ let currentObj = that.currentComponent[row + i];
|
|
|
+ if (!me.consumeAmtIsEqual(items[i], currentObj)) {
|
|
|
+ isChange = true;
|
|
|
+ if (!consumeAmtProperties || consumeAmtProperties.length === 0) {
|
|
|
+ let roundCons = scMathUtil.roundTo(parseFloat(items[i].consumeAmt), -3);
|
|
|
+ currentObj.consumeAmt = roundCons;
|
|
|
+ for (let j = 0; j < component.length; j++) {
|
|
|
+ if (component[j].ID === currentObj.ID) {
|
|
|
+ component[j].consumeAmt = currentObj.consumeAmt;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- if(!isExist){
|
|
|
- isChange = true;
|
|
|
- let obj = {};
|
|
|
- obj.ID = gljCache[j].ID;
|
|
|
- if(typeof that.currentComponent[info.cellRange.row + i] !== 'undefined'){//更新
|
|
|
- obj.consumeAmt = that.currentComponent[info.cellRange.row + i].consumeAmt;
|
|
|
- let index;
|
|
|
- for(let k = 0; k < component.length; k++){
|
|
|
- if(that.currentComponent[info.cellRange.row + i].ID === component[k].ID){
|
|
|
- index = k;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- component.splice(index, 1);
|
|
|
- component.splice(index, 0, obj);
|
|
|
- }
|
|
|
- else{//新增
|
|
|
- obj.consumeAmt = 0;
|
|
|
- component.push(obj);
|
|
|
+ } else {
|
|
|
+ for (let attr in items[i]) {
|
|
|
+ //是消耗量字段
|
|
|
+ if (attr.includes('consumeAmt') && items[i][attr] && !isNaN(parseFloat(items[i][attr]))) {
|
|
|
+ let roundCons = scMathUtil.roundTo(parseFloat(items[i][attr]), -3);
|
|
|
+ currentObj.consumeAmtProperty[attr] = roundCons;
|
|
|
}
|
|
|
- break;
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- else{
|
|
|
- me.workBook.getSheet(0).setValue(info.cellRange.row + i, info.cellRange.col,
|
|
|
- typeof that.currentComponent[info.cellRange.row + i] !== 'undefined'? that.currentComponent[info.cellRange.row + i].code : '');
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else{
|
|
|
- me.workBook.getSheet(0).setValue(info.cellRange.row + i, info.cellRange.col,
|
|
|
- typeof that.currentComponent[info.cellRange.row + i] !== 'undefined'? that.currentComponent[info.cellRange.row + i].code : '');
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if(isChange){
|
|
|
- //计算工料机单价
|
|
|
- let gljBasePrc = me.reCalGljBasePrc(that.getCurrentComponent(component));
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
- that.reshowGljBasePrc(that.currentGlj);
|
|
|
- updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
- }
|
|
|
- updateArr.push(that.currentGlj);
|
|
|
- }
|
|
|
- }*/
|
|
|
- //消耗量
|
|
|
- if(info.cellRange.col === 4){
|
|
|
- let items = sheetOpr.analyzePasteData(me.setting, info);
|
|
|
- let row = info.cellRange.row;
|
|
|
- for(let i = 0; i < items.length; i++){
|
|
|
- if(row + i < that.currentComponent.length){
|
|
|
- let currentObj = that.currentComponent[row + i];
|
|
|
- if(items[i].consumeAmt.trim().length > 0 && items[i].consumeAmt !== currentObj.consumeAmt){
|
|
|
- let roundCons = scMathUtil.roundTo(parseFloat(items[i].consumeAmt), -3);
|
|
|
- isChange = true;
|
|
|
- currentObj.consumeAmt = roundCons;
|
|
|
- for(let j = 0; j < component.length; j++){
|
|
|
- if(component[j].ID === currentObj.ID){
|
|
|
- component[j].consumeAmt = currentObj.consumeAmt;
|
|
|
- break;
|
|
|
+ for (let j = 0; j < component.length; j++) {
|
|
|
+ if (component[j].ID === currentObj.ID) {
|
|
|
+ component[j].consumeAmtProperty = currentObj.consumeAmtProperty;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ sheetOpr.showData(me, me.workBook.getSheet(0), me.setting, that.currentComponent);
|
|
|
+ //me.workBook.getSheet(0).setValue(row + i, info.cellRange.col, currentObj.consumeAmt);
|
|
|
}
|
|
|
- else{
|
|
|
- me.workBook.getSheet(0).setValue(row + i, info.cellRange.col, currentObj.consumeAmt);
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
+ } else {
|
|
|
me.workBook.getSheet(0).setValue(row + i, info.cellRange.col, '');
|
|
|
}
|
|
|
}
|
|
|
- if(isChange){
|
|
|
+ if (isChange) {
|
|
|
//计算工料机单价
|
|
|
let gljBasePrc = me.reCalGljBasePrc(that.currentComponent);
|
|
|
- if(gljBasePrc !== that.currentGlj.basePrice){
|
|
|
- that.currentGlj.basePrice = gljBasePrc;
|
|
|
+ if (that.isGljPriceChange(that.currentGlj, gljBasePrc)) {
|
|
|
+ that.setPrice(that.currentGlj, gljBasePrc);
|
|
|
that.reshowGljBasePrc(that.currentGlj);
|
|
|
//updateBasePrc.push({gljId: that.currentGlj.ID, gljType: that.currentGlj.gljType, basePrice: that.currentGlj.basePrice});
|
|
|
}
|
|
|
updateArr.push(that.currentGlj);
|
|
|
}
|
|
|
}
|
|
|
- if(updateArr.length > 0){
|
|
|
+ if (updateArr.length > 0) {
|
|
|
me.updateComponent(updateArr);
|
|
|
- /* if(updateBasePrc.length > 0){
|
|
|
- that.updateRationBasePrcRq(updateBasePrc);
|
|
|
- }*/
|
|
|
+ /* if(updateBasePrc.length > 0){
|
|
|
+ that.updateRationBasePrcRq(updateBasePrc);
|
|
|
+ }*/
|
|
|
}
|
|
|
},
|
|
|
updateComponent: function (updateArr) {
|
|
@@ -489,15 +519,15 @@ let gljComponentOprObj = {
|
|
|
$.ajax({
|
|
|
type: 'post',
|
|
|
url: 'complementartGlj/api/updateComponent',
|
|
|
- data: {"userId": pageOprObj.userId, "updateArr": JSON.stringify(updateArr)},
|
|
|
+ data: { "userId": pageOprObj.userId, "updateArr": JSON.stringify(updateArr) },
|
|
|
dataType: 'json',
|
|
|
success: function (result) {
|
|
|
- if(!result.error){
|
|
|
- that.currentComponent = that.getCurrentComponent(result.data[0].component);
|
|
|
- sheetOpr.cleanData(me.workBook.getSheet(0), me.setting, -1);
|
|
|
- sheetOpr.showData(me.workBook.getSheet(0), me.setting, that.currentComponent);
|
|
|
+ if (!result.error) {
|
|
|
+ that.currentComponent = that.getCurrentComponent(result.data[0].component);
|
|
|
+ sheetOpr.cleanData(me.workBook.getSheet(0), me.setting, -1);
|
|
|
+ sheetOpr.showData(me, me.workBook.getSheet(0), me.setting, that.currentComponent);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
sheetOpr.cleanData(me.workBook.getSheet(0), me.setting, -1);
|
|
|
}
|
|
|
$('#componentsCacnel').click();
|
|
@@ -505,18 +535,44 @@ let gljComponentOprObj = {
|
|
|
})
|
|
|
},
|
|
|
round: function (v, e) {
|
|
|
- let t=1;
|
|
|
- for(;e>0;t*=10,e--);
|
|
|
- for(;e<0;t/=10,e++);
|
|
|
- return Math.round(v*t)/t;
|
|
|
+ let t = 1;
|
|
|
+ for (; e > 0; t *= 10, e--);
|
|
|
+ for (; e < 0; t /= 10, e++);
|
|
|
+ return Math.round(v * t) / t;
|
|
|
},
|
|
|
- reCalGljBasePrc: function (component) {
|
|
|
- let me = gljComponentOprObj, gljBasePrc = 0;
|
|
|
- for(let i = 0; i < component.length; i++){
|
|
|
- let roundBasePrc = scMathUtil.roundTo(parseFloat(component[i].basePrice), -2);
|
|
|
- let roundConsumeAmt = scMathUtil.roundTo(parseFloat(component[i].consumeAmt), -3);
|
|
|
- gljBasePrc = scMathUtil.roundTo(scMathUtil.roundTo(roundBasePrc * roundConsumeAmt, me.processDecimal) + gljBasePrc, me.processDecimal);
|
|
|
+ reCalGljBasePrc: function (components) {
|
|
|
+ /* let me = gljComponentOprObj;
|
|
|
+ let gljBasePrc = 0;
|
|
|
+ for(let i = 0; i < component.length; i++){
|
|
|
+ let roundBasePrc = scMathUtil.roundTo(parseFloat(component[i].basePrice), -2);
|
|
|
+ let roundConsumeAmt = scMathUtil.roundTo(parseFloat(component[i].consumeAmt), -3);
|
|
|
+ gljBasePrc = scMathUtil.roundTo(scMathUtil.roundTo(roundBasePrc * roundConsumeAmt, me.processDecimal) + gljBasePrc, me.processDecimal);
|
|
|
+ }
|
|
|
+ return gljBasePrc;
|
|
|
+ */
|
|
|
+
|
|
|
+ let me = gljComponentOprObj, re = repositoryGljObj;
|
|
|
+ // 只有一个单价的情况,只有一个单价则只有一个消耗量
|
|
|
+ if (!priceProperties || priceProperties.length === 0) {
|
|
|
+ let gljBasePrc = 0;
|
|
|
+ for (let i = 0; i < components.length; i++) {
|
|
|
+ let roundBasePrc = scMathUtil.roundTo(parseFloat(components[i].basePrice), -2);
|
|
|
+ let roundConsumeAmt = scMathUtil.roundTo(parseFloat(components[i].consumeAmt), -3);
|
|
|
+ gljBasePrc = scMathUtil.roundTo(scMathUtil.roundTo(roundBasePrc * roundConsumeAmt, me.processDecimal) + gljBasePrc, me.processDecimal);
|
|
|
+ }
|
|
|
+ return scMathUtil.roundTo(gljBasePrc, -2);
|
|
|
+ } else { // 多单价的情况
|
|
|
+ let gljPriceProperty = re.getPriceProperty(priceProperties);
|
|
|
+ for (let priceProp in gljPriceProperty) {
|
|
|
+ let consumeAmtField = re.getConsumeAmtField(consumeAmtProperties, priceProp);
|
|
|
+ for (let component of components) {
|
|
|
+ let roundBasePrc = scMathUtil.roundTo(parseFloat(component['priceProperty'][priceProp]), -2);
|
|
|
+ let roundConsumeAmt = scMathUtil.roundTo(parseFloat(component['consumeAmtProperty'][consumeAmtField]), -3);
|
|
|
+ gljPriceProperty[priceProp] = scMathUtil.roundTo(scMathUtil.roundTo(roundBasePrc * roundConsumeAmt, me.processDecimal) + gljPriceProperty[priceProp], me.processDecimal);
|
|
|
+ }
|
|
|
+ scMathUtil.roundTo(gljPriceProperty[priceProp], -2);
|
|
|
+ }
|
|
|
+ return gljPriceProperty;
|
|
|
}
|
|
|
- return gljBasePrc;
|
|
|
}
|
|
|
};
|