pm_share.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2018/6/28
  7. * @version
  8. */
  9. const pmShare = (function () {
  10. const spreadDom = $('#shareSpread');
  11. let spread = null;
  12. const headers = [
  13. {name: '工程列表', dataCode: 'name', width: 0.55, vAlign: 'center', hAlign: 'left'},
  14. {name: '由...分享', dataCode: 'from', width: 0.15, vAlign: 'center', hAlign: 'right'},
  15. {name: '分享给...', dataCode: 'to', width: 0.15, vAlign: 'center', hAlign: 'left'},
  16. {name: '操作', dataCode: 'operation', width: 0.15, vAlign: 'center', hAlign: 'left'},
  17. ];
  18. const spreadOpts = {
  19. workBook: {
  20. tabStripVisible: false,
  21. allowContextMenu: false,
  22. allowCopyPasteExcelStyle : false,
  23. allowExtendPasteRange: false,
  24. allowUserDragDrop : false,
  25. allowUserDragFill: false,
  26. scrollbarMaxAlign : true
  27. },
  28. sheet: {
  29. isProtected: true,
  30. protectionOptions: {allowResizeRows: true, allowResizeColumns: true},
  31. clipBoardOptions: GC.Spread.Sheets.ClipboardPasteOptions.values
  32. }
  33. };
  34. //渲染时方法,停止渲染
  35. //@param {Object}sheet {Function}func @return {void}
  36. function renderSheetFunc(sheet, func){
  37. sheet.suspendEvent();
  38. sheet.suspendPaint();
  39. if(func){
  40. func();
  41. }
  42. sheet.resumeEvent();
  43. sheet.resumePaint();
  44. }
  45. //设置表选项
  46. //@param {Object}workBook {Object}opts @return {void}
  47. function setSpreadOptions (workBook, opts) {
  48. for(let opt in opts.workBook){
  49. workBook.options[opt] = opts.workBook[opt];
  50. }
  51. for(let opt in opts.sheet){
  52. workBook.getActiveSheet().options[opt] = opts.sheet[opt];
  53. }
  54. }
  55. //建表头
  56. //@param {Object}sheet {Array}headers @return {void}
  57. function buildHeader(sheet, headers) {
  58. let fuc = function () {
  59. sheet.setColumnCount(headers.length);
  60. sheet.setRowHeight(0, 40, GC.Spread.Sheets.SheetArea.colHeader);
  61. for(let i = 0, len = headers.length; i < len; i++){
  62. sheet.setValue(0, i, headers[i].name, GC.Spread.Sheets.SheetArea.colHeader);
  63. sheet.setColumnWidth(i, headers[i].width, GC.Spread.Sheets.SheetArea.colHeader);
  64. if(headers[i].formatter){
  65. sheet.setFormatter(-1, i, headers[i].formatter);
  66. }
  67. sheet.getRange(-1, i, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign[headers[i]['hAlign']]);
  68. sheet.getRange(-1, i, -1, 1).vAlign(GC.Spread.Sheets.VerticalAlign[headers[i]['vAlign']]);
  69. }
  70. };
  71. renderSheetFunc(sheet, fuc);
  72. }
  73. //表监听事件
  74. //@param {Object}workBook @return {void}
  75. function bindEvent(workBook, events) {
  76. if(Object.keys(events).length === 0){
  77. return;
  78. }
  79. const Events = GC.Spread.Sheets.Events;
  80. for(let event in events){
  81. workBook.bind(Events[event], events[event]);
  82. }
  83. }
  84. //建表
  85. //
  86. function buildSheet(){
  87. if(spread){
  88. spread.destroy();
  89. return;
  90. }
  91. spread = new GC.Spread.Sheets.Workbook(spreadDom[0], {sheetCount: 1});
  92. setSpreadOptions(spread, spreadOpts);
  93. const sheet = spread.getActiveSheet();
  94. buildHeader(sheet, headers);
  95. //全表不可编辑
  96. sheet.getRange(-1, -1, -1, -1).locked(true);
  97. }
  98. return {buildSheet}
  99. })();
  100. $(document).ready(function () {
  101. });