|
@@ -20,15 +20,17 @@ var pageOprObj = {
|
|
|
html = html.replace("XXX定额库", rationLibName);
|
|
|
$("#rationname")[0].outerHTML = html;
|
|
|
me.rationLibName = rationLibName;
|
|
|
- repositoryGljObj.currentRepositoryId = parseInt(rationLibId);
|
|
|
- repositoryGljObj.getGljTree(rationLibId);
|
|
|
repositoryGljObj.buildSheet(container);
|
|
|
- repositoryGljObj.getGljItems(rationLibId);
|
|
|
- sheetCommonObj.shieldAllCells(repositoryGljObj.workBook.getSheet(0), repositoryGljObj.setting);
|
|
|
+ repositoryGljObj.getGljDistType(function () {
|
|
|
+ repositoryGljObj.currentRepositoryId = parseInt(rationLibId);
|
|
|
+ repositoryGljObj.getGljTree(rationLibId);
|
|
|
+ repositoryGljObj.getGljItems(rationLibId);
|
|
|
+ sheetCommonObj.shieldAllCells(repositoryGljObj.workBook.getSheet(0), repositoryGljObj.setting);
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-repositoryGljObj = {
|
|
|
+ repositoryGljObj = {
|
|
|
treeObj : null,
|
|
|
workBook: null,
|
|
|
gljCurTypeId: -1,
|
|
@@ -36,6 +38,7 @@ repositoryGljObj = {
|
|
|
currentCache: null,
|
|
|
parentNodeIds: {},
|
|
|
gljList: [],
|
|
|
+ distTypeTree: null,//add
|
|
|
setting: {
|
|
|
header:[
|
|
|
{headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
@@ -43,7 +46,7 @@ repositoryGljObj = {
|
|
|
{headerName:"规格",headerWidth:260,dataCode:"specs", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
{headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
{headerName:"基价单价",headerWidth:120,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
- {headerName:"类型",headerWidth:120,dataCode:"gljDistType", dataType: "String", hAlign: "center", vAlign: "center"}
|
|
|
+ {headerName:"类型",headerWidth:120,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
|
|
|
],
|
|
|
view:{
|
|
|
comboBox:[
|
|
@@ -53,6 +56,62 @@ repositoryGljObj = {
|
|
|
]
|
|
|
}
|
|
|
},
|
|
|
+ getComboData: function (gljDistType) {
|
|
|
+ let me = this;
|
|
|
+ let distType;
|
|
|
+ let distTypeTree = {
|
|
|
+ prefix : 'gljType',
|
|
|
+ distTypes: {},
|
|
|
+ comboDatas: [],
|
|
|
+ distTypesArr: []
|
|
|
+ };
|
|
|
+ gljDistType.forEach(function (typeData) {
|
|
|
+ let typeObj = {
|
|
|
+ data: typeData,
|
|
|
+ children: [],
|
|
|
+ parent: null
|
|
|
+ }
|
|
|
+ distTypeTree.distTypes[distTypeTree.prefix + typeData.ID] = typeObj;
|
|
|
+ distTypeTree.distTypesArr.push(typeObj);
|
|
|
+ });
|
|
|
+ gljDistType.forEach(function (typeData) {
|
|
|
+ distType = distTypeTree.distTypes[distTypeTree.prefix + typeData.ID];
|
|
|
+ let parent = distTypeTree.distTypes[distTypeTree.prefix + typeData.ParentID];
|
|
|
+ if(parent){
|
|
|
+ distType.parent = parent;
|
|
|
+ parent.children.push(distType);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ distTypeTree.distTypesArr.forEach(function (distTypeObj) {
|
|
|
+ if(distTypeObj.children.length === 0 && distTypeObj.data.fullName !== '普通机械' &&distTypeObj.data.fullName !== '机械组成物'
|
|
|
+ && distTypeObj.data.fullName !== '机上人工'){
|
|
|
+ distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
|
|
|
+ }
|
|
|
+ if(distTypeObj.data.fullName === '机械'){
|
|
|
+ distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //me.distTypeTree = distTypeTree;
|
|
|
+ return distTypeTree;
|
|
|
+ //return distTypeTree.comboDatas;
|
|
|
+ },
|
|
|
+ getGljDistType: function (callback) {
|
|
|
+ let me = this;
|
|
|
+ $.ajax({
|
|
|
+ type: 'post',
|
|
|
+ url: "api/getGljDistType",
|
|
|
+ dataType: 'json',
|
|
|
+ success: function (result) {
|
|
|
+ if(!result.error && callback){
|
|
|
+ me.distTypeTree = me.getComboData(result.data);
|
|
|
+ let combo = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
+ combo.items(me.distTypeTree.comboDatas).editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.text);
|
|
|
+ me.workBook.getSheet(0).getCell(-1, 5, GC.Spread.Sheets.SheetArea.viewport).cellType(combo).value(me.distTypeTree.comboDatas[0].text);
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
getGljTree: function(rationLibId) {
|
|
|
var me = this;
|
|
|
$.ajax({
|
|
@@ -89,6 +148,7 @@ repositoryGljObj = {
|
|
|
success:function(result){
|
|
|
if(!result.error) {
|
|
|
me.gljList = result.data;
|
|
|
+ me.workBook.getSheet(0).setRowCount(result.data.length);
|
|
|
me.sortGlj();
|
|
|
me.showGljItems(result.data, me.gljCurTypeId);
|
|
|
}
|
|
@@ -100,38 +160,104 @@ repositoryGljObj = {
|
|
|
},
|
|
|
showGljItems: function(data, type) {
|
|
|
var me = repositoryGljObj;
|
|
|
+ console.log(`data`)
|
|
|
+ console.log(data);
|
|
|
+ console.log(`distype`);
|
|
|
+ console.log(me.distTypeTree);
|
|
|
if (me.workBook) {
|
|
|
var cacheSection = [];
|
|
|
var pArr = me.parentNodeIds["_pNodeId_" + type];
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
- if (pArr && pArr.indexOf(data[i].gljType) >= 0) {
|
|
|
+ if (pArr && pArr.indexOf(data[i].gljClass) >= 0) {
|
|
|
cacheSection.push(data[i]);
|
|
|
- } else if (type == data[i].gljType) {
|
|
|
+ } else if (type == data[i].gljClass) {
|
|
|
+ //data[i].gljDistType = me.distTypeTree.distTypes[me.distTypeTree.prefix + data[i].gljDistType].data.fullName;
|
|
|
cacheSection.push(data[i]);
|
|
|
}
|
|
|
}
|
|
|
sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
|
|
|
- sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection);
|
|
|
+ sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
|
|
|
cacheSection = null;
|
|
|
}
|
|
|
},
|
|
|
buildSheet: function(container) {
|
|
|
var me = repositoryGljObj;
|
|
|
- me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
|
|
|
+ me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30, me);
|
|
|
me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
|
|
|
me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
|
|
|
me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
|
|
|
+ me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
|
|
|
},
|
|
|
+ onEnterCell: function (sender, args) {
|
|
|
+ let me = repositoryGljObj;
|
|
|
+ me.cellRowIdx = args.row;
|
|
|
+ let isHasData = false;
|
|
|
+ if(me.addGljObj){
|
|
|
+ for(let i=0; i<me.setting.header.length; i++){
|
|
|
+ if(me.addGljObj[me.setting.header[i].dataCode]){
|
|
|
+ isHasData = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isHasData){
|
|
|
+ console.log(`enterHasData`);
|
|
|
+ if(me.editingRowIdx !== me.cellRowIdx) {
|
|
|
+ let isComple = true;
|
|
|
+ let focusToCol;
|
|
|
+ function getFocusToCol (me){
|
|
|
+ for(let i=0; i< me.setting.header.length; i++){
|
|
|
+ if(!me.addGljObj[me.setting.header[i].dataCode]){
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ focusToCol = getFocusToCol(me);
|
|
|
+ console.log(`focusTocol: ${focusToCol}`);
|
|
|
+ for(let i=0; i< me.setting.header.length; i++){
|
|
|
+ if(!me.addGljObj[me.setting.header[i].dataCode]){
|
|
|
+ isComple = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isComple){
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $('#gljAlertBtn').click();
|
|
|
+ me.workBook.getSheet(0).options.isProtected = true;
|
|
|
+ $('#aleCanceBtn').click(function () {
|
|
|
+ me.workBook.getSheet(0).options.isProtected = false;
|
|
|
+ me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
|
|
|
+ });
|
|
|
+ $('#gljAleClose').click(function () {
|
|
|
+ me.workBook.getSheet(0).options.isProtected = false;
|
|
|
+ me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
|
|
|
+ });
|
|
|
+ $('#aleConfBtn').click(function () {
|
|
|
+ me.workBook.getSheet(0).options.isProtected = false;
|
|
|
+ me.addGljObj = null;
|
|
|
+ for(let col=0; col<me.setting.header.length; col++){
|
|
|
+ me.workBook.getSheet(0).getCell(me.editingRowIdx, col).value('');
|
|
|
+ }
|
|
|
+ me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, 0);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
onCellEditStart: function(sender, args) {
|
|
|
var me = repositoryGljObj;
|
|
|
var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
|
|
|
me.currentEditingGlj = rObj;
|
|
|
+ console.log(`currentEditingGlj`);
|
|
|
+ console.log(me.currentEditingGlj);
|
|
|
+ me.orgCode = me.workBook.getSheet(0).getValue(args.row, 0);
|
|
|
var cacheSection = me.gljList;
|
|
|
if (cacheSection) {
|
|
|
for (var j = 0; j < cacheSection.length; j++) {
|
|
|
- if (cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
|
|
|
+ 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"];
|
|
|
break;
|
|
|
}
|
|
@@ -139,17 +265,32 @@ repositoryGljObj = {
|
|
|
}
|
|
|
},
|
|
|
onCellEditEnd: function(sender, args) {
|
|
|
- var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row),
|
|
|
+ var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
|
|
|
updateArr = [], addArr = [];
|
|
|
+ me.editingRowIdx = args.row;
|
|
|
if (me.currentEditingGlj["ID"]) {
|
|
|
rObj["ID"] = me.currentEditingGlj["ID"];
|
|
|
updateArr.push(rObj);
|
|
|
} else {
|
|
|
- addArr.push(rObj);
|
|
|
+ //add
|
|
|
+ me.addGljObj = rObj;
|
|
|
+ let isCanSav = true;
|
|
|
+ for(let i=0; i<me.setting.header.length; i++){
|
|
|
+ if(!rObj[me.setting.header[i].dataCode]){
|
|
|
+ isCanSav = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isCanSav){
|
|
|
+ me.addGljObj = null;
|
|
|
+ addArr.push(rObj);
|
|
|
+ }
|
|
|
}
|
|
|
- rObj.gljType = me.gljCurTypeId;
|
|
|
+ rObj.gljClass = me.gljCurTypeId;
|
|
|
me.currentEditingGlj = null;
|
|
|
- me.mixUpdateRequest(updateArr, addArr, []);
|
|
|
+ if(updateArr.length >0 || addArr.length >0){
|
|
|
+ me.mixUpdateRequest(updateArr, addArr, []);
|
|
|
+ }
|
|
|
},
|
|
|
onRangeChanged: function(sender, args) {
|
|
|
if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
@@ -183,6 +324,8 @@ repositoryGljObj = {
|
|
|
},
|
|
|
onClipboardPasting: function(sender, args) {
|
|
|
var me = repositoryGljObj;
|
|
|
+ console.log(`me.parentNodeIds`);
|
|
|
+ console.log(me.parentNodeIds);
|
|
|
if (args.cellRange.colCount != me.setting.header.length || me.gljCurTypeId < 0 || me.parentNodeIds["_pNodeId_" + me.gljCurTypeId]) {
|
|
|
args.cancel = true;
|
|
|
}
|
|
@@ -229,6 +372,8 @@ repositoryGljObj = {
|
|
|
me.sortGlj();
|
|
|
me.currentCache = me.getCache();
|
|
|
me.showGljItems(me.gljList, me.gljCurTypeId);
|
|
|
+ console.log(`me.cC`);
|
|
|
+ console.log(me.currentCache);
|
|
|
}
|
|
|
},
|
|
|
error:function(err){
|
|
@@ -239,7 +384,7 @@ repositoryGljObj = {
|
|
|
getCache: function() {
|
|
|
var me = this, rst = [];
|
|
|
for (var i = 0; i < me.gljList.length; i++) {
|
|
|
- if (me.gljList[i].gljType == me.gljCurTypeId) {
|
|
|
+ if (me.gljList[i].gljClass == me.gljCurTypeId) {
|
|
|
rst.push(me.gljList[i]);
|
|
|
}
|
|
|
}
|
|
@@ -297,7 +442,12 @@ var gljTypeTreeOprObj = {
|
|
|
var me = repositoryGljObj,
|
|
|
gljTypeId = treeNode.ID;
|
|
|
me.gljCurTypeId = treeNode.ID;
|
|
|
+ console.log(`gljcurtypeId: ${me.gljCurTypeId}`);
|
|
|
me.currentCache = me.getCache();
|
|
|
+ console.log(`gljList`);
|
|
|
+ console.log(me.gljList);
|
|
|
+ console.log(`nowCache`);
|
|
|
+ console.log(me.currentCache);
|
|
|
me.showGljItems(me.gljList, gljTypeId);
|
|
|
if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
|
|
|
sheetCommonObj.shieldAllCells(me.workBook.getSheet(0), me.setting);
|