set_sheets.js 12 KB

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