repositoryGLJ.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /**
  2. * Created by Tony on 2017/5/5.
  3. */
  4. $("#drirect-dinge").click(function(){
  5. $(this).attr('href', "/rationRepository/ration" + "?repository=" + getQueryString("repository"))
  6. });
  7. var pageOprObj = {
  8. rationLibName : null,
  9. initPage : function(container) {
  10. var me = this, rationLibName = getQueryString("repository");//获取定额库参数
  11. if (rationLibName) {
  12. me.rationLibName = rationLibName;
  13. repositoryGljObj.getGljTree(rationLibName, function(repId){
  14. repositoryGljObj.buildSheet(container);
  15. repositoryGljObj.getGljItems(repId);
  16. });
  17. }
  18. }
  19. }
  20. repositoryGljObj = {
  21. treeObj : null,
  22. workBook: null,
  23. gljAllTypeId: -1,
  24. gljCurTypeId: -1,
  25. currentRepositoryId: -1,
  26. gljList: [],
  27. setting: {
  28. header:[
  29. {headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", hAlign: "left", vAlign: "center"},
  30. {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
  31. {headerName:"规格",headerWidth:120,dataCode:"specs", dataType: "String", hAlign: "left", vAlign: "center"},
  32. {headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
  33. {headerName:"基价单价",headerWidth:120,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
  34. {headerName:"类型",headerWidth:120,dataCode:"gljType", dataType: "Number", hAlign: "center", vAlign: "center"}
  35. ],
  36. view:{
  37. comboBox:[
  38. {row:-1,col:3,rowCount:-1,colCount:1}
  39. ],
  40. lockedCells:[
  41. ]
  42. }
  43. },
  44. getGljTree: function(rationLibName, callback) {
  45. var me = this;
  46. $.ajax({
  47. type:"POST",
  48. url:"api/getGljTree",
  49. data:{"rationLibName": rationLibName},
  50. dataType:"json",
  51. cache:false,
  52. timeout:20000,
  53. success:function(result,textStatus,status){
  54. if(status.status == 200) {
  55. me.createTree(result.data);
  56. //me.gljAllTypeId
  57. if (result.data && result.data.length > 0) {
  58. for (var i = 0; i < result.data.length; i++) {
  59. if (result.data[i].Name === "全部") {
  60. me.gljAllTypeId = result.data[i].ID;
  61. me.gljCurTypeId = me.gljAllTypeId;
  62. break;
  63. }
  64. }
  65. if (callback) {
  66. var repId = -1;
  67. repId = result.data[0].repositoryId;
  68. callback(repId);
  69. }
  70. }
  71. }
  72. },
  73. error:function(err){
  74. alert(err.responseJSON.error);
  75. }
  76. })
  77. },
  78. createTree : function(sourceData){
  79. var me = repositoryGljObj, treeArr = tree_Data_Helper.buildTreeNodeDirectly(sourceData);
  80. me.treeObj = $.fn.zTree.init($("#repositoryTree"), setting, treeArr);
  81. me.treeObj.expandAll(true);
  82. },
  83. getGljItems: function(repId) {
  84. var me = this;
  85. me.currentRepositoryId = repId;
  86. $.ajax({
  87. type:"POST",
  88. url:"api/getGljItems",
  89. data:{"repositoryId": repId},
  90. dataType:"json",
  91. cache:false,
  92. timeout:5000,
  93. success:function(result){
  94. if(result.success) {
  95. me.gljList = result.data;
  96. me.showGljItems(result.data, me.gljCurTypeId);
  97. }
  98. },
  99. error:function(err){
  100. alert(err.responseJSON.error);
  101. }
  102. })
  103. },
  104. showGljItems: function(data, type) {
  105. var me = repositoryGljObj;
  106. if (me.workBook) {
  107. var cacheSection = [];
  108. for (var i = 0; i < data.length; i++) {
  109. if (type == me.gljAllTypeId || type == data[i].gljType) {
  110. cacheSection.push(data[i]);
  111. }
  112. }
  113. sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
  114. sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection);
  115. }
  116. },
  117. buildSheet: function(container) {
  118. var me = this;
  119. me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
  120. me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
  121. me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
  122. },
  123. onClipboardPasting: function(sender, args) {
  124. var me = repositoryGljObj;
  125. if (args.cellRange.colCount != me.setting.header.length) {
  126. args.cancel = true;
  127. }
  128. },
  129. onClipboardPasted: function(e, info) {
  130. var me = repositoryGljObj;
  131. var updateArr = [], addArr = [];
  132. var items = sheetCommonObj.analyzePasteData(me.setting, info);
  133. var hasCacheItem = false;
  134. for (var i = 0; i < items.length; i++) {
  135. for (var j = 0; j < me.gljList.length; j++) {
  136. if (me.gljList[j][me.setting.header[0].dataCode] == items[i][me.setting.header[0].dataCode]) {
  137. hasCacheItem = true;
  138. items[i]["ID"] = me.gljList[j]["ID"];
  139. break;
  140. }
  141. }
  142. if (!hasCacheItem) {
  143. addArr.push(items[i]);
  144. } else {
  145. updateArr.push(items[i]);
  146. }
  147. }
  148. if (updateArr.length > 0 || addArr.length > 0) {
  149. $.ajax({
  150. type:"POST",
  151. url:"api/mixUpdateGljItems",
  152. data:{"repositoryId": me.currentRepositoryId, "updateItems": JSON.stringify(updateArr), "addItems": JSON.stringify(addArr)},
  153. dataType:"json",
  154. cache:false,
  155. timeout:5000,
  156. success:function(result){
  157. if (result.err) {
  158. alert(err);
  159. me.getRationItems(me.currentRepositoryId);
  160. } else {
  161. if (addArr.length > 0) {
  162. me.gljList = me.gljList.concat(addArr);
  163. }
  164. for (var i = 0; i < updateArr.length; i++) {
  165. for (var j = 0; j < me.gljList.length; j++) {
  166. if (me.gljList[j][me.setting.header[0].dataCode] == updateArr[i][me.setting.header[0].dataCode]) {
  167. me.gljList[j] = updateArr[i];
  168. }
  169. }
  170. }
  171. me.showGljItems(me.gljList, me.gljAllTypeId);
  172. }
  173. },
  174. error:function(){
  175. }
  176. })
  177. }
  178. },
  179. onClick: function(event,treeId,treeNode) {
  180. var me = repositoryGljObj,
  181. gljTypeId = treeNode.ID;
  182. repositoryGljObj.gljCurTypeId = treeNode.ID;
  183. repositoryGljObj.showGljItems(repositoryGljObj.gljList, gljTypeId);
  184. }
  185. }