template.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /**
  2. * Created by Mai on 2017/8/22.
  3. */
  4. let TEMPLATE_BILLS_SETTING = {
  5. "emptyRows":1,
  6. "headRows":1,
  7. "headRowHeight":[35],
  8. "treeCol": 0,
  9. "cols":[{
  10. "width":200,
  11. "readOnly":null,
  12. "head":{
  13. "titleNames":["编号"],
  14. "spanCols":[1],
  15. "spanRows":[1],
  16. "vAlign":[1],
  17. "hAlign":[1],
  18. "font":["Arial"]
  19. },
  20. "data":{
  21. "field":"code",
  22. "vAlign":0,
  23. "hAlign":3,
  24. "font":"Arail"
  25. }
  26. }, {
  27. "width":300,
  28. "readOnly":null,
  29. "head":{
  30. "titleNames":["名称"],
  31. "spanCols":[1],
  32. "spanRows":[1],
  33. "vAlign":[1],
  34. "hAlign":[1],
  35. "font":["Arial"]
  36. },
  37. "data":{
  38. "field":"name",
  39. "vAlign":0,
  40. "hAlign":3,
  41. "font":"Arail"
  42. }
  43. }, {
  44. "width":50,
  45. "readOnly":null,
  46. "head":{
  47. "titleNames":["单位"],
  48. "spanCols":[1],
  49. "spanRows":[1],
  50. "vAlign":[1],
  51. "hAlign":[1],
  52. "font":["Arial"]
  53. },
  54. "data":{
  55. "field":"unit",
  56. "vAlign":0,
  57. "hAlign":1,
  58. "font":"Arail"
  59. }
  60. }, {
  61. "width":50,
  62. "readOnly":true,
  63. "head":{
  64. "titleNames":["ID"],
  65. "spanCols":[1],
  66. "spanRows":[1],
  67. "vAlign":[1],
  68. "hAlign":[1],
  69. "font":["Arial"]
  70. },
  71. "data":{
  72. "field":"ID",
  73. "vAlign":0,
  74. "hAlign":1,
  75. "font":"Arail"
  76. }
  77. }, {
  78. "width":50,
  79. "readOnly":true,
  80. "head":{
  81. "titleNames":["ParentID"],
  82. "spanCols":[1],
  83. "spanRows":[1],
  84. "vAlign":[1],
  85. "hAlign":[1],
  86. "font":["Arial"]
  87. },
  88. "data":{
  89. "field":"ParentID",
  90. "vAlign":0,
  91. "hAlign":1,
  92. "font":"Arail"
  93. }
  94. }, {
  95. "width":50,
  96. "readOnly":true,
  97. "head":{
  98. "titleNames":["NextSiblingID"],
  99. "spanCols":[1],
  100. "spanRows":[1],
  101. "vAlign":[1],
  102. "hAlign":[1],
  103. "font":["Arial"]
  104. },
  105. "data":{
  106. "field":"NextSiblingID",
  107. "vAlign":0,
  108. "hAlign":1,
  109. "font":"Arail"
  110. }
  111. }]
  112. };
  113. $(document).ready(function () {
  114. let RefreshBaseActn = function (tree) {
  115. let showButton = function (show, btn) {
  116. if (show) {
  117. btn.show();
  118. } else {
  119. btn.hide();
  120. }
  121. };
  122. showButton(tree.selected && tree.selected.canUpLevel(), $('#upLevel'));
  123. showButton(tree.selected && tree.selected.canDownLevel(), $('#downLevel'));
  124. showButton(tree.selected && tree.selected.canUpMove(), $('#upMove'));
  125. showButton(tree.selected && tree.selected.canDownMove(), $('#downMove'));
  126. showButton(tree.selected ? true : false, $('#delete'));
  127. }
  128. let RefreshBillsData = function (datas) {
  129. datas.forEach(function (data) {
  130. let node = tree.findNode(data.data.ID);
  131. if (node) {
  132. $.extend(true, node.data, data.data);
  133. }
  134. });
  135. };
  136. let tree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
  137. let billsSpread = TREE_SHEET_HELPER.createNewSpread($('#billsSpread')[0]);
  138. let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
  139. controller.bind('refreshBaseActn', RefreshBaseActn);
  140. billsSpread.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, info) {
  141. var node = controller.tree.items[info.row];
  142. var fieldName = controller.setting.cols[info.col].data.field;
  143. var data = {type: 'update', data: {ID: node.getID()}};
  144. data.data[fieldName] = info.editingText;
  145. var updateData = [data];
  146. CommonAjax.post(updateUrl, updateData, function (data) {
  147. node.data[fieldName] = info.editingText;
  148. controller.refreshTreeNode([node], false);
  149. }, function () {
  150. controller.refreshTreeNode([node], false);
  151. });
  152. });
  153. billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (e, info) {
  154. console.log("ClipboardPasted");
  155. var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName, updateData;
  156. for (iRow = 0; iRow < info.cellRange.rowCount; iRow ++) {
  157. curRow = info.cellRange.row + iRow;
  158. node = controller.tree.items[curRow];
  159. if (node) {
  160. data = {type: 'update', data: {ID: node.getID()}};
  161. for (iCol = 0; iCol < info.cellRange.colCount; iCol++) {
  162. curCol = info.cellRange.col + iCol;
  163. fieldName = controller.setting.cols[curCol].data.field;
  164. data.data[fieldName] = info.sheet.getText(curRow, curCol);
  165. }
  166. datas.push(data);
  167. }
  168. };
  169. CommonAjax.post(updateUrl, datas, function (data) {
  170. RefreshBillsData(data);
  171. controller.showTreeData();
  172. }, function () {
  173. controller.showTreeData();
  174. });
  175. });
  176. tree.loadDatas(JSON.parse(billsTemplateData));
  177. controller.showTreeData();
  178. RefreshBaseActn(tree);
  179. $('#insert').click(function () {
  180. var selected = controller.tree.selected, updateData;
  181. if (selected) {
  182. updateData = controller.tree.getInsertData(selected.getParentID(), selected.getNextSiblingID());
  183. } else {
  184. updateData = controller.tree.getInsertData();
  185. }
  186. if (updateData.length > 0) {
  187. CommonAjax.post(updateUrl, updateData, function (data) {
  188. controller.insert();
  189. controller.showTreeData();
  190. });
  191. } else {
  192. alert('新增节点失败, 请重试.');
  193. }
  194. });
  195. $('#delete').click(function () {
  196. var selected = controller.tree.selected, updateData;
  197. if (selected) {
  198. updateData = controller.tree.getDeleteData(selected);
  199. CommonAjax.post(updateUrl, updateData, function (data) {
  200. controller.delete();
  201. controller.showTreeData();
  202. });
  203. }
  204. });
  205. $('#upLevel').click(function () {
  206. var selected = controller.tree.selected, updateData;
  207. if (selected) {
  208. updateData = selected.getUpLevelData();
  209. CommonAjax.post(updateUrl, updateData, function (data) {
  210. controller.upLevel();
  211. controller.showTreeData();
  212. });
  213. }
  214. });
  215. $('#downLevel').click(function () {
  216. var selected = controller.tree.selected, updateData;
  217. if (selected) {
  218. updateData = selected.getDownLevelData();
  219. CommonAjax.post(updateUrl, updateData, function (data) {
  220. controller.downLevel();
  221. controller.showTreeData();
  222. });
  223. }
  224. });
  225. $('#upMove').click(function () {
  226. var selected = controller.tree.selected, updateData;
  227. if (selected) {
  228. updateData = selected.getUpMoveData();
  229. CommonAjax.post(updateUrl, updateData, function (data) {
  230. controller.upMove();
  231. controller.showTreeData();
  232. });
  233. }
  234. });
  235. $('#downMove').click(function () {
  236. var selected = controller.tree.selected, updateData;
  237. if (selected) {
  238. updateData = selected.getDownMoveData();
  239. CommonAjax.post(updateUrl, updateData, function (data) {
  240. controller.downMove();
  241. controller.showTreeData();
  242. });
  243. }
  244. });
  245. });