ration_coe.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /**
  2. * Created by CSL on 2017-06-08.
  3. */
  4. var rationCoeObj = {
  5. spread: null,
  6. datas: [],
  7. libID: Number,
  8. tempID: -999999, // 本地新增一条数据给的默认ID,用作标记,服务端返回新ID后替换该ID
  9. colDef: [
  10. {name: "ID", displayName: "ID", size: 70, hAlign: "center"},
  11. {name: "name", displayName: "名称", size: 400, readOnly: true},
  12. {name: "content", displayName: "内容", size: 500, readOnly: true}
  13. ],
  14. show: function (){
  15. var me = this;
  16. me.libID = getQueryString("repository");
  17. me.getDatas();
  18. me.spread = sheetObj.create($('#rationCoeSpread')[0], me.colDef, me.datas);
  19. me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged);
  20. me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged);
  21. },
  22. getDatas: function () {
  23. var me = this;
  24. $.ajax({
  25. type:"POST",
  26. url:"/rationRepository/api/getCoeList",
  27. data:{"libID": me.libID},
  28. dataType:"json",
  29. cache:false,
  30. async: false,
  31. timeout:20000,
  32. success: function (result) {
  33. if (result.data) {
  34. me.datas = result.data;
  35. };
  36. },
  37. error: function (result) {
  38. alert('内部程序错误!');
  39. }
  40. })
  41. },
  42. onMainCellChanged: function(sender, args) {
  43. if (args.propertyName !== "value"){return;};
  44. var me = rationCoeObj;
  45. var row = args.sheet.getActiveRowIndex();
  46. var obj = me.datas[row];
  47. if (obj.ID == undefined){ // 空行录入,即新增
  48. obj.libID = me.libID;
  49. obj.ID = me.tempID;
  50. if (obj.name == undefined){obj.name = '';}; // 生成属性,令属性存储顺序一致
  51. if (obj.content == undefined){obj.content = '';};
  52. obj.coes = [{coeType:"全部", operator:"*", amount: "0"}];
  53. me.datas[row] = obj;
  54. me.save([obj],[],[]);
  55. var sheet = me.spread.getSheet(0);
  56. me.showNullRow(sheet);
  57. }
  58. else{ // 正常修改
  59. me.save([],[],[obj]);
  60. };
  61. },
  62. onMainRangeChanged: function(sender, args) {
  63. if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
  64. if (!confirm('确定要删除本条附注条件吗?')){ args.cancel = true; return; }
  65. var me = rationCoeObj;
  66. var obj = me.datas[args.row];
  67. me.save([],[obj],[]);
  68. args.sheet.deleteRows(args.row, 1);
  69. };
  70. },
  71. showNullRow: function(sheet){
  72. var datas = sheet.getDataSource();
  73. var lastData = datas[datas.length - 1];
  74. if (!$.isEmptyObject(lastData)){
  75. sheet.addRows(sheet.getRowCount(), 1);
  76. };
  77. },
  78. save: function(addArr, deleteArr, updateArr) {
  79. var me = rationCoeObj;
  80. //var addArrTemp = [];
  81. //var deleteArrTemp = [];
  82. var updateArrTemp = [];
  83. // 空行会产生空对象数据,清理空对象会给sheet的空行效果带来奇怪的干扰,这里要中转一下。
  84. if (updateArr.length > 0){
  85. $.extend(true, updateArrTemp, updateArr);
  86. //debug.d('011: ', updateArrTemp);
  87. //debug.d('012: ', updateArr);
  88. deleteEmptyObject(updateArrTemp[0].coes);
  89. //debug.d('013: ', updateArrTemp);
  90. //debug.d('014: ', updateArr);
  91. //return;
  92. };
  93. $.ajax({
  94. type:"POST",
  95. url:"api/saveCoeList",
  96. data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArrTemp})},
  97. dataType:"json",
  98. cache:false,
  99. timeout:5000,
  100. success:function(result){
  101. if (result.error) {
  102. alert(result.message);
  103. } else {
  104. // 成功。更新从后台返回的新ID。
  105. if (addArr.length > 0){
  106. for (var i = 0; i < me.datas.length; i++) {
  107. if (me.datas[i].ID == me.tempID){
  108. me.datas[i].ID = result.data;
  109. me.spread.getSheet(0).repaint();
  110. break;
  111. }
  112. }
  113. };
  114. }
  115. },
  116. error:function(err){
  117. alert("内部程序错误!");
  118. }
  119. })
  120. }
  121. };