|
@@ -1,135 +1,215 @@
|
|
|
/**
|
|
|
* Created by CSL on 2017-06-08.
|
|
|
*/
|
|
|
-var rationCoeObj = {
|
|
|
- spread: null,
|
|
|
- datas: [],
|
|
|
- libID: Number,
|
|
|
- tempID: -999999, // 本地新增一条数据给的默认ID,用作标记,服务端返回新ID后替换该ID
|
|
|
-
|
|
|
- colDef: [
|
|
|
- {name: "ID", displayName: "ID", size: 70, hAlign: "center"},
|
|
|
- {name: "name", displayName: "名称", size: 400, readOnly: true},
|
|
|
- {name: "content", displayName: "内容", size: 500, readOnly: true}
|
|
|
- ],
|
|
|
-
|
|
|
- show: function (){
|
|
|
- var me = this;
|
|
|
- me.libID = getQueryString("repository");
|
|
|
- me.getDatas();
|
|
|
- me.spread = sheetObj.create($('#rationCoeSpread')[0], me.colDef, me.datas);
|
|
|
- me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged);
|
|
|
- me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged);
|
|
|
+var rationCoeOprObj = {
|
|
|
+ sheet: null,
|
|
|
+ libID: -1,
|
|
|
+ currentRationItem: null,
|
|
|
+ cache: {},
|
|
|
+ setting: {
|
|
|
+ header:[
|
|
|
+ {headerName:"编号",headerWidth:120,dataCode:"ID", dataType: "Number"},
|
|
|
+ {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"},
|
|
|
+ {headerName:"内容",headerWidth:300,dataCode:"content", dataType: "String"}
|
|
|
+ ],
|
|
|
+ view:{
|
|
|
+ comboBox:[],
|
|
|
+ lockColumns:[1,2]
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- getDatas: function () {
|
|
|
+ buildSheet: function(sheet) {
|
|
|
var me = this;
|
|
|
-
|
|
|
- $.ajax({
|
|
|
- type:"POST",
|
|
|
- url:"/rationRepository/api/getCoeList",
|
|
|
- data:{"libID": me.libID},
|
|
|
- dataType:"json",
|
|
|
- cache:false,
|
|
|
- async: false,
|
|
|
- timeout:20000,
|
|
|
- success: function (result) {
|
|
|
- if (result.data) {
|
|
|
- me.datas = result.data;
|
|
|
- };
|
|
|
- },
|
|
|
- error: function (result) {
|
|
|
- alert('内部程序错误!');
|
|
|
- }
|
|
|
- })
|
|
|
+ me.sheet = sheet;
|
|
|
+ //alert('0020 libID:' + JSON.stringify(me.libID));
|
|
|
+ me.libID = storageUtil.getSessionCache("RationGrp","repositoryID");
|
|
|
+ //alert('0021 libID:' + JSON.stringify(me.libID));
|
|
|
+ sheetCommonObj.initSheet(me.sheet, me.setting, 30);
|
|
|
+ me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
+ me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
+ me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
|
|
|
+ me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
|
|
|
},
|
|
|
+ onRangeChanged: function(sender, args) {
|
|
|
+ if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
|
+ var me = rationCoeOprObj, updateArr = [], removeArr = [];
|
|
|
+ if (args.col == 0) {
|
|
|
+ if (me.cache["_Coe_" + me.currentRationItem.ID]) {
|
|
|
+ var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
|
|
|
+ for (var i = args.rowCount - 1; i >= 0; i--) {
|
|
|
+ if (args.row + i < cacheArr.length) {
|
|
|
+ cacheArr.splice(args.row + i, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ me.updateRationItem();
|
|
|
+ sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ me.showCoeItems(me.currentRationItem.ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- onMainCellChanged: function(sender, args) {
|
|
|
- if (args.propertyName !== "value"){return;};
|
|
|
- var me = rationCoeObj;
|
|
|
- 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],[],[]);
|
|
|
-
|
|
|
- var sheet = me.spread.getSheet(0);
|
|
|
- me.showNullRow(sheet);
|
|
|
}
|
|
|
- else{ // 正常修改
|
|
|
- me.save([],[],[obj]);
|
|
|
- };
|
|
|
},
|
|
|
-
|
|
|
- onMainRangeChanged: function(sender, args) {
|
|
|
- if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
|
- if (!confirm('确定要删除本条附注条件吗?')){ args.cancel = true; return; }
|
|
|
- var me = rationCoeObj;
|
|
|
- var obj = me.datas[args.row];
|
|
|
- me.save([],[obj],[]);
|
|
|
- args.sheet.deleteRows(args.row, 1);
|
|
|
- };
|
|
|
+/* onClipboardPasting: function(sender, args) {
|
|
|
+ var me = rationCoeOprObj;
|
|
|
+ if (args.cellRange.colCount != 1 || args.cellRange.col != 0 || !(me.currentRationItem)) {
|
|
|
+ args.cancel = true;
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- showNullRow: function(sheet){
|
|
|
- var datas = sheet.getDataSource();
|
|
|
- var lastData = datas[datas.length - 1];
|
|
|
- if (!$.isEmptyObject(lastData)){
|
|
|
- sheet.addRows(sheet.getRowCount(), 1);
|
|
|
- };
|
|
|
+ onClipboardPasted: function(e, info) {
|
|
|
+ var me = rationCoeOprObj;
|
|
|
+ if (me.libID) {
|
|
|
+ if (info.cellRange.col == 0) {
|
|
|
+ var tmpCoeIDs = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
|
|
|
+ var IDs = [];
|
|
|
+ for (var i = 0; i < tmpCoeIDs.length; i++) {
|
|
|
+ IDs.push(tmpCoeIDs[i]);
|
|
|
+ }
|
|
|
+ me.addCoeItems(IDs);
|
|
|
+ } else {
|
|
|
+ //修改用量
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },*/
|
|
|
+ onCellEditEnd: function(sender, args){
|
|
|
+ var me = rationCoeOprObj;
|
|
|
+ if (args.col == 0) { // 编号列
|
|
|
+ if (args.editingText == null || args.editingText.trim() == "") { //delete
|
|
|
+ var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
|
|
|
+ if (cacheArr) {
|
|
|
+ if (args.row < cacheArr.length) {
|
|
|
+ cacheArr.splice(args.row, 1);
|
|
|
+ me.updateRationItem();
|
|
|
+ sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ me.showCoeItems(me.currentRationItem.ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (me.libID) {
|
|
|
+ var coeIDs = [];
|
|
|
+ coeIDs.push(args.editingText.trim());
|
|
|
+ me.addCoeItems(coeIDs, me.libID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
- save: function(addArr, deleteArr, updateArr) {
|
|
|
- var me = rationCoeObj;
|
|
|
-
|
|
|
- //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;
|
|
|
- };
|
|
|
-
|
|
|
+ addCoeItems: function(coeIDs) {
|
|
|
+ var me = this;
|
|
|
$.ajax({
|
|
|
type:"POST",
|
|
|
- url:"api/saveCoeList",
|
|
|
- data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArrTemp})},
|
|
|
+ url:"api/getCoeItemsByIDs",
|
|
|
+ data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": coeIDs})},
|
|
|
dataType:"json",
|
|
|
cache:false,
|
|
|
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.spread.getSheet(0).repaint();
|
|
|
- break;
|
|
|
+ sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ if (result) {
|
|
|
+ var rstArr = [], newAddArr = [];
|
|
|
+ for (var i = 0; i < result.data.length; i++) {
|
|
|
+ rstArr.push(result.data[i]);
|
|
|
+ };
|
|
|
+ if (me.cache["_Coe_" + me.currentRationItem.ID]) {
|
|
|
+ var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
|
|
|
+ for (var i = 0; i < rstArr.length; i++) {
|
|
|
+ var hasDup = false;
|
|
|
+ for (var j = 0; j < cacheArr.length; j++) {
|
|
|
+ if (cacheArr[j] == rstArr[i]) {
|
|
|
+ hasDup = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasDup) {
|
|
|
+ newAddArr.push(rstArr[i]);
|
|
|
}
|
|
|
}
|
|
|
- };
|
|
|
+ cacheArr.sort(function(a, b) {
|
|
|
+ var rst = 0;
|
|
|
+ if (a > b) rst = 1
|
|
|
+ else if (a < b) rst = -1;
|
|
|
+ return rst;
|
|
|
+ });
|
|
|
+ me.cache["_Coe_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
|
|
|
+ }
|
|
|
+ me.showCoeItems(me.currentRationItem.ID);
|
|
|
+ if (newAddArr.length > 0) {
|
|
|
+ me.updateRationItem();
|
|
|
+ }
|
|
|
}
|
|
|
+ sheetCommonObj.lockCells(me.sheet, me.setting);
|
|
|
},
|
|
|
error:function(err){
|
|
|
- alert("内部程序错误!");
|
|
|
+ alert(err);
|
|
|
}
|
|
|
})
|
|
|
+ },
|
|
|
+
|
|
|
+ updateRationItem: function() {
|
|
|
+ var me = this, updateArr = [];
|
|
|
+ if (me.currentRationItem) {
|
|
|
+ me.currentRationItem.rationCoeList = me.getCoeIDsArr();
|
|
|
+ updateArr.push(me.currentRationItem);
|
|
|
+ rationOprObj.mixUpdateRequest(updateArr, [], []);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getCoeIDsArr: function(){
|
|
|
+ var me = this, rst = [];
|
|
|
+ if (me.currentRationItem && me.cache["_Coe_" + me.currentRationItem.ID]) {
|
|
|
+ var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
|
|
|
+ for (var i = 0; i < cacheArr.length; i++) {
|
|
|
+ rst.push(cacheArr[i].ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
+
|
|
|
+ getCoeItems: function(rationItem) {
|
|
|
+ var me = this, rationID = rationItem.ID, rationCoeList = rationItem.rationCoeList;
|
|
|
+ if (rationCoeList == undefined){return;};
|
|
|
+
|
|
|
+ me.currentRationItem = rationItem;
|
|
|
+ //alert('0009 ' + JSON.stringify(me.cache));
|
|
|
+ //alert('0010 ' + JSON.stringify(me.cache["_Coe_" + rationID]));
|
|
|
+ //alert('0011 ' + JSON.stringify(me.libID));
|
|
|
+ if (me.cache["_Coe_" + rationID]) {
|
|
|
+ me.showCoeItems(rationID);
|
|
|
+ sheetCommonObj.lockCells(me.sheet, me.setting);
|
|
|
+ } else {
|
|
|
+ $.ajax({
|
|
|
+ type:"POST",
|
|
|
+ url:"api/getCoeItemsByIDs",
|
|
|
+ data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": rationCoeList})},
|
|
|
+ dataType:"json",
|
|
|
+ cache:false,
|
|
|
+ timeout:5000,
|
|
|
+ success:function(result){
|
|
|
+ sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+
|
|
|
+ if (result.data) {
|
|
|
+ var cacheArr = [];
|
|
|
+ for (var i = 0; i < result.data.length; i++) {
|
|
|
+ for (var j = 0; j < rationCoeList.length; j++) {
|
|
|
+ if (rationCoeList[j] == result.data[i].ID) {
|
|
|
+ cacheArr.push(result.data[i]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ me.cache["_Coe_" + rationID] = cacheArr;
|
|
|
+ me.showCoeItems(rationID);
|
|
|
+ }
|
|
|
+ sheetCommonObj.lockCells(me.sheet, me.setting);
|
|
|
+ },
|
|
|
+ error:function(err){
|
|
|
+ alert(err);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ showCoeItems: function(rationID) {
|
|
|
+ var me = this;
|
|
|
+ if (me.cache["_Coe_" + rationID]) {
|
|
|
+ sheetCommonObj.showData(me.sheet, me.setting, me.cache["_Coe_" + rationID]);
|
|
|
+ }
|
|
|
}
|
|
|
-};
|
|
|
+}
|