|
@@ -1,11 +1,11 @@
|
|
|
/**
|
|
|
* Created by Zhong on 2017/8/14.
|
|
|
*/
|
|
|
-var pageOprObj = {
|
|
|
+let pageOprObj = {
|
|
|
gljLibName : null,
|
|
|
gljLibId: null,
|
|
|
initPage : function(container, containerComponent) {
|
|
|
- var me = this, gljLibId = getQueryString("gljLibId");//获取定额库参数
|
|
|
+ let me = this, gljLibId = getQueryString("gljLibId");//获取定额库参数
|
|
|
me.gljLibId = gljLibId;
|
|
|
repositoryGljObj.getGljLib(gljLibId, function () {
|
|
|
repositoryGljObj.buildSheet(container);
|
|
@@ -22,7 +22,7 @@ var pageOprObj = {
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
-repositoryGljObj = {
|
|
|
+let repositoryGljObj = {
|
|
|
treeObj : null,
|
|
|
workBook: null,
|
|
|
gljCurTypeId: -1,
|
|
@@ -30,7 +30,8 @@ repositoryGljObj = {
|
|
|
currentCache: null,
|
|
|
parentNodeIds: {},
|
|
|
gljList: [],
|
|
|
- allowComponent: [202, 203, 204, 3],//可带组成物类型:混凝土、砂浆、配合比、机械
|
|
|
+ allowComponent: [202, 203, 204, 301],//可带组成物类型:混凝土、砂浆、配合比、机械台班
|
|
|
+ componentGljType: [201, 302, 303],//可成为组成物的工料机类型: 普通材料、 机械组成物、 机上人工
|
|
|
distTypeTree: null,//add
|
|
|
setting: {
|
|
|
|
|
@@ -81,7 +82,7 @@ repositoryGljObj = {
|
|
|
&& distTypeObj.data.fullName !== '机上人工'){
|
|
|
distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
|
|
|
}*/
|
|
|
- if(distTypeObj.data.fullName !== '材料'){
|
|
|
+ if(distTypeObj.data.fullName !== '材料' && distTypeObj.data.fullName !== '机械'){
|
|
|
distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
|
|
|
}
|
|
|
});
|
|
@@ -127,7 +128,7 @@ repositoryGljObj = {
|
|
|
})
|
|
|
},
|
|
|
getGljTree: function(gljLibId, callback) {
|
|
|
- var me = this;
|
|
|
+ let me = this;
|
|
|
$.ajax({
|
|
|
type:"POST",
|
|
|
url:"api/getGljTree",
|
|
@@ -153,7 +154,7 @@ repositoryGljObj = {
|
|
|
})
|
|
|
},
|
|
|
getGljItems: function(repId) {
|
|
|
- var me = this;
|
|
|
+ let me = this;
|
|
|
$.ajax({
|
|
|
type:"POST",
|
|
|
url:"api/getGljItems",
|
|
@@ -179,11 +180,11 @@ repositoryGljObj = {
|
|
|
})
|
|
|
},
|
|
|
showGljItems: function(data, type) {
|
|
|
- var me = repositoryGljObj;
|
|
|
+ let me = repositoryGljObj;
|
|
|
if (me.workBook) {
|
|
|
- var cacheSection = [];
|
|
|
- var pArr = me.parentNodeIds["_pNodeId_" + type];
|
|
|
- for (var i = 0; i < data.length; i++) {
|
|
|
+ let cacheSection = [];
|
|
|
+ let pArr = me.parentNodeIds["_pNodeId_" + type];
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
if (pArr && pArr.indexOf(data[i].gljClass) >= 0) {
|
|
|
cacheSection.push(data[i]);
|
|
|
} else if (type == data[i].gljClass) {
|
|
@@ -197,7 +198,7 @@ repositoryGljObj = {
|
|
|
}
|
|
|
},
|
|
|
buildSheet: function(container) {
|
|
|
- var me = repositoryGljObj;
|
|
|
+ let me = repositoryGljObj;
|
|
|
me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30, me);
|
|
|
me.repositoryGljDelOpr();
|
|
|
me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
@@ -231,13 +232,51 @@ repositoryGljObj = {
|
|
|
});
|
|
|
return rst;
|
|
|
},
|
|
|
+ //获得引用了组成物id为componentId的工料机,和重新变化组成物数组、重新计算单价
|
|
|
+ getUpdateGljs: function (rObj, isDelete) {
|
|
|
+ let me = repositoryGljObj, that = gljComponentOprObj,
|
|
|
+ rst = {updateArr: [], updateBasePrcArr: []};
|
|
|
+ //改变单价,以便reCalGljBasePrc方法可行
|
|
|
+ if(!isDelete){
|
|
|
+ for(let i = 0; i < me.gljList.length; i++){
|
|
|
+ if(me.gljList[i].ID === rObj.ID){
|
|
|
+ me.gljList[i].basePrice = rObj.basePrice;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(let i = 0; i < me.gljList.length; i++){
|
|
|
+ let thisComponent = me.gljList[i].component, isChange = false;
|
|
|
+ for(let j = 0; j < thisComponent.length; j++){
|
|
|
+ if(thisComponent[j].ID === rObj.ID){
|
|
|
+ //删除
|
|
|
+ isChange = true;
|
|
|
+ if(isDelete){
|
|
|
+ thisComponent.splice(j--, 1);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isChange){//引用了此组成物
|
|
|
+ let gljBasePrc = that.reCalGljBasePrc(me.getCurrentComponent(thisComponent));
|
|
|
+ if(me.gljList[i].basePrice !== gljBasePrc){
|
|
|
+ me.gljList[i].basePrice = gljBasePrc;
|
|
|
+ rst.updateBasePrcArr.push({gljId: me.gljList[i].ID, gljType: me.gljList[i].gljType, basePrice: me.gljList[i].basePrice});
|
|
|
+ }
|
|
|
+ rst.updateArr.push(me.gljList[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
reshowGljBasePrc: function (glj) {
|
|
|
let me = repositoryGljObj;
|
|
|
- for(let i = 0; i < me.gljList.length; i++){
|
|
|
- if(glj.ID === me.gljList[i].ID){
|
|
|
- me.gljList[i].basePrice = glj.basePrice;
|
|
|
+ let cacheSection = me.currentCache;
|
|
|
+ for(let i = 0; i < cacheSection.length; i++){
|
|
|
+ if(glj.ID === cacheSection[i].ID){
|
|
|
+ cacheSection[i].basePrice = glj.basePrice;
|
|
|
me.workBook.getSheet(0).setValue(i, 4, glj.basePrice);
|
|
|
- console.log(i);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -257,8 +296,6 @@ repositoryGljObj = {
|
|
|
if(row < me.currentCache.length){
|
|
|
//标记当前工料机
|
|
|
me.currentGlj = me.currentCache[row];
|
|
|
- console.log(`me.currentCache`);
|
|
|
- console.log(me.currentCache);
|
|
|
if(me.allowComponent.indexOf(me.currentCache[row].gljType) !== -1){
|
|
|
that.workBook.getSheet(0).getRange(-1, 0 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
|
|
|
that.workBook.getSheet(0).getRange(-1, 4 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
|
|
@@ -353,13 +390,13 @@ repositoryGljObj = {
|
|
|
}
|
|
|
},
|
|
|
onCellEditStart: function(sender, args) {
|
|
|
- var me = repositoryGljObj;
|
|
|
- var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
|
|
|
+ let me = repositoryGljObj;
|
|
|
+ let rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
|
|
|
me.currentEditingGlj = rObj;
|
|
|
me.orgCode = me.workBook.getSheet(0).getValue(args.row, 0);
|
|
|
- var cacheSection = me.gljList;
|
|
|
+ let cacheSection = me.gljList;
|
|
|
if (cacheSection) {
|
|
|
- for (var j = 0; j < cacheSection.length; j++) {
|
|
|
+ for (let j = 0; j < cacheSection.length; j++) {
|
|
|
if (cacheSection[j][me.setting.header[0].dataCode] && cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
|
|
|
rObj["ID"] = cacheSection[j]["ID"];
|
|
|
rObj.gljClass = cacheSection[j].gljClass;
|
|
@@ -369,12 +406,12 @@ repositoryGljObj = {
|
|
|
}
|
|
|
},
|
|
|
onCellEditEnd: function(sender, args) {
|
|
|
- var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
|
|
|
+ let me = repositoryGljObj, that = gljComponentOprObj,
|
|
|
+ rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
|
|
|
updateArr = [], addArr = [], updateBasePrcArr = [];
|
|
|
me.editingRowIdx = args.row;
|
|
|
rObj.basePrice = rObj.basePrice ? rObj.basePrice : 0;
|
|
|
- console.log(`me.currentGlj`);
|
|
|
- console.log(me.currentGlj);
|
|
|
+ //更新
|
|
|
if (me.currentEditingGlj["ID"]) {
|
|
|
rObj["ID"] = me.currentEditingGlj["ID"];
|
|
|
rObj.gljClass = me.currentEditingGlj.gljClass;
|
|
@@ -382,9 +419,41 @@ repositoryGljObj = {
|
|
|
if(me.currentEditingGlj[me.setting.header[col].dataCode] !== rObj[me.setting.header[col].dataCode]){
|
|
|
me.addGljObj = rObj;
|
|
|
if(rObj[me.setting.header[0].dataCode] && rObj[me.setting.header[1].dataCode] && rObj[me.setting.header[5].dataCode]){
|
|
|
- if(me.currentGlj){
|
|
|
- rObj.component = me.currentGlj.component;
|
|
|
+ if(rObj.gljType !== me.currentEditingGlj.gljType){//修改了工料机类型
|
|
|
+ if(me.currentGlj){
|
|
|
+ me.currentGlj.component = [];
|
|
|
+ }
|
|
|
+ if(me.allowComponent.indexOf(rObj.gljType) !== -1){
|
|
|
+ rObj.basePrice = 0;
|
|
|
+ }
|
|
|
+ if(me.componentGljType.indexOf(me.currentEditingGlj.gljType) !== -1 &&
|
|
|
+ !(me.currentEditingGlj.gljType === 302 && rObj.gljType === 303) && !(me.currentEditingGlj.gljType === 303 && rObj.gljType === 302)){//修改了原本是组成物的工料机
|
|
|
+ //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
|
|
|
+ let updateGljs = me.getUpdateGljs(rObj);
|
|
|
+ if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
|
|
|
+ for(let i = 0; i < updateGljs.updateArr.length; i++){
|
|
|
+ updateArr.push(updateGljs.updateArr[i]);
|
|
|
+ }
|
|
|
+ for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
|
|
|
+ updateArr.push(updateGljs.updateBasePrcArr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ else if(rObj.basePrice !== me.currentEditingGlj.basePrice){//修改了单价,可修改单价的必为可成为组成物的
|
|
|
+ //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
|
|
|
+ let updateGljs = me.getUpdateGljs(rObj);
|
|
|
+ if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
|
|
|
+ for(let i = 0; i < updateGljs.updateArr.length; i++){
|
|
|
+ updateArr.push(updateGljs.updateArr[i]);
|
|
|
+ }
|
|
|
+ for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
|
|
|
+ updateArr.push(updateGljs.updateBasePrcArr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rObj.basePrice = !isNaN(parseFloat(rObj.basePrice)) && (rObj.basePrice && typeof rObj.basePrice !== 'undefined') ? parseFloat(rObj.basePrice) : 0;
|
|
|
+ }
|
|
|
+ rObj.component = me.currentGlj.component;
|
|
|
updateArr.push(rObj);
|
|
|
break;
|
|
|
}
|
|
@@ -411,6 +480,7 @@ repositoryGljObj = {
|
|
|
}
|
|
|
//update basePrice of ration when editting gljType of glj
|
|
|
if(me.currentEditingGlj.gljType !== rObj.gljType){
|
|
|
+
|
|
|
let gljTypeObj = {gljId: me.currentEditingGlj.ID, gljType: rObj.gljType, basePrice: rObj.basePrice};
|
|
|
updateBasePrcArr.push(gljTypeObj);
|
|
|
if(me.rationLibs.length > 0){
|
|
@@ -418,7 +488,9 @@ repositoryGljObj = {
|
|
|
}
|
|
|
}
|
|
|
//-----------------------------------------------------------
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ //新增
|
|
|
+ else {
|
|
|
me.addGljObj = rObj;
|
|
|
let isCanSav = true;
|
|
|
if(!rObj[me.setting.header[0].dataCode] || !rObj[me.setting.header[1].dataCode] || !rObj[me.setting.header[5].dataCode]){
|
|
@@ -427,10 +499,11 @@ repositoryGljObj = {
|
|
|
if(isCanSav){
|
|
|
me.addGljObj = null;
|
|
|
rObj.component = [];
|
|
|
- //如果类型为混凝土、砂浆、配合比、机械时,添加时填写的单价清空
|
|
|
+ //如果类型为混凝土、砂浆、配合比、机械台班时,添加时填写的单价清空
|
|
|
if(me.allowComponent.indexOf(rObj.gljType) !== -1){
|
|
|
rObj.basePrice = 0;
|
|
|
}
|
|
|
+ rObj.basePrice = !isNaN(parseFloat(rObj.basePrice)) && (rObj.basePrice && typeof rObj.basePrice !== 'undefined') ? parseFloat(rObj.basePrice) : 0;
|
|
|
addArr.push(rObj);
|
|
|
}
|
|
|
}
|
|
@@ -441,7 +514,6 @@ repositoryGljObj = {
|
|
|
me.currentEditingGlj = null;
|
|
|
//me.workBook.getSheet(0).setValue(11, 5, "人工");
|
|
|
me.mixUpdateRequest(updateArr, addArr, []);
|
|
|
- console.log(updateArr);
|
|
|
}
|
|
|
},
|
|
|
repositoryGljDelOpr: function () {
|
|
@@ -460,6 +532,17 @@ repositoryGljObj = {
|
|
|
if(sels[i].colCount === me.setting.header.length){
|
|
|
for(let j = 0; j < sels[i].rowCount; j++){
|
|
|
if(sels[i].row + j < cacheSection.length){
|
|
|
+ //删除了已被引用成组成物的工料机,重新计算所有引用此组成物的工料机的单价、组成物数组
|
|
|
+ let updateGljs = me.getUpdateGljs(cacheSection[sels[i].row + j], true);
|
|
|
+ if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
|
|
|
+ for(let i = 0; i < updateGljs.updateArr.length; i++){
|
|
|
+ updateArr.push(updateGljs.updateArr[i]);
|
|
|
+ }
|
|
|
+ for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
|
|
|
+ updateBasePrcArr.push(updateGljs.updateBasePrcArr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(updateArr);
|
|
|
removeArr.push(cacheSection[sels[i].row + j].ID);
|
|
|
//tempRemoveArr.push({ID: cacheSection[sels[i].row + j].ID, code: cacheSection[sels[i].row + j].code});
|
|
|
//删除后重新计算引用了此工料机的定额单价
|
|
@@ -515,45 +598,6 @@ repositoryGljObj = {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //提取已被引用工料机
|
|
|
- /* if(tempRemoveArr.length > 0){
|
|
|
- for(let i = 0; i < tempRemoveArr.length; i++){
|
|
|
- if(me.rationGljIds.indexOf(tempRemoveArr[i].ID) !== -1){
|
|
|
- refGljCodes.push(tempRemoveArr[i].code);
|
|
|
- tempRemoveArr.splice(i--, 1);
|
|
|
- }
|
|
|
- else{
|
|
|
- removeArr.push(tempRemoveArr[i].ID);
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
- //提示
|
|
|
- /* if(refGljCodes.length > 0){
|
|
|
- let alertText;
|
|
|
- if(refGljCodes.length > 3){
|
|
|
- alertText = "编号: " + refGljCodes[0]+" 、" + refGljCodes[1] + " 、" + refGljCodes[2] + "...等工料机已有定额引用,删除失败!";
|
|
|
- }
|
|
|
- else {
|
|
|
- let alertCode = " ";
|
|
|
- for(let i=0; i< refGljCodes.length; i++){
|
|
|
- alertCode += refGljCodes[i] + " 、";
|
|
|
- }
|
|
|
- alertText = "编号:" + alertCode + "工料机已有定额引用,删除失败!"
|
|
|
- }
|
|
|
- $('#alertText').text(alertText);
|
|
|
- $('#codeAlertBtn').click();
|
|
|
- sheet.options.isProtected = true;
|
|
|
- $('#codAleConfBtn').click(function () {
|
|
|
- sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
|
|
|
- if(removeArr.length > 0){
|
|
|
- me.mixUpdateRequest(updateArr, [], removeArr);
|
|
|
- }
|
|
|
- });
|
|
|
- $('#codAleClose').click(function () {
|
|
|
- sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
|
|
|
- me.mixUpdateRequest(updateArr, [], removeArr);
|
|
|
- });
|
|
|
- }*/
|
|
|
if(removeArr.length > 0 || updateArr.length > 0){
|
|
|
//删除警告
|
|
|
$('#alertGljTxt').text('可能已有定额引用了当前工料机,导致定额查找不到此工料机。确定要删除吗?');
|
|
@@ -574,7 +618,7 @@ repositoryGljObj = {
|
|
|
me.workBook.commandManager().setShortcutKey('repositoryGljDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
},
|
|
|
validUpdateObj: function (pasteObj, rowIdx) {
|
|
|
- let rst = {}, backUpObj = {},
|
|
|
+ let rst = {updateGlj: [], updateBasePrcArr: []}, backUpObj = {},
|
|
|
me = repositoryGljObj,
|
|
|
tempObj = me.currentCache[rowIdx],
|
|
|
reCalBasePrc = false,
|
|
@@ -615,9 +659,26 @@ repositoryGljObj = {
|
|
|
if(pasteObj.gljType === me.distTypeTree.comboDatas[i].text){
|
|
|
isExsit = true;
|
|
|
reCalBasePrc = true;
|
|
|
+ //
|
|
|
+ if(me.componentGljType.indexOf(tempObj.gljType) !== -1 &&
|
|
|
+ !(tempObj.gljType === 302 && pasteObj.gljType === 303) && !(tempObj.gljType === 303 && pasteObj.gljType === 302)){//修改了原本是组成物的工料机
|
|
|
+ //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
|
|
|
+ let updateGljs = me.getUpdateGljs(tempObj, true);
|
|
|
+ if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
|
|
|
+ for(let i = 0; i < updateGljs.updateArr.length; i++){
|
|
|
+ rst.updateGlj.push(updateGljs.updateArr[i]);
|
|
|
+ }
|
|
|
+ for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
|
|
|
+ rst.updateBasePrcArr.push(updateGljs.updateBasePrcArr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
tempObj.gljType = me.distTypeTree.comboDatas[i].value;
|
|
|
tempObj.shortName = me.distTypeTree.distTypes[me.distTypeTree.prefix + tempObj.gljType].data.shortName;
|
|
|
-
|
|
|
+ if(me.allowComponent.indexOf(tempObj.gljType) !== -1){
|
|
|
+ tempObj.basePrice = 0;
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
if(!isExsit) isValid = false;
|
|
@@ -628,12 +689,23 @@ repositoryGljObj = {
|
|
|
if(pasteObj.basePrice !== me.currentCache[rowIdx].basePrice){
|
|
|
reCalBasePrc = true;
|
|
|
tempObj.basePrice = pasteObj.basePrice;
|
|
|
+ let updateGljs = me.getUpdateGljs(tempObj, false);
|
|
|
+ if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
|
|
|
+ for(let i = 0; i < updateGljs.updateArr.length; i++){
|
|
|
+ rst.updateGlj.push(updateGljs.updateArr[i]);
|
|
|
+ }
|
|
|
+ for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
|
|
|
+ rst.updateBasePrcArr.push(updateGljs.updateBasePrcArr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if(isValid){
|
|
|
- rst.updateGlj = tempObj;
|
|
|
+ rst.updateGlj.push(tempObj);
|
|
|
if(reCalBasePrc){
|
|
|
//重新计算定额基价对象
|
|
|
- rst.updateBasePrc = {gljId: tempObj.ID, gljType: tempObj.gljType, basePrice: tempObj.basePrice};
|
|
|
+ //rst.updateBasePrc = {gljId: tempObj.ID, gljType: tempObj.gljType, basePrice: tempObj.basePrice};
|
|
|
+ let newReObj = {gljId: tempObj.ID, gljType: tempObj.gljType, basePrice: tempObj.basePrice};
|
|
|
+ rst.updateBasePrcArr.push(newReObj);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
@@ -676,122 +748,128 @@ repositoryGljObj = {
|
|
|
return true;
|
|
|
},
|
|
|
onClipboardPasting: function(sender, args) {
|
|
|
- var me = repositoryGljObj;
|
|
|
+ let me = repositoryGljObj;
|
|
|
/*if (args.cellRange.colCount != me.setting.header.length || me.gljCurTypeId < 0 || me.parentNodeIds["_pNodeId_" + me.gljCurTypeId]) {
|
|
|
args.cancel = true;
|
|
|
}*/
|
|
|
if (me.gljCurTypeId < 0 ) {
|
|
|
args.cancel = true;
|
|
|
}
|
|
|
+ let maxCol = args.cellRange.col + args.cellRange.colCount - 1;
|
|
|
+ //复制的列数超过正确的列数,不可复制
|
|
|
+ if(maxCol >= me.setting.header.length){
|
|
|
+ args.cancel = true;
|
|
|
+ }
|
|
|
},
|
|
|
onClipboardPasted: function(e, info) {
|
|
|
- var me = repositoryGljObj;
|
|
|
- var updateArr = [], addArr = [];
|
|
|
- var items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
- let beginRow = info.cellRange.row, endRow = info.cellRange.row + info.cellRange.rowCount - 1,
|
|
|
- maxRow = me.currentCache.length - 1,
|
|
|
- updateBasePrcArr = [] ,
|
|
|
- updateCount, resumeArr = [];
|
|
|
- if(endRow <= maxRow){
|
|
|
- //updateItems = items;
|
|
|
- for(let i = 0; i < items.length; i++){
|
|
|
- let updateObj = me.validUpdateObj(items[i], info.cellRange.row + i);
|
|
|
- if(updateObj && typeof updateObj.updateGlj !== 'undefined'){
|
|
|
- updateArr.push(updateObj.updateGlj);
|
|
|
- if(typeof updateObj.updateBasePrc !== 'undefined'){
|
|
|
- updateBasePrcArr.push(updateObj.updateBasePrc);
|
|
|
+ let me = repositoryGljObj;
|
|
|
+ let updateArr = [], addArr = [];
|
|
|
+ let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
+ let beginRow = info.cellRange.row, endRow = info.cellRange.row + info.cellRange.rowCount - 1,
|
|
|
+ maxRow = me.currentCache.length - 1,
|
|
|
+ updateBasePrcArr = [] ,
|
|
|
+ updateCount, resumeArr = [];
|
|
|
+ if(endRow <= maxRow){
|
|
|
+ //updateItems = items;
|
|
|
+ for(let i = 0; i < items.length; i++){
|
|
|
+ let updateObj = me.validUpdateObj(items[i], info.cellRange.row + i);
|
|
|
+ console.log(updateObj);
|
|
|
+ if(updateObj && typeof updateObj.updateGlj !== 'undefined'){
|
|
|
+ updateArr = updateObj.updateGlj;
|
|
|
+ if(typeof updateObj.updateBasePrc !== 'undefined'){
|
|
|
+ updateBasePrcArr = updateObj.updateBasePrc;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else{
|
|
|
- resumeArr.push(info.cellRange.row + i);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if(beginRow <= maxRow && endRow > maxRow){
|
|
|
- updateCount = maxRow - beginRow + 1;
|
|
|
- for(let i = 0; i < updateCount; i++){
|
|
|
- let updateObj = me.validUpdateObj(items[i], info.cellRange.row + i);
|
|
|
- if(updateObj && typeof updateObj.updateGlj !== 'undefined'){
|
|
|
- updateArr.push(updateObj.updateGlj);
|
|
|
- if(typeof updateObj.updateBasePrc !== 'undefined'){
|
|
|
- updateBasePrcArr.push(updateObj.updateBasePrc);
|
|
|
+ else{
|
|
|
+ resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
}
|
|
|
- else{
|
|
|
- resumeArr.push(info.cellRange.row + i);
|
|
|
- }
|
|
|
}
|
|
|
- if(info.cellRange.colCount === me.setting.header.length){
|
|
|
- for(let i = updateCount ; i < items.length; i++){
|
|
|
- if(me.isValidObj(items[i])){
|
|
|
- items[i].component = [];
|
|
|
- //类型为混凝土、砂浆、配合比、机械时,基价只能组成物计算
|
|
|
- if(me.allowComponent.indexOf(items[i].gljType) !== -1){
|
|
|
- items[i].basePrice = 0;
|
|
|
+ else if(beginRow <= maxRow && endRow > maxRow){
|
|
|
+ updateCount = maxRow - beginRow + 1;
|
|
|
+ for(let i = 0; i < updateCount; i++){
|
|
|
+ let updateObj = me.validUpdateObj(items[i], info.cellRange.row + i);
|
|
|
+ if(updateObj && typeof updateObj.updateGlj !== 'undefined'){
|
|
|
+ updateArr = updateObj.updateGlj;
|
|
|
+ if(typeof updateObj.updateBasePrc !== 'undefined'){
|
|
|
+ updateBasePrcArr = updateObj.updateBasePrc;
|
|
|
}
|
|
|
- addArr.push(items[i]);
|
|
|
}
|
|
|
else{
|
|
|
resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- else{
|
|
|
- for(let i = updateCount ; i < items.length; i++){
|
|
|
- resumeArr.push(info.cellRange.row + i);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- if(info.cellRange.colCount === me.setting.header.length){
|
|
|
- for(let i = 0; i < items.length; i++){
|
|
|
- if(me.isValidObj(items[i])){
|
|
|
- items[i].component = [];
|
|
|
- if(me.allowComponent.indexOf(items[i].gljType) !== -1){
|
|
|
- items[i].basePrice = 0;
|
|
|
+ if(info.cellRange.colCount === me.setting.header.length){
|
|
|
+ for(let i = updateCount ; i < items.length; i++){
|
|
|
+ if(me.isValidObj(items[i])){
|
|
|
+ items[i].component = [];
|
|
|
+ //类型为混凝土、砂浆、配合比、机械时,基价只能组成物计算
|
|
|
+ if(me.allowComponent.indexOf(items[i].gljType) !== -1){
|
|
|
+ items[i].basePrice = 0;
|
|
|
+ }
|
|
|
+ addArr.push(items[i]);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
- addArr.push(items[i]);
|
|
|
}
|
|
|
- else{
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ for(let i = updateCount ; i < items.length; i++){
|
|
|
resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
- for(let i = 0; i < items.length; i++){
|
|
|
- resumeArr.push(info.cellRange.row + i);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //repaint
|
|
|
- if(resumeArr.length > 0){
|
|
|
- info.sheet.suspendPaint();
|
|
|
- for(let i = 0; i < resumeArr.length ; i++){
|
|
|
- if(resumeArr[i] < me.currentCache.length){
|
|
|
- for(let col = 0; col < me.setting.header.length; col++){
|
|
|
- if(me.setting.header[col].dataCode === 'gljType'){
|
|
|
- let gljType = me.currentCache[resumeArr[i]][me.setting.header[col].dataCode];
|
|
|
- info.sheet.setValue(resumeArr[i], col, me.distTypeTree.distTypes["gljType" + gljType].data.fullName);
|
|
|
+ if(info.cellRange.colCount === me.setting.header.length){
|
|
|
+ for(let i = 0; i < items.length; i++){
|
|
|
+ if(me.isValidObj(items[i])){
|
|
|
+ items[i].component = [];
|
|
|
+ if(me.allowComponent.indexOf(items[i].gljType) !== -1){
|
|
|
+ items[i].basePrice = 0;
|
|
|
+ }
|
|
|
+ addArr.push(items[i]);
|
|
|
}
|
|
|
else{
|
|
|
- info.sheet.setValue(resumeArr[i], col, me.currentCache[resumeArr[i]][me.setting.header[col].dataCode]);
|
|
|
+ resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
- for(let col = 0; col < me.setting.header.length; col++){
|
|
|
- info.sheet.setValue(resumeArr[i], col, '');
|
|
|
+ for(let i = 0; i < items.length; i++){
|
|
|
+ resumeArr.push(info.cellRange.row + i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- info.sheet.resumePaint();
|
|
|
- }
|
|
|
- if (updateArr.length > 0 || addArr.length > 0) {
|
|
|
- me.mixUpdateRequest(updateArr, addArr, []);
|
|
|
- }
|
|
|
- if(updateBasePrcArr.length > 0 && me.rationLibs.length > 0){
|
|
|
- me.updateRationBasePrcRq(updateBasePrcArr);
|
|
|
- }
|
|
|
+ //repaint
|
|
|
+ if(resumeArr.length > 0){
|
|
|
+ info.sheet.suspendPaint();
|
|
|
+ for(let i = 0; i < resumeArr.length ; i++){
|
|
|
+ if(resumeArr[i] < me.currentCache.length){
|
|
|
+ for(let col = 0; col < me.setting.header.length; col++){
|
|
|
+ if(me.setting.header[col].dataCode === 'gljType'){
|
|
|
+ let gljType = me.currentCache[resumeArr[i]][me.setting.header[col].dataCode];
|
|
|
+ info.sheet.setValue(resumeArr[i], col, me.distTypeTree.distTypes["gljType" + gljType].data.fullName);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ info.sheet.setValue(resumeArr[i], col, me.currentCache[resumeArr[i]][me.setting.header[col].dataCode]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ for(let col = 0; col < me.setting.header.length; col++){
|
|
|
+ info.sheet.setValue(resumeArr[i], col, '');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info.sheet.resumePaint();
|
|
|
+ }
|
|
|
+ if (updateArr.length > 0 || addArr.length > 0) {
|
|
|
+ me.mixUpdateRequest(updateArr, addArr, []);
|
|
|
+ }
|
|
|
+ if(updateBasePrcArr.length > 0 && me.rationLibs.length > 0){
|
|
|
+ me.updateRationBasePrcRq(updateBasePrcArr);
|
|
|
+ }
|
|
|
},
|
|
|
updateRationBasePrcRq: function (basePrcArr) {
|
|
|
$.ajax({
|
|
@@ -821,7 +899,7 @@ repositoryGljObj = {
|
|
|
});
|
|
|
},*/
|
|
|
mixUpdateRequest: function(updateArr, addArr, removeIds) {
|
|
|
- var me = repositoryGljObj;
|
|
|
+ let me = repositoryGljObj;
|
|
|
$.ajax({
|
|
|
type:"POST",
|
|
|
url:"api/mixUpdateGljItems",
|
|
@@ -869,8 +947,8 @@ repositoryGljObj = {
|
|
|
return rst;
|
|
|
},
|
|
|
getCache: function() {
|
|
|
- var me = this, rst = [];
|
|
|
- for (var i = 0; i < me.gljList.length; i++) {
|
|
|
+ let me = this, rst = [];
|
|
|
+ for (let i = 0; i < me.gljList.length; i++) {
|
|
|
if (me.gljList[i].gljClass == me.gljCurTypeId) {
|
|
|
rst.push(me.gljList[i]);
|
|
|
}
|
|
@@ -878,29 +956,29 @@ repositoryGljObj = {
|
|
|
return rst;
|
|
|
},
|
|
|
updateCache: function(addArr, updateArr, removeIds, result) {
|
|
|
- var me = this, cacheSection = me.gljList;
|
|
|
+ let me = this, cacheSection = me.gljList;
|
|
|
if (addArr.length > 0) {
|
|
|
me.gljList = me.gljList.concat(addArr);
|
|
|
cacheSection = me.gljList;
|
|
|
}
|
|
|
- for (var i = removeIds.length - 1; i >= 0; i--) {
|
|
|
- for (var j = cacheSection.length - 1; j >= 0 ; j--) {
|
|
|
+ for (let i = removeIds.length - 1; i >= 0; i--) {
|
|
|
+ for (let j = cacheSection.length - 1; j >= 0 ; j--) {
|
|
|
if (cacheSection[j]["ID"] == removeIds[i]) {
|
|
|
cacheSection.splice(j,1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (result && result.data && result.data.ops && result.data.ops.length > 0) {
|
|
|
- for (var i = 0; i < result.data.ops.length; i++) {
|
|
|
- for (var j = 0; j < cacheSection.length; j++) {
|
|
|
+ for (let i = 0; i < result.data.ops.length; i++) {
|
|
|
+ for (let j = 0; j < cacheSection.length; j++) {
|
|
|
if (cacheSection[j][me.setting.header[0].dataCode] == result.data.ops[i][me.setting.header[0].dataCode]) {
|
|
|
cacheSection[j]["ID"] = result.data.ops[i]["ID"];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- for (var i = 0; i < updateArr.length; i++) {
|
|
|
- for (var j = 0; j < cacheSection.length; j++) {
|
|
|
+ for (let i = 0; i < updateArr.length; i++) {
|
|
|
+ for (let j = 0; j < cacheSection.length; j++) {
|
|
|
if (updateArr[i]["ID"] && cacheSection[j]["ID"]) {
|
|
|
if (cacheSection[j]["ID"] == updateArr[i]["ID"]) {
|
|
|
cacheSection[j] = updateArr[i];
|
|
@@ -914,9 +992,9 @@ repositoryGljObj = {
|
|
|
}
|
|
|
},
|
|
|
sortGlj: function() {
|
|
|
- var me = this;
|
|
|
+ let me = this;
|
|
|
me.gljList.sort(function(a, b){
|
|
|
- var rst = 0;
|
|
|
+ let rst = 0;
|
|
|
if (a.code > b.code) rst = 1
|
|
|
else if (a.code < b.code) rst = -1;
|
|
|
return rst;
|
|
@@ -924,9 +1002,9 @@ repositoryGljObj = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-var gljTypeTreeOprObj = {
|
|
|
+let gljTypeTreeOprObj = {
|
|
|
onClick: function(event,treeId,treeNode) {
|
|
|
- var me = repositoryGljObj,
|
|
|
+ let me = repositoryGljObj,
|
|
|
that = gljComponentOprObj,
|
|
|
gljTypeId = treeNode.ID;
|
|
|
me.gljCurTypeId = treeNode.ID;
|
|
@@ -959,7 +1037,7 @@ var gljTypeTreeOprObj = {
|
|
|
return true;
|
|
|
},
|
|
|
onRename : function(e, treeId, treeNode, isCancel) {
|
|
|
- var nodes = [];
|
|
|
+ let nodes = [];
|
|
|
nodes.push(treeNode);
|
|
|
gljTypeTreeOprObj.updateNodes(nodes);
|
|
|
},
|
|
@@ -972,20 +1050,20 @@ var gljTypeTreeOprObj = {
|
|
|
if (!confirm("您确定要删除此节点及所有子节点的数据?删除后不可恢复!")) {
|
|
|
return false;
|
|
|
}
|
|
|
- var nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1;
|
|
|
+ let nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1;
|
|
|
if (preNode) {
|
|
|
preNodeId = preNode.ID;
|
|
|
}
|
|
|
private_fetchAllSubItems = function(pItem){
|
|
|
nodeIds.push(pItem.ID);
|
|
|
if (pItem.items && pItem.items.length > 0) {
|
|
|
- for (var i = 0; i < pItem.items.length; i++) {
|
|
|
+ for (let i = 0; i < pItem.items.length; i++) {
|
|
|
private_fetchAllSubItems(pItem.items[i]);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
nodeIds.push(treeNode.ID);
|
|
|
- for (var i = 0; i < treeNode.items.length; i++) {
|
|
|
+ for (let i = 0; i < treeNode.items.length; i++) {
|
|
|
private_fetchAllSubItems(treeNode.items[i]);
|
|
|
}
|
|
|
$.ajax({
|
|
@@ -996,7 +1074,7 @@ var gljTypeTreeOprObj = {
|
|
|
cache:false,
|
|
|
timeout:5000,
|
|
|
success:function(result,textStatus,status){
|
|
|
- var pNode = treeNode.getParentNode();
|
|
|
+ let pNode = treeNode.getParentNode();
|
|
|
if (pNode && pNode.items && pNode.items.length == 1) {
|
|
|
pNode.isParent = false;
|
|
|
}
|
|
@@ -1007,7 +1085,7 @@ var gljTypeTreeOprObj = {
|
|
|
return true;
|
|
|
},
|
|
|
onRemove: function(e, treeId, treeNode){
|
|
|
- var me = repositoryGljObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
|
|
|
+ let me = repositoryGljObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
|
|
|
if (pNode && pNode.items && pNode.items.length == 0) {
|
|
|
pNode.isParent = false;
|
|
|
me.treeObj.refresh();
|
|
@@ -1015,9 +1093,9 @@ var gljTypeTreeOprObj = {
|
|
|
},
|
|
|
updateNodes: function(nodes){
|
|
|
if (nodes && nodes.length > 0) {
|
|
|
- var reqData = []
|
|
|
- for (var i = 0; i < nodes.length; i++) {
|
|
|
- var node = {};
|
|
|
+ let reqData = []
|
|
|
+ for (let i = 0; i < nodes.length; i++) {
|
|
|
+ let node = {};
|
|
|
node.repositoryId = nodes[i].repositoryId;
|
|
|
node.ID = nodes[i].ID;
|
|
|
node.ParentID = nodes[i].ParentID;
|
|
@@ -1041,13 +1119,13 @@ var gljTypeTreeOprObj = {
|
|
|
}
|
|
|
},
|
|
|
addRootNode: function() {
|
|
|
- var me = repositoryGljObj, rawNode = {ParentID: -1, NextSiblingID: -1, Name: "所有"}, lastNodeId = -1;
|
|
|
+ let me = repositoryGljObj, rawNode = {ParentID: -1, NextSiblingID: -1, Name: "所有"}, lastNodeId = -1;
|
|
|
if (me.treeObj) {
|
|
|
- var rootNodes = me.treeObj.getNodes();
|
|
|
+ let rootNodes = me.treeObj.getNodes();
|
|
|
if (rootNodes.length == 0) {
|
|
|
gljTypeTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
|
|
|
if (!(err)) {
|
|
|
- var newNodes = [], isSilent = false;
|
|
|
+ let newNodes = [], isSilent = false;
|
|
|
newNodes.push({ repositoryId: rst.data.repositoryId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, Name:"所有",isParent:false, items:[]});
|
|
|
me.treeObj.addNodes(null, -1, newNodes, isSilent);
|
|
|
}
|
|
@@ -1077,21 +1155,20 @@ var gljTypeTreeOprObj = {
|
|
|
}
|
|
|
hoverOpr();
|
|
|
function hoverOpr(){
|
|
|
- //console.log(treeNode);
|
|
|
- var me = repositoryGljObj, sObj = $("#" + treeNode.tId + "_span");
|
|
|
+ let me = repositoryGljObj, sObj = $("#" + treeNode.tId + "_span");
|
|
|
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
|
|
|
- var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
|
|
|
+ let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
|
|
|
sObj.after(addStr);
|
|
|
- var btn = $("#addBtn_"+treeNode.tId);
|
|
|
+ let btn = $("#addBtn_"+treeNode.tId);
|
|
|
if (btn) btn.bind("click", function(){
|
|
|
treeNode.doing = true;
|
|
|
- var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, Name: "新增子节点"}, lastNodeId = -1;
|
|
|
+ let rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, Name: "新增子节点"}, lastNodeId = -1;
|
|
|
if (treeNode.items.length > 0) {
|
|
|
lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
|
|
|
}
|
|
|
gljTypeTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
|
|
|
if (!(err)) {
|
|
|
- var newNodes = [], isSilent = false;
|
|
|
+ let newNodes = [], isSilent = false;
|
|
|
if(treeNode.items.length > 0){
|
|
|
treeNode.items[treeNode.items.length - 1].NextSiblingID = rst.data.ID;
|
|
|
}
|