new.jsp 59 KB

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