tender_copy_setting.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. 'use strict';
  2. /**
  3. *
  4. * @author LanJianRong
  5. * @date 2020/11/13
  6. * @version
  7. */
  8. const tenderTree = [];
  9. let parentId = 0;
  10. // 查询方法
  11. function findNode (key, value, arr) {
  12. for (const a of arr) {
  13. if (a[key] && a[key] === value) {
  14. return a;
  15. }
  16. }
  17. }
  18. // 初始化TenderTree数据
  19. function initTenderTree () {
  20. const levelCategory = category.filter(function (c) {
  21. return c.level && c.level > 0;
  22. });
  23. function findCategoryNode(cid, value, array) {
  24. for (const a of array) {
  25. if (a.cid === cid && a.vid === value) {
  26. return a;
  27. }
  28. }
  29. }
  30. function getCategoryNode(category, value, parent, i = null) {
  31. const array = parent ? parent.children : tenderTree;
  32. let cate = findCategoryNode(category.id, value, array);
  33. if (!cate) {
  34. const cateValue = findNode('id', value, category.value);
  35. if (!cateValue) return null;
  36. cate = {
  37. cid: category.id,
  38. vid: value,
  39. name: cateValue.value,
  40. children: [],
  41. level: i ? i : category.level,
  42. sort_id: ++parentId,
  43. sort: cateValue.sort,
  44. };
  45. array.push(cate);
  46. }
  47. return cate;
  48. }
  49. function loadTenderCategory (tender) {
  50. let tenderCategory = null;
  51. for (const [index,lc] of levelCategory.entries()) {
  52. const tenderCate = findNode('cid', lc.id, tender.category);
  53. if (tenderCate) {
  54. tenderCategory = getCategoryNode(lc, tenderCate.value, tenderCategory);
  55. } else {
  56. if (index === 0 && tender.category) {
  57. for (const [i,c] of tender.category.entries()) {
  58. const cate = findNode('id', c.cid, category);
  59. tenderCategory = getCategoryNode(cate, c.value, tenderCategory, i+1);
  60. }
  61. }
  62. return tenderCategory;
  63. }
  64. }
  65. return tenderCategory;
  66. }
  67. function calculateTender(tender) {
  68. if (tender.lastStage) {
  69. tender.gather_tp = ZhCalc.add(tender.lastStage.contract_tp, tender.lastStage.qc_tp);
  70. tender.end_contract_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.contract_tp);
  71. tender.end_qc_tp = ZhCalc.add(tender.lastStage.pre_qc_tp, tender.lastStage.qc_tp);
  72. tender.end_gather_tp = ZhCalc.add(tender.end_contract_tp, tender.end_qc_tp);
  73. tender.pre_gather_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.pre_qc_tp);
  74. tender.yf_tp = ZhCalc.add(tender.lastStage.yf_tp);
  75. tender.end_yf_tp = ZhCalc.add(tender.lastStage.pre_yf_tp, tender.yf_tp);
  76. }
  77. }
  78. tenderTree.splice(0, tenderTree.length);
  79. for (const t of tenders) {
  80. calculateTender(t);
  81. t.valid = true;
  82. delete t.level;
  83. if (t.category && levelCategory.length > 0) {
  84. const parent = loadTenderCategory(t);
  85. if (parent) {
  86. t.level = parent.level + 1;
  87. parent.children.push(t);
  88. } else {
  89. tenderTree.push(t);
  90. }
  91. } else {
  92. tenderTree.push(t);
  93. }
  94. }
  95. }
  96. function recursiveGetTenderNodeHtml (node, arr, pid) {
  97. const html = [];
  98. html.push('<tr pid="' + pid + '">');
  99. // 名称
  100. html.push('<td class="in-' + node.level + '">');
  101. if (node.cid) {
  102. html.push('<i class="fa fa-folder-o"></i> ', node.name);
  103. } else {
  104. html.push('<span class="text-muted mr-2">');
  105. html.push(arr.indexOf(node) === arr.length - 1 ? '└' : '├');
  106. html.push('</span>');
  107. //html.push('<a href="/tender/' + node.id + '">', node[c.field], '</a>');
  108. html.push('<a href="javascript: void(0)" id="' + node.id + '">', node.name, '</a>');
  109. }
  110. html.push('</td>');
  111. // 创建人
  112. html.push('<td>');
  113. if (!node.cid) {
  114. html.push('<input data-tid="'+ node.id +'" type="radio">');
  115. }
  116. html.push('</td>');
  117. html.push('</tr>');
  118. if (node.children) {
  119. for (const c of node.children) {
  120. html.push(recursiveGetTenderNodeHtml(c, node.children, node.sort_id));
  121. }
  122. }
  123. return html.join('');
  124. }
  125. // 根据TenderTree数据获取Html代码
  126. function getTenderTreeHtml () {
  127. if (tenderTree.length > 0) {
  128. const html = [];
  129. html.push('<table class="table table-hover table-bordered">');
  130. html.push('<thead>', '<tr>');
  131. html.push('<th>名称</th>');
  132. html.push('<th width="40">选择</th>');
  133. html.push('</tr>', '</thead>');
  134. parentId = 0;
  135. for (const t of tenderTree) {
  136. html.push(recursiveGetTenderNodeHtml(t, tenderTree, ''));
  137. }
  138. html.push('</table>');
  139. return html.join('');
  140. } else {
  141. return EmptyTenderHtml.join('');
  142. }
  143. }
  144. $(document).ready(function () {
  145. initTenderTree()
  146. $('#copyBtn').click(() => {
  147. console.log('1111')
  148. const html = getTenderTreeHtml();
  149. $('#copyModalContent').html(html)
  150. $('#bd-set-8').modal('show')
  151. })
  152. })