|
@@ -1,8 +1,12 @@
|
|
|
/**
|
|
|
* Created by CSL on 2017-05-18.
|
|
|
*/
|
|
|
+//modiyied by zhong on 2017/9/21
|
|
|
+
|
|
|
|
|
|
var pageObj = {
|
|
|
+ libID: null,
|
|
|
+ gljLibID: null,
|
|
|
initPage: function (){
|
|
|
$("#drirect-dinge").click(function(){
|
|
|
$(this).attr('href', "/rationRepository/ration" + "?repository=" + getQueryString("repository"))
|
|
@@ -19,263 +23,514 @@ var pageObj = {
|
|
|
html = html.replace("XXX定额库", libName);
|
|
|
$("#rationname")[0].outerHTML = html;
|
|
|
};
|
|
|
+ this.gljLibID = storageUtil.getSessionCache("gljLib", "repositoryID_" + libID);
|
|
|
+ this.libID = libID;
|
|
|
+ coeOprObj.buildSheet($('#mainSpread')[0]);
|
|
|
+ gljAdjOprObj.buildSheet($('#contentSpread')[0]);
|
|
|
+ coeOprObj.getCoeList();
|
|
|
+ gljAdjOprObj.getGljItemsOcc();
|
|
|
|
|
|
- coeList.show();
|
|
|
+ },
|
|
|
+ showData: function(sheet, setting, data) {
|
|
|
+ let me = pageObj, ch = GC.Spread.Sheets.SheetArea.viewport;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ sheet.clear(0, 0, sheet.getRowCount(), sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
|
|
|
+ sheet.setRowCount(data.length + 3);
|
|
|
+ for (let col = 0; col < setting.header.length; col++) {
|
|
|
+ var hAlign = "left", vAlign = "center";
|
|
|
+ if (setting.header[col].hAlign) {
|
|
|
+ hAlign = setting.header[col].hAlign;
|
|
|
+ } else if (setting.header[col].dataType !== "String"){
|
|
|
+ hAlign = "right";
|
|
|
+ }
|
|
|
+ if(setting.header[col].readOnly){
|
|
|
+ sheet.getRange(-1, col, -1, 1).locked(true);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ sheet.getRange(-1, col, -1, 1).locked(false);
|
|
|
+ }
|
|
|
+ vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;
|
|
|
+ sheetCommonObj.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);
|
|
|
+ if (setting.header[col].formatter) {
|
|
|
+ sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ }
|
|
|
+ for (let row = 0; row < data.length; row++) {
|
|
|
+ let val = data[row][setting.header[col].dataCode];
|
|
|
+ sheet.setValue(row, col, val, ch);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sheet.resumeEvent();
|
|
|
+ sheet.resumePaint();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-var coeList = {
|
|
|
- mainSpread: null,
|
|
|
- detailSpread: null,
|
|
|
- datas: [],
|
|
|
- libID: Number,
|
|
|
- tempID: -999999, // 本地新增一条数据给的默认ID,用作标记,服务端返回新ID后替换该ID
|
|
|
-
|
|
|
- colDefMain: [
|
|
|
- {name: "ID", displayName: "ID", size: 60, hAlign: "center", readOnly: true},
|
|
|
- {name: "name", displayName: "名称", size: 280},
|
|
|
- {name: "content", displayName: "内容", size: 250}
|
|
|
- ],
|
|
|
- colDefContent: [
|
|
|
- {name: "coeType", displayName: "类型", size: 100, hAlign: "center"},
|
|
|
- {name: "gljCode", displayName: "工料机编号", size: 100, dataType: "String", formatter: "@", hAlign: "center"},
|
|
|
- {name: "operator", displayName: "操作符", size: 60, hAlign: "center"},
|
|
|
- {name: "amount", displayName: "数量", size: 80, hAlign: "right"}
|
|
|
- ],
|
|
|
-
|
|
|
- show: function (){
|
|
|
- var me = this;
|
|
|
- me.libID = getQueryString("repository");
|
|
|
- me.getDatas();
|
|
|
- me.mainSpread = sheetObj.create($('#mainSpread')[0], me.colDefMain, me.datas);
|
|
|
- me.detailSpread = sheetObj.create($('#contentSpread')[0], me.colDefContent, me.datas[0].coes);
|
|
|
-
|
|
|
- var coeType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
- coeType.items(["单个","定额","人工","材料","机械"]);
|
|
|
- me.detailSpread.getSheet(0).getRange(-1, 0, -1, 1).cellType(coeType);
|
|
|
-
|
|
|
- var operType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
- operType.items(["+","-","*","/","="]);
|
|
|
- me.detailSpread.getSheet(0).getRange(-1, 2, -1, 1).cellType(operType);
|
|
|
-
|
|
|
- me.detailSpread.options.showVerticalScrollbar = false;
|
|
|
-
|
|
|
- me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell);
|
|
|
- me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged);
|
|
|
- me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged);
|
|
|
-
|
|
|
- me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged);
|
|
|
- me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onDetailRangeChanged);
|
|
|
+let coeOprObj = {
|
|
|
+ workBook: null,
|
|
|
+ workSheet: null,
|
|
|
+ currentCoeList: [],
|
|
|
+ currentCoe: null,
|
|
|
+ //currentMaxNo: null,
|
|
|
+ setting: {
|
|
|
+ header: [
|
|
|
+ {headerName:"编号", headerWidth:60, dataCode:"ID", dataType: "String", hAlign: "center", vAlign: "center", readOnly: true},
|
|
|
+ {headerName:"名称", headerWidth:280, dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false},
|
|
|
+ {headerName:"内容", headerWidth:250, dataCode:"content", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false},
|
|
|
+ ]
|
|
|
},
|
|
|
+ buildSheet: function (container) {
|
|
|
+ let me = coeOprObj;
|
|
|
+ me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
|
|
|
+ me.workSheet = me.workBook.getSheet(0);
|
|
|
+ me.workSheet.options.isProtected = true;
|
|
|
+ me.onDelOpr(me.workBook, me.setting);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, me.onSelectionChanged);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
|
|
|
+ me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
+ me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
+ },
|
|
|
+ onSelectionChanged: function (sender, info) {
|
|
|
+ let me = coeOprObj, that = gljAdjOprObj;
|
|
|
+ if(info.oldSelections.length === 0 && info.newSelections.length > 0 || info.oldSelections[0].row !== info.newSelections[0].row){
|
|
|
+ let row = info.newSelections[0].row;
|
|
|
+ if(row < me.currentCoeList.length){
|
|
|
+ me.currentCoe = me.currentCoeList[row];
|
|
|
+ that.currentGljAdjList = me.currentCoe.coes;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ me.currentCoe = null;
|
|
|
+ that.currentGljAdjList = [];
|
|
|
+ }
|
|
|
+ //refresh & show coes
|
|
|
+ sheetCommonObj.cleanSheet(that.workSheet, that.setting, -1);
|
|
|
+ me.workBook.focus(true);
|
|
|
+ that.show(that.currentGljAdjList);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onEditEnded: function (sender, args) {
|
|
|
+ let me = coeOprObj, addArr = [], updateArr = [], dataCode = me.setting.header[args.col].dataCode;
|
|
|
+ if(args.editingText && args.editingText.toString().trim().length > 0){
|
|
|
+ //update
|
|
|
+ if(args.row < me.currentCoeList.length){
|
|
|
+ let updateObj = me.currentCoeList[args.row];
|
|
|
+ if(updateObj[dataCode] !== args.editingText.toString().trim()){
|
|
|
+ updateObj[dataCode] = args.editingText;
|
|
|
+ updateArr.push(updateObj);
|
|
|
+ me.save([], updateArr, [], true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //insert
|
|
|
+ else{
|
|
|
+ let newCoe = {};
|
|
|
+ //me.currentMaxNo ++;
|
|
|
+ newCoe.libID = pageObj.libID;
|
|
|
+ //newCoe.serialNo = me.currentMaxNo;
|
|
|
+ newCoe[dataCode] = args.editingText;
|
|
|
+ addArr.push(newCoe);
|
|
|
+ me.save(addArr, [], [], true, function (result) {
|
|
|
+ me.updateCurrentCoeList(result);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onClipboardPasting: function (sender, info) {
|
|
|
+ let me = coeOprObj, maxCol = info.cellRange.col + info.cellRange.colCount - 1;
|
|
|
+ if(maxCol > me.setting.header.length){
|
|
|
+ info.cancel = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onClipboardPasted: function (sender, info) {
|
|
|
+ let me = coeOprObj, addArr = [], updateArr = [];
|
|
|
+ let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
+ for(let i = 0, len = items.length; i < len; i++){
|
|
|
+ let row = i + info.cellRange.row;
|
|
|
+ //update
|
|
|
+ if(row < me.currentCoeList.length){
|
|
|
+ let updateObj = me.currentCoeList[row];
|
|
|
+ for(let attr in items[i]){
|
|
|
+ updateObj[attr] = items[i][attr];
|
|
|
+ }
|
|
|
+ updateArr.push(updateObj);
|
|
|
+ }
|
|
|
+ //insert
|
|
|
+ else {
|
|
|
+ //items[i].serialNo = ++ me.currentMaxNo;
|
|
|
+ items[i].libID = pageObj.libID;
|
|
|
+ addArr.push(items[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(addArr.length > 0 || updateArr.length > 0){
|
|
|
+ me.save(addArr, updateArr, [], true, function (result) {
|
|
|
+ me.updateCurrentCoeList(result)
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onDelOpr: function (workBook, setting) {
|
|
|
+ let me = coeOprObj, that = gljAdjOprObj;
|
|
|
+ workBook.commandManager().register('coeListDel', function () {
|
|
|
+ let deleteArr = [];
|
|
|
+ let sheet = workBook.getSheet(0);
|
|
|
+ let sels = sheet.getSelections();
|
|
|
+ let idx = sels[0].row;
|
|
|
+ for(let i = 0, len = sels.length; i < len; i++){
|
|
|
+ if(idx > sels[i].row){
|
|
|
+ idx = sels[i].row;
|
|
|
+ }
|
|
|
+ if(sels[i].colCount === setting.header.length){//can del
|
|
|
+ for(let r = 0, rLen = sels[i].rowCount; r < rLen; r++){
|
|
|
+ let row = sels[i].row + r;
|
|
|
+ if(row < me.currentCoeList.length){
|
|
|
+ deleteArr.push({libID: me.currentCoeList[row].libID, ID: me.currentCoeList[row].ID});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ me.currentCoeList.splice(sels[i].row, sels[i].rowCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(deleteArr.length > 0){
|
|
|
+ me.save([], [], deleteArr, true);
|
|
|
+ me.currentCoe = typeof me.currentCoeList[idx] !== 'undefined' ? me.currentCoeList[idx] : null;
|
|
|
+ that.currentGljAdjList = me.currentCoe ? me.currentCoe.coes : [];
|
|
|
+ gljAdjOprObj.show(that.currentGljAdjList);
|
|
|
+ }
|
|
|
|
|
|
- getDatas: function () {
|
|
|
- var me = this;
|
|
|
-
|
|
|
+ });
|
|
|
+ workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
+ workBook.commandManager().setShortcutKey('coeListDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
+ },
|
|
|
+ updateCurrentCoeList: function (newCoeList) {
|
|
|
+ let me = coeOprObj;
|
|
|
+ me.currentCoeList = me.currentCoeList.concat(newCoeList);
|
|
|
+ me.sortCoeList(me.currentCoeList);
|
|
|
+ },
|
|
|
+ sortCoeList: function (coeList) {
|
|
|
+ coeList.sort(function (a, b) {
|
|
|
+ let rst = 0;
|
|
|
+ if(a.ID > b.ID) rst = 1;
|
|
|
+ else if(a.ID < b.ID) rst = -1;
|
|
|
+ return rst;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getCoeList: function () {
|
|
|
+ let me = coeOprObj;
|
|
|
$.ajax({
|
|
|
- type:"POST",
|
|
|
- url:"/rationRepository/api/getCoeList",
|
|
|
- data:{"libID": me.libID},
|
|
|
- dataType:"json",
|
|
|
- cache:false,
|
|
|
- async: false,
|
|
|
+ type: 'post',
|
|
|
+ url: '/rationRepository/api/getCoeList',
|
|
|
+ data: {libID: pageObj.libID},
|
|
|
+ dataType: 'json',
|
|
|
timeout:20000,
|
|
|
success: function (result) {
|
|
|
- if (result.data) {
|
|
|
- me.datas = result.data;
|
|
|
- };
|
|
|
+ if(!result.error){
|
|
|
+ me.currentCoeList = result.data;
|
|
|
+ me.sortCoeList(me.currentCoeList);
|
|
|
+ //me.currentMaxNo = me.currentCoeList.length > 0 ? me.currentCoeList[me.currentCoeList.length - 1].serialNo : 0;
|
|
|
+ pageObj.showData(me.workSheet, me.setting, me.currentCoeList);
|
|
|
+ me.workSheet.clearSelection();
|
|
|
+ }
|
|
|
},
|
|
|
- error: function (result) {
|
|
|
- alert('内部程序错误!');
|
|
|
+ error:function(err){
|
|
|
+ alert("内部程序错误!");
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
-
|
|
|
- /*getLibID: function(libName){
|
|
|
- var me = this;
|
|
|
+ save: function (addArr, updateArr, deleteArr, refresh, callback) {
|
|
|
+ let me = coeOprObj;
|
|
|
$.ajax({
|
|
|
type:"POST",
|
|
|
- url:"/rationRepository/api/getLibIDByName",
|
|
|
- data:{"libName": libName},
|
|
|
+ url:"api/saveCoeList",
|
|
|
+ data: {data: JSON.stringify({addArr: addArr, updateArr: updateArr, deleteArr: deleteArr})},
|
|
|
dataType:"json",
|
|
|
- cache:false,
|
|
|
- async: false,
|
|
|
- timeout:20000,
|
|
|
- success: function (result) {
|
|
|
- if (result.data) {
|
|
|
- me.libID = result.data;
|
|
|
+ timeout:5000,
|
|
|
+ success:function(result){
|
|
|
+ if (result.error) {
|
|
|
+ alert(result.message);
|
|
|
+ } else{
|
|
|
+ if(callback){
|
|
|
+ if(result.message === 'mixed'){
|
|
|
+ for(let i = 0, len = result.data.length; i < len; i++){
|
|
|
+ if(result.data[i][0] === 'addSc'){
|
|
|
+ result.data = result.data[i][1];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ callback(result.data);
|
|
|
+ }
|
|
|
+ if(refresh){
|
|
|
+ pageObj.showData(me.workSheet, me.setting, me.currentCoeList);
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
- error: function (result) {
|
|
|
- alert('内部程序错误!');
|
|
|
+ error:function(err){
|
|
|
+ alert("内部程序错误!");
|
|
|
}
|
|
|
- })
|
|
|
- },*/
|
|
|
-
|
|
|
- onMainEnterCell: function(sender, args) {
|
|
|
- var me = coeList;
|
|
|
- var row = args.sheet.getActiveRowIndex();
|
|
|
- me.detailSpread.suspendPaint();
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
- var dSheet = me.detailSpread.getSheet(0);
|
|
|
- var dData = me.datas[row].coes;
|
|
|
- if (dData == undefined){
|
|
|
- dSheet.setDataSource([]);
|
|
|
- dSheet.setRowCount(0);
|
|
|
- }else{
|
|
|
- dSheet.setDataSource(dData);
|
|
|
- me.showNullRow(dSheet);
|
|
|
- };
|
|
|
- me.detailSpread.resumePaint();
|
|
|
+let gljAdjOprObj = {
|
|
|
+ workBook: null,
|
|
|
+ workSheet: null,
|
|
|
+ currentGljAdjList: [],
|
|
|
+ gljList: [],//只含编号和名称的总工料机列表
|
|
|
+ setting: {
|
|
|
+ header: [
|
|
|
+ {headerName:"调整类型", headerWidth:100, dataCode:"coeType", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
+ {headerName:"工料机编码", headerWidth:100, dataCode:"gljCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
+ {headerName:"名称", headerWidth:100, dataCode:"gljName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: true},
|
|
|
+ {headerName:"操作符", headerWidth:60, dataCode:"operator", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
+ {headerName:"数量", headerWidth:80, dataCode:"amount", dataType: "String", hAlign: "center", vAlign: "center" , readOnly: false},
|
|
|
+ ],
|
|
|
+ comboItems: {
|
|
|
+ //调整类型下拉菜单
|
|
|
+ coeType: ['定额子目', '人工类', '材料类', '机械类', '主材类', '设备类', '单个工料机'],
|
|
|
+ //操作符下拉菜单
|
|
|
+ operator: ['+', '-', '*', '/', '=']
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- onMainCellChanged: function(sender, args) {
|
|
|
- if (args.propertyName !== "value"){return;};
|
|
|
- var me = coeList;
|
|
|
- var row = args.sheet.getActiveRowIndex();
|
|
|
- var obj = me.datas[row];
|
|
|
-
|
|
|
- if (obj.ID == undefined){ // 空行录入,即新增
|
|
|
- obj.libID = me.libID;
|
|
|
- obj.ID = me.tempID;
|
|
|
- if (obj.name == undefined){obj.name = '';}; // 生成属性,令属性存储顺序一致
|
|
|
- if (obj.content == undefined){obj.content = '';};
|
|
|
- obj.coes = [{coeType:"定额", operator:"*", amount: "0"}];
|
|
|
- me.datas[row] = obj;
|
|
|
-
|
|
|
- me.save([obj],[],[]);
|
|
|
-
|
|
|
- me.detailSpread.suspendPaint();
|
|
|
- me.detailSpread.getSheet(0).setDataSource(me.datas[row].coes);
|
|
|
- me.detailSpread.resumePaint();
|
|
|
- var sheet = me.mainSpread.getSheet(0);
|
|
|
- me.showNullRow(sheet);
|
|
|
+ buildSheet: function (container) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ me.workBook = sheetCommonObj.buildSheet(container, me.setting, 3);
|
|
|
+ me.workSheet = me.workBook.getSheet(0);
|
|
|
+ me.workSheet.options.isProtected = true;
|
|
|
+ me.onDelOpr(me.workBook, me.setting);
|
|
|
+ me.workSheet.clearSelection();
|
|
|
+ me.buildComboBox(me.workSheet);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
+ me.workSheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
+ },
|
|
|
+ buildComboBox: function (sheet) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ let comboType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
+ comboType.items(me.setting.comboItems.coeType);
|
|
|
+ let comboOpr = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
+ comboOpr.items(me.setting.comboItems.operator);
|
|
|
+ sheet.getCell(-1, 0).cellType(comboType);
|
|
|
+ sheet.getCell(-1, 3).cellType(comboOpr);
|
|
|
+ sheet.resumePaint();
|
|
|
+ sheet.resumeEvent();
|
|
|
+ },
|
|
|
+ onEditStart: function (sender, args) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ if(!coeOprObj.currentCoe || args.row >= me.currentGljAdjList.length && args.col === 1
|
|
|
+ || args.row < me.currentGljAdjList.length && args.col === 1 && me.currentGljAdjList[args.row].coeType !== '单个工料机'){
|
|
|
+ args.cancel = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ,
|
|
|
+ onEditEnded: function (sender, args) {
|
|
|
+ let me = gljAdjOprObj, isUpdate = false,
|
|
|
+ dataCode = me.setting.header[args.col].dataCode;
|
|
|
+ if(args.editingText && args.editingText.toString().trim().length > 0){
|
|
|
+ if(dataCode === 'amount' && isNaN(args.editingText)){
|
|
|
+ args.sheet.setValue(args.row, args.col, typeof me.currentGljAdjList[args.row] !== 'undefined' && typeof me.currentGljAdjList[args.row][dataCode] !== 'undefined'
|
|
|
+ ? me.currentGljAdjList[args.row][dataCode] + '' : '');
|
|
|
+ alert("只能输入数值!");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //update
|
|
|
+ if(args.row < me.currentGljAdjList.length && args.editingText.toString().trim() !== me.currentGljAdjList[args.row][dataCode]){
|
|
|
+ let updateObj = me.currentGljAdjList[args.row];
|
|
|
+ if(dataCode === 'gljCode' && typeof updateObj.coeType !== 'undefined' && updateObj.coeType === '单个工料机'){
|
|
|
+ let gljName = me.getGljName(args.editingText, me.gljList);
|
|
|
+ if(gljName){
|
|
|
+ updateObj.gljCode = args.editingText;
|
|
|
+ updateObj.gljName = gljName;
|
|
|
+ isUpdate = true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ alert("不存在编号为"+ args.editingText +"的工料机");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(dataCode !== 'gljCode') {
|
|
|
+ isUpdate = true;
|
|
|
+ updateObj[dataCode] = args.editingText;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //insert
|
|
|
+ else if(args.row >= me.currentGljAdjList.length){
|
|
|
+ isUpdate = true;
|
|
|
+ let newAdjGlj = {};
|
|
|
+ newAdjGlj[dataCode] = args.editingText;
|
|
|
+ me.currentGljAdjList.push(newAdjGlj);
|
|
|
+ }
|
|
|
+ if(isUpdate){
|
|
|
+ coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
+ me.show(me.currentGljAdjList);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ args.sheet.setValue(args.row, args.col, typeof me.currentGljAdjList[args.row] !== 'undefined' && typeof me.currentGljAdjList[args.row][dataCode] !== 'undefined'
|
|
|
+ ? me.currentGljAdjList[args.row][dataCode] + '' : '');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- else{ // 正常修改
|
|
|
- me.save([],[],[obj]);
|
|
|
- };
|
|
|
},
|
|
|
+ onClipboardPasting: function (sender, info) {
|
|
|
|
|
|
- onMainRangeChanged: function(sender, args) {
|
|
|
- if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
|
- if (!confirm('确定要删除本条附注条件吗?')){ args.cancel = true; return; }
|
|
|
- var me = coeList;
|
|
|
- var obj = me.datas[args.row];
|
|
|
- me.save([],[obj],[]);
|
|
|
- args.sheet.deleteRows(args.row, 1);
|
|
|
- };
|
|
|
},
|
|
|
-
|
|
|
- onDetailCellChanged: function(sender, args) {
|
|
|
- if (args.propertyName !== "value"){return;};
|
|
|
-
|
|
|
- var me = coeList;
|
|
|
- var mainRow = me.mainSpread.getSheet(0).getActiveRowIndex();
|
|
|
- var detailRow = args.sheet.getActiveRowIndex();
|
|
|
- var detailDatas = me.datas[mainRow].coes;
|
|
|
- var curDetailData = detailDatas[detailRow];
|
|
|
-
|
|
|
- if (curDetailData !== undefined){ // 当在空白行输入时,curDetailData为undefined。
|
|
|
- var curType = curDetailData.coeType;
|
|
|
- if (curType !== '单个'){
|
|
|
- me.detailSpread.suspendPaint();
|
|
|
- curDetailData.gljCode = null;
|
|
|
- me.detailSpread.resumePaint();
|
|
|
- };
|
|
|
-
|
|
|
- if (curDetailData.operator == undefined){ curDetailData.operator = "*"; } ;
|
|
|
- if (curDetailData.amount == undefined){ curDetailData.amount = "0"; } ;
|
|
|
- };
|
|
|
-
|
|
|
-/* var curType = args.sheet.getValue(detailRow, 0);
|
|
|
- if (curType !== '单个'){
|
|
|
- me.detailSpread.suspendEvent();
|
|
|
- args.sheet.setValue(detailRow, 1, null);
|
|
|
- me.detailSpread.resumeEvent();
|
|
|
- //args.sheet.getCell(row, 1).backColor("red");
|
|
|
+ getValidPasteDatas: function (pasteItems, info) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ let rst = [];
|
|
|
+ for(let i = 0, len = pasteItems.length; i < len; i++){
|
|
|
+ let row = i + info.cellRange.row;
|
|
|
+ let validObj = {};
|
|
|
+ //update
|
|
|
+ if(row < me.currentGljAdjList.length){
|
|
|
+ let updateObj = me.currentGljAdjList[row];
|
|
|
+ if(typeof pasteItems[i].coeType !== 'undefined' && typeof pasteItems[i].gljCode !== 'undefined'){
|
|
|
+ let gljName = me.getGljName(pasteItems[i].gljCode, me.gljList);
|
|
|
+ if(pasteItems[i].coeType === '单个工料机' && gljName){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ validObj.gljCode = pasteItems[i].gljCode;
|
|
|
+ validObj.gljName = gljName;
|
|
|
+ }
|
|
|
+ else if(pasteItems[i].coeType !== '单个工料机' && me.setting.comboItems.coeType.indexOf(pasteItems[i].coeType) !== -1){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(typeof pasteItems[i].coeType === 'undefined' && typeof pasteItems[i].gljCode !== 'undefined'){
|
|
|
+ let gljName = me.getGljName(pasteItems[i].gljCode, me.gljList);
|
|
|
+ if(typeof updateObj.coeType !== 'undefined' && updateObj.coeType === '单个工料机' && gljName){
|
|
|
+ validObj.gljCode = pasteItems[i].gljCode;
|
|
|
+ validObj.gljName = gljName;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(typeof pasteItems[i].coeType !== 'undefined' && typeof pasteItems[i].gljCode === 'undefined'){
|
|
|
+ if(me.setting.comboItems.coeType.indexOf(pasteItems[i].coeType) !== -1){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ if(validObj.coeType !== '单个工料机' && typeof updateObj.gljCode !== '单个工料机' && updateObj.gljCode.toString().trim().length > 0){
|
|
|
+ validObj.gljCode = '';
|
|
|
+ validObj.gljName = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if(typeof pasteItems[i].operator !== 'undefined' && me.setting.comboItems.operator.indexOf(pasteItems[i].operator) !== -1){
|
|
|
+ validObj.operator = pasteItems[i].operator;
|
|
|
+ }
|
|
|
+ if(typeof pasteItems[i].amount !== 'undefined' && !isNaN(pasteItems[i].amount)){
|
|
|
+ validObj.amount = pasteItems[i].amount;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if(typeof pasteItems[i].coeType !== 'undefined' && typeof pasteItems[i].gljCode !== 'undefined'){
|
|
|
+ let gljName = me.getGljName(pasteItems[i].gljCode, me.gljList);
|
|
|
+ if(pasteItems[i].coeType === '单个工料机' && gljName){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ validObj.gljCode = pasteItems[i].gljCode;
|
|
|
+ validObj.gljName = gljName;
|
|
|
+ }
|
|
|
+ else if(pasteItems[i].coeType !== '单个工料机' && me.setting.comboItems.coeType.indexOf(pasteItems[i].coeType) !== -1){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(typeof pasteItems[i].gljCode === 'undefined') {
|
|
|
+ if(typeof pasteItems[i].coeType !== 'undefined' && me.setting.comboItems.coeType.indexOf(pasteItems[i].coeType) !== -1){
|
|
|
+ validObj.coeType = pasteItems[i].coeType;
|
|
|
+ }
|
|
|
+ if(typeof pasteItems[i].operator !== 'undefined' && me.setting.comboItems.operator.indexOf(pasteItems[i].operator) !== -1){
|
|
|
+ validObj.operator = pasteItems[i].operator;
|
|
|
+ }
|
|
|
+ if(typeof pasteItems[i].amount !== 'undefined' && !isNaN(pasteItems[i].amount)){
|
|
|
+ validObj.amount = pasteItems[i].amount;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(Object.keys(validObj).length > 0){
|
|
|
+ rst.push(validObj);
|
|
|
+ }
|
|
|
}
|
|
|
- else{
|
|
|
- //args.sheet.getCell(row, 1).backColor("Blue");
|
|
|
- };*/
|
|
|
-
|
|
|
-
|
|
|
- var obj = me.datas[mainRow];
|
|
|
- me.save([],[],[obj]);
|
|
|
-
|
|
|
- me.showNullRow(args.sheet);
|
|
|
+ return rst;
|
|
|
},
|
|
|
-
|
|
|
- onDetailRangeChanged: function(sender, args) {
|
|
|
- if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
|
- if (!confirm('确定要删除该类型的明细数据吗?')){ args.cancel = true; return; }
|
|
|
- var me = coeList;
|
|
|
- var detailData = args.sheet.getDataSource();
|
|
|
- args.sheet.deleteRows(args.row, 1);
|
|
|
- var mainRow = me.mainSpread.getSheet(0).getActiveRowIndex();
|
|
|
- var obj = me.datas[mainRow];
|
|
|
- me.save([],[],[obj]);
|
|
|
- };
|
|
|
+ onClipboardPasted: function (sender, info) {
|
|
|
+ let me = gljAdjOprObj, row;
|
|
|
+ let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
+ let validDatas = me.getValidPasteDatas(items, info);
|
|
|
+ for(let i = 0, len = validDatas.length; i < len; i++){
|
|
|
+ row = i + info.cellRange.row;
|
|
|
+ //update
|
|
|
+ if(row < me.currentGljAdjList.length){
|
|
|
+ let updateObj = me.currentGljAdjList[row];
|
|
|
+ for(let attr in validDatas[i]){
|
|
|
+ updateObj[attr] = validDatas[i][attr];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //insert
|
|
|
+ else{
|
|
|
+ me.currentGljAdjList.push(validDatas[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(validDatas.length > 0){
|
|
|
+ coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
+ me.show(me.currentGljAdjList);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ me.show(me.currentGljAdjList);
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- showNullRow: function(sheet){
|
|
|
- var datas = sheet.getDataSource();
|
|
|
- //alert('004: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount());
|
|
|
- var lastData = datas[datas.length - 1];
|
|
|
- if (!$.isEmptyObject(lastData)){
|
|
|
- sheet.addRows(sheet.getRowCount(), 1);
|
|
|
- //alert('005: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount());
|
|
|
- };
|
|
|
+ onDelOpr: function (workBook, setting) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ workBook.commandManager().register('gljAdjDel', function () {
|
|
|
+ let sheet = workBook.getSheet(0);
|
|
|
+ let sels = sheet.getSelections();
|
|
|
+ let isUpdate = false;
|
|
|
+ for(let i = 0, len = sels.length; i < len; i++){
|
|
|
+ if(sels[i].colCount === setting.header.length){//can del
|
|
|
+ if(sels[i].row < me.currentGljAdjList.length){
|
|
|
+ isUpdate = true;
|
|
|
+ me.currentGljAdjList.splice(sels[i].row, sels[i].rowCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isUpdate){
|
|
|
+ coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
+ me.show(me.currentGljAdjList);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
+ workBook.commandManager().setShortcutKey('gljAdjDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
},
|
|
|
-
|
|
|
- save: function(addArr, deleteArr, updateArr) {
|
|
|
- var me = coeList;
|
|
|
-
|
|
|
- //var addArrTemp = [];
|
|
|
- //var deleteArrTemp = [];
|
|
|
- var updateArrTemp = [];
|
|
|
-
|
|
|
- // 空行会产生空对象数据,清理空对象会给sheet的空行效果带来奇怪的干扰,这里要中转一下。
|
|
|
- if (updateArr.length > 0){
|
|
|
- $.extend(true, updateArrTemp, updateArr);
|
|
|
- //debug.d('011: ', updateArrTemp);
|
|
|
- //debug.d('012: ', updateArr);
|
|
|
- deleteEmptyObject(updateArrTemp[0].coes);
|
|
|
- //debug.d('013: ', updateArrTemp);
|
|
|
- //debug.d('014: ', updateArr);
|
|
|
- //return;
|
|
|
- };
|
|
|
-
|
|
|
+ getGljName: function (gljCode, gljList) {
|
|
|
+ let rst = null;
|
|
|
+ for(let i = 0, len = gljList.length; i < len; i++){
|
|
|
+ if(gljCode === gljList[i].code){
|
|
|
+ rst = gljList[i].name;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
+ show: function (coes) {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
+ pageObj.showData(me.workSheet, me.setting, coes)
|
|
|
+ },
|
|
|
+ getGljItemsOcc: function () {
|
|
|
+ let me = gljAdjOprObj;
|
|
|
$.ajax({
|
|
|
- type:"POST",
|
|
|
- url:"api/saveCoeList",
|
|
|
- data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArrTemp})},
|
|
|
- dataType:"json",
|
|
|
- cache:false,
|
|
|
- timeout:5000,
|
|
|
+ type: 'post',
|
|
|
+ url: '/stdGljRepository/api/getGljItemsOccupied',
|
|
|
+ data: {repId: pageObj.gljLibID, occupation: '-_id code name'},
|
|
|
+ dataType: 'json',
|
|
|
+ timeout: 5000,
|
|
|
success:function(result){
|
|
|
if (result.error) {
|
|
|
alert(result.message);
|
|
|
- } else {
|
|
|
- // 成功。更新从后台返回的新ID。
|
|
|
- if (addArr.length > 0){
|
|
|
- for (var i = 0; i < me.datas.length; i++) {
|
|
|
- if (me.datas[i].ID == me.tempID){
|
|
|
- me.datas[i].ID = result.data;
|
|
|
- me.mainSpread.getSheet(0).repaint();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
+ } else{
|
|
|
+ me.gljList = result.data;
|
|
|
}
|
|
|
},
|
|
|
error:function(err){
|
|
|
alert("内部程序错误!");
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-pageObj.initPage();
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|