list.jsp 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  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. .table_box .table_process .layui-table-cell {
  16. /*height: 75px;*/
  17. }
  18. .layui-table-col-special .layui-table-cell{
  19. display:flex;
  20. justify-content:space-between;
  21. }
  22. /*.layui-table-view .layui-table td >div{*/
  23. /* height: 75px !important;*/
  24. /* line-height: 22px !important;*/
  25. /* white-space: normal;*/
  26. /*}*/
  27. </style>
  28. </head>
  29. <body>
  30. <div id="app"></div>
  31. <template id="template">
  32. <div class="layui-layout layui-layout-admin pd0">
  33. <!-- 内容区域 -->
  34. <div class="right_title">
  35. <span class="txt">周调度图片<div class="top-breadcrumb"></div></span>
  36. <div class="layui-collapse search_form">
  37. <div class="layui-colla-item">
  38. <%-- <h2 class="layui-colla-title">筛选</h2>--%>
  39. <div class="layui-colla-content layui-show">
  40. <form class="layui-form" lay-filter="searchForm">
  41. <div class="layui-row">
  42. <div class="layui-col-xs3 layui-col-sm3 layui-col-md4">
  43. <div class="layui-form-item">
  44. <label class="layui-form-label required">项目名称</label>
  45. <div class="layui-input-block">
  46. <input type="text" name="subName" placeholder="请输入" autocomplete="off" class="layui-input">
  47. </div>
  48. </div>
  49. </div>
  50. <div class="layui-col-xs3 layui-col-sm3 layui-col-md4">
  51. <div class="layui-form-item">
  52. <label class="layui-form-label required">项目属地</label>
  53. <div class="layui-input-block">
  54. <select name="subjectId">
  55. <option value="">请选择</option>
  56. <c:forEach items="${JSDD }" var="hy">
  57. <option value="${hy.code }">${hy.title }</option>
  58. </c:forEach>
  59. </select>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="layui-col-xs3 layui-col-sm3 layui-col-md4">
  64. <div class="layui-form-item">
  65. <label class="layui-form-label required">行业类别</label>
  66. <div class="layui-input-block">
  67. <select name="indusKind" v-model="indusKind" id="indusKind" lay-search="">
  68. <option value="">请选择</option>
  69. <c:forEach items="${HYFL }" var="hy">
  70. <option value="${hy.id }">${hy.title }</option>
  71. </c:forEach>
  72. </select>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="layui-col-xs3 layui-col-sm3 layui-col-md4">
  77. <div class="layui-form-item">
  78. <label class="layui-form-label">进度范围(%)</label>
  79. <div class="layui-input-block time_box">
  80. <input type="number" name="numBlMin" placeholder="最小进度比例" autocomplete="off" class="layui-input" style="width:130px">
  81. <span class="split_txt">至</span>
  82. <input type="number" name="numBlMax" placeholder="最大进度比例" autocomplete="off" class="layui-input" style="width:130px">
  83. </div>
  84. </div>
  85. </div>
  86. <div class="layui-col-xs3 layui-col-sm3 layui-col-md4">
  87. <div class="layui-form-item">
  88. <label class="layui-form-label required">建设性质</label>
  89. <div class="layui-input-block">
  90. <select name="propKind">
  91. <option value="">请选择</option>
  92. <c:forEach items="${JSXZ}" var="js">
  93. <option value="${js.code }">${js.title }</option>
  94. </c:forEach>
  95. </select>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="layui-row">
  101. <div class="layui-col-xs4 layui-col-sm4 layui-col-md4">
  102. <div class="layui-form-item">
  103. <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
  104. </div>
  105. </div>
  106. </div>
  107. </form>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <div class="table_box" style="padding-top: 0;">
  113. <div class="table_process">
  114. <table id="table1" lay-filter="test"></table>
  115. <div class="pagination-box" id="pagination"></div>
  116. </div>
  117. </div>
  118. <div style="height: 20px;"></div>
  119. </div>
  120. </template>
  121. <script type="text/html" id="subName">
  122. <span title="{{d.subName}}">{{d.subName}}</span>
  123. </script>
  124. <script type="text/html" id="amt">
  125. <span title="">总投资:{{d.amtTotal||0}}万元</span>
  126. </script>
  127. <script type="text/html" id="amtYear">
  128. {{# var computedPer = function(total, now){
  129. return (total == 0) ? 0 : parseInt(now * 100 / total +0.5);
  130. };
  131. }}
  132. <span title="">
  133. <span class="qianse">年度计划投资:</span><strong class="lanse">{{d.yearAmt||0}}</strong> 万元 <br/>
  134. <span class="qianse">年度完成投资:</span><strong class="lanse">{{d.yearAmtSj||0}}</strong> 万元(<i class="lanse">{{computedPer(d.yearAmt||0, d.yearAmtSj||0)}} %</i> )
  135. </span>
  136. </script>
  137. <script type="text/html" id="date">
  138. <div title="">
  139. <div class="line"><span class="qianse">计划开工:</span><span class="shense">{{d.beginDate}}</span>
  140. </div>
  141. <div class="line"><span class="qianse">计划竣工:</span><span class="shense">{{d.endDate}}</span>
  142. </div>
  143. </div>
  144. </script>
  145. <script type="text/html" id="toolBar">
  146. <div class="toolBar">
  147. <span lay-event="toDetail">周调度图片展示</span>
  148. </div>
  149. </script>
  150. <script>
  151. new Vue({
  152. el: "#app",
  153. template: "#template",
  154. data: {
  155. winH: 0,
  156. dataList : [],
  157. pageNo : 1,
  158. kind: {},
  159. tableName: 'test',
  160. sort: {field: "amtTotal", type:""},
  161. pageSize : 10
  162. },
  163. mounted : function() {
  164. this.init()
  165. },
  166. methods: {
  167. init : function() {
  168. this.winH = document.body.clientHeight
  169. var xmlx = [];
  170. <c:forEach items="${XMLX}" var="xm">
  171. xmlx.push({value:"${xm.code}", name:"${xm.title}"});
  172. </c:forEach>
  173. this.kind = layui.xmSelect.render({
  174. el: "#kind",
  175. language:'zn',
  176. data:xmlx
  177. });
  178. this.getData();
  179. window.toDetail = this.toDetail;
  180. window.showImage = this.showImage;
  181. },
  182. getData : function(){
  183. var self = this;
  184. var param = layui.form.getValue("searchForm");
  185. param.kind = "";
  186. param.pageNo = this.pageNo;
  187. param.pageSize = this.pageSize;
  188. param.orderBy = this.sort.field;
  189. param.orderType = this.sort.type || null;
  190. App.postJson("/api/graphicProgress/list",param, function(res){
  191. self.dataList = res.rows;
  192. self.loadPage(res.total);
  193. self.loadTable();
  194. });
  195. },
  196. loadTable : function(){
  197. for(var i=0;i<this.dataList.length;i++){
  198. var tem = this.dataList[i];
  199. switch(tem.status){
  200. case '0':
  201. tem.statusName = '暂存';
  202. break;
  203. case '1':
  204. tem.statusName = '项目前期';
  205. break;
  206. case '6':
  207. tem.statusName = '待开工';
  208. break;
  209. case '7':
  210. tem.statusName = '施工中';
  211. break;
  212. case '8':
  213. tem.statusName = '暂停施工';
  214. break;
  215. case 'A':
  216. tem.statusName = '已竣工';
  217. break;
  218. }
  219. }
  220. var self = this;
  221. layui.table.render({
  222. elem: '#table1', // 指定原始表格元素选择器(推荐id选择器)
  223. even: true,
  224. autoSort: false,
  225. initSort: self.sort,
  226. cols: [[ // 设置表头
  227. {type: 'numbers', fixed: 'left', align: 'center',title:'序号',width:50},
  228. {field: 'subName', fixed: 'left', title: '项目名称', minWidth: 300, templet: '#subName'},
  229. {field: 'amtTotal', title: '总投资额', minWidth: 162, templet: '#amt' },
  230. {field: 'amtYear', title: '计划/完成投资', minWidth: 231, templet: '#amtYear',sort:"amtYear"},
  231. {field: 'beginDate', title: '计划日期', minWidth: 180, templet: '#date'},
  232. {field: 'statusName', title: '项目进度', minWidth: 100},
  233. {field: 'num_bl', title: '进度比例-%', width: 120},
  234. {field: 'unitName', title: '项目单位', minWidth: 200},
  235. {title: '操作', width: 120, align:'center', toolbar: '#toolBar', fixed: 'right'},
  236. ]],
  237. fixed:true,
  238. height:window.screen.availHeight-400,
  239. data : self.dataList,
  240. done: function (res, curr, count) {
  241. res.data.forEach(function (item, index) {
  242. $(".layui-table-body tr").resize(function () {
  243. $(".layui-table-body tr").each(function (index, val) {
  244. $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
  245. });
  246. });
  247. //初始化高度,使得冻结行表体高度一致
  248. $(".layui-table-body tr").each(function (index, val) {
  249. $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
  250. });
  251. });
  252. }
  253. });
  254. layui.table.on('tool('+this.tableName+')', function(obj){
  255. var event = obj.event;
  256. self[event].call(this, obj);
  257. });
  258. layui.table.on('sort('+this.tableName+')', function(obj) {
  259. self.sort = obj;
  260. self.getData();
  261. return;
  262. })
  263. },
  264. loadPage : function(totalCount){
  265. var self = this;
  266. layui.laypage.render({
  267. elem: 'pagination',
  268. count: totalCount,
  269. curr : self.pageNo,
  270. limit : self.pageSize,
  271. layout: ['count', 'prev', 'page', 'next', 'skip'],
  272. jump: function(obj, first) {
  273. //首次不执行
  274. if(!first) {
  275. self.pageNo = obj.curr;
  276. self.getData();
  277. }
  278. }
  279. });
  280. },
  281. toDetail : function(obj){
  282. //详情
  283. var index = layer.open({
  284. type: 2,
  285. area: ['1000px', '800px'],
  286. title:obj.data.subName||"",
  287. content: App.getUrl("/graphicProgress/detail?subId="+ obj.data.id),
  288. });
  289. layui.layer.full(index);
  290. },
  291. search : function(){
  292. var param = layui.form.getValue("searchForm");
  293. this.pageNo = 1;
  294. this.getData();
  295. }
  296. }
  297. });
  298. </script>
  299. </body>
  300. </html>