set_sheets.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /**
  2. * Created by vian on 2017/3/16.
  3. */
  4. var setSheet = {
  5. initSheet: function(spread, setting, isExtendPaste){
  6. var spreadNS = GC.Spread.Sheets, sheet = spread.getActiveSheet();
  7. sheet.suspendPaint();
  8. spread.options.showHorizontalScrollbar = false;
  9. //spread.options.showVerticalScrollbar =false;
  10. spread.options.tabStripVisible = false;
  11. spread.options.scrollbarMaxAlign = true;
  12. spread.options.allowCopyPasteExcelStyle = false;
  13. spread.options.allowExtendPasteRange = isExtendPaste? true : false;
  14. spread.getActiveSheet().options.allowCellOverflow = false;
  15. sheet.showRowOutline(false);
  16. // sheet.defaults.rowHeight = 30;
  17. setting.cols.forEach(function(col, colIdx){
  18. sheet.getRange(-1,colIdx,-1,1, GC.Spread.Sheets.SheetArea.viewport).hAlign(GC.Spread.Sheets.HorizontalAlign.left);
  19. sheet.getRange(-1,colIdx,-1,1, GC.Spread.Sheets.SheetArea.viewport).vAlign(GC.Spread.Sheets.VerticalAlign.center);
  20. sheet.getRange(-1,colIdx,-1,1, GC.Spread.Sheets.SheetArea.viewport).textIndent(0.5);
  21. });
  22. sheet.resumePaint();
  23. },
  24. setEditCol: function(sheet, colIdx){
  25. var style = new GC.Spread.Sheets.Style();
  26. style.locked = false;
  27. sheet.setStyle(-1, colIdx, style);
  28. sheet.options.isProtected = true;
  29. },
  30. setMaxRowCount: function(sheet, arr){
  31. let arrL = arr.length;
  32. let rowCount = arrL + 10;
  33. /*if(arrL <10){
  34. rowCount = 10;
  35. }
  36. else {
  37. rowCount = arrL + 3;
  38. }*/
  39. sheet.setRowCount(rowCount, GC.Spread.Sheets.SheetArea.viewport);
  40. },
  41. formatter: function(sheet){
  42. sheet.setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
  43. }
  44. }
  45. function setScrollBar(spread, sheet, initRow){
  46. var events = GC.Spread.Sheets.Events;
  47. sheet.bind(events.EnterCell, function(e, data){
  48. var rowCount = sheet.getRowCount();
  49. //��ǰ�������ڳ�ʼ����
  50. if(rowCount >initRow){
  51. spread.options.showVerticalScrollbar = true;
  52. }
  53. else{
  54. spread.options.showVerticalScrollbar = false;
  55. }
  56. });
  57. }
  58. var myKey = {
  59. enterKey: function(spread){
  60. var sheet = spread.getActiveSheet();
  61. spread.commandManager().register("myEnter", function(){
  62. var idxRow = sheet.getActiveRowIndex();
  63. var rowCount = sheet.getRowCount();
  64. if(idxRow+1 == rowCount){
  65. sheet.addRows(rowCount, 1);
  66. sheet.getRange(rowCount, -1, 1, -1).vAlign(GC.Spread.Sheets.VerticalAlign.center);
  67. sheet.getRange(rowCount, -1, 1, -1).hAlign(GC.Spread.Sheets.HorizontalAlign.left);
  68. sheet.getRange(rowCount, -1, 1, -1).textIndent(0.5);
  69. sheet.getRange(rowCount, -1, 1, -1).font("Arial");
  70. }
  71. });
  72. spread.commandManager().setShortcutKey("myEnter", GC.Spread.Commands.Key.enter, false, false, false, false);
  73. },
  74. downKey: function(spread){
  75. var sheet = spread.getActiveSheet();
  76. spread.commandManager().register("myDown", function(){
  77. var idxRow = sheet.getActiveRowIndex();
  78. var rowCount = sheet.getRowCount();
  79. if(idxRow+1 == rowCount){
  80. sheet.suspendPaint();
  81. sheet.addRows(rowCount, 1);
  82. sheet.getRange(rowCount, -1, 1, -1).vAlign(GC.Spread.Sheets.VerticalAlign.center);
  83. sheet.getRange(rowCount, -1, 1, -1).hAlign(GC.Spread.Sheets.HorizontalAlign.left);
  84. sheet.getRange(rowCount, -1, 1, -1).textIndent(0.5);
  85. sheet.getRange(rowCount, -1, 1, -1).font("Arial");
  86. sheet.resumePaint();
  87. }
  88. });
  89. spread.commandManager().setShortcutKey("myDown", GC.Spread.Commands.Key.down, false, false, false, false);
  90. },
  91. delKey: function(spread, controller, totalObj, setting, classify){
  92. if(classify === 'jobs' || classify === 'items'){
  93. bindRefDel(spread, controller, totalObj, setting, classify);
  94. }
  95. else if(classify === 'totalJobs'){
  96. bindTotalJobDel(spread, controller, totalObj, setting);
  97. }
  98. else if(classify === 'totalItems'){
  99. bindTotalItemDel(spread, spreadVal.getActiveSheet(), controller, totalObj, setting);
  100. }
  101. else if(classify === 'itemValue'){
  102. bindValDel(spread, totalObj, setting);
  103. }
  104. else if(!classify){
  105. rejectDel(spread);
  106. }
  107. function bindRefDel(spread, controller, totalObj, setting, classify){
  108. var sheet = spread.getActiveSheet();
  109. spread.commandManager().register('myDelete', function(){
  110. spread.suspendEvent();
  111. var ids = tools.delIds(sheet);
  112. let classifyStr = classify === 'jobs' ? 'job' : 'item';
  113. tools.deleteELes(controller.tree.selected[classify], ids, classifyStr);
  114. //deleteFrontData
  115. //tools.reshowData(sheet, controller.tree.selected[classify], setting, true);
  116. //deleteDB
  117. billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), ids, null, 'delete', classify, function(){
  118. tools.orderReshowData(sheet, controller.tree.selected[classify], setting, classifyStr, true);
  119. });
  120. /*if(result.length > 0){
  121. if(classify === 'jobs'){
  122. /!*result.forEach(function(id){
  123. controller.tree.selected.jobs.forEach(function(obj){
  124. if(id === obj.job.data.id){
  125. controller.tree.selected.jobs.splice(obj);
  126. }
  127. });
  128. /!*if(totalObj.findJob(id)){
  129. totalObj.jobsArr.splice(totalObj.jobsArr.indexOf(totalObj.findJob(id)), 1);
  130. delete totalObj.jobs[totalObj.prefix + id];
  131. }*!/
  132. });*!/
  133. //jobsAjax.deleteJobContent(billsLibId, result);
  134. tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
  135. }
  136. else {
  137. result.forEach(function(id){
  138. if(totalObj.findItem(id)){
  139. totalObj.itemsArr.splice(totalObj.itemsArr.indexOf(totalObj.findItem(id)), 1);
  140. delete totalObj.items[totalObj.prefix + id];
  141. }
  142. });
  143. itemsAjax.deleteItemCharacter(result);
  144. }
  145. }*/
  146. spread.resumeEvent();
  147. });
  148. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
  149. spread.commandManager().setShortcutKey('myDelete', GC.Spread.Commands.Key.del, false, false, false, false);
  150. }
  151. function rejectDel(spread){
  152. var sheet = spread.getActiveSheet();
  153. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
  154. }
  155. function bindTotalJobDel(spread, billsIds, totalJobs, setting){
  156. var sheet = spread.getActiveSheet();
  157. spread.commandManager().register('myJobDelete', function(){
  158. spread.suspendEvent();
  159. var ids = tools.delIds(sheet);
  160. if(ids.length > 0){
  161. ids.forEach(function(id){
  162. var job = totalJobs.findJob(id);
  163. totalJobs.jobsArr.splice(totalJobs.jobsArr.indexOf(job), 1);
  164. });
  165. function myCompareCode(a, b){
  166. let valA = a.data.code,
  167. valB = b.data.code;
  168. return valB- valA;
  169. }
  170. totalJobs.jobsArr.sort(myCompareCode);
  171. maxJobsNumber = totalJobs.jobsArr.length > 0 ? totalJobs.jobsArr[0].data.code : 0;
  172. tools.reshowData(sheet, totalJobs.jobsArr, setting, true);
  173. billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'jobs');
  174. }
  175. spread.resumeEvent();
  176. });
  177. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
  178. spread.commandManager().setShortcutKey('myJobDelete', GC.Spread.Commands.Key.del, false, false, false, false)
  179. }
  180. function bindTotalItemDel(spread, valSheet, billsIds, totalItems, setting){
  181. var sheet = spread.getActiveSheet();
  182. spread.commandManager().register('myItemDelete', function(){
  183. spread.suspendEvent();
  184. var ids = tools.delIds(sheet);
  185. if(ids.length > 0){
  186. ids.forEach(function(id){
  187. var item = totalItems.findItem(id);
  188. totalItems.itemsArr.splice(totalItems.itemsArr.indexOf(item), 1);
  189. });
  190. function myCompareCode(a, b){
  191. let valA = a.data.code,
  192. valB = b.data.code;
  193. return valB- valA;
  194. }
  195. totalItems.itemsArr.sort(myCompareCode);
  196. maxItemsNumber = totalItems.itemsArr.length > 0 ? totalItems.itemsArr[0].code : 0;
  197. tools.reshowData(sheet, totalItems.itemsArr, setting, true);
  198. billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'items');
  199. //reshowVal
  200. if(totalItems.itemsArr.length > 0){
  201. selectedId = totalItems.itemsArr[0].data.id;
  202. tools.reshowValue(valSheet, totalItems.itemsArr[0].data.itemValue, eigenValueSetting, true);
  203. }
  204. else {
  205. tools.clearData(valSheet);
  206. }
  207. }
  208. spread.resumeEvent();
  209. });
  210. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
  211. spread.commandManager().setShortcutKey('myItemDelete', GC.Spread.Commands.Key.del, false, false, false, false)
  212. }
  213. function bindValDel(spread, totalItems, setting){
  214. var sheet = spread.getActiveSheet();
  215. spread.commandManager().register('valDelete', function(){
  216. spread.suspendEvent();
  217. var ids = tools.delIds(sheet);
  218. //deleteFront
  219. var valsArr = valueController.getValues(totalItems, selectedId);
  220. ids.forEach(function(id){
  221. valsArr.forEach(function(val){
  222. if(val.code === id){
  223. valsArr.splice(valsArr.indexOf(val), 1);
  224. }
  225. });
  226. });
  227. tools.reshowValue(sheet, valsArr, setting, true);
  228. //deleteDb
  229. itemsAjax.updateValue(userAccount, billsLibId, selectedId, null, ids, 'delete');
  230. spread.resumeEvent();
  231. });
  232. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
  233. spread.commandManager().setShortcutKey('valDelete', GC.Spread.Commands.Key.del, false, false, false, false);
  234. }
  235. function reSerialNo(){
  236. }
  237. }
  238. }