index_archive.ejs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573
  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. let CHANGE_ID = -1, BUSINESS_ID = -1;
  199. const FOLDER_SEPERATER = '->';
  200. if (STAGE_ORDER > 0) {
  201. current_stage_order = STAGE_ORDER;
  202. current_stage_id = STAGE_ID;
  203. // current_stage_status = STAGE_STATUS;
  204. } else if (STAGE_LIST.length > 0) {
  205. for (let i = STAGE_LIST.length; i > 0; i--) {
  206. if (parseInt(STAGE_LIST[i - 1].status) === 3) {
  207. current_stage_order = STAGE_LIST[i - 1].order;
  208. current_stage_id = STAGE_LIST[i - 1].id;
  209. break;
  210. }
  211. }
  212. // current_stage_order = STAGE_LIST[STAGE_LIST.length - 1].order;
  213. // current_stage_id = STAGE_LIST[STAGE_LIST.length - 1].id;
  214. // current_stage_status = STAGE_LIST[STAGE_LIST.length - 1].status;
  215. }
  216. buildStageSelection();
  217. for (let item of TOP_TREE_NODES) {
  218. if (item.name === '通用报表') {
  219. item.name = '推荐报表';
  220. }
  221. }
  222. const ORG_TOP_TREE_NODES = JSON.parse(JSON.stringify(TOP_TREE_NODES));
  223. for (let item of TOP_TREE_NODES) {
  224. item.items = JSON.parse(item.items);
  225. if (item.items && item.items.length > 0) {
  226. for (let dtlItem of item.items) {
  227. chkAndSetNode(dtlItem);
  228. }
  229. }
  230. }
  231. for (let item of ORG_TOP_TREE_NODES) {
  232. item.items = JSON.parse(item.items);
  233. if (item.items && item.items.length > 0) {
  234. for (let dtlItem of item.items) {
  235. chkAndSetNode(dtlItem);
  236. }
  237. }
  238. }
  239. buildTplTree();
  240. function chkAndSetNode(parentItem) {
  241. if (parentItem.nodeType === 1) {
  242. parentItem.isParent = true;
  243. }
  244. if (parentItem.items) {
  245. for (let dtlItem of parentItem.items) {
  246. chkAndSetNode(dtlItem);
  247. }
  248. }
  249. }
  250. function buildTplTree() {
  251. if (TOP_TREE_NODES.length > 0) {
  252. //1. 整理模板树 (原始状态的TOP_TREE_NODES包含了推荐报表与定制表,需要分割)
  253. const individualNode = {id: 99999, name: '定制报表', pid: -1, rpt_type: 0, items: [], isParent: true};
  254. for (let tnIdx = TOP_TREE_NODES.length - 1; tnIdx >= 0; tnIdx--) {
  255. if (TOP_TREE_NODES[tnIdx].pid !== -1) {
  256. TOP_TREE_NODES[tnIdx].isParent = true;
  257. TOP_TREE_NODES[tnIdx].nodeType = 1;
  258. individualNode.items.unshift(TOP_TREE_NODES[tnIdx]);
  259. TOP_TREE_NODES.splice(tnIdx, 1);
  260. }
  261. }
  262. // 1.1 移除未被选择的模板
  263. // filterUnchkTplTreeNode(TOP_TREE_NODES[0], CUST_TREE_NODES.common);
  264. TOP_TREE_NODES.unshift(individualNode); //定制在前
  265. // filterUnchkTplTreeNode(TOP_TREE_NODES[0], CUST_TREE_NODES.customize);
  266. //2. 原始的模板树(恢复用)
  267. const individualNodeOrg = {id: 99999, name: '定制报表', pid: -1, rpt_type: 0, items: [], isParent: true};
  268. for (let tnIdx = ORG_TOP_TREE_NODES.length - 1; tnIdx >= 0; tnIdx--) {
  269. if (ORG_TOP_TREE_NODES[tnIdx].pid !== -1) {
  270. ORG_TOP_TREE_NODES[tnIdx].isParent = true;
  271. ORG_TOP_TREE_NODES[tnIdx].nodeType = 1;
  272. individualNodeOrg.items.unshift(ORG_TOP_TREE_NODES[tnIdx]);
  273. ORG_TOP_TREE_NODES.splice(tnIdx, 1);
  274. }
  275. }
  276. //ORG_TOP_TREE_NODES.push(individualNode);
  277. ORG_TOP_TREE_NODES.unshift(individualNodeOrg);
  278. }
  279. }
  280. function buildStageSelection() {
  281. if (STAGE_LIST.length === 0) {
  282. $("#optionSelectableStages")[0].style.display = 'none';
  283. } else {
  284. $("#optionSelectableStages")[0].style.display = '';
  285. $("#btnCurrentStage")[0].innerText = '第' + current_stage_order + '期';
  286. $("#optionSelectableStages").empty();
  287. if (STAGE_LIST.length > 0 && STAGE_ID < 0) {
  288. for (let i = STAGE_LIST.length; i > 0; i--) {
  289. if (parseInt(STAGE_LIST[i - 1].status) === 3 && parseInt(STAGE_LIST[i - 1].order) !== current_stage_order) {
  290. 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>';
  291. $("#optionSelectableStages").append(str);
  292. }
  293. }
  294. }
  295. }
  296. if (STAGE_ID > 0) {
  297. $("#divSelectableStages")[0].style.display = 'none';
  298. }
  299. }
  300. function buildChangeSelection() {
  301. if (CHANGE_LIST.length === 0) {
  302. $("#optionSelectableChanges")[0].style.display = 'none';
  303. $("#btnCurrentChange")[0].innerText = '';
  304. } else {
  305. $("#optionSelectableChanges")[0].style.display = '';
  306. $("#btnCurrentChange")[0].innerText = current_change_code;
  307. $("#optionSelectableChanges").empty();
  308. if (CHANGE_LIST.length > 0) {
  309. for (let i = 0; i < CHANGE_LIST.length; i++) {
  310. if (parseInt(CHANGE_LIST[i].status) === 3 && CHANGE_LIST[i].code !== current_change_code) {
  311. 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>';
  312. $("#optionSelectableChanges").append(str);
  313. }
  314. }
  315. }
  316. }
  317. // if (CHANGE_ID > 0) {
  318. // $("#divSelectableChanges")[0].style.display = 'none';
  319. // }
  320. }
  321. function changeCurrentStage(ele) {
  322. // alert('you are selecting: ' + ele.innerText);
  323. current_stage_order = parseInt(ele.attributes.stg_order.value);
  324. current_stage_id = parseInt(ele.attributes.stg_id.value);
  325. for (let i = STAGE_LIST.length; i > 0; i--) {
  326. if (parseInt(STAGE_LIST[i - 1].order) === current_stage_order) {
  327. current_stage_status = STAGE_LIST[i - 1].status;
  328. break;
  329. }
  330. }
  331. buildStageSelection();
  332. //还有必要触发归档报表刷新!
  333. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  334. const params = {prjId: PROJECT_ID, stgId: current_stage_id};
  335. $.bootstrapLoading.start();
  336. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive", params, 10000, true, getCookie('csrfToken_j'),
  337. function(result){
  338. $.bootstrapLoading.end();
  339. // console.log(result);
  340. ARCHIVE_LIST = result.data;
  341. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  342. TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  343. rptArchiveObj.iniPage();
  344. }, function(err){
  345. $.bootstrapLoading.end();
  346. }, function(ex){
  347. $.bootstrapLoading.end();
  348. }
  349. );
  350. }
  351. function changeCurrentChange(ele) {
  352. // alert('you are selecting: ' + ele.innerText);
  353. current_change_id = ele.attributes.change_id.value;
  354. current_change_code = ele.attributes.change_code.value;
  355. CHANGE_ID = ele.attributes.change_id.value;
  356. BUSINESS_ID = ele.attributes.change_id.value;
  357. buildChangeSelection();
  358. //还有必要触发归档报表刷新!
  359. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  360. const params = {tenderId: TENDER_ID, business_type, bzId: current_change_id};
  361. $.bootstrapLoading.start();
  362. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive4bz", params, 10000, true, getCookie('csrfToken_j'),
  363. function(result){
  364. $.bootstrapLoading.end();
  365. ARCHIVE_LIST = result.data;
  366. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  367. TOP_TREE_NODES = JSON.parse(JSON.stringify(result.rpt_tpl_data));
  368. buildTplTree();
  369. rptArchiveObj.iniPage();
  370. }, function(err){
  371. $.bootstrapLoading.end();
  372. }, function(ex){
  373. $.bootstrapLoading.end();
  374. }
  375. );
  376. }
  377. function sendReportFileMsg() {
  378. if (!needFileMsg[business_type] || !needFileMsg[business_type].valid) return;
  379. if (business_type === 'stage') {
  380. postData('sendReportFileMsg', { sid: current_stage_id, sorder: current_stage_order }, function (result, msg) {
  381. toastr.success(msg);
  382. });
  383. } else {
  384. if (CHANGE_LIST.length === 0) {
  385. toastr.warning('暂无任何归档数据');
  386. return;
  387. }
  388. loadChangeSelect(CHANGE_LIST);
  389. $('#change-select').modal('show');
  390. }
  391. }
  392. function loadChangeSelect(changes) {
  393. const html = [];
  394. for (const c of changes) {
  395. html.push('<tr>');
  396. html.push(`<td><input cid="${c.cid || c.id}" type="checkbox" ${(c.selected ? "checked" : '')}></td>`);
  397. html.push(`<td>${c.code}</td>`);
  398. html.push(`<td>${c.name}</td>`);
  399. html.push(`<td>${moment(c.in_time).format('YYYY-MM-DD')}</td>`);
  400. html.push('</tr>');
  401. }
  402. $('#change-select-list').html(html.join(''));
  403. }
  404. $('body').on('change', '#change-select input[type=checkbox]', function() {
  405. if ($('#change-select input:checked').length > 10) {
  406. this.checked = false;
  407. toastr.warning('最多选择10条数据');
  408. }
  409. });
  410. $('body').on('click', '#change-select-ok', function() {
  411. if (!needFileMsg[business_type]) return;
  412. const select = $('#change-select input:checked');
  413. const id = [];
  414. for (const s of select) {
  415. id.push(s.getAttribute('cid'));
  416. }
  417. postData('sendOtherReportFileMsg', { id, msgType: needFileMsg[business_type].key }, function (result, msg) {
  418. toastr.success(msg);
  419. $('change-select').modal('hide');
  420. });
  421. });
  422. $(function () {
  423. //阻止事件冒泡
  424. //不仅仅要stopPropagation,还要preventDefault
  425. function pauseEvent(e){
  426. if(e.stopPropagation) e.stopPropagation();
  427. if(e.preventDefault) e.preventDefault();
  428. e.cancelBubble=true;
  429. e.returnValue=false;
  430. return false;
  431. }
  432. let pe = 0;
  433. $('#right-spr').mousedown(function (ev) {
  434. $('iframe').css('pointerEvents', 'none');
  435. let e = ev||event;
  436. pauseEvent(e);
  437. pe = 1;
  438. });
  439. $(document).mouseup(function (ev) {
  440. if(pe) {
  441. $('iframe').css('pointerEvents', 'auto');
  442. pe = 0;
  443. let e = ev||event;
  444. pauseEvent(e);
  445. }
  446. });
  447. $('#select-item a').on('click', function () {
  448. $('#select-item a').show();
  449. $(this).hide();
  450. $('#select-item').siblings('button').text($(this).text());
  451. const type = $(this).data('type');
  452. business_type = type;
  453. CHANGE_ID = -1;
  454. BUSINESS_ID = -1;
  455. if (type === 'stage') {
  456. $('#divSelectableStages').show();
  457. $('#divSelectableChanges').hide();
  458. current_stage_order = STAGE_LIST[i - 1].order;
  459. const info = _.find(STAGE_LIST, { order: current_stage_order });
  460. current_stage_id = info ? info.id : STAGE_LIST[i -1].id;
  461. current_stage_order = info ? info.order : STAGE_LIST[i - 1].order;
  462. // 下列树结构重新加载
  463. //还有必要触发归档报表刷新!
  464. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  465. const params = {prjId: PROJECT_ID, stgId: current_stage_id};
  466. $.bootstrapLoading.start();
  467. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive", params, 10000, true, getCookie('csrfToken_j'),
  468. function(result){
  469. $.bootstrapLoading.end();
  470. // console.log(result);
  471. ARCHIVE_LIST = result.data;
  472. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  473. TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  474. buildTplTree();
  475. rptArchiveObj.iniPage();
  476. }, function(err){
  477. $.bootstrapLoading.end();
  478. }, function(ex){
  479. $.bootstrapLoading.end();
  480. }
  481. );
  482. } else {
  483. $('#divSelectableStages').hide();
  484. $('#divSelectableChanges').show();
  485. // 下列树结构重新加载
  486. //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
  487. const params = {tenderId: TENDER_ID, business_type: type};
  488. $.bootstrapLoading.start();
  489. // ARCHIVE_LIST = [];
  490. // ARCHIVE_ENCRYPTION_LIST = [];
  491. // TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
  492. // rptArchiveObj.iniPage();
  493. CommonAjax.postXsrfEx("/tender/report_api/getReportArchive4bz", params, 10000, true, getCookie('csrfToken_j'),
  494. function(result){
  495. $.bootstrapLoading.end();
  496. // console.log(result);
  497. ARCHIVE_LIST = result.data;
  498. ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
  499. CHANGE_LIST = result.changes;
  500. current_change_id = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].id : -1;
  501. current_change_code = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].code : '';
  502. TOP_TREE_NODES = JSON.parse(JSON.stringify(result.rpt_tpl_data));
  503. CHANGE_ID = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].id : -1;
  504. BUSINESS_ID = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].id : -1;
  505. buildTplTree();
  506. rptArchiveObj.iniPage();
  507. buildChangeSelection();
  508. current_stage_id = result.stgId;
  509. }, function(err){
  510. $.bootstrapLoading.end();
  511. }, function(ex){
  512. $.bootstrapLoading.end();
  513. }
  514. );
  515. }
  516. if (needFileMsg[type] && needFileMsg[type].valid) {
  517. $('#file-msg').show();
  518. } else {
  519. $('#file-msg').hide();
  520. }
  521. });
  522. })
  523. rptArchiveObj.iniPage();
  524. $(document).ready(() => {
  525. $('#change-select-date').datepicker({
  526. onSelect: function(selectedDate) {
  527. const rows = $('#change-select-list tr');
  528. for (const r of rows) {
  529. const cid = $(r).find('input').attr('cid');
  530. const change = CHANGE_LIST.find(x => { return x.cid ? x.cid === cid : c.id === cid; });
  531. if (moment(selectedDate).isBefore(change.in_time)) {
  532. $(r).show();
  533. } else {
  534. $(r).hide();
  535. }
  536. }
  537. }
  538. });
  539. });
  540. </script>