ration_coe.js 8.3 KB

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