ration_coe.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. /**
  2. * Created by CSL on 2017-06-08.
  3. */
  4. var rationCoeOprObj = {
  5. workBook: null,
  6. libID: -1,
  7. currentRationItem: null,
  8. cache: {},
  9. setting: {
  10. header:[
  11. {headerName:"编号",headerWidth:120,dataCode:"ID", dataType: "Number"},
  12. {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"},
  13. {headerName:"内容",headerWidth:300,dataCode:"content", dataType: "String"}
  14. ],
  15. view:{
  16. comboBox:[],
  17. lockColumns:[1,2]
  18. }
  19. },
  20. buildSheet: function(container) {
  21. var me = this;
  22. me.libID = storageUtil.getSessionCache("RationGrp","repositoryID");
  23. me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
  24. me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
  25. me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
  26. me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
  27. me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
  28. },
  29. onRangeChanged: function(sender, args) {
  30. if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
  31. var me = rationCoeOprObj, updateArr = [], removeArr = [];
  32. if (args.col == 0) {
  33. if (me.cache["_Coe_" + me.currentRationItem.ID]) {
  34. var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
  35. for (var i = args.rowCount - 1; i >= 0; i--) {
  36. if (args.row + i < cacheArr.length) {
  37. cacheArr.splice(args.row + i, 1);
  38. }
  39. }
  40. me.updateRationItem();
  41. sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
  42. me.showCoeItems(me.currentRationItem.ID);
  43. }
  44. }
  45. }
  46. },
  47. /* onClipboardPasting: function(sender, args) {
  48. var me = rationCoeOprObj;
  49. if (args.cellRange.colCount != 1 || args.cellRange.col != 0 || !(me.currentRationItem)) {
  50. args.cancel = true;
  51. }
  52. },
  53. onClipboardPasted: function(e, info) {
  54. var me = rationCoeOprObj;
  55. if (me.libID) {
  56. if (info.cellRange.col == 0) {
  57. var tmpCoeIDs = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
  58. var IDs = [];
  59. for (var i = 0; i < tmpCoeIDs.length; i++) {
  60. IDs.push(tmpCoeIDs[i]);
  61. }
  62. me.addCoeItems(IDs);
  63. } else {
  64. //修改用量
  65. }
  66. }
  67. },*/
  68. onCellEditEnd: function(sender, args){
  69. var me = rationCoeOprObj;
  70. if (args.col == 0) { // 编号列
  71. if (args.editingText == null || args.editingText.trim() == "") { //delete
  72. var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
  73. if (cacheArr) {
  74. if (args.row < cacheArr.length) {
  75. cacheArr.splice(args.row, 1);
  76. me.updateRationItem();
  77. sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
  78. me.showCoeItems(me.currentRationItem.ID);
  79. }
  80. }
  81. } else {
  82. if (me.libID) {
  83. var coeIDs = [];
  84. coeIDs.push(args.editingText.trim());
  85. me.addCoeItems(coeIDs, me.libID);
  86. }
  87. }
  88. }
  89. },
  90. addCoeItems: function(coeIDs) {
  91. var me = this;
  92. $.ajax({
  93. type:"POST",
  94. url:"api/getCoeItemsByIDs",
  95. data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": coeIDs})},
  96. dataType:"json",
  97. cache:false,
  98. timeout:5000,
  99. success:function(result){
  100. sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
  101. if (result) {
  102. var rstArr = [], newAddArr = [];
  103. for (var i = 0; i < result.data.length; i++) {
  104. rstArr.push(result.data[i]);
  105. };
  106. if (me.cache["_Coe_" + me.currentRationItem.ID]) {
  107. var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
  108. for (var i = 0; i < rstArr.length; i++) {
  109. var hasDup = false;
  110. for (var j = 0; j < cacheArr.length; j++) {
  111. if (cacheArr[j] == rstArr[i]) {
  112. hasDup = true;
  113. break;
  114. }
  115. }
  116. if (!hasDup) {
  117. newAddArr.push(rstArr[i]);
  118. }
  119. }
  120. cacheArr.sort(function(a, b) {
  121. var rst = 0;
  122. if (a > b) rst = 1
  123. else if (a < b) rst = -1;
  124. return rst;
  125. });
  126. me.cache["_Coe_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
  127. }
  128. me.showCoeItems(me.currentRationItem.ID);
  129. if (newAddArr.length > 0) {
  130. me.updateRationItem();
  131. }
  132. }
  133. sheetCommonObj.lockCells(me.workBook.getSheet(0), me.setting);
  134. },
  135. error:function(err){
  136. alert(err);
  137. }
  138. })
  139. },
  140. updateRationItem: function() {
  141. var me = this, updateArr = [];
  142. if (me.currentRationItem) {
  143. me.currentRationItem.rationCoeList = me.getCoeIDsArr();
  144. updateArr.push(me.currentRationItem);
  145. rationOprObj.mixUpdateRequest(updateArr, [], []);
  146. }
  147. },
  148. getCoeIDsArr: function(){
  149. var me = this, rst = [];
  150. if (me.currentRationItem && me.cache["_Coe_" + me.currentRationItem.ID]) {
  151. var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
  152. for (var i = 0; i < cacheArr.length; i++) {
  153. rst.push(cacheArr[i].ID);
  154. }
  155. }
  156. return rst;
  157. },
  158. getCoeItems: function(rationItem) {
  159. var me = this, rationID = rationItem.ID, rationCoeList = rationItem.rationCoeList;
  160. if (rationCoeList == undefined){return;};
  161. me.currentRationItem = rationItem;
  162. if (me.cache["_Coe_" + rationID]) {
  163. me.showCoeItems(rationID);
  164. sheetCommonObj.lockCells(me.workBook.getSheet(0), me.setting);
  165. } else {
  166. $.ajax({
  167. type:"POST",
  168. url:"api/getCoeItemsByIDs",
  169. data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": rationCoeList})},
  170. dataType:"json",
  171. cache:false,
  172. timeout:5000,
  173. success:function(result){
  174. sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
  175. if (result.data) {
  176. var cacheArr = [];
  177. for (var i = 0; i < result.data.length; i++) {
  178. for (var j = 0; j < rationCoeList.length; j++) {
  179. if (rationCoeList[j] == result.data[i].ID) {
  180. cacheArr.push(result.data[i]);
  181. break;
  182. }
  183. }
  184. };
  185. me.cache["_Coe_" + rationID] = cacheArr;
  186. me.showCoeItems(rationID);
  187. }
  188. sheetCommonObj.lockCells(me.workBook.getSheet(0), me.setting);
  189. },
  190. error:function(err){
  191. alert(err);
  192. }
  193. })
  194. }
  195. },
  196. showCoeItems: function(rationID) {
  197. var me = this;
  198. if (me.cache["_Coe_" + rationID]) {
  199. sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, me.cache["_Coe_" + rationID]);
  200. }
  201. }
  202. }