xmzk.jsp 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8" %>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <jsp:include page="../../../common/common-meta-include.jsp"></jsp:include>
  8. <jsp:include page="../../../common/common-js-include.jsp"></jsp:include>
  9. <jsp:include page="../../../common/common-css-include.jsp"></jsp:include>
  10. <!--[if lt IE 9]>
  11. <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  12. <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  13. <![endif]-->
  14. <style type="text/css">
  15. .layui-table-view .layui-table td {
  16. border-right: 1px solid #DDD !important;
  17. }
  18. .layui-table-body .layui-table-cell {
  19. padding: 5px !important;
  20. }
  21. .layui-table-header .layui-table-cell {
  22. height: 42px !important;
  23. }
  24. .qianse {
  25. color: #666666;
  26. }
  27. .lanse {
  28. color: #1869F6;
  29. }
  30. .shense {
  31. color: #111111;
  32. }
  33. .no-wrap {
  34. white-space: nowrap;
  35. }
  36. .lanse-first {
  37. color: #1C56A3;
  38. font-size: 12px;
  39. }
  40. .layui-table-col-special .layui-table-cell {
  41. display: flex;
  42. justify-content: space-between;
  43. }
  44. .queryTimeType {
  45. margin-top: -4px;
  46. position: absolute;
  47. }
  48. .hiddenParam,
  49. .hiddenParams {
  50. display: none;
  51. }
  52. .morePan {
  53. position: absolute;
  54. margin-left: 11px;
  55. }
  56. .morePan a {
  57. color: #2C6EC6;
  58. }
  59. .table_box .table_process {
  60. height: fit-content;
  61. max-height: 60vh;
  62. overflow-x: scroll;
  63. overflow-y: scroll;
  64. }
  65. .layui-table-body::-webkit-scrollbar {
  66. width: 0px;
  67. /*height: 10px;*/
  68. }
  69. .table_box,
  70. .table_box .table_process {
  71. overflow: visible;
  72. }
  73. .layui-form-select dl {
  74. height: 230px;
  75. }
  76. </style>
  77. </head>
  78. <body>
  79. <div id="app"></div>
  80. <template id="template">
  81. <div class="layui-layout layui-layout-admin">
  82. <!-- 内容区域 -->
  83. <div class="right_title">
  84. <div class="txt"
  85. style="width: 100%; font-size: 35px; font-family: '方正小标宋', '仿宋', sans-serif; text-align: center; font-weight: bold;">
  86. 项目总库
  87. </div>
  88. <div class="layui-btn-container" style="margin-top: 20px;margin-left: 20px">
  89. <%-- <button type="button" class="layui-btn" @click="exportDetailExcel">导出明细</button>--%>
  90. <button type="button" class="layui-btn" @click="exportTotalExcel">导出</button>
  91. <button type="button" class="layui-btn" @click="exportMoreExcel">自定义导出</button>
  92. </div>
  93. <div class="layui-collapse">
  94. <div class="layui-colla-item">
  95. <div class="layui-colla-content layui-show">
  96. <form class="layui-form" lay-filter="searchForm" id="searchForm">
  97. <input type="hidden" name="queryType" value="1">
  98. <div class="layui-row">
  99. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  100. <div class="layui-form-item">
  101. <label class="layui-form-label label-longers required">项目名称</label>
  102. <div class="layui-input-block">
  103. <input type="text" name="subName" placeholder="请输入" autocomplete="off"
  104. class="layui-input">
  105. </div>
  106. </div>
  107. </div>
  108. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  109. <div class="layui-form-item">
  110. <label class="layui-form-label required label-longers">项目属地</label>
  111. <div class="layui-input-block">
  112. <select name="subjectId">
  113. <option value="">请选择</option>
  114. <c:forEach items="${JSDD }" var="hy">
  115. <option value="${hy.code }">${hy.title }</option>
  116. </c:forEach>
  117. </select>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  122. <div class="layui-form-item">
  123. <label class="layui-form-label required label-longers">行业类别</label>
  124. <div class="layui-input-block">
  125. <%-- <div id="indusKind"></div>--%>
  126. <select name="indusKind">
  127. <option value="">请选择</option>
  128. <c:forEach items="${HYFL }" var="hy">
  129. <option value="${hy.code }">${hy.title}
  130. <c:forEach items="${hy.children }" var="hy2">
  131. <option value="${hy2.code }">&ensp;&ensp;${hy2.title}
  132. </c:forEach>
  133. </option>
  134. </c:forEach>
  135. </select>
  136. </div>
  137. </div>
  138. </div>
  139. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">
  140. <div class="layui-form-item">
  141. <label class="layui-form-label required label-longers" style="width: 100px;">项目总投资(亿元)</label>
  142. <div class="layui-input-block time_box">
  143. <input type="number" name="startAmt" placeholder="请输入最小金额"
  144. autocomplete="off"
  145. class="layui-input">
  146. <span class="split_txt">至</span>
  147. <input type="number" name="endAmt" placeholder="请输入最大金额" autocomplete="off"
  148. class="layui-input">
  149. </div>
  150. </div>
  151. </div>
  152. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">
  153. <div class="layui-form-item">
  154. <label class="layui-form-label required label-longers">投资类型</label>
  155. <div class="layui-input-block">
  156. <div id="kindNature"></div>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">
  161. <div class="layui-form-item">
  162. <label class="layui-form-label label-longers">项目单位</label>
  163. <div class="layui-input-block">
  164. <input type="text" name="sbdw" placeholder="请输入项目项目单位名称"
  165. autocomplete="off"
  166. class="layui-input">
  167. </div>
  168. </div>
  169. </div>
  170. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParams">
  171. <div class="layui-form-item">
  172. <label class="layui-form-label"></label>
  173. <div class="layui-input-block">
  174. <button type="button" class="layui-btn layui-btn-normal" @click="search">查询
  175. </button>
  176. <span class="morePan" @click="showMore"><a v-if="!showMoreFlag">更多 <ion-icon
  177. name="chevron-forward-outline"></ion-icon></a><a
  178. v-if="showMoreFlag">收起 V</a></span>
  179. </div>
  180. </div>
  181. </div>
  182. </div>
  183. <div class="layui-row">
  184. </div>
  185. </form>
  186. </div>
  187. </div>
  188. </div>
  189. </div>
  190. <div>
  191. <%-- <div class="layui-row">--%>
  192. <%-- <div style="display: flex;margin-bottom: 3px">--%>
  193. <%-- <label class="juli" onclick="levelList('abcs','A类','A')">--%>
  194. <%-- 储备项目总数--%>
  195. <%-- <span class="info-icon" title="A类项目:成熟类项目,可研或初设已编制并完成初审,达到项目等资金的进度">?</span>--%>
  196. <%-- <span class="lanse-first">{{beginRate.num}}</span>--%>
  197. <%-- </label>--%>
  198. <%-- <label class="juli" onclick="levelList('abcs','A类','A')">--%>
  199. <%-- A类项目数--%>
  200. <%-- <span class="info-icon" title="A类项目:成熟类项目,可研或初设已编制并完成初审,达到项目等资金的进度">?</span>--%>
  201. <%-- <span class="lanse-first">{{beginRate.anum}}</span>--%>
  202. <%-- </label>--%>
  203. <%-- <label class="juli">--%>
  204. <%-- B类项目数--%>
  205. <%-- <span class="info-icon" title="B类项目:推进类项目,正在抓紧推进前期手续,预计6-12个月可开工项目">?</span>--%>
  206. <%-- <span class="lanse-first" onclick="levelList('abcs','B类','B')">{{beginRate.bnum}}</span>--%>
  207. <%-- </label>--%>
  208. <%-- <label class="juli" onclick="levelList('abcs','C类','C')">--%>
  209. <%-- C类项目数--%>
  210. <%-- <span class="info-icon" title="C类项目:意向类项目,还处于谋划论证阶段项目">?</span>--%>
  211. <%-- <span class="lanse-first">{{beginRate.cnum}}</span>--%>
  212. <%-- </label>--%>
  213. <%-- </div>--%>
  214. <%-- <div style="display: flex;margin-bottom: 3px">--%>
  215. <%-- <label class="juli"--%>
  216. <%-- @click="levelList('subjects',item.name,item.code)"--%>
  217. <%-- v-for="(item, index) in beginRate.jsddList" :key="index">--%>
  218. <%-- {{item.name}} <span class="lanse-first">{{item.num}}</span>--%>
  219. <%-- </label>--%>
  220. <%-- </div>--%>
  221. <%-- <div style="margin-bottom: 3px">--%>
  222. <%-- <label class="juli"--%>
  223. <%-- @click="levelList('indusKinds',item.name?item.name:item.code,item.split(',')[3])"--%>
  224. <%-- v-for="(item, index) in beginRate.hyflList" :key="index">--%>
  225. <%-- {{item.name?item.name:item.code}}--%>
  226. <%-- <span class="lanse-first">{{item.num}}</span>--%>
  227. <%-- </label>--%>
  228. <%-- </div>--%>
  229. <%-- </div>--%>
  230. </div>
  231. <div class="table_box" style="padding-top: 0;">
  232. <div class="table_process" style="position: relative">
  233. <div class="export" style="background: transparent" @mouseover="openExport" @mouseout="choseExport">
  234. <div class="export" style="right: 25px;top: 0">
  235. <img src="${WebSite.asset}/css/images/left/export.svg"/>
  236. <span>导出</span>
  237. </div>
  238. <div class="export-item" v-if="showExport">
  239. <button type="button" class="" @click="exportExcel">
  240. 项目汇总
  241. </button>
  242. <button type="button" class=""
  243. @click="exportExcelByIndusKind">按所属行业
  244. </button>
  245. <button type="button" class=""
  246. @click="exportSchedulingExcel">项目调度表
  247. </button>
  248. <!-- <button type="button" class="" @click="exportExcel2">项目明细导出</button> -->
  249. <button type="button" class=""
  250. @click="exportMoreExcel">自定义
  251. </button>
  252. </div>
  253. </div>
  254. <table id="table1" lay-filter="test"></table>
  255. <div class="pagination-box" id="pagination"></div>
  256. </div>
  257. </div>
  258. <div style="height: 20px;"></div>
  259. </div>
  260. </template>
  261. <div id="setReason" style="display: none;">
  262. <form class="layui-form" lay-filter="reasonForm">
  263. <div class="layui-row">
  264. <div class="layui-col-xs6 layui-col-sm6">
  265. <div class="layui-form-item">
  266. <label class="layui-form-label">已开工未入库原因:</label>
  267. <div class="layui-input-block">
  268. <textarea name="reasonNoRk" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoRk"
  269. autocomplete="off" class="layui-textarea"></textarea>
  270. </div>
  271. </div>
  272. </div>
  273. <div class="layui-col-xs6 layui-col-sm6">
  274. <div class="layui-form-item">
  275. <label class="layui-form-label">已入库无投资原因:</label>
  276. <div class="layui-input-block">
  277. <textarea name="reasonNoAmt" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoAmt"
  278. autocomplete="off" class="layui-textarea"></textarea>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. <div class="layui-row">
  284. <div class="layui-col-xs6 layui-col-sm6">
  285. <div class="layui-form-item">
  286. <label class="layui-form-label">是否入统:</label>
  287. <div class="layui-input-block">
  288. <input type="radio" name="isRk" value="0" title="否" checked="checked"/>
  289. <input type="radio" name="isRk" value="1" title="是"/>
  290. </div>
  291. </div>
  292. </div>
  293. <div class="layui-col-xs6 layui-col-sm6">
  294. <div class="layui-form-item">
  295. <label class="layui-form-label">未开工建设原因:</label>
  296. <div class="layui-input-block">
  297. <textarea name="reasonNoKg" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoKg"
  298. autocomplete="off" class="layui-textarea"></textarea>
  299. </div>
  300. </div>
  301. </div>
  302. </div>
  303. <div class="layui-row">
  304. <div class="layui-col-xs6 layui-col-sm6">
  305. <div class="layui-form-item">
  306. <label class="layui-form-label">存在的问题:</label>
  307. <div class="layui-input-block">
  308. <textarea name="reasonq" maxlength="200" style="height: 50px;width: 80%;" id="reasonq"
  309. autocomplete="off" class="layui-textarea"></textarea>
  310. </div>
  311. </div>
  312. </div>
  313. <div class="layui-col-xs6 layui-col-sm6">
  314. <div class="layui-form-item">
  315. <label class="layui-form-label">已开工进度慢原因:</label>
  316. <div class="layui-input-block">
  317. <textarea name="reasonJd" maxlength="200" style="height: 50px;width: 80%;" id="reasonJd"
  318. autocomplete="off" class="layui-textarea"></textarea>
  319. </div>
  320. </div>
  321. </div>
  322. </div>
  323. </form>
  324. </div>
  325. <div id="problem" class="layuimini-main" style="display: none;">
  326. <form class="layui-form" lay-filter="problemForm">
  327. <div class="layui-row">
  328. <div class="layui-col-xs12 layui-col-sm12">
  329. <div class="layui-form-item">
  330. <label class="layui-form-label">状态:</label>
  331. <div class="layui-input-block block-width">
  332. <input type="radio" name="statusF" value="2" title="红灯" checked="checked"/>
  333. <input type="radio" name="statusF" value="1" title="黄灯"/>
  334. <input type="radio" name="statusF" value="0" title="绿灯"/>
  335. </div>
  336. </div>
  337. </div>
  338. </div>
  339. <div class="layui-row">
  340. <div class="layui-col-xs12 layui-col-sm12">
  341. <div class="layui-form-item">
  342. <label class="layui-form-label">问题描述:</label>
  343. <div class="layui-input-block block-width">
  344. <textarea name="status_reason" maxlength="400" style="height: 300px;width: 80%;"
  345. id="problemReason" autocomplete="off" class="layui-textarea"></textarea>
  346. </div>
  347. </div>
  348. </div>
  349. </div>
  350. <div class="layui-row">
  351. <div class="layui-col-xs12 layui-col-sm12">
  352. <div class="layui-form-item">
  353. <label class="layui-form-label">要求解决日期:</label>
  354. <div class="layui-input-block block-width" style="width: 25%">
  355. <input type="text" id="dateConfirm" name="dateConfirm" autocomplete="off" class="layui-input">
  356. </div>
  357. </div>
  358. </div>
  359. </div>
  360. </form>
  361. </div>
  362. <div id="toBack" class="layuimini-main" style="display: none;">
  363. <form class="layui-form" lay-filter="toBackForm">
  364. <div class="layui-row">
  365. <div class="layui-col-xs12 layui-col-sm12">
  366. <div class="layui-form-item">
  367. <label class="layui-form-label" style="width: 100px">退回到状态:</label>
  368. <div class="layui-input-block">
  369. <input type="radio" name="status" value="1" title="项目前期" checked="checked"/>
  370. <input type="radio" name="status" value="6" title="待开工"/>
  371. <input type="radio" name="status" value="7" title="施工中"/>
  372. </div>
  373. </div>
  374. </div>
  375. </div>
  376. </form>
  377. </div>
  378. <script type="text/html" id="subName">
  379. <span lay-event="toDetail" title="{{d.subName}}">{{d.subName}}</span>
  380. </script>
  381. <script type="text/html" id="mainName">
  382. <span lay-event="toManagerUnit" title="{{d.mainName}}">{{d.mainName}}</span>
  383. </script>
  384. <script type="text/html" id="unitName">
  385. <span lay-event="toQcc" title="{{d.unitName}}">{{d.unitName}}</span>
  386. </script>
  387. <script type="text/html" id="date">
  388. <div title="">
  389. <div class="line"><span class="qianse">计划开工:</span> <span class="shense">{{d.beginDate}}</span>
  390. </div>
  391. <div class="line"><span class="qianse">计划竣工:</span> <span class="shense">{{d.endDate}}</span>
  392. </div>
  393. </div>
  394. </script>
  395. <script type="text/html" id="amtTotal">
  396. <div title="">
  397. <span class="qianse">总投资金额:</span><span class="lanse">{{d.amtTotal}}</span> 万元<br/>
  398. </div>
  399. </script>
  400. <script type="text/html" id="zjly">
  401. <div title="">
  402. <span class="lanse">{{d.zjlyName}}</span>
  403. </div>
  404. </script>
  405. <script type="text/html" id="abcSpan">
  406. {{# if(d.abc == "A") { }}
  407. <span style="font-size:16px;font-weigh:500 !important;color: #26B520">{{d.abc||''}}</span>
  408. {{#} }}
  409. {{# if(d.abc == "B") { }}
  410. <span style="font-size:16px;font-weigh:500 !important;color: #1869F6">{{d.abc||''}}</span>
  411. {{#} }}
  412. {{# if(d.abc == "C") { }}
  413. <span style="font-size:16px;font-weigh:500 !important;color: #FF9600">{{d.abc||''}}</span>
  414. {{#} }}
  415. </script>
  416. <%-- table操作按钮 --%>
  417. <script type="text/html" id="toolBar">
  418. <div class="toolBar">
  419. <span title="项目查询" lay-event="toDetail" class="no-wrap">项目查询</span>
  420. </div>
  421. </script>
  422. <script type="text/html" id="imageDiv">
  423. <div style="width:50px;height:50px" onclick="showImage(this)">
  424. {{# if(d.fileId != null && d.fileId != '') { }}
  425. <img src="${domain}/static/file/{{d.fileId}}/showfile" realUrl="${domain}/static/file/{{d.fileId}}/showfile"
  426. width="50px" height="50px"/>
  427. {{#} }}
  428. </div>
  429. </script>
  430. <script type="text/html" id="offsetLight">
  431. {{#if(d.offset >= -30 && d.offset <= -10 ) { }}
  432. <span style="color: yellow"><image class="light-rgb"
  433. src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
  434. {{#} else if(d.offset < -30) { }}
  435. <span style="color: red"><image class="light-rgb"
  436. src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
  437. {{#}}}
  438. {{#if(d.offset !="" || d.offset != undefined || d.offset != null) { }}
  439. {{#if(d.offset<0) { }}
  440. <span class="grey">{{d.offset||"--"}}%</span>
  441. {{# } }}
  442. {{#if(d.offset>0) { }}
  443. <span class="green">{{d.offset||"--"}}%</span>
  444. {{# } }}
  445. {{# } }}
  446. </script>
  447. <script type="text/html" id="openLight">
  448. {{# var computedPer1 = function(beginDate){
  449. var beginDate =new Date(beginDate);
  450. var beginDate7 =new Date(beginDate);
  451. var beginDate3 =new Date(beginDate);
  452. beginDate7.setDate(beginDate7.getDate()-7);
  453. beginDate3.setDate(beginDate3.getDate()-3);
  454. var newDate = new Date();
  455. if(newDate.getTime() >=beginDate7.getTime() && newDate.getTime() <=beginDate3.getTime()){
  456. return "yellow";
  457. }else if(newDate.getTime() >=beginDate3.getTime() && newDate.getTime() <= beginDate.getTime() ){
  458. return "red";
  459. }else{
  460. return "-";
  461. }
  462. };
  463. }}
  464. {{#if(computedPer1(d.beginDate)=="yellow" ) { }}
  465. <span style="color: yellow"> <image style="width:20px;height:20px;margin: auto;"
  466. src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
  467. {{#} else if(computedPer1(d.beginDate)=="red") { }}
  468. <span style="color: red"> <image style="width:20px;height:20px;margin: auto;"
  469. src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
  470. {{#}}}
  471. </script>
  472. <script>
  473. layui.use('element', function () {
  474. let element = layui.element;
  475. });
  476. let vm = new Vue({
  477. el: "#app",
  478. template: "#template",
  479. data: {
  480. JSDD: [],
  481. winH: 0,
  482. dataList: [],
  483. startDate: "",
  484. endDate: "",
  485. tableName: 'test',
  486. cacheName: 'TzQueryParam_cb_${currUser.id}',
  487. pageNo: 1,
  488. kind: {},
  489. beginRate: {},
  490. showMoreFlag: false,
  491. light: null,
  492. sort: {field: "abc", type: ""},
  493. pageSize: 10,
  494. showExport: false,
  495. moveDbParam:{
  496. status: "",
  497. id: ""
  498. }
  499. },
  500. mounted: function () {
  501. this.init()
  502. },
  503. methods: {
  504. closeAllLayers() {
  505. layui.layer.closeAll(); // 关闭所有弹框
  506. },
  507. confirmMove: function () {
  508. let param = this.moveDbParam
  509. App.postJson("/api/subject/subInfo/moveDb",param, (res)=>{
  510. App.msg.success(res.msg);
  511. })
  512. this.closeAllLayers();
  513. },
  514. init: function () {
  515. let self = this;
  516. layui.form.on("select(moveStatus)", function (data) {
  517. self.moveDbParam.status = data.value;
  518. });
  519. App.postJson("/api/dict/query/index", {}, function (res) {
  520. self.JSDD = res.data.JSDD;
  521. })
  522. this.winH = document.body.clientHeight;
  523. var nowdate = new Date();
  524. nowdate.setMonth(nowdate.getMonth() + 1);
  525. var y = nowdate.getFullYear();
  526. var m = nowdate.getMonth() + 1;
  527. var d = nowdate.getDate();
  528. layui.laydate.render({
  529. elem: '#startTime',
  530. range: '~',
  531. theme: layDateTheme,
  532. /* value: y + "-01-01 ~ " + y + "-12-31"*/
  533. });
  534. var formatwdate = y + '-' + m + '-' + d;
  535. layui.laydate.render({
  536. elem: '#dateConfirm',
  537. theme: layDateTheme,
  538. value: formatwdate
  539. });
  540. /* $("#month").val(new Date().getMonth() + 1);*/
  541. var xmlx = [];
  542. <c:forEach items="${XMLX}" var="xm">
  543. xmlx.push({value: "${xm.code}", name: "${xm.title}"});
  544. </c:forEach>
  545. <%--var indusKindData = [];--%>
  546. <%--<c:forEach items="${HYFL}" var="xm">--%>
  547. <%--var childData = [];--%>
  548. <%--<c:forEach items="${xm.children}" var="c">--%>
  549. <%--childData.push({--%>
  550. <%-- value: "${c.code}",--%>
  551. <%-- name: "${c.title}",--%>
  552. <%--})--%>
  553. <%--</c:forEach>--%>
  554. <%--indusKindData.push(--%>
  555. <%-- {--%>
  556. <%-- value: "${xm.code}",--%>
  557. <%-- name: "${xm.title}",--%>
  558. <%-- children: childData--%>
  559. <%-- });--%>
  560. <%--</c:forEach>--%>
  561. <%--this.indusKind = layui.xmSelect.render({--%>
  562. <%-- el: "#indusKind",--%>
  563. <%-- language: 'zn',--%>
  564. <%-- data: indusKindData,--%>
  565. <%--});--%>
  566. var kindNatureData = [];
  567. <c:forEach items="${TZXZ}" var="xm">
  568. kindNatureData.push({value: "${xm.code}", name: "${xm.title}"});
  569. </c:forEach>
  570. this.kindNature = layui.xmSelect.render({
  571. el: "#kindNature",
  572. language: 'zn',
  573. data: kindNatureData
  574. });
  575. layui.laydate.render({
  576. elem: '#year',
  577. type: 'year',
  578. theme: layDateTheme,
  579. /* value: new Date().getFullYear()*/
  580. })
  581. var params = window.localStorage.getItem(this.cacheName);
  582. if (params) {
  583. layui.form.val("searchForm", JSON.parse(params));
  584. }
  585. <%--if(${isHydw}) {--%>
  586. <%-- this.light = layui.xmSelect.render({--%>
  587. <%-- el: "#light",--%>
  588. <%-- language:'zn',--%>
  589. <%-- data: [--%>
  590. <%-- {value: '0', name:'绿灯'},--%>
  591. <%-- {value: '1', name:'黄灯'},--%>
  592. <%-- {value: '2', name:'红灯'}--%>
  593. <%-- ]--%>
  594. <%-- })--%>
  595. <%--}--%>
  596. this.getData();
  597. window.toDetail = this.toDetail;
  598. window.levelList = this.levelList;
  599. window.showImage = this.showImage;
  600. $(".hiddenParams").show();
  601. },
  602. leaderSupervise: function (obj) {
  603. App.openLayer({
  604. title: "督办信息",
  605. content: App.getUrl("/meetingRecords/leaderMeeting?subId=" + obj.data.id),
  606. height: "600",
  607. width: "800"
  608. })
  609. },
  610. setIsNew: function (obj) {
  611. var self = this;
  612. App.msg.confirm("是否移入新建库?", function () {
  613. App.postJson("/api/subject/subInfo/setIsNew", {subId: obj.data.id}, function (res) {
  614. if (res.success) {
  615. App.msg.success("设置成功");
  616. self.getData();
  617. layer.close(index);
  618. }
  619. });
  620. });
  621. },
  622. showImage: function (that) {
  623. var imageUrl = $(that).find("img").eq(0).attr("realUrl");
  624. if (imageUrl) {
  625. // layer.open({
  626. // type: 2,
  627. // content: imageUrl,
  628. // area: ['500px', '1000px'],
  629. // offset: 'auto',
  630. // success: function(obj,index){
  631. // layer.full(index);
  632. // }
  633. // })
  634. layer.photos({
  635. photos: {
  636. "title": "",
  637. "id": "",
  638. "start": 0,
  639. "data": [
  640. {
  641. "alt": "",
  642. "pid": "",
  643. "src": imageUrl,
  644. "thumb": imageUrl
  645. }
  646. ]
  647. },
  648. anim: 5,
  649. closeBtn: "1",
  650. success: function () {
  651. //以鼠标位置为中心的图片滚动放大缩小
  652. $(document).on("mousewheel", ".layui-layer-photos", function (ev) {
  653. var oImg = this;
  654. var ev = event || window.event;//返回WheelEvent
  655. //ev.preventDefault();
  656. var delta = ev.detail ? ev.detail > 0 : ev.wheelDelta < 0;
  657. var ratioL = (ev.clientX - oImg.offsetLeft) / oImg.offsetWidth,
  658. ratioT = (ev.clientY - oImg.offsetTop) / oImg.offsetHeight,
  659. ratioDelta = !delta ? 1 + 0.1 : 1 - 0.1,
  660. w = parseInt(oImg.offsetWidth * ratioDelta),
  661. h = parseInt(oImg.offsetHeight * ratioDelta),
  662. l = Math.round(ev.clientX - (w * ratioL)),
  663. t = Math.round(ev.clientY - (h * ratioT));
  664. $(".layui-layer-photos").css({
  665. width: w, height: h
  666. , left: l, top: t
  667. });
  668. $("#layui-layer-photos").css({width: w, height: h});
  669. $("#layui-layer-photos>img").css({width: w, height: h});
  670. });
  671. }
  672. , end: function () { //销毁回调
  673. }
  674. });
  675. }
  676. },
  677. setQueryForm2: function () {
  678. $("#searchForm").find(".layui-form-item").parent()
  679. .removeClass("layui-col-xs3").removeClass("layui-col-sm3").removeClass("layui-col-md3")
  680. .addClass("layui-col-xs5").addClass("layui-col-sm5").addClass("layui-col-md5");
  681. },
  682. setQueryForm4: function () {
  683. $("#searchForm").find(".layui-form-item").parent()
  684. .removeClass("layui-col-xs5").removeClass("layui-col-sm5").removeClass("layui-col-md5")
  685. .addClass("layui-col-xs3").addClass("layui-col-sm3").addClass("layui-col-md3");
  686. },
  687. showMore: function () {
  688. this.showMoreFlag = !this.showMoreFlag;
  689. if (this.showMoreFlag) {
  690. $(".hiddenParam").show();
  691. } else {
  692. $(".hiddenParam").hide();
  693. }
  694. /* var self = this;
  695. layer.open({
  696. title: "查询条件",
  697. type: 1,
  698. area: ['800px', ''],
  699. offset:0,
  700. shade: 0.1,
  701. shadeClose: true,
  702. content: $("#searchForm"),
  703. btn: ["查询"],
  704. yes: function (index) {
  705. self.search();
  706. layer.close(index);
  707. },
  708. success: function () {
  709. self.setQueryForm2();
  710. $(".hiddenParam").show();
  711. $(".hiddenParams").hide();
  712. },
  713. end: function () {
  714. self.setQueryForm4();
  715. $(".hiddenParam").hide();
  716. $(".hiddenParams").show();
  717. }
  718. })*/
  719. },
  720. getSearchParams: function () {
  721. var param = layui.form.getValue("searchForm");
  722. if (param.rangeDate) {
  723. param.beginDate = param.rangeDate.split(" ~ ")[0];
  724. param.endDate = param.rangeDate.split(" ~ ")[1];
  725. param.rangeDate = null;
  726. }
  727. if (this.light) {
  728. param.light = this.light.getValue("valueStr");
  729. }
  730. if (this.indusKind) {
  731. param.indusKind = this.indusKind.getValue("valueStr");
  732. }
  733. if (this.kindNature) {
  734. param.kindNature = this.kindNature.getValue("valueStr");
  735. }
  736. delete (param.select);
  737. /* param.kind = this.kind.getValue("value").sort().join(",");*/
  738. return param;
  739. },
  740. getData: function () {
  741. var self = this;
  742. var param = this.getSearchParams();
  743. param.pageNo = this.pageNo;
  744. param.pageSize = this.pageSize;
  745. param.orderBy = this.sort.field;
  746. param.orderType = this.sort.type || "asc";
  747. // 查询 table 数据列表
  748. // App.postJson("/api/subInfo/query/all", param, function (res) {
  749. // self.dataList = res.rows;
  750. // self.loadPage(res.total);
  751. // self.loadTable();
  752. // });
  753. // 表格分页数据
  754. App.postJson("/api/subInfo/query/queryPage", param, function (res) {
  755. self.dataList = res.rows;
  756. self.loadPage(res.total);
  757. self.loadTable();
  758. });
  759. // 统计数据
  760. App.postJson("/api/subInfo/query/statistics", param, function (res) {
  761. if (res.success) {
  762. self.beginRate = res.data;
  763. self.beginRate.hyflList = self.beginRate.hyflData;
  764. self.beginRate.jsddList = self.beginRate.jsddData;
  765. }
  766. });
  767. /*App.postJson("/api/subInfo/query/beginRate", param, function (res) {
  768. if (res.success) {
  769. self.beginRate = res.data;
  770. self.beginRate.hyflList = self.beginRate.hyflData.split(";");
  771. self.beginRate.tzlxList = self.beginRate.tzlxData.split(";");
  772. self.beginRate.jsddList = self.beginRate.jsddData.split(";");
  773. if (res.data.total != 0) {
  774. self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2);
  775. } else {
  776. self.beginRate.beginRate = 0;
  777. }
  778. if (res.data.yearAmt != 0) {
  779. self.beginRate.amtRate = (res.data.yearAmtSj * 100 / res.data.yearAmt).toFixed(2);
  780. } else if (res.data.yearAmtSj != 0) {
  781. self.beginRate.amtRate = 100;
  782. } else {
  783. self.beginRate.amtRate = 0;
  784. }
  785. if (res.data.total != 0) {
  786. self.beginRate.noRate = (res.data.noNum * 100 / res.data.total).toFixed(2) + '%';
  787. self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2) + '%';
  788. self.beginRate.endRate = (res.data.endNum * 100 / res.data.total).toFixed(2) + '%';
  789. self.beginRate.stopRate = (res.data.stopNum * 100 / res.data.total).toFixed(2) + '%';
  790. self.beginRate.aRate = (res.data.aNum * 100 / res.data.total).toFixed(2) + '%';
  791. self.beginRate.bRate = (res.data.bNum * 100 / res.data.total).toFixed(2) + '%';
  792. self.beginRate.cRate = (res.data.cNum * 100 / res.data.total).toFixed(2) + '%';
  793. } else {
  794. self.beginRate.noRate = "0%";
  795. self.beginRate.beginRate = "0%";
  796. self.beginRate.endRate = "0%";
  797. self.beginRate.stopRate = "0%";
  798. self.beginRate.aRate = "0%";
  799. self.beginRate.bRate = "0%";
  800. self.beginRate.cRate = "0%";
  801. }
  802. } else {
  803. self.beginRate.beginRate = 0;
  804. self.beginRate.amtRate = 0;
  805. }
  806. });*/
  807. },
  808. getStatusName: function (status) {
  809. const statusMap = {
  810. '1': '储备',
  811. '2': '新建',
  812. '3': '在建',
  813. '9': '投产'
  814. };
  815. return statusMap[status] || '未知状态';
  816. },
  817. adjustFrozenRowHeight: function () {
  818. $(".layui-table-body tr").each(function (index, val) {
  819. const fixedRow = $(".layui-table-fixed .layui-table-body table tr")[index];
  820. $(fixedRow).height($(val).height());
  821. });
  822. },
  823. loadTable: function () {
  824. this.dataList.forEach(item => {
  825. item.statusName = this.getStatusName(item.status);
  826. });
  827. const self = this;
  828. layui.table.render({
  829. elem: '#table1',
  830. even: true,
  831. autoSort: false,
  832. initSort: self.sort,
  833. cols: [[
  834. {type: 'numbers', align: 'center', width: 44, title: '序号',fixed: 'left'},
  835. {field: 'subName', title: '项目名称', minWidth: 200, templet: '#subName',fixed: 'left'},
  836. {field: 'subjectName', title: '项目所在地', width: 100},
  837. {field: 'content', title: '建设内容', minWidth: 300},
  838. {
  839. field: 'amtTotal',
  840. title: '总投资',
  841. width: 100,
  842. templet: d => (d.amtTotal / 10000).toFixed(2) + "亿元"
  843. },
  844. {field: 'statusName', title: '状态', width: 160},
  845. {field: 'beginDate', title: '计划开工日期', minWidth: 160},
  846. {field: 'endDate', title: '计划完工日期', minWidth: 160},
  847. {title: '操作', minWidth: 225, toolbar: '#toolBar', fixed: 'right'},
  848. ]],
  849. fixed: true,
  850. height: $(window).height() - $('#table1').offset().top - 50,
  851. data: self.dataList,
  852. done: function () {
  853. self.adjustFrozenRowHeight();
  854. }
  855. });
  856. layui.table.on('tool(' + this.tableName + ')', obj => {
  857. const { event } = obj;
  858. if (typeof self[event] === 'function') {
  859. self[event](obj);
  860. } else {
  861. console.warn(`未定义的事件: ${event}`);
  862. }
  863. });
  864. layui.table.on('sort(' + this.tableName + ')', function (obj) {
  865. self.sort = obj;
  866. self.getData();
  867. });
  868. },
  869. toBack: function (obj) {
  870. layer.open({
  871. type: 1,
  872. title: "退回",
  873. content: $("#toBack"),
  874. area: ['600px', ''],
  875. btn: ["保存", "取消"],
  876. yes: function (index) {
  877. var data = layui.form.val("toBackForm");
  878. var status = data.status;
  879. if (status != undefined) {
  880. if (parseInt(obj.data.status) <= parseInt(data.status)) {
  881. App.msg.warn("只能退回下级状态,请检查!!!!");
  882. return;
  883. }
  884. }
  885. App.postJson("/api/subject/subInfo/toTemp", {
  886. subId: obj.data.id,
  887. status: data.status
  888. }, function (res) {
  889. if (res.success) {
  890. layer.msg("成功", {icon: 6, time: 1000});
  891. //
  892. window.location.href = App.getUrl("subject/subInfo/projTz?type=4");
  893. }
  894. });
  895. },
  896. close: function (index) {
  897. layer.close(index);
  898. }
  899. })
  900. },
  901. isNoHide: function (obj) {
  902. var self = this;
  903. App.msg.confirm("是否移除在建库?", function () {
  904. App.postJson("/api/subject/subInfo/setBackIsHide", {subId: obj.data.id}, function (res) {
  905. if (res.success) {
  906. App.msg.success("设置成功");
  907. self.getData();
  908. layer.close(index);
  909. }
  910. });
  911. });
  912. },
  913. move (obj) {
  914. this.moveDbParam.id = obj.data.id
  915. this.moveDbParam.status = obj.data.cbStatus
  916. layer.open({
  917. type: 1,
  918. title: '标题',
  919. content: '<div class="layui-form" style="padding: 20px;">' +
  920. '<div class="layui-form-item">' +
  921. '<label class="layui-form-label">当前状态:</label>' +
  922. '<div class="layui-input-block">' +
  923. '<input type="text" name="currentState" value="储备库" disabled class="layui-input">' +
  924. '</div>' +
  925. '</div>' +
  926. '<div class="layui-form-item">' +
  927. '<label class="layui-form-label">移入到:</label>' +
  928. '<div class="layui-input-block">' +
  929. '<select v-model="subInfo.status" lay-filter="moveStatus" lay-verify="required">' +
  930. '<option value="">请选择</option>' +
  931. '<option value="2">新建</option>' +
  932. '<option value="3">在建</option>' +
  933. '<option value="9">投产</option>' +
  934. '</select>' +
  935. '</div>' +
  936. '</div>' +
  937. '<div class="layui-form-item" style="text-align: right;">' +
  938. '<button type="button" class="layui-btn layui-btn-primary layui-border" onclick="vm.closeAllLayers()">取消</button>' +
  939. '<button type="button" class="layui-btn moveConfirm" onclick="vm.confirmMove()">确认移入</button>' +
  940. '</div>' +
  941. '</div>',
  942. area: ['350px', '300px'],
  943. success: function(layero, index){
  944. layui.form.render();
  945. }
  946. });
  947. },
  948. isHide: function (obj) {
  949. var self = this;
  950. App.msg.confirm("是否移入在建库?", function () {
  951. App.postJson("/api/subject/subInfo/setIsHide", {subId: obj.data.id}, function (res) {
  952. if (res.success) {
  953. App.msg.success("设置成功");
  954. self.getData();
  955. layer.close(index);
  956. }
  957. });
  958. });
  959. },
  960. loadPage: function (totalCount) {
  961. var self = this;
  962. layui.laypage.render({
  963. elem: 'pagination',
  964. count: totalCount,
  965. curr: self.pageNo,
  966. limit: self.pageSize,
  967. layout: ['count', 'prev', 'page', 'next', 'skip'],
  968. jump: function (obj, first) {
  969. //首次不执行
  970. if (!first) {
  971. self.pageNo = obj.curr;
  972. self.getData();
  973. }
  974. }
  975. });
  976. },
  977. yearPlan: function (obj) {
  978. window.location.href = App.getUrl("amtPlan/detail?subId=" + obj.data.id);
  979. },
  980. setSubReason: function (obj) {
  981. var self = this;
  982. layui.form.val("reasonForm", obj.data);
  983. layer.open({
  984. type: 1,
  985. title: "项目原因录入",
  986. content: $("#setReason"),
  987. area: ['880px', '560px'],
  988. btn: ["保存", "取消"],
  989. yes: function (index) {
  990. var reason = layui.form.val("reasonForm");
  991. reason.subId = obj.data.id;
  992. App.postJson("/api/subject/subInfo/setSubReason", reason, function (res) {
  993. if (res.success) {
  994. App.msg.success("设置成功");
  995. self.getData();
  996. layer.close(index);
  997. }
  998. });
  999. },
  1000. close: function (index) {
  1001. layer.close(index);
  1002. }
  1003. })
  1004. },
  1005. problem: function (obj) {
  1006. var self = this;
  1007. obj.data.status_reason = "";
  1008. layui.form.val("problemForm", obj.data);
  1009. layer.open({
  1010. type: 1,
  1011. title: "问题督办",
  1012. content: $("#problem"),
  1013. area: ['800px', '600px'],
  1014. btn: ["保存", "取消"],
  1015. yes: function (index) {
  1016. var reason = layui.form.val("problemForm");
  1017. reason.subId = obj.data.id;
  1018. if (reason.statusF == "2" || reason.statusF == "1") {
  1019. if (reason.status_reason == "" || reason.status_reason == undefined) {
  1020. layer.msg("红灯,黄灯必须输入原因");
  1021. return;
  1022. }
  1023. }
  1024. App.postJson("/api/subject/subInfo/setStatus", {
  1025. subId: obj.data.id,
  1026. statusFgw: reason.statusF,
  1027. reason: reason.status_reason,
  1028. dateConfirm: reason.dateConfirm
  1029. }, function (res) {
  1030. if (res.success) {
  1031. App.msg.success("设置成功");
  1032. self.getData();
  1033. layer.close(index);
  1034. }
  1035. });
  1036. },
  1037. close: function (index) {
  1038. layer.close(index);
  1039. }
  1040. })
  1041. },
  1042. exportTotalExcel: function () {
  1043. var param = this.getSearchParams();
  1044. App.common.utils.downFile(App.getUrl("subInfoExport/exportTotalExcelByStatus"), "POST", param, "项目情况表(总库).xlsx", "导出失败");
  1045. },
  1046. exportDetailExcel: function () {
  1047. var param = this.getSearchParams();
  1048. App.common.utils.downFile(App.getUrl("subInfoExport/exportDetailExcel"), "POST", param, "项目明细表(总库).xlsx", "导出失败");
  1049. },
  1050. exportExcel: function () {
  1051. var param = this.getSearchParams();
  1052. App.common.utils.downFile(App.getUrl("subInfoExport/exportSumExcel"), "POST", param, "项目情况表.xlsx", "导出失败");
  1053. },
  1054. exportExcelByIndusKind: function () {
  1055. var param = this.getSearchParams();
  1056. App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelByIndusKind"), "POST", param, "项目情况表(按所属行业统计).xlsx", "导出失败");
  1057. },
  1058. exportSchedulingExcel: function () {
  1059. var param = this.getSearchParams();
  1060. App.common.utils.downFile(App.getUrl("subInfoExport/exportSchedulingExcel"), "POST", param, "项目调度表.xlsx", "导出失败");
  1061. },
  1062. /* exportExcel2: function(){
  1063. var param = this.getSearchParams();
  1064. App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelTz"),"POST", param,"项目详情信息表.xlsx", "导出失败");
  1065. }, */
  1066. exportMoreExcel: function () {
  1067. top.window.getSearchParams = this.getSearchParams;
  1068. App.openLayer({
  1069. title: "自定义导出",
  1070. content: App.getUrl("/subInfoExport/index"),
  1071. height: "800",
  1072. width: "1000"
  1073. })
  1074. },
  1075. toQcc: function (obj) {
  1076. window.open('https://www.qcc.com/web/search?key=' + obj.data.unitName, '_blank')
  1077. },
  1078. toManagerUnit: function (obj) {
  1079. //详情
  1080. var index = layer.open({
  1081. type: 2,
  1082. title: '',
  1083. area: ['1000px', '800px'],
  1084. // /subject/subInfo/editSubInfo
  1085. content: App.getUrl("/subject/subInfo/manageUnit?subId=" + obj.data.id + "&queryType=3"),
  1086. });
  1087. layui.layer.full(index);
  1088. },
  1089. toDetail: function (obj) {
  1090. //详情
  1091. var index = layer.open({
  1092. type: 2,
  1093. title: '',
  1094. area: ['1000px', '800px'],
  1095. content: App.getUrl("/subject/subInfo/detailView2?layer=true&subId=" + obj.data.id + "&lastUrl=" + window.location.href),
  1096. });
  1097. layui.layer.full(index);
  1098. },
  1099. /* toDetail: function (obj) {
  1100. //详情
  1101. var index = layer.open({
  1102. type: 2,
  1103. title: '',
  1104. area: ['1000px', '800px'],
  1105. content: App.getUrl("/subject/subInfo/detailView?layer=true&subId=" + obj.data.id + "&lastUrl=" + window.location.href),
  1106. });
  1107. layui.layer.full(index);
  1108. },*/
  1109. levelList: function (field, title, val) {
  1110. //详情
  1111. var param = field + "," + title + "," + val
  1112. var params = encodeURIComponent(JSON.stringify(this.getSearchParams()));
  1113. var index = top.layer.open({
  1114. type: 2,
  1115. title: '',
  1116. area: ['90%', '90%'],
  1117. content: App.getUrl("/subject/subInfo/levelList?layer=true&type=" + this.getSearchParams().queryType + "&curParam=" + param + "&params=" + params),
  1118. });
  1119. //top.layer.full(index);
  1120. },
  1121. print: function (obj) {
  1122. window.open(App.getUrl("/subject/apply/downPdf?subId=" + obj.data.id));
  1123. },
  1124. toEditSubInfo: function (obj) {
  1125. window.location.href = App.getUrl("/subject/subInfo/editSubInfo2?subId=" + obj.data.id + "&queryType=3");
  1126. },
  1127. preNew: function (obj) {
  1128. window.location.href = App.getUrl("/subPreNew/todo?subId=" + obj.data.id);
  1129. },
  1130. toTh: function (obj) {
  1131. if (obj.data.statusJh == null || obj.data.statusJh == '0' || obj.data.statusJh == '1') {
  1132. App.msg.confirm("是否需要退回到暂存状态?", function () {
  1133. App.postJson("/api/subject/subInfo/toTemp", {subId: obj.data.id, status: "0"}, function (res) {
  1134. if (res.success) {
  1135. layer.msg("成功", {icon: 6, time: 1000});
  1136. //
  1137. window.location.href = App.getUrl("subject/subInfo/projTz");
  1138. }
  1139. });
  1140. })
  1141. } else {
  1142. App.msg.warn("已做过开工申报,需要走变更流程");
  1143. }
  1144. },
  1145. search: function () {
  1146. var param = layui.form.getValue("searchForm");
  1147. window.localStorage.setItem(this.cacheName, JSON.stringify(param));
  1148. this.pageNo = 1;
  1149. this.getData();
  1150. },
  1151. openExport: function () {
  1152. this.showExport = true;
  1153. console.log('移入了')
  1154. },
  1155. choseExport: function () {
  1156. this.showExport = false;
  1157. console.log('移出了')
  1158. }
  1159. }
  1160. });
  1161. </script>
  1162. </body>
  1163. </html>