init.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. const GLJ_INIT = (() => {
  2. const params = location.href.split('/');
  3. const curUserID = params[params.length - 1];
  4. console.log('curUserID', curUserID);
  5. // 头部按钮相关
  6. function initHeaderTools(receiveList, shareList) {
  7. // 设置下拉项
  8. const selectHtml = `
  9. <select class="form-control form-control-sm" id="glj-libs">
  10. </select>`;
  11. // 设置分享按钮
  12. const shareHtml = `
  13. <span id="share-tip" class="ml-2" data-toggle="tooltip" data-placement="bottom" data-original-title="">
  14. <a id="init-share" href="javascript:;" class="btn btn-xs btn-primary ${isReadOnly ? 'disabled' : ''}"><i class="fa fa-share-alt"></i> 分享</a>
  15. </span>`;
  16. const html = `
  17. <div style="display: flex; align-items: center">
  18. ${selectHtml}
  19. ${shareHtml}
  20. </div>
  21. `
  22. $('#fullpath').html(html);
  23. initShareTip(shareList);
  24. $('[data-toggle="tooltip"]').tooltip();
  25. initLibOptions(receiveList);
  26. // 分享给
  27. SHARE_TO.handleEventListener();
  28. $('#init-share').click(() => {
  29. SHARE_TO.initModal(SHARE_TO.Mode.GLJ_LIB);
  30. $('#share-tip').tooltip('hide');
  31. });
  32. // 库下拉
  33. function initShareTip(shareList) {
  34. if (shareList.length) {
  35. const owners = shareList.map(owner => owner.real_name);
  36. const tips = `已分享给 ${owners.join(' ')}`;
  37. $('#share-tip').attr('data-original-title', tips);
  38. }
  39. }
  40. // 库下拉
  41. function initLibOptions(receiveList) {
  42. const libList = [
  43. `<option value="${userID}">我的补充人材机库</option>`
  44. ];
  45. const options = receiveList.map(owner => `<option value=${owner._id} ${curUserID === owner._id ? 'selected' : ''}>${owner.real_name}的补充人材机库</option>`);
  46. libList.push(...options);
  47. $('#glj-libs').html(libList.join(''))
  48. }
  49. $('#glj-libs').change(function () {
  50. const userID = $(this).val();
  51. window.location.href = `/complementaryGlj/${userID}`;
  52. });
  53. }
  54. $(document).ready(() => {
  55. $.bootstrapLoading.start();
  56. const projection = {
  57. _id: 0,
  58. ID: 1,
  59. code: 1,
  60. unit: 1,
  61. name: 1,
  62. priceProperty: 1,
  63. basePrice: 1
  64. };
  65. CommonAjax.post('/complementartGlj/api/initData', { projection, userID: curUserID }, res => {
  66. if (res.error) {
  67. alert('数据初始化失败,请重试。');
  68. setTimeout(() => {
  69. window.location.href = '/'
  70. }, 1200);
  71. } else {
  72. const { receiveLibs, shareLibs, gljItems, mixTree, distTypeData } = res;
  73. initHeaderTools(receiveLibs, shareLibs);
  74. pageOprObj.stdGljLibId = stdGljLibId;
  75. repositoryGljObj.currentRepositoryId = stdGljLibId;
  76. pageOprObj.userId = userId;
  77. pageOprObj.compilationId = compilationId;
  78. //生成人材机表格列头
  79. repositoryGljObj.setting.header = repositoryGljObj.initHeaders(priceProperties);
  80. //生成列映射
  81. sheetCommonObj.initColMapping(repositoryGljObj, repositoryGljObj.setting.header);
  82. //生成单价列下标数组
  83. repositoryGljObj.initPriceCols(priceProperties, repositoryGljObj.colMapping);
  84. repositoryGljObj.buildSheet($("#GLJListSheet")[0]);
  85. gljComponentOprObj.buildSheet($('#gljComponentSheet')[0]);
  86. componentOprObj.buildSheet($("#componentSheet")[0]);
  87. // distTypeTree
  88. repositoryGljObj.distTypeTree = repositoryGljObj.getComboData(distTypeData);
  89. // tree
  90. gljClassTreeObj.treeData = mixTree;
  91. if (mixTree.comple && mixTree.comple.length > 0) {
  92. gljClassTreeObj.gljCurTypeId = mixTree.comple[0].ID;
  93. }
  94. gljClassTreeObj.buildSheet();
  95. gljClassTreeObj.initTree(mixTree.comple);
  96. gljClassTreeObj.cache = gljClassTreeObj.tree.items;
  97. repositoryGljObj.updateParentNodeIds(gljClassTreeObj.cache, repositoryGljObj);
  98. gljClassTreeObj.initController(gljClassTreeObj.tree, gljClassTreeObj.sheet, gljClassTreeObj.setting.sheet);
  99. gljClassTreeObj.controller.showTreeData();
  100. gljClassTreeObj.sheet.setFormatter(-1, 0, '@');
  101. // gljItems
  102. repositoryGljObj.stdGljList = gljItems.stdGljs;
  103. // 兼容多单价情况
  104. for (const sGlj of repositoryGljObj.stdGljList) {
  105. if (sGlj.priceProperty && typeof sGlj.priceProperty.price1 !== 'undefined') {
  106. sGlj.basePrice = sGlj.priceProperty.price1;
  107. }
  108. }
  109. repositoryGljObj.sortGlj(repositoryGljObj.stdGljList);
  110. repositoryGljObj.setProp('isStd', true, repositoryGljObj.stdGljList);
  111. repositoryGljObj.complementaryGljList = gljItems.complementaryGljs;
  112. repositoryGljObj.sortGlj(repositoryGljObj.complementaryGljList);
  113. gljClassTreeObj.initSelection(gljClassTreeObj.tree.selected);
  114. }
  115. $.bootstrapLoading.end();
  116. });
  117. });
  118. })();