<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <jsp:include page="../../../common/common-meta-include.jsp"></jsp:include> <jsp:include page="../../../common/common-js-include.jsp"></jsp:include> <jsp:include page="../../../common/common-css-include.jsp"></jsp:include> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <style type="text/css"> .layui-table-view .layui-table td { border-right: 1px solid #DDD !important; } .layui-table-body .layui-table-cell { padding: 5px !important; } .layui-table-header .layui-table-cell { height: 42px !important; } .qianse { color: #666666; } .lanse { color: #1869F6; } .shense { color: #111111; } .no-wrap { white-space: nowrap; } .lanse-first { color: #1C56A3; font-size: 12px; font-family: "Times New Roman", Times, serif; } .layui-table-col-special .layui-table-cell { display: flex; justify-content: space-between; } .queryTimeType { margin-top: -4px; position: absolute; } .hiddenParam, .hiddenParams { display: none; } .morePan { position: absolute; margin-left: 11px; } .morePan a { color: #2C6EC6; } .table_box .table_process { height: fit-content; max-height: 60vh; overflow-x: scroll; overflow-y: scroll; } .layui-table-body::-webkit-scrollbar { width: 0px; /*height: 10px;*/ } .table_box, .table_box .table_process { overflow: visible; } .layui-form-select dl { height: 230px; } /* 针对特定 select 的样式 */ .custom-select + .layui-form-select dl { height: auto; /* 恢复默认高度 */ max-height: 150px; /* 设置一个合适的高度 */ } .layui-table-cell .cut { display: -webkit-box; /* 使用旧版的弹性盒子布局 */ -webkit-box-orient: vertical; /* 设置为垂直方向排列 */ overflow: hidden; /* 隐藏溢出内容 */ text-overflow: ellipsis; /* 使用省略号表示溢出内容 */ -webkit-line-clamp: 2; /* 显示的行数 */ } </style> </head> <body> <div id="app"></div> <template id="template"> <div class="layui-layout layui-layout-admin pd0"> <!-- 内容区域 --> <div class="right_title"> <div class="txt">新建项目库 <div class="top-breadcrumb"></div></div> <div class="layui-collapse search_form"> <div class="layui-colla-item"> <%-- <h2 class="layui-colla-title">筛选</h2>--%> <div class="layui-colla-content layui-show"> <form class="layui-form" lay-filter="searchForm" id="searchForm"> <input type="hidden" name="queryType" value="2"> <div class="layui-row"> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3"> <div class="layui-form-item"> <label class="layui-form-label label-longers required">项目名称</label> <div class="layui-input-block"> <input type="text" name="subName" placeholder="请输入" autocomplete="off" class="layui-input"> </div> </div> </div> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3"> <div class="layui-form-item"> <label class="layui-form-label required label-longers">项目属地</label> <div class="layui-input-block"> <select name="subjectId"> <option value="">请选择</option> <c:forEach items="${JSDD }" var="hy"> <option value="${hy.code }">${hy.title }</option> </c:forEach> </select> </div> </div> </div> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3"> <div class="layui-form-item"> <label class="layui-form-label required label-longers">行业类别</label> <div class="layui-input-block"> <%-- <div id="indusKind"></div>--%> <select name="indusKind"> <option value="">请选择</option> <c:forEach items="${HYFL }" var="hy"> <option value="${hy.code }">${hy.title} <c:forEach items="${hy.children }" var="hy2"> <option value="${hy2.code }">  ${hy2.title} </c:forEach> </option> </c:forEach> </select> </div> </div> </div> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam"> <div class="layui-form-item"> <label class="layui-form-label required label-longers" style="width: 100px;">项目总投资(亿元)</label> <div class="layui-input-block time_box"> <input type="number" name="startAmt" placeholder="请输入最小金额" autocomplete="off" class="layui-input"> <span class="split_txt">至</span> <input type="number" name="endAmt" placeholder="请输入最大金额" autocomplete="off" class="layui-input"> </div> </div> </div> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam"> <div class="layui-form-item"> <label class="layui-form-label label-longers">项目单位</label> <div class="layui-input-block"> <input type="text" name="sbdw" placeholder="请输入项目项目单位名称" autocomplete="off" class="layui-input"> </div> </div> </div> <%-- <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParam">--%> <%-- <div class="layui-form-item">--%> <%-- <label class="layui-form-label required label-longers" style="width: 100px;">预计开工日期</label>--%> <%-- <div class="layui-input-block time_box" style="margin-left:120px">--%> <%-- <input type="text" id="startTime" name="rangeDate" placeholder="请选择时间段"--%> <%-- autocomplete="off" class="layui-input" style="margin-left: 20px;">--%> <%-- </div>--%> <%--<%– –%>--%> <%--<%– <div class="layui-input-block time_box">–%>--%> <%--<%– <input type="date" name="kgMixDate" placeholder="请输入最小日期"–%>--%> <%--<%– autocomplete="off"–%>--%> <%--<%– class="layui-input">–%>--%> <%--<%– <span class="split_txt"> - </span>–%>--%> <%--<%– <input type="date" name="kgMaxDate" placeholder="请输入最大日期" autocomplete="off"–%>--%> <%--<%– class="layui-input">–%>--%> <%--<%– </div>–%>--%> <%-- </div>--%> <%-- </div>--%> <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 hiddenParams"> <div class="layui-form-item"> <label class="layui-form-label"></label> <div class="layui-input-block"> <button type="button" class="layui-btn layui-btn-normal" @click="search">查询 </button> <span class="morePan" @click="showMore"><a v-if="!showMoreFlag">更多 <ion-icon name="chevron-forward-outline"></ion-icon></a><a v-if="showMoreFlag">收起 V</a></span> </div> </div> </div> </div> </form> </div> </div> </div> </div> <div> <div class="layui-row class_ls"> <div style="display: flex"> <label class="juli"> 新建项目总数<span class="lanse-first">{{beginRate.num}}</span> <div class="progress-div"> <div class="layui-progress"> <div class="layui-progress-bar"></div> </div> </div> </label> <label class="juli"> 已开工<span class="lanse-first">{{beginRate.ykgNum}}</span> <div class="progress-div"> <div class="layui-progress"> <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div> </div> </div> </label> <label class="juli"> 开(复)工率<span class="lanse-first">{{beginRate.kfgRate}}%</span> <div class="progress-div"> <div class="layui-progress"> <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div> </div> </div> </label> </div> <div style="display: flex;margin-bottom: 3px"> <label @click="levelList('kindNatures',item.split(',')[1],item.split(',')[0])" class="juli" v-for="(item, index) in beginRate.tzlxList" :key="index"> {{item.name}}<span class="lanse-first">{{item.num}}</span> </label> <label class="juli" @click="levelList('subjects',item.name,item.code)" v-for="(item, index) in beginRate.jsddList" :key="index"> {{item.name}}<span class="lanse-first">{{item.num}}</span> </label> </div> <div class="second_line" style="margin-bottom: 3px"> <label class="juli" @click="levelList('indusKinds',item.name?item.name:item.code,item.code)" v-for="(item, index) in beginRate.hyflList" :key="index"> {{item.name?item.name:item.code}}<span class="lanse-first">{{item.num}}</span> </label> </div> </div> </div> <div class="table_box" style="padding-top: 0;"> <div class="table_process" style="position: relative"> <div style="position: relative; display: inline-block" @mouseover="openExport" @mouseout="choseExport"> <div class="export"> <img src="${WebSite.asset}/css/images/left/export.svg"/> <span>导出</span> </div> <div class="export-item" v-if="showExport" :style="{ top: '-62px' }"> <button type="button" class="" @click="exportDetailExcel">导出明细</button> <button type="button" class="" @click="exportTotalExcel">导出总表</button> <%-- <button type="button" class="" @click="exportMoreExcel">自定义导出</button>--%> </div> </div> <table id="table1" lay-filter="test"></table> <div class="pagination-box" id="pagination"></div> </div> </div> <div style="height: 20px;"></div> </div> </template> <div id="setReason" style="display: none;"> <form class="layui-form" lay-filter="reasonForm"> <div class="layui-row"> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">已开工未入库原因:</label> <div class="layui-input-block"> <textarea name="reasonNoRk" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoRk" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">已入库无投资原因:</label> <div class="layui-input-block"> <textarea name="reasonNoAmt" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoAmt" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> </div> <div class="layui-row"> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">是否入统:</label> <div class="layui-input-block"> <input type="radio" name="isRk" value="0" title="否" checked="checked"/> <input type="radio" name="isRk" value="1" title="是"/> </div> </div> </div> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">未开工建设原因:</label> <div class="layui-input-block"> <textarea name="reasonNoKg" maxlength="200" style="height: 50px;width: 80%;" id="reasonNoKg" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> </div> <div class="layui-row"> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">存在的问题:</label> <div class="layui-input-block"> <textarea name="reasonq" maxlength="200" style="height: 50px;width: 80%;" id="reasonq" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> <div class="layui-col-xs6 layui-col-sm6"> <div class="layui-form-item"> <label class="layui-form-label">已开工进度慢原因:</label> <div class="layui-input-block"> <textarea name="reasonJd" maxlength="200" style="height: 50px;width: 80%;" id="reasonJd" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> </div> </form> </div> <div id="problem" class="layuimini-main" style="display: none;"> <form class="layui-form" lay-filter="problemForm"> <div class="layui-row"> <div class="layui-col-xs12 layui-col-sm12"> <div class="layui-form-item"> <label class="layui-form-label">状态:</label> <div class="layui-input-block block-width"> <input type="radio" name="statusF" value="2" title="红灯" checked="checked"/> <input type="radio" name="statusF" value="1" title="黄灯"/> <input type="radio" name="statusF" value="0" title="绿灯"/> </div> </div> </div> </div> <div class="layui-row"> <div class="layui-col-xs12 layui-col-sm12"> <div class="layui-form-item"> <label class="layui-form-label">问题描述:</label> <div class="layui-input-block block-width"> <textarea name="status_reason" maxlength="400" style="height: 300px;width: 80%;" id="problemReason" autocomplete="off" class="layui-textarea"></textarea> </div> </div> </div> </div> <div class="layui-row"> <div class="layui-col-xs12 layui-col-sm12"> <div class="layui-form-item"> <label class="layui-form-label">要求解决日期:</label> <div class="layui-input-block block-width" style="width: 25%"> <input type="text" id="dateConfirm" name="dateConfirm" autocomplete="off" class="layui-input"> </div> </div> </div> </div> </form> </div> <div id="toBack" class="layuimini-main" style="display: none;"> <form class="layui-form" lay-filter="toBackForm"> <div class="layui-row"> <div class="layui-col-xs12 layui-col-sm12"> <div class="layui-form-item"> <label class="layui-form-label" style="width: 100px">退回到状态:</label> <div class="layui-input-block"> <input type="radio" name="status" value="1" title="项目前期" checked="checked"/> <input type="radio" name="status" value="6" title="待开工"/> <input type="radio" name="status" value="7" title="施工中"/> </div> </div> </div> </div> </form> </div> <script type="text/html" id="subName"> <%-- {{# if(d.usersub == "1") { }}--%> <span lay-event="toDetail" title="{{d.subName}}">{{d.subName}}</span> <%-- {{# }else { }}--%> <%-- <span title="{{d.subName}}">{{d.subName}}</span>--%> <%-- {{#}}}--%> </script> <script type="text/html" id="date"> <div title=""> <div class="line"><span class="shense new-roman">{{ d.beginDate ? d.beginDate : '未指定' }}</span> </div> <%-- <div class="line"><span class="qianse">计划竣工:</span> <span class="shense">{{d.endDate}}</span>--%> <%-- </div>--%> </div> </script> <script type="text/html" id="amtTotal"> <%-- {{# var computedPer = function(total, now){--%> <%-- return (total == 0) ? 0 : parseInt(now * 100 / total +0.5);--%> <%-- };--%> <%-- }}--%> <%-- <div title="">--%> <%-- <span class="qianse">年度完成投资:</span><span class="lanse">{{d.yearEndAmt}}</span> 万元( <i class="lanse">{{computedPer(d.yearPlanAmt,--%> <%-- d.yearEndAmt)}} %</i> )<br/>--%> <%-- </div>--%> <div title=""> <span class="qianse">总投资金额:</span><span class="lanse">{{d.amtTotal}}</span> 万元<br/> </div> </script> <script type="text/html" id="zjly"> <div title=""> <span class="lanse">{{d.zjlyName}}</span> </div> </script> <script type="text/html" id="abcSpan"> {{# if(d.abc == "A") { }} <span style="font-size:16px;font-weigh:500 !important;color: #26B520">{{d.abc||''}}</span> {{#} }} {{# if(d.abc == "B") { }} <span style="font-size:16px;font-weigh:500 !important;color: #1869F6">{{d.abc||''}}</span> {{#} }} {{# if(d.abc == "C") { }} <span style="font-size:16px;font-weigh:500 !important;color: #FF9600">{{d.abc||''}}</span> {{#} }} </script> <script type="text/html" id="toolBar"> <div class="toolBar"> <span title="项目查询" lay-event="toDetail" class="no-wrap">项目查询</span> {{# if("${currUser.edit}" == 'true'||( d.propKind == '3' && "${currUser.id}" == d.create_user_id )) { }} <span title="编辑" lay-event="toEditSubInfo" class="no-wrap"> 编辑</span> {{#} }} <span title="转库" lay-event="move" class="no-wrap">转库</span> </div> </script> <script type="text/html" id="preInfo"> <div title="" lay-event="preNew" style="cursor: pointer"> <%-- <div class="line"><span class="qianse">总的手续:</span> <span class="shense">{{d.preTotal}}</span>个--%> <%-- </div>--%> <%-- <div class="line"><span class="qianse">无需办理的手续:</span> <span class="shense">{{d.preNoNum}}</span>个--%> <%-- </div>--%> <div class="line"><span class="qianse">办理中的手续:</span> <span class="shense new-roman">{{d.preProceNum}}</span>个 </div> <div class="line"><span class="qianse">已办理完成手续:</span> <span class="shense new-roman">{{d.preEndNum}}</span>个 </div> </div> </script> <script type="text/html" id="imageDiv"> <div style="width:50px;height:50px" onclick="showImage(this)"> {{# if(d.fileId != null && d.fileId != '') { }} <img src="${domain}/static/file/{{d.fileId}}/showfile" realUrl="${domain}/static/file/{{d.fileId}}/showfile" width="50px" height="50px"/> {{#} }} </div> </script> <script type="text/html" id="offsetLight"> {{#if(d.offset >= -30 && d.offset <= -10 ) { }} <span style="color: yellow"><image class="light-rgb" src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span> {{#} else if(d.offset < -30) { }} <span style="color: red"><image class="light-rgb" src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span> {{#}}} {{#if(d.offset !="" || d.offset != undefined || d.offset != null) { }} {{#if(d.offset<0) { }} <span class="grey">{{d.offset||"--"}}%</span> {{# } }} {{#if(d.offset>0) { }} <span class="green">{{d.offset||"--"}}%</span> {{# } }} {{# } }} </script> <script type="text/html" id="openLight"> {{# var computedPer1 = function(beginDate){ var beginDate =new Date(beginDate); var beginDate7 =new Date(beginDate); var beginDate3 =new Date(beginDate); beginDate7.setDate(beginDate7.getDate()-7); beginDate3.setDate(beginDate3.getDate()-3); var newDate = new Date(); if(newDate.getTime() >=beginDate7.getTime() && newDate.getTime() <=beginDate3.getTime()){ return "yellow"; }else if(newDate.getTime() >=beginDate3.getTime() && newDate.getTime() <= beginDate.getTime() ){ return "red"; }else{ return "-"; } }; }} {{#if(computedPer1(d.beginDate)=="yellow" ) { }} <span style="color: yellow"> <image style="width:20px;height:20px;margin: auto;" src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span> {{#} else if(computedPer1(d.beginDate)=="red") { }} <span style="color: red"> <image style="width:20px;height:20px;margin: auto;" src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span> {{#}}} </script> <script type="text/html" id="moveForm"> <div class="layui-form" style="padding: 20px;"> <div class="layui-form-item" style="display: flex; align-items: center;"> <label class="layui-form-label" style="text-align: right; width: 90px;">当前状态:</label> <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px);"> <input type="text" name="currentState" value="新建库" disabled class="layui-input"> </div> </div> <div class="layui-form-item" style="display: flex; align-items: center;"> <label class="layui-form-label" style="text-align: right; width: 90px;">转库到:</label> <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px);"> <select class="custom-select" lay-filter="moveStatus" lay-verify="required"> <option value="">请选择</option> <option value="1">储备</option> <option value="3">在建</option> <option value="9">投产</option> </select> </div> </div> <div class="layui-form-item" style="display: flex; align-items: center;"> <label class="layui-form-label" style="text-align: right; width: 90px;"></label> <div class="layui-input-block" style="flex: 1; max-width: calc(100% - 120px); text-align: right;"> <button type="button" class="layui-btn layui-btn-primary layui-border" onclick="vm.closeAllLayers()">取消</button> <button type="button" class="layui-btn moveConfirm" onclick="vm.confirmMove()">确认转库</button> </div> </div> </div> </script> <script> layui.use('element', function () { let element = layui.element; }); let vm = new Vue({ el: "#app", template: "#template", data: { winH: 0, dataList: [], startDate: "", endDate: "", tableName: 'test', cacheName: 'TzQueryParam_xj_${currUser.id}', pageNo: 1, kind: {}, beginRate: {}, showMoreFlag: false, light: null, sort: {field: "amtTotal", type: ""}, pageSize: 10, showExport: false, moveDbParam:{ id: "", status: "" } }, mounted: function () { this.init() }, methods: { closeAllLayers() { layui.layer.closeAll(); }, confirmMove: function () { let param = this.moveDbParam // 数据验证 if (!param || !param.status) { App.msg.error("请选择转库状态"); return; } const statusMap = { 1: "储备", 2: "新建", 3: "在建", 9: "投产" }; const statusName = statusMap[param.status] || "未知状态"; this.closeAllLayers(); App.msg.confirm(`是否转入`+statusName+`库?`, () => { App.postJson("/api/subject/subInfo/moveDb", { id: param.id, status: param.status }, (res) => { if (res.success) { App.msg.success("转库成功"); self.getData() } else { App.msg.error(res.message || "转库失败,请重试"); } }) }); }, move (obj) { this.moveDbParam.id = obj.data.id const formTemplate = document.getElementById('moveForm').innerHTML; layer.open({ type: 1, title: '转库', content: formTemplate, area: ['350px', '300px'], success: function(layero, index){ layui.form.render(); } }); }, init: function () { let self = this; layui.form.on("select(moveStatus)", function (data) { self.moveDbParam.status = data.value; }); this.winH = document.body.clientHeight; var nowdate = new Date(); nowdate.setMonth(nowdate.getMonth() + 1); var y = nowdate.getFullYear(); var m = nowdate.getMonth() + 1; var d = nowdate.getDate(); layui.laydate.render({ elem: '#startTime', range: '~', theme: layDateTheme, /* value: y + "-01-01 ~ " + y + "-12-31"*/ }); var formatwdate = y + '-' + m + '-' + d; layui.laydate.render({ elem: '#dateConfirm', theme: layDateTheme, value: formatwdate }); /* $("#month").val(new Date().getMonth() + 1);*/ var xmlx = []; <c:forEach items="${XMLX}" var="xm"> xmlx.push({value: "${xm.code}", name: "${xm.title}"}); </c:forEach> <%--var indusKindData = [];--%> <%--<c:forEach items="${HYFL}" var="xm">--%> <%--var childData = [];--%> <%--<c:forEach items="${xm.children}" var="c">--%> <%--childData.push({--%> <%-- value: "${c.code}",--%> <%-- name: "${c.title}",--%> <%--})--%> <%--</c:forEach>--%> <%--indusKindData.push(--%> <%-- {--%> <%-- value: "${xm.code}",--%> <%-- name: "${xm.title}",--%> <%-- children: childData--%> <%-- });--%> <%--</c:forEach>--%> <%--this.indusKind = layui.xmSelect.render({--%> <%-- el: "#indusKind",--%> <%-- language: 'zn',--%> <%-- data: indusKindData,--%> <%--});--%> layui.laydate.render({ elem: '#year', type: 'year', theme: layDateTheme, /* value: new Date().getFullYear()*/ }) var params = window.localStorage.getItem(this.cacheName); if (params) { layui.form.val("searchForm", JSON.parse(params)); } <%--if(${isHydw}) {--%> <%-- this.light = layui.xmSelect.render({--%> <%-- el: "#light",--%> <%-- language:'zn',--%> <%-- data: [--%> <%-- {value: '0', name:'绿灯'},--%> <%-- {value: '1', name:'黄灯'},--%> <%-- {value: '2', name:'红灯'}--%> <%-- ]--%> <%-- })--%> <%--}--%> this.getData(); window.addEventListener('message', this.receiveMessage, false); window.parent.postMessage('init loaded') window.toDetail = this.toDetail; window.levelList = this.levelList; window.showImage = this.showImage; $(".hiddenParams").show(); }, leaderSupervise: function (obj) { App.openLayer({ title: "督办信息", content: App.getUrl("/meetingRecords/leaderMeeting?subId=" + obj.data.id), height: "600", width: "800" }) }, setIsNew: function (obj) { var self = this; App.msg.confirm("是否移入新建库?", function () { App.postJson("/api/subject/subInfo/setIsNew", {subId: obj.data.id}, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }); }, showImage: function (that) { var imageUrl = $(that).find("img").eq(0).attr("realUrl"); if (imageUrl) { // layer.open({ // type: 2, // content: imageUrl, // area: ['500px', '1000px'], // offset: 'auto', // success: function(obj,index){ // layer.full(index); // } // }) layer.photos({ photos: { "title": "", "id": "", "start": 0, "data": [ { "alt": "", "pid": "", "src": imageUrl, "thumb": imageUrl } ] }, anim: 5, closeBtn: "1", success: function () { //以鼠标位置为中心的图片滚动放大缩小 $(document).on("mousewheel", ".layui-layer-photos", function (ev) { var oImg = this; var ev = event || window.event;//返回WheelEvent //ev.preventDefault(); var delta = ev.detail ? ev.detail > 0 : ev.wheelDelta < 0; var ratioL = (ev.clientX - oImg.offsetLeft) / oImg.offsetWidth, ratioT = (ev.clientY - oImg.offsetTop) / oImg.offsetHeight, ratioDelta = !delta ? 1 + 0.1 : 1 - 0.1, w = parseInt(oImg.offsetWidth * ratioDelta), h = parseInt(oImg.offsetHeight * ratioDelta), l = Math.round(ev.clientX - (w * ratioL)), t = Math.round(ev.clientY - (h * ratioT)); $(".layui-layer-photos").css({ width: w, height: h , left: l, top: t }); $("#layui-layer-photos").css({width: w, height: h}); $("#layui-layer-photos>img").css({width: w, height: h}); }); } , end: function () { //销毁回调 } }); } }, setQueryForm2: function () { $("#searchForm").find(".layui-form-item").parent() .removeClass("layui-col-xs3").removeClass("layui-col-sm3").removeClass("layui-col-md3") .addClass("layui-col-xs5").addClass("layui-col-sm5").addClass("layui-col-md5"); }, setQueryForm4: function () { $("#searchForm").find(".layui-form-item").parent() .removeClass("layui-col-xs5").removeClass("layui-col-sm5").removeClass("layui-col-md5") .addClass("layui-col-xs3").addClass("layui-col-sm3").addClass("layui-col-md3"); }, showMore: function () { this.showMoreFlag=!this.showMoreFlag; if(this.showMoreFlag) { $(".hiddenParam").show(); }else{ $(".hiddenParam").hide(); } /* var self = this; layer.open({ title: "查询条件", type: 1, area: ['800px', ''], offset:0, shade: 0.1, shadeClose: true, content: $("#searchForm"), btn: ["查询"], yes: function (index) { self.search(); layer.close(index); }, success: function () { self.setQueryForm2(); $(".hiddenParam").show(); $(".hiddenParams").hide(); }, end: function () { self.setQueryForm4(); $(".hiddenParam").hide(); $(".hiddenParams").show(); } })*/ }, getSearchParams: function () { var param = layui.form.getValue("searchForm"); if (param.rangeDate) { param.beginDate = param.rangeDate.split(" ~ ")[0]; param.endDate = param.rangeDate.split(" ~ ")[1]; param.rangeDate = null; } if (this.light) { param.light = this.light.getValue("valueStr"); } if (this.indusKind) { param.indusKind = this.indusKind.getValue("valueStr"); } delete (param.select); /* param.kind = this.kind.getValue("value").sort().join(",");*/ return param; }, getData: function () { var self = this; var param = this.getSearchParams(); param.pageNo = this.pageNo; param.pageSize = this.pageSize; param.orderBy = this.sort.field; param.orderType = this.sort.type || "asc"; param.status = 2; App.postJson("/api/subInfo/query/queryPage", param, function (res) { self.dataList = res.rows; self.loadPage(res.total); self.loadTable(); }); App.postJson("/api/subInfo/query/statistics", param, function (res) { if (res.success) { self.beginRate = res.data; self.beginRate.hyflList = self.beginRate.hyflData; self.beginRate.jsddList = self.beginRate.jsddData; } }) // App.postJson("/api/subInfo/query/all", param, function (res) { // self.dataList = res.rows; // self.loadPage(res.total); // self.loadTable(); // }); // App.postJson("/api/subInfo/query/beginRate", param, function (res) { // if (res.success) { // self.beginRate = res.data; // self.beginRate.hyflList = self.beginRate.hyflData.split(";"); // self.beginRate.tzlxList = self.beginRate.tzlxData.split(";"); // self.beginRate.jsddList = self.beginRate.jsddData.split(";"); // if (res.data.total != 0) { // self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2); // } else { // self.beginRate.beginRate = 0; // } // if (res.data.yearAmt != 0) { // self.beginRate.amtRate = (res.data.yearAmtSj * 100 / res.data.yearAmt).toFixed(2); // } else if (res.data.yearAmtSj != 0) { // self.beginRate.amtRate = 100; // } else { // self.beginRate.amtRate = 0; // } // if (res.data.total != 0) { // self.beginRate.noRate = (res.data.noNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.beginRate = (res.data.beginNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.endRate = (res.data.endNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.stopRate = (res.data.stopNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.aRate = (res.data.aNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.bRate = (res.data.bNum * 100 / res.data.total).toFixed(2) + '%'; // self.beginRate.cRate = (res.data.cNum * 100 / res.data.total).toFixed(2) + '%'; // } else { // self.beginRate.noRate = "0%"; // self.beginRate.beginRate = "0%"; // self.beginRate.endRate = "0%"; // self.beginRate.stopRate = "0%"; // self.beginRate.aRate = "0%"; // self.beginRate.bRate = "0%"; // self.beginRate.cRate = "0%"; // } // } else { // self.beginRate.beginRate = 0; // self.beginRate.amtRate = 0; // } // }); }, loadTable: function () { for (var i = 0; i < this.dataList.length; i++) { var tem = this.dataList[i]; switch (tem.status) { case '0': tem.statusName = '暂存'; break; case '1': tem.statusName = '项目前期'; break; case '6': tem.statusName = '待开工'; break; case '7': tem.statusName = '施工中'; break; /* case '9': tem.statusName = '年度竣工'; break; */ case '8': tem.statusName = '暂停施工'; break; case 'A': tem.statusName = '已竣工'; break; } } var self = this; layui.table.render({ elem: '#table1', // 指定原始表格元素选择器(推荐id选择器) even: true, autoSort: false, initSort: self.sort, cols: [[ // 设置表头 {type: 'numbers', align: 'center', width: 44, title: '序号',fixed: 'left'}, {field: 'subName', title: '项目名称', minWidth: 200, templet: '#subName',fixed: 'left'}, {field: 'subjectName', title: '项目所在地', width: 100}, {field: 'content', title: '项目建设内容', minWidth: 100, templet: function (row) { return row.content ? '<span class="cut" title="' + row.content + '">' + row.content + '</span>' : ''; }}, { field: 'amtTotal', title: '计划总投资(亿元)', width: 80, templet: function (d) { return `<span class="new-roman">` + (d.amtTotal / 10000).toFixed(2) + `</span>` + "亿元"; } }, {field: 'preProceNum', title: '预计开工时间', width: 100, templet: '#date'}, {field: 'xmbaStatus', title: '前期手续办理情况', width: 160, templet: '#preInfo'}, {field: 'remark', title: '备注', width: 245, templet: '#remark'}, {title: '操作', width: 150, toolbar: '#toolBar', fixed: 'right'}, ]], fixed: true, height: window.screen.availHeight - 450, data: self.dataList, done: function (res, curr, count) { res.data.forEach(function (item, index) { //1.当前行的背景颜色cur_color // if (item.usersub == 1) { // $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('background-color', "#0a99eb"); // } $(".layui-table-body tr").resize(function () { $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); }); //初始化高度,使得冻结行表体高度一致 $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); }); } }); layui.table.on('tool(' + this.tableName + ')', function (obj) { var event = obj.event; self[event].call(this, obj); }); layui.table.on('sort(' + this.tableName + ')', function (obj) { self.sort = obj; self.getData(); return; }) }, toBack: function (obj) { layer.open({ type: 1, title: "退回", content: $("#toBack"), area: ['600px', ''], btn: ["保存", "取消"], yes: function (index) { var data = layui.form.val("toBackForm"); var status = data.status; if (status != undefined) { if (parseInt(obj.data.status) <= parseInt(data.status)) { App.msg.warn("只能退回下级状态,请检查!!!!"); return; } } App.postJson("/api/subject/subInfo/toTemp", { subId: obj.data.id, status: data.status }, function (res) { if (res.success) { layer.msg("成功", {icon: 6, time: 1000}); // window.location.href = App.getUrl("subject/subInfo/projTz?type=4"); } }); }, close: function (index) { layer.close(index); } }) }, isNoHide: function (obj) { var self = this; App.msg.confirm("是否移除在建库?", function () { App.postJson("/api/subject/subInfo/setBackIsHide", {subId: obj.data.id}, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }); }, isHide: function (obj) { var self = this; App.msg.confirm("是否移入在建项目库?", function () { App.postJson("/api/subject/subInfo/setIsHide", {subId: obj.data.id}, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }); }, setIsCb: function (obj) { var self = this; App.msg.confirm("是否移入在建项目库?", function () { App.postJson("/api/subject/subInfo/setIsCb", {subId: obj.data.id}, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }); }, loadPage: function (totalCount) { var self = this; layui.laypage.render({ elem: 'pagination', count: totalCount, curr: self.pageNo, limit: self.pageSize, layout: ['count', 'prev', 'page', 'next', 'skip'], jump: function (obj, first) { //首次不执行 if (!first) { self.pageNo = obj.curr; } } }); }, yearPlan: function (obj) { window.location.href = App.getUrl("amtPlan/detail?subId=" + obj.data.id); }, setSubReason: function (obj) { var self = this; layui.form.val("reasonForm", obj.data); layer.open({ type: 1, title: "项目原因录入", content: $("#setReason"), area: ['880px', '560px'], btn: ["保存", "取消"], yes: function (index) { var reason = layui.form.val("reasonForm"); reason.subId = obj.data.id; App.postJson("/api/subject/subInfo/setSubReason", reason, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }, close: function (index) { layer.close(index); } }) }, problem: function (obj) { var self = this; obj.data.status_reason = ""; layui.form.val("problemForm", obj.data); layer.open({ type: 1, title: "问题督办", content: $("#problem"), area: ['800px', '600px'], btn: ["保存", "取消"], yes: function (index) { var reason = layui.form.val("problemForm"); reason.subId = obj.data.id; if (reason.statusF == "2" || reason.statusF == "1") { if (reason.status_reason == "" || reason.status_reason == undefined) { layer.msg("红灯,黄灯必须输入原因"); return; } } App.postJson("/api/subject/subInfo/setStatus", { subId: obj.data.id, statusFgw: reason.statusF, reason: reason.status_reason, dateConfirm: reason.dateConfirm }, function (res) { if (res.success) { App.msg.success("设置成功"); self.getData(); layer.close(index); } }); }, close: function (index) { layer.close(index); } }) }, exportTotalExcel: function () { var param = this.getSearchParams(); param.status = '2' App.common.utils.downFile(App.getUrl("subInfoExport/exportTotalExcelByStatus"), "POST", param, "项目情况表(新建库).xlsx", "导出失败"); }, exportDetailExcel: function () { var param = this.getSearchParams(); param.status = '2' App.common.utils.downFile(App.getUrl("subInfoExport/exportDetailExcel"), "POST", param, "项目明细表(新建库).xlsx", "导出失败"); }, exportExcel: function () { var param = this.getSearchParams(); App.common.utils.downFile(App.getUrl("subInfoExport/exportSummaryExcel"), "POST", param, "项目情况表.xlsx", "导出失败"); }, exportExcelByIndusKind: function () { var param = this.getSearchParams(); App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelByIndusKind"), "POST", param, "项目情况表(按所属行业统计).xlsx", "导出失败"); }, exportSchedulingExcel: function () { var param = this.getSearchParams(); App.common.utils.downFile(App.getUrl("subInfoExport/exportSchedulingExcel"), "POST", param, "项目调度表.xlsx", "导出失败"); }, /* exportExcel2: function(){ var param = this.getSearchParams(); App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelTz"),"POST", param,"项目详情信息表.xlsx", "导出失败"); }, */ exportMoreExcel: function () { top.window.getSearchParams = this.getSearchParams; App.openLayer({ title: "自定义导出", content: App.getUrl("/subInfoExport/index"), height: "800", width: "1000" }) }, toDetail: function (obj) { //详情 var index = layer.open({ type: 2, title: '', area: ['1000px', '800px'], content: App.getUrl("/subject/subInfo/detailView2?layer=true&subId=" + obj.data.id + "&lastUrl=" + window.location.href), }); layui.layer.full(index); }, levelList:function (field,title,val){ //详情 var param=field+","+title+","+val var params=encodeURIComponent(JSON.stringify(this.getSearchParams())); var index = top.layer.open({ type: 2, title: '', area: ['90%', '90%'], content: App.getUrl("/subject/subInfo/levelList?layer=true&type="+this.getSearchParams().queryType+"&curParam=" + param+"¶ms="+params), }); //top.layer.full(index); }, print: function (obj) { window.open(App.getUrl("/subject/apply/downPdf?subId=" + obj.data.id)); }, toEditSubInfo: function (obj) { window.location.href = App.getUrl("/subject/subInfo/editSubInfo2?subId=" + obj.data.id + "&queryType=3"); }, preNew: function (obj) { window.location.href = App.getUrl("/subPreNew/todo?subId=" + obj.data.id); }, toTh: function (obj) { if (obj.data.statusJh == null || obj.data.statusJh == '0' || obj.data.statusJh == '1') { App.msg.confirm("是否需要退回到暂存状态?", function () { App.postJson("/api/subject/subInfo/toTemp", {subId: obj.data.id, status: "0"}, function (res) { if (res.success) { layer.msg("成功", {icon: 6, time: 1000}); // window.location.href = App.getUrl("subject/subInfo/projTz"); } }); }) } else { App.msg.warn("已做过开工申报,需要走变更流程"); } }, search: function () { var param = layui.form.getValue("searchForm"); window.localStorage.setItem(this.cacheName, JSON.stringify(param)); this.pageNo = 1; this.getData(); }, openExport: function () { this.showExport = true; console.log('移入了') }, choseExport: function () { this.showExport = false; console.log('移出了') }, receiveMessage (e) { console.log('cb receiveMessage: ', e.data) if (e.data.topBreadcrumb) { $(".top-breadcrumb").html(e.data.topBreadcrumb) } } } }); </script> </body> </html>