|
@@ -242,6 +242,7 @@ var dbController = {
|
|
|
controller.delete();
|
|
|
//to solve refresh after deleted
|
|
|
let jobsSheet = jobsSpread.getActiveSheet();
|
|
|
+ let designsSheet = designsSpread.getActiveSheet();
|
|
|
let itemsSheet = itemsSpread.getActiveSheet();
|
|
|
let nowNode = controller.tree.selected;
|
|
|
if (nowNode) {
|
|
@@ -254,6 +255,13 @@ var dbController = {
|
|
|
if (jobs.length > 0) {
|
|
|
orgJobData = jobsSheet.getValue(0, 0);
|
|
|
}
|
|
|
+ let designs = controller.tree.selected.designs;
|
|
|
+ setSheet.setMaxRowCount(designsSheet, designs);
|
|
|
+ tools.orderReshowData(designsSheet, designs, designsSetting, 'design', false);
|
|
|
+ if (designs.length > 0) {
|
|
|
+ orgDesignData = designsSheet.getValue(0, 0);
|
|
|
+ }
|
|
|
+
|
|
|
let items = controller.tree.selected.items;
|
|
|
setSheet.setMaxRowCount(itemsSheet, items);
|
|
|
tools.orderReshowData(itemsSheet, items, itemsSetting, 'item', false);
|
|
@@ -263,11 +271,13 @@ var dbController = {
|
|
|
}
|
|
|
else {
|
|
|
tools.clearData(jobsSheet);
|
|
|
+ tools.clearData(designsSheet);
|
|
|
tools.clearData(itemsSheet);
|
|
|
codeEditor.setValue('');
|
|
|
//$('#exampleTextarea').val("");
|
|
|
}
|
|
|
sheetDatas = tools.getsheetDatas(jobsSheet, 'jobs');
|
|
|
+ sheetDesignDatas = tools.getsheetDatas(designsSheet, 'designs');
|
|
|
sheetItemsDatas = tools.getsheetDatas(itemsSheet, 'items');
|
|
|
sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
|
|
|
controller.sheet.getParent().focus(true);
|
|
@@ -451,6 +461,68 @@ var createObj = {
|
|
|
return new TotalJobs();
|
|
|
},
|
|
|
|
|
|
+ newDesign: function (data) {
|
|
|
+ var Design = function (data) {
|
|
|
+ this.data = data;
|
|
|
+ //count = 0则没有被引用了
|
|
|
+ this.count = 0;
|
|
|
+ };
|
|
|
+ return new Design(data);
|
|
|
+ },
|
|
|
+ newDesigns: function () {
|
|
|
+ var TotalDesigns = function () {
|
|
|
+ this.designs = {};
|
|
|
+ this.designsArr = [];
|
|
|
+ this.prefix = '_id';
|
|
|
+ };
|
|
|
+
|
|
|
+ TotalDesigns.prototype.findDesign = function (id) {
|
|
|
+ return this.designs[this.prefix + id] ? this.designs[this.prefix + id] : null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ TotalDesigns.prototype.loadDesigns = function (nodes, datas) {
|
|
|
+ var me = this;
|
|
|
+ datas.forEach(function (data) {
|
|
|
+ var design = createObj.newDesign(data);
|
|
|
+ me.designs[me.prefix + data.id] = design;
|
|
|
+ me.designsArr.push(design);
|
|
|
+ });
|
|
|
+ if (nodes) {
|
|
|
+ nodes.forEach(function (node) {
|
|
|
+ node.designs = new Array();
|
|
|
+ let spliceArr = [];
|
|
|
+ node.data.designs.forEach(function (obj) {
|
|
|
+ if (me.designs[me.prefix + obj.id]) {
|
|
|
+ node.designs.push({ design: me.designs[me.prefix + obj.id], serialNo: obj.serialNo });
|
|
|
+ me.designs[me.prefix + obj.id].count++;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ spliceArr.push(obj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (let sItem of spliceArr) {
|
|
|
+ node.data.designs.splice(node.data.designs.indexOf(sItem), 1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ TotalDesigns.prototype.getUpdateIds = function (nodes, repeatId) {
|
|
|
+ var ids = [];
|
|
|
+ nodes.forEach(function (node) {
|
|
|
+ node.designs.forEach(function (design) {
|
|
|
+ if (design.data.id === repeatId) {
|
|
|
+ ids.push(node.getID());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ return ids;
|
|
|
+ };
|
|
|
+
|
|
|
+ return new TotalDesigns();
|
|
|
+ },
|
|
|
+
|
|
|
newItem: function (data) {
|
|
|
var Item = function (data) {
|
|
|
this.data = data;
|
|
@@ -586,6 +658,14 @@ var tools = {
|
|
|
}
|
|
|
return isExist;
|
|
|
},
|
|
|
+ isDesignExist: function (totalArr, field, newData, sheet, row) {
|
|
|
+ if (field === 'code') {
|
|
|
+ return !!totalArr.find(item => item.data.code == newData);
|
|
|
+ }
|
|
|
+ const name = field === 'name' ? newData : sheet.getValue(row, 1);
|
|
|
+ const unit = field === 'unit' ? newData : sheet.getValue(row, 2);
|
|
|
+ return !!totalArr.find(item => item.data.name == name && item.data.unit == unit);
|
|
|
+ },
|
|
|
isRepeat: function (arr, field, newData, ref, classify) {
|
|
|
var isRepeat = false;
|
|
|
if (classify) {
|
|
@@ -614,6 +694,36 @@ var tools = {
|
|
|
}
|
|
|
return isRepeat;
|
|
|
},
|
|
|
+ isDesignRepeat: function (arr, field, newData, ref, classify, sheet, row) {
|
|
|
+ const name = field === 'name' ? newData : sheet.getValue(row, 1);
|
|
|
+ const unit = field === 'unit' ? newData : sheet.getValue(row, 2);
|
|
|
+ var isRepeat = false;
|
|
|
+ if (classify) {
|
|
|
+ if (arr) {
|
|
|
+ arr.forEach(function (item, index) {
|
|
|
+ if (ref === 'reference' && index !== row && ((item[classify].data.name == name && item[classify].data.unit == unit) || (field === 'code' && item[classify].data.code == newData))) {
|
|
|
+ isRepeat = true;
|
|
|
+ }
|
|
|
+ else if (ref === 'document' && index !== row && ((item.name == name && item.unit == unit) || (field === 'code' && item.code == newData))) {
|
|
|
+ isRepeat = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (arr) {
|
|
|
+ arr.forEach(function (item) {
|
|
|
+ if (ref === 'reference' && index !== row && ((item.data.name == name && item.data.unit == unit) || (field === 'code' && item.data.code == newData))) {
|
|
|
+ isRepeat = true;
|
|
|
+ }
|
|
|
+ else if (ref === 'document' && index !== row && ((item.name == name && item.unit == unit) || (field === 'code' && item.code == newData))) {
|
|
|
+ isRepeat = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return isRepeat;
|
|
|
+ },
|
|
|
|
|
|
getContentByCode: function (items, code) {
|
|
|
for (let item of items) {
|
|
@@ -822,8 +932,9 @@ var tools = {
|
|
|
},
|
|
|
//update--
|
|
|
orderReshowData: function (sheet, arr, setting, classify, isResort) {
|
|
|
- sheet.setColumnCount(2, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
- sheet.setColumnCount(2, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
+ const colCount = setting.cols.length;
|
|
|
+ sheet.setColumnCount(colCount, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ sheet.setColumnCount(colCount, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
tools.clearData(sheet);
|
|
|
if (arr.length > 0) {
|
|
|
sheet.suspendPaint();
|
|
@@ -849,8 +960,9 @@ var tools = {
|
|
|
|
|
|
reshowData: function (sheet, arr, setting, isResort) {
|
|
|
sheet.suspendPaint();
|
|
|
- sheet.setColumnCount(2, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
- sheet.setColumnCount(2, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
+ const colCount = setting.cols.length;
|
|
|
+ sheet.setColumnCount(colCount, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ sheet.setColumnCount(colCount, GC.Spread.Sheets.SheetArea.colHeader);
|
|
|
tools.clearData(sheet);
|
|
|
if (isResort) {
|
|
|
tools.resort(arr, 'code', false);
|
|
@@ -993,12 +1105,13 @@ var tools = {
|
|
|
|
|
|
getsheetDatas: function (sheet, classify, controller) {
|
|
|
let rowCount = sheet.getRowCount();
|
|
|
+ let colCount = sheet.getColumnCount();
|
|
|
const colIdx = 1;
|
|
|
let sheetDatas;
|
|
|
if (classify === 'total') {
|
|
|
sheetDatas = [];
|
|
|
for (let i = 0; i < rowCount; i++) {
|
|
|
- for (let j = 0; j <= 1; j++) {
|
|
|
+ for (let j = 0; j <= colCount - 1; j++) {
|
|
|
let data = sheet.getCell(i, j).value, id = sheet.getTag(i, j);
|
|
|
if (data && id) {
|
|
|
let unitData = {
|
|
@@ -1024,6 +1137,23 @@ var tools = {
|
|
|
sheetDatas.datasIdx['rowIdx' + i] = data;
|
|
|
}
|
|
|
}
|
|
|
+ else if (classify === 'designs') {
|
|
|
+ sheetDatas = [];
|
|
|
+ for (let i = 0; i < rowCount; i++) {
|
|
|
+ let name = sheet.getCell(i, 1).value(),
|
|
|
+ unit = sheet.getCell(i, 2).value(),
|
|
|
+ id = sheet.getTag(i, colIdx);
|
|
|
+ if (id) {
|
|
|
+ let rowData = {
|
|
|
+ rowIdx: i,
|
|
|
+ name,
|
|
|
+ unit,
|
|
|
+ id: id
|
|
|
+ }
|
|
|
+ sheetDatas.push(rowData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
else {
|
|
|
sheetDatas = [];
|
|
|
for (let i = 0; i < rowCount; i++) {
|
|
@@ -1124,6 +1254,90 @@ var tools = {
|
|
|
};
|
|
|
return pasteDatas;
|
|
|
},
|
|
|
+ getDesignByNameUnit: function (arr, name, unit, fromSelected) {
|
|
|
+ if (fromSelected) {
|
|
|
+ return arr.find(item => item.design.data.name == name && item.design.data.unit == unit);
|
|
|
+ } else {
|
|
|
+ return arr.find(item => item.data.name == name && item.data.unit == unit);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ encapDesignsData: function (uncrossedDatas, crossedDatas, controller, totalDesigns) {
|
|
|
+ const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
|
|
|
+ let updateDatas = [];
|
|
|
+ let createDatas = [];
|
|
|
+ let nodeId = controller.tree.selected.getID();
|
|
|
+ debugger;
|
|
|
+ uncrossedDatas.forEach(obj => {
|
|
|
+ let cnDataObj, ceDataObj, designId;
|
|
|
+ const matchedTotalDesign = tools.getDesignByNameUnit(totalDesigns.designsArr, obj.name, obj.unit, false);
|
|
|
+ const matchedDesign = tools.getDesignByNameUnit(controller.tree.selected.designs, obj.name, obj.unit, true);
|
|
|
+ if (matchedTotalDesign && !matchedDesign) {
|
|
|
+ designId = matchedTotalDesign.data.id;
|
|
|
+ ceDataObj = {
|
|
|
+ name: obj.name,
|
|
|
+ unit: obj.unit,
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ nodeId: nodeId,
|
|
|
+ designId: designId,
|
|
|
+ serialNo: obj.serialNo,
|
|
|
+ type: CreateExist
|
|
|
+ };
|
|
|
+ createDatas.push(ceDataObj);
|
|
|
+ }
|
|
|
+ if (!matchedTotalDesign) {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ cnDataObj = {
|
|
|
+ //id: maxJobsNumber,
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ nodeId: nodeId,
|
|
|
+ name: obj.name,
|
|
|
+ unit: obj.unit,
|
|
|
+ code: maxDesignsNumber,
|
|
|
+ serialNo: obj.serialNo,
|
|
|
+ type: CreateNew
|
|
|
+ };
|
|
|
+ createDatas.push(cnDataObj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ crossedDatas.forEach(cData => {
|
|
|
+ let ueObj, unObj, newDesignId;
|
|
|
+ const matchedTotalDesign = tools.getDesignByNameUnit(totalDesigns.designsArr, cData.name, cData.unit, false);
|
|
|
+ const matchedDesign = tools.getDesignByNameUnit(controller.tree.selected.designs, cData.name, cData.unit, true);
|
|
|
+ if (matchedTotalDesign && !matchedDesign) {
|
|
|
+ newDesignId = matchedTotalDesign.data.id;
|
|
|
+ ueObj = {
|
|
|
+ name: cData.name,
|
|
|
+ unit: cData.unit,
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ nodeId: nodeId,
|
|
|
+ newDesignId: newDesignId,
|
|
|
+ orgDesignId: cData.orgId,
|
|
|
+ serialNo: cData.serialNo,
|
|
|
+ type: UpdateExist
|
|
|
+ };
|
|
|
+ updateDatas.push(ueObj);
|
|
|
+ }
|
|
|
+ if (!matchedTotalDesign && !matchedDesign) {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ unObj = {
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ nodeId: nodeId,
|
|
|
+ name: cData.name,
|
|
|
+ unit: cData.unit,
|
|
|
+ orgDesignId: cData.orgId,
|
|
|
+ code: maxDesignsNumber,
|
|
|
+ serialNo: cData.serialNo,
|
|
|
+ type: UpdateNew
|
|
|
+ };
|
|
|
+ updateDatas.push(unObj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ let pasteDatas = {
|
|
|
+ updateDatas: updateDatas,
|
|
|
+ createDatas: createDatas
|
|
|
+ };
|
|
|
+ return pasteDatas;
|
|
|
+ },
|
|
|
encapItemsData: function (uncrossedDatas, crossedDatas, controller, totalItems) {
|
|
|
const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
|
|
|
let updateDatas = [];
|
|
@@ -1264,10 +1478,87 @@ var tools = {
|
|
|
maxJobsNumber = maxJobsNumber + 1 > rebuildArr[0].code ? maxJobsNumber : rebuildArr[0].code;
|
|
|
}
|
|
|
rebuildArr.forEach(function (data) {
|
|
|
- if (data.type !== 'CreateT' && data.field === 'content') {
|
|
|
+ if (!data.code) {
|
|
|
+ maxJobsNumber++;
|
|
|
+ let code = maxJobsNumber;
|
|
|
+ data.code = code;
|
|
|
+ }
|
|
|
+ /* if (data.type !== 'CreateT' && data.field === 'content') {
|
|
|
maxJobsNumber++;
|
|
|
let code = maxJobsNumber;
|
|
|
data.code = code;
|
|
|
+ } */
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //rebuildArr.sort(myCompare);
|
|
|
+ }
|
|
|
+ //rebuildArr.sort(myCompare);
|
|
|
+ pasteDatas = {
|
|
|
+ updateDatas: crossedDatas,
|
|
|
+ createDatas: rebuildArr
|
|
|
+ }
|
|
|
+ return pasteDatas;
|
|
|
+ },
|
|
|
+
|
|
|
+ encapTotalDesignsDatas: function (sheet, totalDesigns, uncrossedDatas, crossedDatas) {
|
|
|
+ let pasteDatas;
|
|
|
+ let rebuildArr = [];
|
|
|
+ if (crossedDatas.length > 0) {
|
|
|
+ for (let i = 0; i < crossedDatas.length; i++) {
|
|
|
+ let field = crossedDatas[i].field, data = crossedDatas[i].data;
|
|
|
+ let isRepeat = tools.isDesignRepeat(totalDesigns.designsArr, field, data, 'reference', null, sheet, crossedDatas[i].rowIdx);
|
|
|
+ if (isRepeat) {
|
|
|
+ crossedDatas.splice(i--, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (let i = 0; i < crossedDatas.length; i++) {
|
|
|
+ let field = crossedDatas[i].field, data = crossedDatas[i].data;
|
|
|
+ if (crossedDatas[i].field === 'code' && typeof data !== 'number') {
|
|
|
+ crossedDatas.splice(i--, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (uncrossedDatas.length > 0) {
|
|
|
+ for (let i = 0; i < uncrossedDatas.length; i++) {
|
|
|
+ let field = uncrossedDatas[i].field;
|
|
|
+ let isRepeat = tools.isDesignRepeat(totalDesigns.designsArr, field, uncrossedDatas[i].data, 'reference', null, sheet, uncrossedDatas[i].rowIdx);
|
|
|
+ if (isRepeat) {
|
|
|
+ uncrossedDatas.splice(i--, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (let i = 0; i < uncrossedDatas.length; i++) {
|
|
|
+ let field = uncrossedDatas[i].field;
|
|
|
+ if (uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number') {
|
|
|
+ uncrossedDatas.splice(i--, 1);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
|
|
|
+ function myCompare(a, b) {
|
|
|
+ if (a.rowIdx > b.rowIdx)
|
|
|
+ return 1;
|
|
|
+ if (a.rowIdx < b.rowIdx)
|
|
|
+ return -1;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ function myCompareCode(a, b) {
|
|
|
+ if (a.code > b.code)
|
|
|
+ return -1;
|
|
|
+ if (a.code < b.code)
|
|
|
+ return 1;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ if (rebuildArr.length > 0) {
|
|
|
+ rebuildArr.sort(myCompareCode);
|
|
|
+ if (rebuildArr[0].code) {
|
|
|
+ maxDesignsNumber = maxDesignsNumber + 1 > rebuildArr[0].code ? maxDesignsNumber : rebuildArr[0].code;
|
|
|
+ }
|
|
|
+ rebuildArr.forEach(function (data) {
|
|
|
+ if (!data.code) {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ let code = maxDesignsNumber;
|
|
|
+ data.code = code;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -1280,6 +1571,8 @@ var tools = {
|
|
|
}
|
|
|
return pasteDatas;
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
encapTotalItemsDatas: function (sheet, totalItems, uncrossedDatas, crossedDatas) {
|
|
|
let pasteDatas;
|
|
|
let rebuildArr = [];
|
|
@@ -1335,7 +1628,7 @@ var tools = {
|
|
|
maxItemsNumber = maxItemsNumber + 1 > rebuildArr[0].code ? maxItemsNumber : rebuildArr[0].code;
|
|
|
}
|
|
|
rebuildArr.forEach(function (data) {
|
|
|
- if (data.type !== 'CreateT' && data.field === 'content') {
|
|
|
+ if (!data.code) {
|
|
|
maxItemsNumber++;
|
|
|
let code = maxItemsNumber;
|
|
|
data.code = code;
|
|
@@ -1427,13 +1720,26 @@ var tools = {
|
|
|
let conformDatas = [];
|
|
|
let flag = true;
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
+ let conformData = {
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ rowIdx: arr[i].rowIdx,
|
|
|
+ type: classify === 'create' ? 'CreateT' : 'UpdateT',
|
|
|
+ };
|
|
|
+ conformData[arr[i].field] = arr[i].data;;
|
|
|
for (let j = i + 1; j < arr.length; j++) {
|
|
|
if (arr[i].rowIdx === arr[j].rowIdx) {
|
|
|
flag = false;
|
|
|
let field = arr[i].field;
|
|
|
- let conformData;
|
|
|
if (classify === 'create') {
|
|
|
- if (field === 'code') {
|
|
|
+ conformData[arr[j].field] = arr[j].data;
|
|
|
+ /* conformData = {
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ rowIdx: arr[i].rowIdx,
|
|
|
+ type: 'CreateT'
|
|
|
+ }
|
|
|
+ conformData[arr[i].field] = arr[i].data;
|
|
|
+ conformData[arr[j].field] = arr[j].data; */
|
|
|
+ /* if (field === 'code') {
|
|
|
conformData = {
|
|
|
billsLibId: billsLibId,
|
|
|
code: arr[i].data,
|
|
@@ -1444,16 +1750,26 @@ var tools = {
|
|
|
}
|
|
|
else {
|
|
|
conformData = {
|
|
|
- billsLIbId: billsLibId,
|
|
|
+ billsLibId: billsLibId,
|
|
|
code: arr[j].data,
|
|
|
content: arr[i].data,
|
|
|
rowIdx: arr[i].rowIdx,
|
|
|
type: 'CreateT'
|
|
|
}
|
|
|
- }
|
|
|
+ } */
|
|
|
}
|
|
|
else {
|
|
|
- if (field === 'code') {
|
|
|
+ conformData.orgId = arr[i].orgId;
|
|
|
+ conformData[arr[j].field] = arr[j].data;
|
|
|
+ /* conformData = {
|
|
|
+ billsLibId: billsLibId,
|
|
|
+ rowIdx: arr[i].rowIdx,
|
|
|
+ orgId: arr[i].orgId,
|
|
|
+ type: 'UpdateT'
|
|
|
+ }
|
|
|
+ conformData[arr[i].field] = arr[i].data;
|
|
|
+ conformData[arr[j].field] = arr[j].data; */
|
|
|
+ /* if (field === 'code') {
|
|
|
conformData = {
|
|
|
billsLibId: billsLibId,
|
|
|
code: arr[i].data,
|
|
@@ -1472,14 +1788,16 @@ var tools = {
|
|
|
orgId: arr[i].orgId,
|
|
|
type: 'UpdateT'
|
|
|
}
|
|
|
- }
|
|
|
+ } */
|
|
|
}
|
|
|
- conformDatas.push(conformData);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ const matched = conformDatas.find(item => item.rowIdx === conformData.rowIdx);
|
|
|
+ if (!matched) {
|
|
|
+ conformDatas.push(conformData);
|
|
|
+ }
|
|
|
}
|
|
|
- for (let i = 0; i < arr.length; i++) {
|
|
|
+ /* for (let i = 0; i < arr.length; i++) {
|
|
|
let flag = true;
|
|
|
for (let j = 0; j < arr.length; j++) {
|
|
|
if (arr[i].rowIdx === arr[j].rowIdx && arr[i].field !== arr[j].field) {
|
|
@@ -1490,7 +1808,7 @@ var tools = {
|
|
|
|
|
|
conformDatas.push(arr[i]);
|
|
|
}
|
|
|
- }
|
|
|
+ } */
|
|
|
return conformDatas;
|
|
|
},
|
|
|
|
|
@@ -1626,6 +1944,59 @@ let pasteController = {
|
|
|
sheetDatas = tools.getsheetDatas(sheet);
|
|
|
|
|
|
},
|
|
|
+ frontDesignsRelOperator: function (sheet, setting, controller, totalDesigns, datas) {
|
|
|
+ const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
|
|
|
+ if (datas.length > 0) {
|
|
|
+ for (let i = 0; i < datas.length; i++) {
|
|
|
+ if (datas[i]) {
|
|
|
+ if (datas[i].type === UpdateExist) {
|
|
|
+ const design = tools.getDesignByNameUnit(totalDesigns.designsArr, datas[i].name, datas[i].unit, false);
|
|
|
+ if (design) {
|
|
|
+ let serialNo = datas[i].serialNo;
|
|
|
+ let index = tools.getIndex(controller.tree.selected.designs, datas[i].orgDesignId, 'design');
|
|
|
+ design.count++;
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: design, serialNo: serialNo });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (datas[i].type === UpdateNew) {
|
|
|
+ let newDesignData, newDesign;
|
|
|
+ let newDesignId = datas[i].newDesignId, serialNo = datas[i].serialNo;
|
|
|
+ newDesignData = { id: newDesignId, name: datas[i].name, unit: datas[i].unit, code: datas[i].code };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ newDesign.count = 1;
|
|
|
+ totalDesigns.designs[totalDesigns.prefix + newDesignId] = newDesign;
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ var index = tools.getIndex(controller.tree.selected.designs, datas[i].orgDesignId, 'design');
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: newDesign, serialNo: serialNo });
|
|
|
+ }
|
|
|
+ else if (datas[i].type === CreateExist) {
|
|
|
+ let serialNo = datas[i].serialNo;
|
|
|
+ const design = tools.getDesignByNameUnit(totalDesigns.designsArr, datas[i].name, datas[i].unit, false);
|
|
|
+ if (design) {
|
|
|
+ design.count++;
|
|
|
+ controller.tree.selected.designs.push({ design: design, serialNo: serialNo });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (datas[i].type === CreateNew) {
|
|
|
+ let newDesignId = datas[i].newDesignId, serialNo = datas[i].serialNo;
|
|
|
+ let newDesignData, newDesign;
|
|
|
+ newDesignData = { id: newDesignId, name: datas[i].name, unit: datas[i].unit, code: datas[i].code };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ newDesign.count = 1;
|
|
|
+ totalDesigns.designs[totalDesigns.prefix + newDesignId] = newDesign;
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ controller.tree.selected.designs.push({ design: newDesign, serialNo: serialNo });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //resort&reshow
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ sheetDatas = tools.getsheetDatas(sheet, 'designs');
|
|
|
+
|
|
|
+ },
|
|
|
frontItemsRelOperator: function (sheet, setting, controller, totalItems, datas) {
|
|
|
const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
|
|
|
if (datas.length > 0) {
|
|
@@ -1721,6 +2092,45 @@ let pasteController = {
|
|
|
tools.reshowData(sheet, totalJobs.jobsArr, totalJobsSetting, true);
|
|
|
sheetJobsDatas = tools.getsheetDatas(sheet, 'total');
|
|
|
},
|
|
|
+ pasteDesignsFront: function (sheet, totalDesigns, datas) {
|
|
|
+ const Update = 'Update', CreateT = 'CreateT';
|
|
|
+ if (datas.length > 0) {
|
|
|
+ for (let i = 0; i < datas.length; i++) {
|
|
|
+ let newDesignData, newDesign;
|
|
|
+ if (datas[i]) {
|
|
|
+ if (datas[i].type === Update) {
|
|
|
+ totalDesigns.designsArr.forEach(design => {
|
|
|
+ if (design.data.id === datas[i].orgId) {
|
|
|
+ design.data[datas[i].field] = datas[i].data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else if (datas[i].type === CreateT) {
|
|
|
+ //maxJobsNumber++;
|
|
|
+ // maxJobsNumber = maxJobsNumber >= datas[i].code ? maxJobsNumber : datas[i].code;
|
|
|
+ newDesignData = { id: datas[i].newJobId, name: datas[i].name, code: datas[i].code, unit: datas[i].unit };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ }
|
|
|
+ else if (datas[i].type !== CreateT && datas[i].field === 'name') {
|
|
|
+ newDesignData = { id: datas[i].newJobId, name: datas[i].data, code: datas[i].code };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ }
|
|
|
+ else if (datas[i].type !== 'CreateT' && datas[i].field === 'code') {
|
|
|
+ // maxJobsNumber++;
|
|
|
+ // maxJobsNumber = maxJobsNumber >= datas[i].data ? maxJobsNumber : datas[i].data;
|
|
|
+ newDesignData = { id: datas[i].newJobId, name: '', code: datas[i].data };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setSheet.setMaxRowCount(sheet, totalDesigns.designsArr);
|
|
|
+ tools.reshowData(sheet, totalDesigns.designsArr, totalDesignsSetting, true);
|
|
|
+ sheetJobsDatas = tools.getsheetDatas(sheet, 'total');
|
|
|
+ },
|
|
|
pasteItemsFront: function (sheet, totalItems, datas) {
|
|
|
const Update = 'Update', CreateT = 'CreateT';
|
|
|
if (datas.length > 0) {
|
|
@@ -2042,6 +2452,255 @@ var jobsController = {
|
|
|
|
|
|
};
|
|
|
|
|
|
+var designsController = {
|
|
|
+ currentEditData: null,
|
|
|
+ totalDesigns: null,
|
|
|
+ onEditStart: function (sender, args) {
|
|
|
+ let me = designsController;
|
|
|
+ me.currentEditData = args.sheet.getValue(args.row, args.col);
|
|
|
+ },
|
|
|
+ onEditEnded: function (sender, args) {
|
|
|
+ let me = designsController;
|
|
|
+ let sheet = args.sheet;
|
|
|
+ let controller = dbController.controller;
|
|
|
+ let totalDesigns = me.totalDesigns;
|
|
|
+ let setting = designsSetting;
|
|
|
+ var field, newData = args.editingText, id = sheet.getTag(args.row, args.col);
|
|
|
+ setting.cols.forEach(function (col, idx) {
|
|
|
+ if (args.col === idx) {
|
|
|
+ field = col.data.field;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (controller.tree.selected && newData != me.currentEditData) {
|
|
|
+ var isExist = tools.isDesignExist(totalDesigns.designsArr, field, newData, args.sheet, args.row);
|
|
|
+ var isRepeat = tools.isDesignRepeat(controller.tree.selected.designs, field, newData, 'reference', 'design', args.sheet, args.row);
|
|
|
+ //create
|
|
|
+ if (!id && newData && !isRepeat) {
|
|
|
+ if (isExist) {
|
|
|
+ designsController.createExist(sheet, controller, totalDesigns, field, newData, args, setting);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ designsController.createNew(sheet, controller, totalDesigns, field, newData, args, setting);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //update
|
|
|
+ else if (id && !isRepeat) {
|
|
|
+ designsController.update(sheet, controller, totalDesigns, field, newData, id, isExist, args, setting);
|
|
|
+ }
|
|
|
+ //处理重复
|
|
|
+ if (isRepeat) {
|
|
|
+ tools.alertOpr(args, sheet, '该设计细目已存在!', controller.tree.selected.designs, 'design');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ editData: function (sheet) {
|
|
|
+ let me = designsController;
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ createNew: function (sheet, controller, totalDesigns, field, newData, args, setting) {
|
|
|
+ if (field === 'name' || field === 'unit') {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ //update--
|
|
|
+ let serialNo = tools.getSerialNo(controller.tree.selected.designs);
|
|
|
+ //--
|
|
|
+ designsAjax.edCreateDesign(userAccount, billsLibId, controller.tree.selected.getID(), field, newData, maxDesignsNumber, serialNo, function (newID) {
|
|
|
+ var newDesignData, newDesign;
|
|
|
+ newDesignData = { id: newID, [field]: newData, code: maxDesignsNumber };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ newDesign.count = 1;
|
|
|
+ totalDesigns.designs[totalDesigns.prefix + newID] = newDesign;
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ controller.tree.selected.designs.push({ design: newDesign, serialNo: serialNo });//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true)//update--
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ tools.alertOpr(args, sheet, '该编号不存在,请重新输入!', controller.tree.selected.designs, 'design');
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ createExist: function (sheet, controller, totalDesigns, field, newData, args, setting) {
|
|
|
+ const name = field === 'name' ? newData : sheet.getValue(args.row, 1);
|
|
|
+ const unit = field === 'unit' ? newData : sheet.getValue(args.row, 2);
|
|
|
+ if (field === 'code') {
|
|
|
+ matched = totalDesigns.designsArr.find(item => item.data.code == newData);
|
|
|
+ } else {
|
|
|
+ matched = totalDesigns.designsArr.find(item => item.data.name == name && item.data.unit == unit);
|
|
|
+ }
|
|
|
+ if (matched) {
|
|
|
+ let serialNo = tools.getSerialNo(controller.tree.selected.designs);//update--
|
|
|
+ billsAjax.updateBills(userAccount, billsLibId, controller.tree.selected.getID(), 'designs', { id: matched.data.id, serialNo: serialNo });//update--
|
|
|
+ matched.count++;
|
|
|
+ controller.tree.selected.designs.push({ design: matched, serialNo: serialNo });//update--
|
|
|
+ // tools.reshowData(sheet, controllers.tree.selected.designs, setting, true);//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* for (const design of totalDesigns.designsArr) {
|
|
|
+ if ((field === 'name' && newData === design.data.name) || (field === 'unit' && newData === design.data.unit)) {
|
|
|
+ let serialNo = tools.getSerialNo(controller.tree.selected.designs);//update--
|
|
|
+ //billsAjax.updateBills(billsLibId, controllers.tree.selected.getID(), 'designs', job.data.id);//update--
|
|
|
+ billsAjax.updateBills(userAccount, billsLibId, controller.tree.selected.getID(), 'designs', { id: design.data.id, serialNo: serialNo });//update--
|
|
|
+ design.count++;
|
|
|
+ // controllers.tree.selected.designs.push(job);//update--
|
|
|
+ controller.tree.selected.designs.push({ design: design, serialNo: serialNo });//update--
|
|
|
+ //tools.reshowData(sheet, controllers.tree.selected.designs, setting, true);//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ else if (field == 'code' && newData == design.data.code) {
|
|
|
+ let serialNo = tools.getSerialNo(controller.tree.selected.designs);//update--
|
|
|
+ billsAjax.updateBills(userAccount, billsLibId, controller.tree.selected.getID(), 'designs', { id: design.data.id, serialNo: serialNo });//update--
|
|
|
+ design.count++;
|
|
|
+ controller.tree.selected.designs.push({ design: design, serialNo: serialNo });//update--
|
|
|
+ // tools.reshowData(sheet, controllers.tree.selected.designs, setting, true);//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } */
|
|
|
+ },
|
|
|
+ update: function (sheet, controller, totalDesigns, field, newData, id, isExist, args, setting) {
|
|
|
+ const name = field === 'name' ? newData : sheet.getValue(args.row, 1);
|
|
|
+ const unit = field === 'unit' ? newData : sheet.getValue(args.row, 2);
|
|
|
+ if (isExist) {
|
|
|
+ let matched
|
|
|
+ if (field === 'code') {
|
|
|
+ matched = totalDesigns.designsArr.find(item => item.data.code == newData);
|
|
|
+ } else {
|
|
|
+ matched = totalDesigns.designsArr.find(item => item.data.name == name && item.data.unit == unit);
|
|
|
+ }
|
|
|
+ if (matched) {
|
|
|
+ let serialNo = tools.getObj(controller.tree.selected.designs, id, 'design').serialNo;//update--add
|
|
|
+ let index = tools.getIndex(controller.tree.selected.designs, id, 'design');//update-- getIndex
|
|
|
+ matched.count++;
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: matched, serialNo: serialNo });//update--
|
|
|
+ billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, matched.data.id, 'update', 'designs');
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ }
|
|
|
+ /* totalDesigns.designsArr.forEach(function (design) {
|
|
|
+ if (field == 'code' && design.data[field] == newData) {
|
|
|
+ let serialNo = tools.getObj(controller.tree.selected.designs, id, 'design').serialNo;//update--add
|
|
|
+ let index = tools.getIndex(controller.tree.selected.designs, id, 'design');//update-- getIndex
|
|
|
+ design.count++;
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: design, serialNo: serialNo });//update--
|
|
|
+ billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, design.data.id, 'update', 'designs');
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ }
|
|
|
+ if (field === 'name' && design.data[field] === newData) {
|
|
|
+ let serialNo = tools.getObj(controller.tree.selected.designs, id, 'design').serialNo;//update--add
|
|
|
+ let index = tools.getIndex(controller.tree.selected.designs, id, 'design');
|
|
|
+ design.count++;
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: design, serialNo: serialNo });//update--
|
|
|
+ billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, design.data.id, 'update', 'designs');
|
|
|
+ // tools.reshowData(sheet, controllers.tree.selected.designs, setting, true);//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);
|
|
|
+ }
|
|
|
+ }); */
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (field === 'name' || field === 'unit') {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ //let serialNo = tools.getSerialNo(controllers.tree.selected.designs);//update--
|
|
|
+ let serialNo = tools.getObj(controller.tree.selected.designs, id, 'design').serialNo;
|
|
|
+ designsAjax.edUpdateDesign(userAccount, billsLibId, controller.tree.selected.getID(), name, unit, maxDesignsNumber, id, function (newDesignId) {//update--
|
|
|
+ var newDesignData, newDesign;
|
|
|
+ newDesignData = { id: newDesignId, name, unit, code: maxDesignsNumber };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ newDesign.count = 1;
|
|
|
+ totalDesigns.designs[totalDesigns.prefix + newDesignId] = newDesign;
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ var index = tools.getIndex(controller.tree.selected.designs, id, 'design');
|
|
|
+ controller.tree.selected.designs.splice(index, 1);
|
|
|
+ controller.tree.selected.designs.splice(index, 0, { design: newDesign, serialNo: serialNo });//update--
|
|
|
+ //tools.reshowData(sheet, controllers.tree.selected.designs, setting, true);//update--
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, setting, 'design', true);//update--
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ tools.alertOpr(args, sheet, '该编号不存在,请重新输入!', controller.tree.selected.designs, 'design');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ upMove: function (controller, sheet) {
|
|
|
+ let updateSelArr = [];
|
|
|
+ $('#upMove').attr('doing', 'true');
|
|
|
+ tools.btnClose($('#upMove'));
|
|
|
+ let args = controller.tree.selected.args,
|
|
|
+ thisDesign = controller.tree.selected.designs[args.row],
|
|
|
+ preDesign = controller.tree.selected.designs[args.row - 1],
|
|
|
+ tempSerialNo;
|
|
|
+ //switch serialNo
|
|
|
+ tempSerialNo = thisDesign.serialNo;
|
|
|
+ thisDesign.serialNo = preDesign.serialNo;
|
|
|
+ preDesign.serialNo = tempSerialNo;
|
|
|
+ updateSelArr.push({ id: thisDesign.design.data.id, serialNo: thisDesign.serialNo });
|
|
|
+ updateSelArr.push({ id: preDesign.design.data.id, serialNo: preDesign.serialNo });
|
|
|
+ billsAjax.updateSerialNo(billsLibId, controller.tree.selected.getID(), updateSelArr, 'designs', function () {
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, designsSetting, 'design', true);
|
|
|
+ sheet.setActiveCell(args.row - 1, args.col);
|
|
|
+ controller.tree.selected.args.row = args.row - 1;
|
|
|
+ $('#upMove').attr('doing', 'false');
|
|
|
+ if (tools.canUpMove(controller.tree.selected.designs[controller.tree.selected.args.row], controller.tree.selected.designs)) {
|
|
|
+ $('#upMove').attr('canMove', 'true');
|
|
|
+ tools.btnAction($('#upMove'));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $('#upMove').attr('canMove', 'false');
|
|
|
+ }
|
|
|
+ if (tools.canDownMove(controller.tree.selected.designs[controller.tree.selected.args.row], controller.tree.selected.designs)) {
|
|
|
+ $('#downMove').attr('canMove', true);
|
|
|
+ tools.btnAction($('#downMove'));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $('#downMove').attr('canMove', 'false');
|
|
|
+ tools.btnClose($('#downMove'));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ downMove: function (controller, sheet) {
|
|
|
+ let updateSelArr = [];
|
|
|
+ $('#downMove').attr('doing', 'true');
|
|
|
+ tools.btnClose($('#downMove'));
|
|
|
+ let tempSerialNo = controller.tree.selected.designs[controller.tree.selected.args.row].serialNo;
|
|
|
+ controller.tree.selected.designs[controller.tree.selected.args.row].serialNo = controller.tree.selected.designs[controller.tree.selected.args.row + 1].serialNo;
|
|
|
+ controller.tree.selected.designs[controller.tree.selected.args.row + 1].serialNo = tempSerialNo;
|
|
|
+ updateSelArr.push({ id: controller.tree.selected.designs[controller.tree.selected.args.row].design.data.id, serialNo: controller.tree.selected.designs[controller.tree.selected.args.row].serialNo });
|
|
|
+ updateSelArr.push({ id: controller.tree.selected.designs[controller.tree.selected.args.row + 1].design.data.id, serialNo: controller.tree.selected.designs[controller.tree.selected.args.row + 1].serialNo });
|
|
|
+ billsAjax.updateSerialNo(billsLibId, controller.tree.selected.getID(), updateSelArr, 'designs', function () {
|
|
|
+ tools.orderReshowData(sheet, controller.tree.selected.designs, jobsSetting, 'design', true);
|
|
|
+ sheet.setActiveCell(controller.tree.selected.args.row + 1, controller.tree.selected.args.col);
|
|
|
+ controller.tree.selected.args.row = controller.tree.selected.args.row + 1;
|
|
|
+ $('#downMove').attr('doing', 'false');
|
|
|
+ if (tools.canDownMove(controller.tree.selected.designs[controller.tree.selected.args.row], controller.tree.selected.designs)) {
|
|
|
+ $('#downMove').attr('canMove', 'true');
|
|
|
+ tools.btnAction($('#downMove'));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $('#downMove').attr('canMove', 'false');
|
|
|
+ }
|
|
|
+ if (tools.canUpMove(controller.tree.selected.designs[controller.tree.selected.args.row], controller.tree.selected.designs)) {
|
|
|
+ $('#upMove').attr('canMove', 'true');
|
|
|
+ tools.btnAction($('#upMove'));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $('#upMove').attr('canMove', 'false');
|
|
|
+ tools.btnClose($('#upMove'));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
var itemsController = {
|
|
|
currentEditData: null,
|
|
|
totalItems: null,
|
|
@@ -2480,6 +3139,103 @@ var totalJobsController = {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+var totalDesignsController = {
|
|
|
+ currentEditData: null,
|
|
|
+ totalDesigns: null,
|
|
|
+ onEditStart: function (sender, args) {
|
|
|
+ let me = totalDesignsController;
|
|
|
+ me.currentEditData = args.sheet.getValue(args.row, args.col);
|
|
|
+ },
|
|
|
+ onEditEnded: function (sender, args) {
|
|
|
+ debugger;
|
|
|
+ let me = totalDesignsController;
|
|
|
+ let totalDesigns = me.totalDesigns;
|
|
|
+ let sheet = args.sheet;
|
|
|
+ let setting = totalDesignsSetting;
|
|
|
+ var newData = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
|
|
|
+ setting.cols.forEach(function (col, colIdx) {
|
|
|
+ if (args.col === colIdx) {
|
|
|
+ field = col.data.field;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (newData != me.currentEditData) {
|
|
|
+ isRepeat = tools.isDesignRepeat(totalDesigns.designsArr, field, newData, 'reference', null, args.sheet, args.row);
|
|
|
+ if (!tagId && !isRepeat && newData) {//create
|
|
|
+ totalDesignsController.createDesign(sheet, totalDesigns, field, newData, args);
|
|
|
+ }
|
|
|
+ else if (tagId && !isRepeat) {//update
|
|
|
+ totalDesignsController.updateDesign(totalDesigns, tagId, field, newData, args);
|
|
|
+ }
|
|
|
+ if (isRepeat) {
|
|
|
+ tools.alertTotalOpr(args, '该内容已存在!', totalDesigns.designsArr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ editData: function (sheet) {
|
|
|
+ let me = totalDesignsController;
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
|
|
|
+ },
|
|
|
+
|
|
|
+ createDesign: function (sheet, totalDesigns, field, newData, args) {
|
|
|
+ if (field === 'name' || field === 'unit') {
|
|
|
+ maxDesignsNumber++;
|
|
|
+ let code = maxDesignsNumber;
|
|
|
+ designsAjax.createDesignContent(userAccount, billsLibId, field, newData, code, function (newDesignId) {
|
|
|
+ let newDesignData, newDesign;
|
|
|
+ newDesignData = { id: newDesignId, [field]: newData, code: code };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ //tools.reSetCell(sheet, args.row, 0, code, newDesignId);
|
|
|
+ tools.reshowData(sheet, totalDesigns.designsArr, totalDesignsSetting, true);
|
|
|
+ setSheet.setMaxRowCount(sheet, totalDesigns.designsArr);
|
|
|
+ sheetDesignDatas = tools.getsheetDatas(sheet, 'total');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let parseNum = parseInt(newData);
|
|
|
+ //if(typeof newData === 'number'){
|
|
|
+ if (!isNaN(parseNum)) {
|
|
|
+ maxDesignsNumber = maxDesignsNumber >= newData ? maxDesignsNumber : newData;
|
|
|
+ designsAjax.createDesignContent(userAccount, billsLibId, 'code', newData, newData, function (newDesignId) {
|
|
|
+ let newDesignData, newDesign;
|
|
|
+ newDesignData = { id: newDesignId, name: '', unit: '', code: newData };
|
|
|
+ newDesign = createObj.newDesign(newDesignData);
|
|
|
+ totalDesigns.designsArr.push(newDesign);
|
|
|
+ //tools.reSetCell(sheet, args.row, 0, null, newDesignId);
|
|
|
+ tools.reshowData(sheet, totalDesigns.designsArr, totalDesignsSetting, true);
|
|
|
+ setSheet.setMaxRowCount(sheet, totalDesigns.designsArr);
|
|
|
+ sheetDesignDatas = tools.getsheetDatas(sheet, 'total');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //编号只能为数字!
|
|
|
+ tools.alertTotalOpr(args, '编号只能为数字,请重新输入!', totalDesigns.designsArr);
|
|
|
+ // sheet.getCell(args.row, args.col).value("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ updateDesign: function (totalDesigns, id, field, newData, args) {
|
|
|
+ // if(field === 'code' && typeof newData !== 'number'){
|
|
|
+ if (field === 'code' && isNaN(parseInt(newData))) {
|
|
|
+ tools.alertTotalOpr(args, '编号只能为数字,请重新输入!', totalDesigns.designsArr);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ totalDesigns.designsArr.forEach(function (job) {
|
|
|
+ if (job.data.id === id) {
|
|
|
+ job.data[field] = newData;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ tools.reshowData(args.sheet, totalDesigns.designsArr, totalDesignsSetting, true);
|
|
|
+ designsAjax.updateDesignContent(userAccount, billsLibId, id, field, newData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
var totalItemsController = {
|
|
|
currentEditData: null,
|
|
|
totalItems: null,
|