大屏问题处理

dev_xd
haha 2025-01-04 00:53:16 +08:00
parent 964a904cc1
commit 552f768190
11 changed files with 316 additions and 63 deletions

View File

@ -133,16 +133,16 @@ const costOutputSelectYearAndMonth=(data)=> {
return it;
});
let y=data.year;
let m=data.month-1;
if(m==0){
m=12;
y--;
}
let m=data.month;
//if(m==0){
// m=12;
// y--;
//}
let tmps2=(res[1].data||[]).map(it=>{
it.money=it.money?it.money/10000.0:0;
return it;
});
let curM=tmps2.filter(it=>it.costType==9 && it.year==y && it.month==m);
let curM=tmps.filter(it=>it.costType==9 && it.year==y && it.month==m);
curM=curM.length>0?curM[0]:{};
let totalObjs=tmps.filter(it=>it.costType==9);

View File

@ -5,13 +5,93 @@
<div class="head-title-tab">
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)"></div>
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)"></div>
<div :class="nav == 3 ? 'head-nav active' : 'head-nav'" @click="doNav(3)"></div>
<div :class="nav == 4 ? 'head-nav active' : 'head-nav'" @click="doNav(4)"></div>
<div :class="nav == 5 ? 'head-nav active' : 'head-nav'" @click="doNav(5)"></div>
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)"></div>
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div @click="doNav(3)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 301 ? 'active' : ''" class="sub-btn"
@click="doNav(301)">安全隐患排查</button>
<button type="button" :class="nav == 302 ? 'active' : ''" class="sub-btn"
@click="doNav(302)">教育培训</button>
<button type="button" :class="nav == 303 ? 'active' : ''" class="sub-btn"
@click="doNav(303)">基坑监测</button>
<button type="button" :class="nav == 304 ? 'active' : ''" class="sub-btn"
@click="doNav(304)">塔基监测</button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 305 ? 'active' : ''" class="sub-btn"
@click="doNav(305)">高支模监测</button>
<button type="button" :class="nav == 306 ? 'active' : ''" class="sub-btn"
@click="doNav(306)">配电箱监测</button>
<button type="button" :class="nav == 307 ? 'active' : ''" class="sub-btn"
@click="doNav(307)">爬架监测</button>
<button type="button" :class="nav == 308 ? 'active' : ''" class="sub-btn"
@click="doNav(308)">施工电梯监测</button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 309 ? 'active' : ''" class="sub-btn"
@click="doNav(309)">视频监控</button>
<button type="button" :class="nav == 310 ? 'active' : ''" class="sub-btn"
@click="doNav(310)">AI测控</button>
<button type="button" :class="nav == 311 ? 'active' : ''" class="sub-btn"
@click="doNav(311)">标准化管理</button>
</div>
</div>
</div>
</div>
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div @click="doNav(4)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 401 ? 'active' : ''" class="sub-btn"
@click="doNav(401)">质量隐患排查</button>
<button type="button" :class="nav == 402 ? 'active' : ''" class="sub-btn"
@click="doNav(402)">材料取样复试</button>
<button type="button" :class="nav == 403 ? 'active' : ''" class="sub-btn"
@click="doNav(403)">举牌验收</button>
<button type="button" :class="nav == 404 ? 'active' : ''" class="sub-btn"
@click="doNav(404)">标养室监测</button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 405 ? 'active' : ''" class="sub-btn"
@click="doNav(405)">标准化管理</button>
<button type="button" :class="nav == 406 ? 'active' : ''" class="sub-btn"
@click="doNav(406)">混泥土监测</button>
<button type="button" :class="nav == 407 ? 'active' : ''" class="sub-btn"
@click="doNav(407)">爬架监测</button>
<button type="button" :class="nav == 408 ? 'active' : ''" class="sub-btn"
@click="doNav(408)">施工电梯监测</button>
</div>
</div>
</div>
</div>
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div @click="doNav(5)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 5 ? 'active' : ''" class="sub-btn"
@click="doNav(5)">进度管理</button>
<button type="button" :class="nav == 501 ? 'active' : ''" class="sub-btn"
@click="doNav(501)">延时摄影</button>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="8" class="header-center">
<img class="prj-logo" :src="selProject.setting.orgLogo"
v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
数字建安施工管理平台
</el-col>
<el-col :span="8">
@ -19,7 +99,7 @@
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">绿</div>
</div>
<div class="header-title-user-info" style="display:inline-block;float:right;">
<el-select v-model="selProject" popper-class="header-sel-project-pop"
<el-select v-model="selProjectId" popper-class="header-sel-project-pop"
style="width: 150px;margin-right: 20px;height:30px;line-height: 30px;"
@change="doProjectSelect">
<el-option v-for="it in projects" :key="it.id" :label="it.projectName"
@ -29,16 +109,17 @@
<i class="el-icon-switch-button"></i>
</span>
</div>
<i class="set-fullscreen set-font-size" style="margin-left: 16px;position: absolute;top: 0px;right: 24px;"
@click="toggleFullScreen">
<i class="set-fullscreen set-font-size"
style="margin-left: 16px;position: absolute;top: 0px;right: 24px;" @click="toggleFullScreen">
<svg class="icon" v-if="!isFullScreen"
style="width: 20px; vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024"
version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3304">
style="width: 20px; vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3304">
<path
d="M145.066667 85.333333h153.6c25.6 0 42.666667-17.066667 42.666666-42.666666S324.266667 0 298.666667 0H34.133333C25.6 0 17.066667 8.533333 8.533333 17.066667 0 25.6 0 34.133333 0 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666666-42.666666V145.066667l230.4 230.4c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733334L145.066667 85.333333z m170.666666 563.2L162.133333 802.133333l-76.8 76.8V725.333333C85.333333 699.733333 68.266667 682.666667 42.666667 682.666667s-42.666667 17.066667-42.666667 42.666666v256c0 25.6 17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H145.066667l76.8-76.8 153.6-153.6c17.066667-17.066667 17.066667-42.666667 0-59.733334-17.066667-17.066667-42.666667-17.066667-59.733334 0z m665.6 34.133334c-25.6 0-42.666667 17.066667-42.666666 42.666666v153.6l-76.8-76.8-153.6-153.6c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733334l153.6 153.6 76.8 76.8H725.333333c-25.6 0-42.666667 17.066667-42.666666 42.666666s17.066667 42.666667 42.666666 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666666z m0-682.666667h-256c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h153.6l-76.8 76.8-153.6 153.6c-17.066667 17.066667-17.066667 42.666667 0 59.733334 17.066667 17.066667 42.666667 17.066667 59.733334 0l153.6-153.6 76.8-76.8v153.6c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
fill="" p-id="3305"></path>
</svg>
<svg class="icon" v-else style="width: 24px; vertical-align: middle;fill: currentColor;overflow: hidden;"
<svg class="icon" v-else
style="width: 24px; vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3952">
<path
d="M384 597.333333h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h153.6L17.066667 947.2c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733333 0L341.333333 742.4v153.6c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z m358.4 85.333334h153.6c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V742.4l264.533333 264.533333c17.066667 17.066667 42.666667 17.066667 59.733333 0 17.066667-17.066667 17.066667-42.666667 0-59.733333L742.4 682.666667zM640 426.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667H742.4L1006.933333 76.8c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333 0L682.666667 281.6V128c0-25.6-17.066667-42.666667-42.666667-42.666667s-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667z m-256-341.333334c-25.6 0-42.666667 17.066667-42.666667 42.666667v153.6L76.8 8.533333C59.733333 0 25.6 0 8.533333 8.533333 0 25.6 0 59.733333 8.533333 76.8L281.6 341.333333H128c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
@ -55,7 +136,8 @@ export default {
data() {
return {
nav: 1,
selProject: '',
selProject: null,
selProjectId: '',
projects: [],
isFullScreen: false,
}
@ -79,7 +161,7 @@ export default {
this.projects = d.rows || [];
if (this.projects.length > 0) {
let id = localStorage.getItem("selProj") || this.projects[0].id
this.selProject = +id;
this.selProjectId = +id;
this.doProjectSelect();
}
});
@ -93,21 +175,44 @@ export default {
}, 400);
},
doProjectSelect() {
let tmps = this.projects.filter(d => d.id == this.selProject);
let tmps = this.projects.filter(d => d.id == this.selProjectId);
if (tmps.length > 0) {
this.$store.dispatch('SetSelProject', tmps[0]);
this.selProject = tmps[0];
} else {
this.$store.dispatch('SetSelProject', null);
this.selProject = null;
}
localStorage.setItem("selProj", this.selProject);
localStorage.setItem("selProj", this.selProjectId);
},
doNav(n) {
if (this.nav == n) {
return;
}
this.nav = n;
let path = ["/index", "/detail", "/prjSafety", "/prjQuality", "/prjProgress","/greenCarbon","/videoMonitor"][n - 1];
this.$router.push(path);
switch (n) {
case 1:
this.$router.push("/index");
break;
case 2:
this.$router.push("/detail");
break;
case 3:
this.$router.push("/prjSafety");
break;
case 309:
this.$router.push("/videoMonitor");
break;
case 4:
this.$router.push("/prjQuality");
break;
case 5:
this.$router.push("/prjProgress");
break;
case 6:
this.$router.push("/greenCarbon");
break;
}
},
doLogout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
@ -133,6 +238,65 @@ export default {
color: #3da2ff;
font-size: 32px;
font-weight: bold;
.prj-logo {
width: 40px;
height: 40px;
vertical-align: middle;
border-radius: 20px;
}
}
.head-title-tab {
.has-submenu {
&:hover {
.header-btn-list {
display: block;
}
}
.header-btn-list {
display: none;
.header-btn-list-item {
.header-btn-list-padding {
padding: 0px;
button {
width: 120px;
}
&.menu-row2 {
.sub-btn {
color: #fff;
&:hover {
color: #ccc;
}
}
}
&.menu-row1 {
.sub-btn {
color: rgb(1, 169, 255);
&:hover {
color: #fff;
}
}
}
.sub-btn {
&.active {
color: #ffffffaa;
}
}
}
}
}
}
}
}
@ -145,6 +309,12 @@ export default {
padding: 5px 40px;
position: relative;
top: -8px;
.prj-logo {
width: 40px;
height: 40px;
vertical-align: middle;
border-radius: 20px;
}
}
}
@ -163,12 +333,27 @@ export default {
top: -5px;
}
}
.header-sel-project-pop {
transform: scale(1.5);
width: 200px;
min-width: unset !important;
margin-left: 50px;
}
.head-title-tab {
.header-btn-list {
top: 40px;
left: 40px;
.sub-btn {
font-size: 18px;
width: 140px !important;
line-height: 40px;
height: 40px;
}
}
}
}
@media (min-width: 2561px) {
@ -177,6 +362,12 @@ export default {
.header-center {
font-size: 52px !important;
margin-top: 10px;
.prj-logo {
width: 50px;
height: 50px;
vertical-align: middle;
border-radius: 25px;
}
}
.header-title-user-info {
@ -196,5 +387,19 @@ export default {
min-width: unset !important;
margin-left: 100px;
}
.head-title-tab {
.header-btn-list {
top: 50px;
left: 50px;
.sub-btn {
font-size: 24px;
width: 160px !important;
line-height: 50px;
height: 50px;
}
}
}
}
</style>

View File

@ -304,7 +304,8 @@
计划开工日期
</p>
<div>
<span>{{
<span>
{{getCurProject()}}{{
fmtDate(getCurProject().scheduledStartTime || "")
}}</span>
</div>
@ -1068,11 +1069,11 @@ export default {
}
if (this.project.id == 0) {
if (this.prjs.length > 1) {
return this.prjs[1];
return this.prjs[1]||{};
}
return {};
}
return this.project;
return this.project||{};
},
getProjectId(cb) {
let func = () => {
@ -1680,9 +1681,11 @@ export default {
width: calc(100% - 4px);
height: calc(100% - 26px);
padding-left: 1px;
.el-carousel {
height: 100%;
}
.photography-video {
width: 100%;
height: calc(100% - 30px);

View File

@ -214,7 +214,7 @@
<div class="modify-btn">
<img src="images/foot_left.png" @click="modifyLeftBtn" />
</div>
<div class="modify-content" id="modifyContent">
<div class="modify-content" id="modifyContent" v-if="selProject">
<div class="modify-content-overflow">
<div class="project-amount">
<div class="project-amount-bgd">

View File

@ -76,7 +76,7 @@ export default {
}
},
mounted() {
this.$store.dispatch('ChangeNav', 7);
this.$store.dispatch('ChangeNav', 309);
this.dpi = this.$dpi();
window.addEventListener("resize", () => {
if (this.dpi != this.$dpi()) {

View File

@ -74,4 +74,6 @@ public interface ProProjectInfoMapper
* @return
*/
public int updateDept(ProDept proDept);
List<ProProjectInfo> selectMyProjectList(ProProjectInfo proProjectInfo);
}

View File

@ -345,5 +345,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</set>
where dept_id = #{deptId}
</update>
<select id="selectMyProjectList" parameterType="ProProjectInfo" resultMap="ProProjectInfoResult">
select pi.id, pi.com_id, pi.dis_dept_id, pi.project_name,
pi.project_code, pi.simple_name, pi.project_type, sdd1.dict_label as project_type_name, pi.project_level, pi.project_regional, pi.project_package, pi.project_address, pi.project_nature,
pi.tech_leader,pi.tech_leader_phone,pi.province,pi.city,pi.district,
pi.licence_number, pi.project_person, pi.project_person_phone, pi.longitude, pi.latitude, pi.project_time_limit, pi.total_investment,
pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time,
pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status,
pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark,
ps.id ps_id,ps.org_name ps_org_name,ps.org_logo ps_org_logo,ps.org_image ps_org_image,ps.org_video ps_org_video,ps.org_plane ps_org_plane
from pro_project_info pi
left join pro_project_info_setting ps on pi.id=ps.project_id
left join sys_dict_data sdd1 on sdd1.dict_value = pi.project_type and sdd1.dict_type='pro_project_type'
<if test="currentUserId != null "> left join pro_project_info_users pu on pu.project_id = pi.id </if>
<if test="currentUserId != null "> left join pro_project_info_subdepts_users psu on psu.project_id = pi.id </if>
<where>
<if test="comId != null "> and pi.com_id = #{comId}</if>
<if test="disDeptId != null "> and pi.dis_dept_id = #{disDeptId}</if>
<if test="activeComId != null "> and pi.com_id = #{activeComId}</if>
<if test="currentUserId != null"> and ((pu.user_id = #{currentUserId} and pu.use_status='1' and pu.is_del=0) or (psu.user_id = #{currentUserId} and approve_status <![CDATA[ >= ]]> 100 and psu.user_id = #{currentUserId} and psu.use_status='1' and psu.is_del=0))</if>
<if test="projectName != null and projectName != ''"> and pi.project_name like concat('%', #{projectName}, '%')</if>
<if test="projectCode != null and projectCode != ''"> and pi.project_code = #{projectCode}</if>
<if test="simpleName != null and simpleName != ''"> and pi.simple_name like concat('%', #{simpleName}, '%')</if>
<if test="techLeader != null and techLeader != ''"> and pi.tech_leader like concat('%', #{techLeader}, '%')</if>
<if test="techLeaderPhone != null and techLeaderPhone != ''"> and pi.tech_leader_phone like concat('%', #{techLeaderPhone}, '%')</if>
<if test="province != null and province != ''"> and pi.province like concat('%', #{province}, '%')</if>
<if test="city != null and city != ''"> and pi.city like concat('%', #{city}, '%')</if>
<if test="district != null and district != ''"> and pi.district like concat('%', #{district}, '%')</if>
<if test="projectType != null and projectType != ''"> and pi.project_type = #{projectType}</if>
<if test="projectLevel != null and projectLevel != ''"> and pi.project_level = #{projectLevel}</if>
<if test="projectPerson != null and projectPerson != ''"> and pi.project_person = #{projectPerson}</if>
<if test="projectPersonPhone != null and projectPersonPhone != ''"> and pi.project_person_phone = #{projectPersonPhone}</if>
<if test="projectStatus != null and projectStatus != ''"> and pi.project_status = #{projectStatus}</if>
<if test="isDel != null "> and pi.is_del = #{isDel}</if>
</where>
<if test="currentUserId == null "> order by pi.project_sort, pi.id desc</if>
<if test="currentUserId != null "> order by pu.sort_by, pi.id desc</if>
</select>
</mapper>

View File

@ -274,7 +274,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
) u
ON u.craft_type = dic.dict_value
WHERE
dic.dict_type = 'pro_craft_type';
dic.dict_type = 'pro_craft_type'
</select>

View File

@ -149,7 +149,7 @@ public class ProProjectInfoController extends BaseController
if(StringUtils.isNotEmpty(list)){
return getDataTable(list);
}
list = proProjectInfoService.selectProProjectInfoList(proProjectInfo);
list = proProjectInfoService.selectMyProjectList(proProjectInfo);
redisService.setCacheObject(key, list, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -70,4 +70,6 @@ public interface IProProjectInfoService
*
*/
public void loadingProjectsCache();
public List<ProProjectInfo> selectMyProjectList(com.yanzhu.manage.domain.ProProjectInfo proProjectInfo);
}

View File

@ -88,6 +88,11 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService
}
}
@Override
public List<ProProjectInfo> selectMyProjectList(ProProjectInfo proProjectInfo) {
return proProjectInfoMapper.selectMyProjectList(proProjectInfo);
}
/**
*
*