index_archive.ejs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. <% if (stg_id === -1) {%>
  2. <% include ../tender/tender_sub_menu.ejs %>
  3. <% } else { %>
  4. <% include ../stage/stage_sub_menu.ejs %>
  5. <% } %>
  6. <div class="panel-content">
  7. <div class="panel-title">
  8. <div class="title-main d-flex">
  9. <% if(stg_id === -1) { %>
  10. <% include ../tender/tender_sub_mini_menu.ejs %>
  11. <% } else { %>
  12. <% include ../stage/stage_sub_mini_menu.ejs %>
  13. <% } %>
  14. <div>
  15. <div class="d-inline-block">
  16. <div class="dropdown">
  17. <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="bizDropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  18. 计量期
  19. </button>
  20. <div class="dropdown-menu" aria-labelledby="bizDropdownMenuButton" id="select-item">
  21. <a class="dropdown-item" href="javascript:void(0);" data-type="stage" style="display: none">计量期</a>
  22. <a class="dropdown-item" href="javascript:void(0);" data-type="change">变更令</a>
  23. <a class="dropdown-item" href="javascript:void(0);" data-type="change_project">变更立项</a>
  24. <a class="dropdown-item" href="javascript:void(0);" data-type="change_apply">变更申请</a>
  25. <a class="dropdown-item" href="javascript:void(0);" data-type="change_plan">变更方案</a>
  26. </div>
  27. </div>
  28. </div>
  29. <div class="d-inline-block">
  30. <div class="dropdown" id="divSelectableStages">
  31. <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="btnCurrentStage" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
  32. <div class="dropdown-menu" aria-labelledby="dropdownMenuButton" id="optionSelectableStages"></div>
  33. </div>
  34. </div>
  35. <div class="d-inline-block">
  36. <div class="dropdown" id="divSelectableChanges" style="display: none">
  37. <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="btnCurrentChange" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
  38. <div class="dropdown-menu" aria-labelledby="dropdownMenuButton" id="optionSelectableChanges"></div>
  39. </div>
  40. </div>
  41. <% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id) { %>
  42. <div class="d-inline-block">
  43. <button id="file-msg" class="btn btn-sm btn-primary" type="button" onclick="sendReportFileMsg();" <% if (!needFileMsg.stage.valid) { %>style="display: none;"<% } %>>同步档案系统</button>
  44. </div>
  45. <% } %>
  46. </div>
  47. <div>
  48. </div>
  49. </div>
  50. </div>
  51. <div class="content-wrap">
  52. <div class="c-header p-0"></div>
  53. <div class="c-body">
  54. <div class="row">
  55. <div class="col-auto pr-0" id="tree-view" style="width: 17%">
  56. <div class="sjs-height-1" style="overflow: auto">
  57. <div class="text-center"></div>
  58. <ul id="rptTplTree" class="ztree"></ul>
  59. </div>
  60. </div>
  61. <div class="col-auto" id="main-view" style="width: 83%">
  62. <div class="resize-x" id="right-spr" r-Type="width" div1="#tree-view" div2="#main-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
  63. <div class="toolsbar-f d-flex justify-content-between position-absolute bg-light m-1">
  64. <div class="print-toolsbar p-0">
  65. <div class="panel">
  66. <div class="panel-body" id="print_div">
  67. <div class="btn-group" role="group">
  68. <button class="btn btn-outline-primary btn-sm" type="button" id="print_file">
  69. <i class="fa fa-print"></i><br>
  70. 打印 <span class="badge badge-primary">0</span>
  71. </button>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="panel">
  76. <div class="panel-body" id="export_div">
  77. <div class="btn-group" role="group">
  78. <button class="btn btn-outline-primary btn-sm" type="button" id="download_file">
  79. <i class="fa fa-download"></i><br>
  80. 下载 <span class="badge badge-primary">0</span>
  81. </button>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="panel">
  86. <div class="panel-body">
  87. <div class="btn-group" role="group">
  88. <div>
  89. <button id="currentDrpArchiveSelect" type="button" class="btn btn-outline-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
  90. <div class="dropdown-menu" aria-labelledby="btnGroupDrop1" style="min-width:112px" id="drpArchiveSelect">
  91. <!--
  92. <a class="dropdown-item" href="#">#1 2021-02-01</a>
  93. <a class="dropdown-item" href="#">#2 2021-02-27</a>
  94. <a class="dropdown-item" href="javascript: void(0);" onclick="zTreeOprObj.changeOrientation(this)">横向</a>
  95. -->
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="panel-foot text-muted">
  101. 历史归档
  102. </div>
  103. </div>
  104. <% if(ctx.session.sessionUser.is_admin) { %>
  105. <div class="panel">
  106. <div class="panel-body" id="delete_div">
  107. <div class="btn-group mr-1" role="group">
  108. <button class="btn btn-outline-danger btn-sm" type="button" data-toggle="modal" data-target="#del-archive" id="delete_archive_btn">
  109. <i class="fa fa-remove"></i><br>
  110. 删除归档
  111. </button>
  112. </div>
  113. </div>
  114. </div>
  115. <% } %>
  116. </div>
  117. </div>
  118. <div class="print-view form-view">
  119. <div class="pageContainer sjs-height-1" id="iframe_made">
  120. <iframe src="/archive/pdf/show" class="border-0" height="100%" width="100%"></iframe>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. <script src="/public/js/sub_menu.js"></script>
  129. <script src="/public/js/div_resizer.js"></script>
  130. <script>
  131. $.subMenu({
  132. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  133. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  134. key: 'menu.1.0.0',
  135. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  136. callback: function (info) {
  137. if (info.mini) {
  138. $('.panel-title').addClass('fluid');
  139. $('#sub-menu').removeClass('panel-sidebar');
  140. } else {
  141. $('.panel-title').removeClass('fluid');
  142. $('#sub-menu').addClass('panel-sidebar');
  143. }
  144. autoFlashHeight();
  145. }
  146. });
  147. $.divResizer({
  148. select: '#right-spr',
  149. callback: function () {
  150. autoFlashHeight();
  151. }
  152. });
  153. </script>
  154. <script type="text/javascript"> autoFlashHeight();</script>
  155. <script src="/public/js/shares/cs_tools.js"></script>
  156. <!-- zTree -->
  157. <script type="text/javascript" src="/public/js/ztree/jquery.ztree.core.js"></script>
  158. <script type="text/javascript" src="/public/js/ztree/jquery.ztree.excheck.js"></script>
  159. <script type="text/javascript" src="/public/js/string_util_light.js"></script>
  160. <!--
  161. -->
  162. <script type="text/javascript" src="/public/js/rpt_tpl_def.js"></script>
  163. <script type="text/javascript" src="/public/js/common_ajax.js"></script>
  164. <script type="text/javascript" src="/public/js/treeDataHelper.js"></script>
  165. <script type="text/javascript" src="/public/js/ztree_common.js"></script>
  166. <script type="text/javascript" src="/public/js/storageUtil.js"></script>
  167. <script type="text/javascript" src="/public/report/js/rpt_archive.js"></script>
  168. <script type="text/javascript" src="/public/report/js/rpt_main.js"></script>
  169. <script type="text/javascript" src="/public/report/js/rpt_cfg_const.js"></script>
  170. <script type="text/javascript" src="/public/js/datepicker/datepicker.min.js"></script>
  171. <script type="text/javascript" src="/public/js/datepicker/datepicker.zh.js"></script>
  172. <!--
  173. <script type="text/javascript" src="/public/report/js/rpt_custom.js"></script>
  174. -->
  175. <script type="text/javascript">
  176. const needFileMsg = JSON.parse('<%- JSON.stringify(needFileMsg) %>');
  177. let current_stage_order = -1;
  178. let current_stage_id = -1;
  179. let current_stage_status = -1;
  180. let ARCHIVE_LIST = JSON.parse('<%- JSON.stringify(archiveList) %>');
  181. let ARCHIVE_ENCRYPTION_LIST = JSON.parse('<%- JSON.stringify(archiveEncryptionList) %>');
  182. let TOP_TREE_NODES = <%- rpt_tpl_data %>;
  183. const CUST_TREE_NODES = <%- cust_tpl_data %>;
  184. if (!(CUST_TREE_NODES.customize instanceof Array)) {
  185. CUST_TREE_NODES.customize = [];
  186. }
  187. const ORG_CUST_TREE_NODES = JSON.parse(JSON.stringify(CUST_TREE_NODES));
  188. //
  189. const PROJECT_ID = <%- project_id %>;
  190. const TENDER_ID = <%- tender_id %>;
  191. const STAGE_ID = <%- stg_id %>;
  192. const STAGE_ORDER = <%- stg_order %>;
  193. const STAGE_LIST = <%- stage_list %>;
  194. const can_netcasign = <%- can_netcasign %>;
  195. const oss_path = JSON.parse('<%- JSON.stringify(ossPath) %>');
  196. let business_type = 'stage';
  197. let CHANGE_LIST = [], current_change_id = -1, current_change_code = '';
  198. const FOLDER_SEPERATER = '->';
  199. if (STAGE_ORDER > 0) {
  200. current_stage_order = STAGE_ORDER;
  201. current_stage_id = STAGE_ID;
  202. // current_stage_status = STAGE_STATUS;
  203. } else if (STAGE_LIST.length > 0) {
  204. for (let i = STAGE_LIST.length; i > 0; i--) {
  205. if (parseInt(STAGE_LIST[i - 1].status) === 3) {
  206. current_stage_order = STAGE_LIST[i - 1].order;
  207. current_stage_id = STAGE_LIST[i - 1].id;
  208. break;
  209. }
  210. }
  211. // current_stage_order = STAGE_LIST[STAGE_LIST.length - 1].order;
  212. // current_stage_id = STAGE_LIST[STAGE_LIST.length - 1].id;
  213. // current_stage_status = STAGE_LIST[STAGE_LIST.length - 1].status;
  214. }
  215. buildStageSelection();
  216. for (let item of TOP_TREE_NODES) {
  217. if (item.name === '通用报表') {
  218. item.name = '推荐报表';
  219. }
  220. }
  221. const ORG_TOP_TREE_NODES = JSON.parse(JSON.stringify(TOP_TREE_NODES));
  222. for (let item of TOP_TREE_NODES) {
  223. item.items = JSON.parse(item.items);
  224. if (item.items && item.items.length > 0) {
  225. for (let dtlItem of item.items) {
  226. chkAndSetNode(dtlItem);
  227. }
  228. }
  229. }
  230. for (let item of ORG_TOP_TREE_NODES) {
  231. item.items = JSON.parse(item.items);
  232. if (item.items && item.items.length > 0) {
  233. for (let dtlItem of item.items) {
  234. chkAndSetNode(dtlItem);
  235. }
  236. }
  237. }
  238. buildTplTree();
  239. function chkAndSetNode(parentItem) {
  240. if (parentItem.nodeType === 1) {
  241. parentItem.isParent = true;
  242. }
  243. if (parentItem.items) {
  244. for (let dtlItem of parentItem.items) {
  245. chkAndSetNode(dtlItem);
  246. }
  247. }
  248. }
  249. function buildTplTree() {
  250. if (TOP_TREE_NODES.length > 0) {
  251. //1. 整理模板树 (原始状态的TOP_TREE_NODES包含了推荐报表与定制表,需要分割)
  252. const individualNode = {id: 99999, name: '定制报表', pid: -1, rpt_type: 0, items: [], isParent: true};
  253. for (let tnIdx = TOP_TREE_NODES.length - 1; tnIdx >= 0; tnIdx--) {
  254. if (TOP_TREE_NODES[tnIdx].pid !== -1) {
  255. TOP_TREE_NODES[tnIdx].isParent = true;
  256. TOP_TREE_NODES[tnIdx].nodeType = 1;
  257. individualNode.items.unshift(TOP_TREE_NODES[tnIdx]);
  258. TOP_TREE_NODES.splice(tnIdx, 1);
  259. }
  260. }
  261. // 1.1 移除未被选择的模板
  262. // filterUnchkTplTreeNode(TOP_TREE_NODES[0], CUST_TREE_NODES.common);
  263. TOP_TREE_NODES.unshift(individualNode); //定制在前
  264. // filterUnchkTplTreeNode(TOP_TREE_NODES[0], CUST_TREE_NODES.customize);
  265. //2. 原始的模板树(恢复用)
  266. const individualNodeOrg = {id: 99999, name: '定制报表', pid: -1, rpt_type: 0, items: [], isParent: true};
  267. for (let tnIdx = ORG_TOP_TREE_NODES.length - 1; tnIdx >= 0; tnIdx--) {
  268. if (ORG_TOP_TREE_NODES[tnIdx].pid !== -1) {
  269. ORG_TOP_TREE_NODES[tnIdx].isParent = true;
  270. ORG_TOP_TREE_NODES[tnIdx].nodeType = 1;
  271. individualNodeOrg.items.unshift(ORG_TOP_TREE_NODES[tnIdx]);
  272. ORG_TOP_TREE_NODES.splice(tnIdx, 1);
  273. }
  274. }
  275. //ORG_TOP_TREE_NODES.push(individualNode);
  276. ORG_TOP_TREE_NODES.unshift(individualNodeOrg);
  277. }
  278. }
  279. function buildStageSelection() {
  280. if (STAGE_LIST.length === 0) {
  281. $("#optionSelectableStages")[0].style.display = 'none';
  282. } else {
  283. $("#optionSelectableStages")[0].style.display = '';
  284. $("#btnCurrentStage")[0].innerText = '第' + current_stage_order + '期';
  285. $("#optionSelectableStages").empty();
  286. if (STAGE_LIST.length > 0 && STAGE_ID < 0) {
  287. for (let i = STAGE_LIST.length; i > 0; i--) {
  288. if (parseInt(STAGE_LIST[i - 1].status) === 3 && parseInt(STAGE_LIST[i - 1].order) !== current_stage_order) {
  289. const str = '<a class="dropdown-item" style="cursor:pointer" onclick="changeCurrentStage(this)" stg_id = "' + STAGE_LIST[i - 1].id + '" stg_order="' + STAGE_LIST[i - 1].order + '">第' + STAGE_LIST[i - 1].order + '期</a>';
  290. $("#optionSelectableStages").append(str);
  291. }
  292. }
  293. }
  294. }
  295. if (STAGE_ID > 0) {
  296. $("#divSelectableStages")[0].style.display = 'none';
  297. }
  298. }
  299. function buildChangeSelection() {
  300. if (CHANGE_LIST.length === 0) {
  301. $("#optionSelectableChanges")[0].style.display = 'none';
  302. $("#btnCurrentChange")[0].innerText = '';
  303. } else {
  304. $("#optionSelectableChanges")[0].style.display = '';
  305. $("#btnCurrentChange")[0].innerText = current_change_code;
  306. $("#optionSelectableChanges").empty();
  307. if (CHANGE_LIST.length > 0) {
  308. for (let i = 0; i < CHANGE_LIST.length; i++) {
  309. if (parseInt(CHANGE_LIST[i].status) === 3 && CHANGE_LIST[i].code !== current_change_code) {
  310. const str = '<a class="dropdown-item" style="cursor:pointer" onclick="changeCurrentChange(this)" change_id = "' + CHANGE_LIST[i].id + '" change_code = "' + CHANGE_LIST[i].code + '">' + CHANGE_LIST[i].code + '</a>';
  311. $("#optionSelectableChanges").append(str);
  312. }
  313. }
  314. }
  315. }
  316. // if (CHANGE_ID > 0) {
  317. // $("#divSelectableChanges")[0].style.display = 'none';
  318. // }
  319. }
  320. function changeCurrentStage(ele) {
  321. // alert('you are selecting: ' + ele.innerText);
  322. current_stage_order = parseInt(ele.attributes.stg_order.value);
  323. current_stage_id = parseInt(ele.attributes.stg_id.value);
  324. for (let i = STAGE_LIST.length; i > 0; i--) {
  325. if (parseInt(STAGE_LIST[i - 1].order) === current_stage_order) {
  326. current_stage_status = STAGE_LIST[i - 1].status;
  327. break;
  328. }
  329. }
  330. buildStageSelection();
  331. //还有必要触发归档报表刷新!
  332. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  333. const params = {prjId: PROJECT_ID, stgId: current_stage_id};
  334. $.bootstrapLoading.start();
  335. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive", params, 10000, true, getCookie('csrfToken_j'),
  336. function(result){
  337. $.bootstrapLoading.end();
  338. // console.log(result);
  339. ARCHIVE_LIST = result.data;
  340. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  341. TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  342. rptArchiveObj.iniPage();
  343. }, function(err){
  344. $.bootstrapLoading.end();
  345. }, function(ex){
  346. $.bootstrapLoading.end();
  347. }
  348. );
  349. }
  350. function changeCurrentChange(ele) {
  351. // alert('you are selecting: ' + ele.innerText);
  352. current_change_id = ele.attributes.change_id.value;
  353. current_change_code = ele.attributes.change_code.value;
  354. buildChangeSelection();
  355. //还有必要触发归档报表刷新!
  356. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  357. const params = {tenderId: TENDER_ID, business_type, bzId: current_change_id};
  358. $.bootstrapLoading.start();
  359. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive4bz", params, 10000, true, getCookie('csrfToken_j'),
  360. function(result){
  361. $.bootstrapLoading.end();
  362. ARCHIVE_LIST = result.data;
  363. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  364. TOP_TREE_NODES = JSON.parse(JSON.stringify(result.rpt_tpl_data));
  365. buildTplTree();
  366. rptArchiveObj.iniPage();
  367. }, function(err){
  368. $.bootstrapLoading.end();
  369. }, function(ex){
  370. $.bootstrapLoading.end();
  371. }
  372. );
  373. }
  374. function sendReportFileMsg() {
  375. if (!needFileMsg[business_type] || !needFileMsg[business_type].valid) return;
  376. if (business_type === 'stage') {
  377. postData('sendReportFileMsg', { sid: current_stage_id, sorder: current_stage_order }, function (result, msg) {
  378. toastr.success(msg);
  379. });
  380. } else {
  381. if (CHANGE_LIST.length === 0) {
  382. toastr.warning('暂无任何归档数据');
  383. return;
  384. }
  385. loadChangeSelect(CHANGE_LIST);
  386. $('#change-select').modal('show');
  387. }
  388. }
  389. function loadChangeSelect(changes) {
  390. const html = [];
  391. for (const c of changes) {
  392. html.push('<tr>');
  393. html.push(`<td><input cid="${c.cid || c.id}" type="checkbox" ${(c.selected ? "checked" : '')}></td>`);
  394. html.push(`<td>${c.code}</td>`);
  395. html.push(`<td>${c.name}</td>`);
  396. html.push(`<td>${moment(c.in_time).format('YYYY-MM-DD')}</td>`);
  397. html.push('</tr>');
  398. }
  399. $('#change-select-list').html(html.join(''));
  400. }
  401. $('body').on('change', '#change-select input[type=checkbox]', function() {
  402. if ($('#change-select input:checked').length > 10) {
  403. this.checked = false;
  404. toastr.warning('最多选择10条数据');
  405. }
  406. });
  407. $('body').on('click', '#change-select-ok', function() {
  408. if (!needFileMsg[business_type]) return;
  409. const select = $('#change-select input:checked');
  410. const id = [];
  411. for (const s of select) {
  412. id.push(s.getAttribute('cid'));
  413. }
  414. postData('sendOtherReportFileMsg', { id, msgType: needFileMsg[business_type].key }, function (result, msg) {
  415. toastr.success(msg);
  416. $('change-select').modal('hide');
  417. });
  418. });
  419. $(function () {
  420. //阻止事件冒泡
  421. //不仅仅要stopPropagation,还要preventDefault
  422. function pauseEvent(e){
  423. if(e.stopPropagation) e.stopPropagation();
  424. if(e.preventDefault) e.preventDefault();
  425. e.cancelBubble=true;
  426. e.returnValue=false;
  427. return false;
  428. }
  429. let pe = 0;
  430. $('#right-spr').mousedown(function (ev) {
  431. $('iframe').css('pointerEvents', 'none');
  432. let e = ev||event;
  433. pauseEvent(e);
  434. pe = 1;
  435. });
  436. $(document).mouseup(function (ev) {
  437. if(pe) {
  438. $('iframe').css('pointerEvents', 'auto');
  439. pe = 0;
  440. let e = ev||event;
  441. pauseEvent(e);
  442. }
  443. });
  444. $('#select-item a').on('click', function () {
  445. $('#select-item a').show();
  446. $(this).hide();
  447. $('#select-item').siblings('button').text($(this).text());
  448. const type = $(this).data('type');
  449. business_type = type;
  450. if (type === 'stage') {
  451. $('#divSelectableStages').show();
  452. $('#divSelectableChanges').hide();
  453. // 下列树结构重新加载
  454. //还有必要触发归档报表刷新!
  455. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  456. const params = {prjId: PROJECT_ID, stgId: current_stage_id};
  457. $.bootstrapLoading.start();
  458. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive", params, 10000, true, getCookie('csrfToken_j'),
  459. function(result){
  460. $.bootstrapLoading.end();
  461. // console.log(result);
  462. ARCHIVE_LIST = result.data;
  463. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  464. TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  465. buildTplTree();
  466. rptArchiveObj.iniPage();
  467. }, function(err){
  468. $.bootstrapLoading.end();
  469. }, function(ex){
  470. $.bootstrapLoading.end();
  471. }
  472. );
  473. } else {
  474. $('#divSelectableStages').hide();
  475. $('#divSelectableChanges').show();
  476. // 下列树结构重新加载
  477. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  478. const params = {tenderId: TENDER_ID, business_type: type};
  479. $.bootstrapLoading.start();
  480. // ARCHIVE_LIST = [];
  481. // ARCHIVE_ENCRYPTION_LIST = [];
  482. // TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  483. // rptArchiveObj.iniPage();
  484. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive4bz", params, 10000, true, getCookie('csrfToken_j'),
  485. function(result){
  486. $.bootstrapLoading.end();
  487. // console.log(result);
  488. ARCHIVE_LIST = result.data;
  489. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  490. CHANGE_LIST = result.changes;
  491. current_change_id = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].cid || CHANGE_LIST[0].id : -1;
  492. current_change_code = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].code : '';
  493. TOP_TREE_NODES = JSON.parse(JSON.stringify(result.rpt_tpl_data));
  494. buildTplTree();
  495. rptArchiveObj.iniPage();
  496. buildChangeSelection();
  497. }, function(err){
  498. $.bootstrapLoading.end();
  499. }, function(ex){
  500. $.bootstrapLoading.end();
  501. }
  502. );
  503. }
  504. if (needFileMsg[type] && needFileMsg[type].valid) {
  505. $('#file-msg').show();
  506. } else {
  507. $('#file-msg').hide();
  508. }
  509. });
  510. })
  511. rptArchiveObj.iniPage();
  512. $(document).ready(() => {
  513. $('#change-select-date').datepicker({
  514. onSelect: function(selectedDate) {
  515. const rows = $('#change-select-list tr');
  516. for (const r of rows) {
  517. const cid = $(r).find('input').attr('cid');
  518. const change = CHANGE_LIST.find(x => { return x.cid ? x.cid === cid : c.id === cid; });
  519. if (moment(selectedDate).isBefore(change.in_time)) {
  520. $(r).show();
  521. } else {
  522. $(r).hide();
  523. }
  524. }
  525. }
  526. });
  527. });
  528. </script>