offset.jsp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  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. .toolBar {
  16. display: flow-root;
  17. height: 70px;
  18. }
  19. /*.table_box .table_process .layui-table-cell {*/
  20. /* height: 75px;*/
  21. /*}*/
  22. .layui-table-col-special .layui-table-cell{
  23. display:flex;
  24. justify-content:space-between;
  25. }
  26. .layui-table-col-special .layui-table-cell .step_red{
  27. background-color:red;
  28. }
  29. .table_box .table_process .step_red:before {
  30. border:2px solid red;
  31. }
  32. .layui-table-col-special .layui-table-cell .step_yellow{
  33. background-color:yellow;
  34. }
  35. .table_box .table_process .step_yellow:before {
  36. border:2px solid yellow;
  37. }
  38. .layui-table-col-special .layui-table-cell .step_green{
  39. background-color:green;
  40. }
  41. .table_box .table_process .step_green:before {
  42. border:2px solid green;
  43. }
  44. .queryTimeType{
  45. margin-top: -9px;
  46. position: absolute;
  47. }
  48. .hiddenParam {
  49. display: none;
  50. }
  51. .morePan{
  52. margin-top: 4px;
  53. position: absolute;
  54. margin-left: 11px;
  55. }
  56. .morePan a{
  57. color: #49a2cfe6;
  58. }
  59. </style>
  60. </head>
  61. <body>
  62. <div id="app"></div>
  63. <template id="template">
  64. <div class="layui-layout layui-layout-admin">
  65. <!-- 内容区域 -->
  66. <div class="right_title">
  67. <span class="txt">项目偏离度列表</span>
  68. <div class="layui-collapse">
  69. <div class="layui-colla-item">
  70. <%-- <h2 class="layui-colla-title">筛选</h2>--%>
  71. <div class="layui-colla-content layui-show">
  72. <form class="layui-form" lay-filter="searchForm">
  73. <div class="layui-row">
  74. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  75. <div class="layui-form-item">
  76. <label class="layui-form-label">项目名称:</label>
  77. <div class="layui-input-block">
  78. <input type="text" name="subName" placeholder="请输入" autocomplete="off" class="layui-input">
  79. </div>
  80. </div>
  81. </div>
  82. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  83. <div class="layui-form-item">
  84. <label class="layui-form-label">项目类型:</label>
  85. <div class="layui-input-block">
  86. <div id="kind" name="kind"></div>
  87. </div>
  88. </div>
  89. </div>
  90. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  91. <div class="layui-form-item">
  92. <label class="layui-form-label" style="width: 100px;">建设性质:</label>
  93. <div class="layui-input-block" style="margin-left: 130px;">
  94. <select name="propKind">
  95. <option value="">请选择</option>
  96. <c:forEach items="${JSXZ}" var="js">
  97. <c:if test="${kind == js.code }">
  98. <option value="${js.code }" selected="selected">${js.title }</option>
  99. </c:if>
  100. <c:if test="${kind != js.code }">
  101. <option value="${js.code }">${js.title }</option>
  102. </c:if>
  103. </c:forEach>
  104. </select>
  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">所属行业:</label>
  111. <div class="layui-input-block">
  112. <select name="indusKind" lay-search="">
  113. <option value="">请选择</option>
  114. <c:forEach items="${HYFL }" var="hy">
  115. <c:if test="${indusKind == hy.id}">
  116. <option value="${hy.id }" selected="selected">${hy.title }</option>
  117. </c:if>
  118. <c:if test="${indusKind != hy.id}">
  119. <option value="${hy.id }">${hy.title }</option>
  120. </c:if>
  121. </c:forEach>
  122. </select>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="layui-row">
  128. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  129. <div class="layui-form-item">
  130. <label class="layui-form-label" style="width: 100px;">偏离度(%):</label>
  131. <div class="layui-input-block time_box">
  132. <input type="number" name="endBl" placeholder="请填写最小偏离度" autocomplete="off" class="layui-input">
  133. <span class="split_txt">至</span>
  134. <input type="number" name="endBlPlus" placeholder="请填写最大偏离度" autocomplete="off" class="layui-input">
  135. </div>
  136. </div>
  137. </div>
  138. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  139. <div class="layui-form-item">
  140. <label class="layui-form-label">年月</label>
  141. <div class="layui-input-block time_box">
  142. <input type="text" id="beginYearMonth" readonly="readonly" name="beginYearMonth" class="layui-input">
  143. <input type="text" id="endYearMonth" readonly="readonly" name="endYearMonth" class="layui-input">
  144. </div>
  145. </div>
  146. </div>
  147. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  148. <div class="layui-form-item">
  149. <label class="layui-form-label">建设地点:</label>
  150. <div class="layui-input-block">
  151. <select name="subjectId">
  152. <option value="">请选择</option>
  153. <c:forEach items="${JSDD }" var="hy">
  154. <c:if test="${subjectId == hy.code}">
  155. <option value="${hy.code }" selected="selected">${hy.title }</option>
  156. </c:if>
  157. <c:if test="${indusKind != hy.title}">
  158. <option value="${hy.code }">${hy.title }</option>
  159. </c:if>
  160. </c:forEach>
  161. </select>
  162. </div>
  163. </div>
  164. </div>
  165. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  166. <div class="layui-form-item">
  167. <label class="layui-form-label" style="width: 100px;">金额(万元):</label>
  168. <div class="layui-input-block time_box">
  169. <input type="text" id="startAmt" name="startAmt" placeholder="请输入最小金额" autocomplete="off" class="layui-input" value="${minAmt}">
  170. <span class="split_txt">至</span>
  171. <input type="text" id="endAmt" name="endAmt" placeholder="请输入最大金额" autocomplete="off" class="layui-input" value="${maxAmt}">
  172. </div>
  173. </div>
  174. </div>
  175. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  176. <div class="layui-form-item">
  177. <label class="layui-form-label">投资类型:</label>
  178. <div class="layui-input-block">
  179. <select name="kindNature">
  180. <option value="">请选择</option>
  181. <c:forEach items="${TZXZ }" var="hy">
  182. <option value="${hy.code }">${hy.title }</option>
  183. </c:forEach>
  184. </select>
  185. </div>
  186. </div>
  187. </div>
  188. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  189. <div class="layui-form-item">
  190. <label class="layui-form-label">项目状态:</label>
  191. <div class="layui-input-block">
  192. <select name="status">
  193. <option value="">请选择</option>
  194. <option value="0">暂存</option>
  195. <option value="1">项目前期</option>
  196. <option value="6">待开工</option>
  197. <option value="7">施工中</option>
  198. <option value="8">暂时停工</option>
  199. <option value="A">已竣工</option>
  200. </select>
  201. </div>
  202. </div>
  203. </div>
  204. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  205. <div class="layui-form-item">
  206. <label class="layui-form-label">项目单位名称:</label>
  207. <div class="layui-input-block">
  208. <input name="sbdw" class="layui-input" value="${unitName }">
  209. </div>
  210. </div>
  211. </div>
  212. <c:if test="${currUser.statusProj == 1 }" >
  213. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  214. <div class="layui-form-item">
  215. <label class="layui-form-label" >行业单位:</label>
  216. <div class="layui-input-block">
  217. <select name="hydw" lay-search>
  218. <option value="">--请选择--</option>
  219. <c:forEach items="${HYDW }" var="hy">
  220. <option value="${ hy.id}">${hy.title }</option>
  221. </c:forEach>
  222. </select>
  223. </div>
  224. </div>
  225. </div>
  226. </c:if>
  227. <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">
  228. <div class="layui-form-item">
  229. <label class="layui-form-label">资金来源:</label>
  230. <div class="layui-input-block">
  231. <select name="zjly" lay-search="">
  232. <option value="">请选择</option>
  233. <c:forEach items="${ZJLY }" var="zj">
  234. <option value="${zj.id }">${zj.title }</option>
  235. </c:forEach>
  236. </select>
  237. </div>
  238. </div>
  239. </div>
  240. </div>
  241. <div class="layui-row">
  242. <div class="layui-col-xs4 layui-col-sm4 layui-col-md4">
  243. <div class="layui-form-item">
  244. <button type="button" class="layui-btn layui-btn-normal" @click="search"><i class="layui-icon layui-icon-search"></i>查询</button>
  245. </div>
  246. </div>
  247. </div>
  248. </form>
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. <div class="table_box" style="padding-top: 0;border-radius:10px;overflow:hidden">
  254. <div class="table_process">
  255. <table id="table1" lay-filter="test"></table>
  256. <div id="pagination"></div>
  257. </div>
  258. </div>
  259. <div style="height: 20px;"></div>
  260. </div>
  261. </template>
  262. <script type="text/html" id="subName">
  263. <%-- {{# if(d.usersub == "1") { }}--%>
  264. <span title="{{d.subName}}">{{d.subName}}</span>
  265. <%-- {{# }else { }}--%>
  266. <%-- <span title="{{d.subName}}">{{d.subName}}</span>--%>
  267. <%-- {{#}}}--%>
  268. </script>
  269. <script type="text/html" id="date">
  270. <div title="">
  271. <div class="line"><span class="qianse">计划开工:</span><span class="shense">{{d.beginDate}}</span>
  272. </div>
  273. <div class="line"><span class="qianse">计划竣工:</span><span class="shense">{{d.endDate}}</span>
  274. </div>
  275. </div>
  276. </script>
  277. <script type="text/html" id="toolBar">
  278. <div class="toolBar">
  279. <span class="view" title="项目信息" style="width: 30px;" lay-event="toDetail"></span>
  280. </div>
  281. </script>
  282. <script>
  283. new Vue({
  284. el: "#app",
  285. template: "#template",
  286. data: {
  287. winH: 0,
  288. dataList : [],
  289. startDate:"",
  290. endDate:"",
  291. tableName : 'test',
  292. pageNo : 1,
  293. kind: {},
  294. showMoreFlag: false,
  295. sort: {field: "amtTotal", type:""},
  296. pageSize : 10
  297. },
  298. mounted : function() {
  299. this.init()
  300. },
  301. methods: {
  302. init : function() {
  303. this.winH = document.body.clientHeight
  304. var xmlx = [];
  305. <c:forEach items="${XMLX}" var="xm">
  306. xmlx.push({value:"${xm.code}", name:"${xm.title}"});
  307. </c:forEach>
  308. this.kind = layui.xmSelect.render({
  309. el: "#kind",
  310. language:'zn',
  311. data:xmlx
  312. });
  313. layui.laydate.render({
  314. elem: '#endYearMonth',
  315. type: 'month',
  316. theme: layDateTheme,
  317. value: new Date().format("yyyy-MM")
  318. })
  319. layui.laydate.render({
  320. elem: '#beginYearMonth',
  321. type: 'month',
  322. theme: layDateTheme,
  323. value: new Date().format("yyyy-MM")
  324. })
  325. this.getData();
  326. window.toDetail = this.toDetail;
  327. },
  328. getData : function(){
  329. var self = this;
  330. var param = layui.form.getValue("searchForm");
  331. if(param.beginYearMonth) {
  332. param.beginYearMonth = param.beginYearMonth.replace("-","");
  333. }
  334. if(param.endYearMonth) {
  335. param.endYearMonth = param.endYearMonth.replace("-","");
  336. }
  337. param.kind = this.kind.getValue("value").sort().join(",");
  338. param.pageNo = this.pageNo;
  339. param.pageSize = this.pageSize;
  340. param.orderBy = this.sort.field;
  341. param.orderType = this.sort.type || null;
  342. App.postJson("/api/subInfo/query/offset",param, function(res){
  343. self.dataList = res.rows;
  344. self.loadPage(res.total);
  345. self.loadTable();
  346. });
  347. },
  348. loadTable : function(){
  349. for(var i=0;i<this.dataList.length;i++){
  350. var tem = this.dataList[i];
  351. switch(tem.status){
  352. case '0':
  353. tem.statusName = '暂存';
  354. break;
  355. case '1':
  356. tem.statusName = '项目前期';
  357. break;
  358. case '6':
  359. tem.statusName = '待开工';
  360. break;
  361. case '7':
  362. tem.statusName = '施工中';
  363. break;
  364. case '8':
  365. tem.statusName = '暂时停工';
  366. break;
  367. case 'A':
  368. tem.statusName = '已竣工';
  369. break;
  370. }
  371. }
  372. var self = this;
  373. layui.table.render({
  374. elem: '#table1', // 指定原始表格元素选择器(推荐id选择器)
  375. even: true,
  376. autoSort: false,
  377. initSort: self.sort,
  378. cols: [[ // 设置表头
  379. {type: 'numbers', fixed: 'left', align: 'center'},
  380. {field: 'subName', fixed: 'left', title: '项目名称', minWidth: 300, templet: '#subName'},
  381. {field: 'unitName', title: '项目单位', minWidth: 150},
  382. {field: 'mainName', title: '监管单位', minWidth: 150},
  383. {field: 'state', title: '计划时间', width: 250, templet: '#date'},
  384. {field: 'statusName', title: '项目进度', width: 100},
  385. {field: 'month', title: '月份', width: 160},
  386. {field: 'planAmt', title: '月计划投资(万元)', width: 160},
  387. {field: 'endAmt', title: '月实际投资(万元)', width: 160},
  388. {field: 'offset', title: '偏离度', width: 160, templet: function(row) {
  389. if(row.offset) {
  390. return row.offset+"%";
  391. }
  392. return "";
  393. }},
  394. {title: '操作', width: 100, align:'center', toolbar: '#toolBar'}
  395. ]],
  396. data : self.dataList,
  397. done: function(res, curr, count){
  398. res.data.forEach(function(item, index) {
  399. //1.当前行的背景颜色cur_color
  400. /* if (item.usersub == 1) {
  401. $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('background-color', "#0a99eb");
  402. } */
  403. });
  404. }
  405. });
  406. layui.table.on('tool('+this.tableName+')', function(obj){
  407. var event = obj.event;
  408. self[event].call(this, obj);
  409. });
  410. layui.table.on('sort('+this.tableName+')', function(obj) {
  411. self.sort = obj;
  412. self.getData();
  413. return;
  414. })
  415. },
  416. loadPage : function(totalCount){
  417. var self = this;
  418. layui.laypage.render({
  419. elem: 'pagination',
  420. count: totalCount,
  421. curr : self.pageNo,
  422. limit : self.pageSize,
  423. layout: ['count', 'prev', 'page', 'next', 'skip'],
  424. jump: function(obj, first) {
  425. //首次不执行
  426. if(!first) {
  427. self.pageNo = obj.curr;
  428. self.getData();
  429. }
  430. }
  431. });
  432. },
  433. toDetail : function(obj){
  434. //详情
  435. var index = layer.open({
  436. type: 2,
  437. title: "",
  438. area: ['1000px', '800px'],
  439. content: App.getUrl("/subject/subInfo/detailView?layer=true&subId="+ obj.data.id + "&lastUrl=" + window.location.href),
  440. });
  441. layui.layer.full(index);
  442. },
  443. search : function(){
  444. var param = layui.form.getValue("searchForm");
  445. this.pageNo = 1;
  446. this.getData();
  447. }
  448. }
  449. });
  450. </script>
  451. </body>
  452. </html>