projectInfo.jsp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8" %>
  3. <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
  4. <%@ page isELIgnored="false" %>
  5. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  6. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  7. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  8. <!DOCTYPE html>
  9. <html>
  10. <head>
  11. <meta charset="utf-8"/>
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
  13. <meta name="viewport"
  14. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
  15. <title>项目信息</title>
  16. </head>
  17. <jsp:include page="../common/common-meta-include.jsp"></jsp:include>
  18. <jsp:include page="../common/common-js-include.jsp"></jsp:include>
  19. <jsp:include page="../common/common-css-include.jsp"></jsp:include>
  20. <style>
  21. .project-title {
  22. width: 100%;
  23. margin: 17px 0;
  24. font-weight: 500;
  25. font-size: 27px;
  26. color: #333333;
  27. text-align: center;
  28. }
  29. .project-status {
  30. display: flex;
  31. align-items: center;
  32. justify-content: center;
  33. width: 100%;
  34. height: 45px;
  35. margin-bottom: 23px;
  36. font-weight: 400;
  37. font-size: 14px;
  38. color: #333333;
  39. background: rgba(28, 86, 163, 0.05);
  40. }
  41. .project-status-light img {
  42. width: 28px;
  43. height: 28px;
  44. margin-top: -3px;
  45. }
  46. .project-status-offset,
  47. .project-status-info {
  48. height: 14px;
  49. margin-left: 10px;
  50. padding-left: 10px;
  51. line-height: 14px;
  52. box-sizing: border-box;
  53. border-left: 1px solid #DDDDDD;
  54. }
  55. .project-status-info button {
  56. width: fit-content;
  57. height: 18px;
  58. margin: -2px 2px 0 2px;
  59. padding: 2px;
  60. box-sizing: border-box;
  61. line-height: 14px;
  62. color: #fff;
  63. border-radius: 2px;
  64. cursor: pointer;
  65. }
  66. .project-status-plan {
  67. display: flex;
  68. align-items: center;
  69. }
  70. .plan-box {
  71. display: flex;
  72. align-items: center;
  73. height: 14px;
  74. margin-left: 10px;
  75. padding-left: 10px;
  76. line-height: 14px;
  77. box-sizing: border-box;
  78. border-left: 1px solid #DDDDDD;
  79. }
  80. .plan-icon {
  81. display: flex;
  82. justify-content: center;
  83. align-items: center;
  84. width: 16px;
  85. height: 16px;
  86. margin-right: 3px;
  87. border-radius: 50%;
  88. color: #fff;
  89. background: gray;
  90. }
  91. .plan-icon-done {
  92. background: #4979cf;
  93. }
  94. .page-table {
  95. margin: 0 0 22px !important;
  96. }
  97. .table_box .table1 .label {
  98. color: #999;
  99. }
  100. .right_title {
  101. /*margin-bottom: 20px;*/
  102. }
  103. .layui-layout::-webkit-scrollbar {
  104. width: 0;
  105. }
  106. </style>
  107. <body>
  108. <div id="app"></div>
  109. <template id="template">
  110. <div class="layui-layout layui-layout-admin" style="padding: 0 20px 150px;overflow: auto">
  111. <input type="hidden" id="subId" value="${sunInfo.id }"/>
  112. <%-- <input type="hidden" id="projectName" value="${sunInfo.sub_name }"/>--%>
  113. <%-- <input type="hidden" id="unitName" value="${sunInfo.unitName }"/>--%>
  114. <div class="table_box">
  115. <table class="table1 page-table">
  116. <tr>
  117. <td class="label" style="width: 10%">项目代码</td>
  118. <td style="width: 40%">${sunInfo.subCode }</td>
  119. <td class="label" style="width: 10%">项目名称</td>
  120. <td style="width: 40%">${sunInfo.subName }</td>
  121. </tr>
  122. <tr>
  123. <td class="label" style="width: 10%">4库状态</td>
  124. <td style="width: 40%">${sunInfo.statusName }</td>
  125. <td class="label" style="width: 10%">所属行业</td>
  126. <td style="width: 40%">${sunInfo.indusName }</td>
  127. </tr>
  128. <tr>
  129. <%--<td class="label" style="display: none">项目类型</td>
  130. <td style="display: none">${sunInfo.kindName }</td>--%>
  131. <td class="label">项目所在地</td>
  132. <td>${sunInfo.subjectName }</td>
  133. <td class="label">项目地址</td>
  134. <td>${sunInfo.addre }</td>
  135. </tr>
  136. <tr>
  137. <td class="label">建设内容及规模</td>
  138. <td>${sunInfo.content }</td>
  139. <td class="label">备注</td>
  140. <td>${sunInfo.remark }</td>
  141. </tr>
  142. <tr>
  143. <td class="label">项目单位</td>
  144. <td>${sunInfo.unitDesc }</td>
  145. <td class="label">红黄灯</td>
  146. <td>${sunInfo.statusRedName }</td>
  147. </tr>
  148. <tr>
  149. <td class="label">创建用户</td>
  150. <td>${sunInfo.createUserName }</td>
  151. <td class="label">创建时间</td>
  152. <td><fmt:formatDate value="${sunInfo.createTime }" pattern="yyyy-MM-dd HH:mm:ss"/></td>
  153. </tr>
  154. </table>
  155. <div class="table-title">资金信息</div>
  156. <table class="table1 page-table">
  157. <tr>
  158. <td class="label" style="width:20%">总投资金额</td>
  159. <td style="width: 40%">${sunInfo.amtTotal }万元</td>
  160. </tr>
  161. <%-- <tr>
  162. <td class="label" rowspan="${rowNum }">资金来源</td>
  163. <c:if test="${rowNum == 1 }">
  164. <td colspan="3"></td>
  165. </c:if>
  166. </tr>
  167. <c:forEach items="${subSource}" var="source">
  168. <tr>
  169. <td class="label">${source.sourceName }</td>
  170. <td colspan="1">投资:${source.amt }万元</td>
  171. <td colspan="1">到位:${source.amtSj}万元</td>
  172. </tr>
  173. </c:forEach>
  174. <tr>
  175. <td class="label" style="width: 10%;">年度计划投资(发改委)</td>
  176. <td style="width: 40%;">${sunInfo.amt_year }万元</td>
  177. <td class="label" >到位资金</td>
  178. <td style="width: 40%">${sunInfo.amt_comptotal }万元</td>
  179. </tr>
  180. <tr>
  181. <td class="label" style="width: 10%;">${currYear}年度计划月累计金额</td>
  182. <td style="width: 40%;">${currYearAmtPlan }万元</td>
  183. <td class="label" >实际完成资金</td>
  184. <td style="width: 40%">${sunInfo.yearAmtSj }万元</td>
  185. </tr>--%>
  186. </table>
  187. <div class="table-title">项目进度</div>
  188. <table class="table1 page-table">
  189. <tr>
  190. <td class="label">计划开工时间</td>
  191. <td><fmt:formatDate value="${sunInfo.beginDate }" pattern="yyyy-MM-dd"/></td>
  192. <td class="label">计划竣工时间</td>
  193. <td><fmt:formatDate value="${sunInfo.endDate }" pattern="yyyy-MM-dd"/></td>
  194. </tr>
  195. <tr>
  196. <td class="label">平台联系人</td>
  197. <td>${sunInfo.nameZrr }</td>
  198. <td class="label">平台联系人电话</td>
  199. <td>${sunInfo.tel }</td>
  200. </tr>
  201. <tr>
  202. <td class="label">项目总负责人</td>
  203. <td>${sunInfo.nameLead }</td>
  204. <td class="label">项目总负责人电话</td>
  205. <td>${sunInfo.telLead }</td>
  206. </tr>
  207. </table>
  208. </div>
  209. </div>
  210. </template>
  211. <%--<script type="text/html" id="imageDiv">
  212. <div style="width:50px;height:50px" onclick="showImage(this)">
  213. {{# if(d.fileType == null || d.fileAddre == null || d.fileAddre == '') { }}
  214. {{# } else if(d.fileType == 'application/pdf'){ }}
  215. <img src="${WebSite.asset}/css/images/pdf.png" realUrl="${domain}/static/file/{{d.fileAddre}}/showfile" width="50px" height="50px"/>
  216. {{# }else { }}
  217. <img src="${domain}/static/file/{{d.fileAddre}}/showfile" realUrl="${domain}/static/file/{{d.fileAddre}}/showfile" width="50px" height="50px"/>
  218. {{#} }}
  219. </div>
  220. </script>--%>
  221. <%--<script type="text/html" id="statusSp">
  222. <div>
  223. {{# if(d.statusSp == '0') { }}
  224. <span style="color:red;">待审核</span>
  225. {{# } else if(d.statusSp == '1'){ }}
  226. <span>退回修改</span>
  227. {{# }else if(d.statusSp == '2'){ }}
  228. <span>不同意</span>
  229. {{#} else if(d.statusSp == '9'){ }}
  230. <span>已审核</span>
  231. {{#} }}
  232. </div>
  233. </script>--%>
  234. <script>
  235. new Vue({
  236. el: "#app",
  237. template: "#template",
  238. data: {
  239. winH: 0,
  240. hzba: [],
  241. kgsp: [],
  242. jgdw: [],
  243. shgc: [],
  244. collapse: false,
  245. tabActive: 1,
  246. active: 4, // 左侧菜单选中项
  247. imgLs: 10
  248. },
  249. mounted: function () {
  250. this.init()
  251. window.planDetail = this.detailPlan;
  252. window.showImage = this.showImage;
  253. },
  254. methods: {
  255. init: function () {
  256. this.winH = document.body.clientHeight;
  257. const {laydate, table} = layui;
  258. laydate.render({
  259. elem: '#startTime'
  260. })
  261. laydate.render({
  262. elem: '#endTime'
  263. })
  264. // window.showImage = this.showImage;
  265. this.loadData();
  266. },
  267. /* loadTable: function(data){
  268. layui.table.render({
  269. elem: '#table1', // 指定原始表格元素选择器(推荐id选择器)
  270. even: true,
  271. cols: [[ // 设置表头
  272. {type: 'numbers', fixed: 'left', align: 'center',title: '序号'},
  273. {title: '', fixed: 'left', align:'center', templet: function(row) {
  274. return '<span class="step step_' + (row.statusSp === "1" ? 'half' : (row.statusSp === "0" ? 'empty' : '')) + '"></span>'
  275. }},
  276. {field: 'beginDate', title: '开始时间'},
  277. {field: 'endDate', title: '结束时间'},
  278. {field: 'content', title: '当前阶段'},
  279. {field: 'stateSp', title: '计划状态', align:'center', templet: function(row) {
  280. var s = "";
  281. if(row.statusSp == "0"){
  282. s = "未开工";
  283. }else if(row.statusSp == "1"){
  284. s = "进行中";
  285. }else{
  286. s = "已竣工";
  287. }
  288. return '<span>' + s + '</span>';
  289. }},
  290. {title: '操作', width: 120, templet: function(row) {
  291. return '<div class="toolBar"><span onclick="planDetail(\''+ row.id +'\',\''+ row.statusSp +'\')">查看</span></div>'
  292. }}
  293. ]],
  294. data:data
  295. })
  296. }, */
  297. loadTablePre: function (data) {
  298. layui.table.render({
  299. elem: '#table2', // 指定原始表格元素选择器(推荐id选择器)
  300. even: true,
  301. cols: [[ // 设置表头
  302. {type: 'numbers', title: '序号', width: 44},
  303. {field: 'preName', title: '前期说明', minWidth: 100},
  304. {field: 'statusName', title: '办理状态'},
  305. {field: 'unitName', title: '批复单位',},
  306. /* {field: 'amtJh', title: '计划投资金额', minWidth: 200}, */
  307. {field: 'datePlan', title: '开始办理时间', width: 150},
  308. {field: 'dateConfirm', title: '实际批复时间', width: 150},
  309. {field: 'apprNo', title: '批复文号', minWidth: 100},
  310. {
  311. field: 'fileAddre', title: '附件', templet: function (d) {
  312. return '<div><img src="' + d.fileAddre + '"></div>';
  313. }
  314. },
  315. {field: 'fileName', title: '附件名称',},
  316. {title: '操作', align: 'center', toolbar: '#toolBar1'}
  317. ]],
  318. data: data
  319. });
  320. },
  321. showImage: function (that) {
  322. var imageUrl = $(that).find("img").eq(0).attr("realUrl");
  323. if (imageUrl) {
  324. layer.open({
  325. type: 2,
  326. content: imageUrl,
  327. area: ['500px', '500px'],
  328. offset: 'auto'
  329. })
  330. }
  331. },
  332. loadData() {
  333. var self = this;
  334. var subId = $("#subId").val();
  335. var projectName = $("#projectName").val();
  336. var unitName = $("#unitName").val();
  337. /* App.postJson("/api/subPlan/getPlanBySub",{subId:subId},function(res){
  338. if(res.success){
  339. for(let i=0;i<res.data.length;i++){
  340. res.data[i].projectName = projectName;
  341. res.data[i].unitName = unitName;
  342. }
  343. self.loadTable(res.data);
  344. }
  345. }); */
  346. /* App.postJson("/api/subject/subPre/getBySubId",{subId : subId}, function(res){
  347. if(res.success){
  348. self.hzba = res.data["1"] || [];
  349. self.kgsp = res.data["2"] || [];
  350. self.loadHzbaTable();
  351. self.loadKgspTable();
  352. setTimeout(function() {
  353. layui.form.render();
  354. }, 200);
  355. }
  356. }); */
  357. App.postJson("/api/subject/subInfo/listManage", {subId: subId}, function (res) {
  358. if (res.success) {
  359. self.jgdw = res.data.length > 0 ? [res.data[0]] : [];
  360. self.loadJgdwTable();
  361. setTimeout(function () {
  362. layui.form.render();
  363. }, 200);
  364. }
  365. });
  366. App.postJson("/api/subject/subInfo/listVerify", {subId: subId}, function (res) {
  367. if (res.success) {
  368. self.shgc = res.data;
  369. self.loadShgcTable();
  370. setTimeout(function () {
  371. layui.form.render();
  372. }, 200);
  373. }
  374. });
  375. // App.postJson("/api/subject/subPre/getBySubId",{subId : subId}, function(res){
  376. // if(res.success){
  377. // self.loadTablePre(res.data);
  378. // }
  379. // });
  380. },
  381. print: function (obj) {
  382. window.open(App.getUrl("/subject/apply/downPdf?subId=${sunInfo.id}"));
  383. },
  384. toPre: function (id) {
  385. window.open(App.getUrl("/subPreNew/todo?subId=${sunInfo.id}"));
  386. },
  387. detailPlan: function (id, status) {
  388. if (status != '9') {
  389. layer.msg("该计划未竣工,请竣工后查看", {icon: 5, time: 1000});
  390. return;
  391. }
  392. window.location.href = App.getUrl("subComplete/planDetail?planId=" + id);
  393. },
  394. loadShgcTable: function () {
  395. var self = this;
  396. layui.table.render({
  397. elem: '#shgc', // 指定原始表格元素选择器(推荐id选择器)
  398. even: true,
  399. cols: [[ // 设置表头
  400. {type: 'numbers', title: '序号', width: 44},
  401. {field: 'unitName', title: '审核单位', minWidth: 100},
  402. {field: 'departName', title: '审核科室', minWidth: 100},
  403. {field: 'statusSp', title: '审核状态', minWidth: 150, templet: '#statusSp'},
  404. {field: 'dateSp', title: '审核时间', width: 150},
  405. ]],
  406. limit: self.shgc.length,
  407. data: self.shgc
  408. });
  409. },
  410. loadHzbaTable: function () {
  411. var self = this;
  412. layui.table.render({
  413. elem: '#hzba', // 指定原始表格元素选择器(推荐id选择器)
  414. even: true,
  415. cols: [[ // 设置表头
  416. {type: 'numbers', title: '序号', width: 44},
  417. {field: 'sysName', title: '工作说明', minWidth: 100},
  418. {field: 'statusName', title: '办理状况', minWidth: 100},
  419. {field: 'subUnitName', title: '批复单位', minWidth: 100},
  420. {field: 'datePlan', title: '开始办理时间', minWidth: 150},
  421. {field: 'dateConfirm', title: '实际批复时间', width: 150},
  422. {field: 'apprNo', title: '批复文号', width: 150},
  423. // {field: 'fileAddre', title: '附件图片', width: 150, templet: '#imageDiv'},
  424. {field: 'fileName', title: '附件文件名称', width: 150},
  425. ]],
  426. limit: self.hzba.length,
  427. data: self.hzba
  428. });
  429. },
  430. loadKgspTable: function () {
  431. var self = this;
  432. layui.table.render({
  433. elem: '#kgsp', // 指定原始表格元素选择器(推荐id选择器)
  434. even: true,
  435. cols: [[ // 设置表头
  436. {type: 'numbers', title: '序号', width: 44},
  437. {field: 'sysName', title: '工作说明', minWidth: 100},
  438. {field: 'statusName', title: '办理状况', minWidth: 100},
  439. {field: 'subUnitName', title: '批复单位', minWidth: 100},
  440. {field: 'datePlan', title: '开始办理时间', minWidth: 150},
  441. {field: 'dateConfirm', title: '实际批复时间', width: 150},
  442. {field: 'apprNo', title: '批复文号', width: 150},
  443. {field: 'fileAddre', title: '附件图片', width: 150, templet: '#imageDiv'},
  444. {field: 'fileName', title: '附件文件名称', width: 150},
  445. ]],
  446. limit: self.kgsp.length,
  447. data: self.kgsp
  448. });
  449. },
  450. loadJgdwTable: function () {
  451. var self = this;
  452. layui.table.render({
  453. elem: '#jgdw', // 指定原始表格元素选择器(推荐id选择器)
  454. even: true,
  455. cols: [[ // 设置表头
  456. {type: 'numbers', title: '序号', width: 44},
  457. {field: 'manageName', title: '监管单位'},
  458. {field: 'departName', title: '责任科室'},
  459. {field: 'nameLead', title: '责任领导', minWidth: 200},
  460. {field: 'tel', title: '联系电话', minWidth: 200}
  461. ]],
  462. limit: self.jgdw.length,
  463. data: self.jgdw
  464. });
  465. },
  466. backHis() {
  467. if (${layer}) {
  468. App.closeCurrentLayer();
  469. } else {
  470. window.location.href = "${lastUrl}";
  471. }
  472. },
  473. changeSide() {
  474. this.collapse = !this.collapse
  475. },
  476. onSelectItem(index) {
  477. this.active = index
  478. if (this.navLs[index].url) {
  479. window.location = this.navLs[index].url
  480. }
  481. },
  482. }
  483. })
  484. </script>
  485. </body>
  486. </html>