Merge branch 'dev_xd' of http://62.234.3.186:3000/jiangyq/YZProjectCloud into dev_xd
commit
ac0c401534
|
@ -1,18 +1,19 @@
|
|||
|
||||
import {axios,download} from '@/utils/request'
|
||||
import project from './project'
|
||||
import weather from './weather'
|
||||
import detail from './detail'
|
||||
import dict from './dict'
|
||||
import greenCarbon from './greenCarbon'
|
||||
import videoMonitor from './videoMonitor'
|
||||
import { axios, download } from "@/utils/request";
|
||||
import project from "./project";
|
||||
import weather from "./weather";
|
||||
import detail from "./detail";
|
||||
import dict from "./dict";
|
||||
import greenCarbon from "./greenCarbon";
|
||||
import videoMonitor from "./videoMonitor";
|
||||
import safety from "./safety";
|
||||
export default {
|
||||
http:axios,
|
||||
downFile:download,
|
||||
project,
|
||||
weather,
|
||||
detail,
|
||||
dict,
|
||||
greenCarbon,
|
||||
videoMonitor
|
||||
}
|
||||
http: axios,
|
||||
downFile: download,
|
||||
project,
|
||||
weather,
|
||||
detail,
|
||||
dict,
|
||||
greenCarbon,
|
||||
videoMonitor,
|
||||
safety,
|
||||
};
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
import request from "@/utils/request";
|
||||
|
||||
const groupByProblemType = (data) => {
|
||||
return request({
|
||||
url: `/manage/problemmodify/groupByProblemType`,
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
};
|
||||
|
||||
const groupByDangerType = (data) => {
|
||||
return request({
|
||||
url: `/manage/problemmodify/groupByDangerType`,
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
};
|
||||
|
||||
const listCountForBG = (data) => {
|
||||
return request({
|
||||
url: `/manage/problemmodify/listCountForBG`,
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
};
|
||||
|
||||
const listForBG = (data) => {
|
||||
data.pageSize = 5;
|
||||
data.pageNum = 1;
|
||||
return request({
|
||||
url: `/manage/problemmodify/listForBG`,
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
};
|
||||
|
||||
export default {
|
||||
groupByProblemType,
|
||||
groupByDangerType,
|
||||
listCountForBG,
|
||||
listForBG,
|
||||
};
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg
|
||||
style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;"
|
||||
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3395">
|
||||
<path
|
||||
d="M90.664027 1023.902729C40.639065 1023.902729 0.048635 980.752543 0.048635 926.193155V91.273615C0.048635 41.980012 41.736104 0 90.664027 0h777.288443c48.927923 0 83.374937 41.980012 83.374937 91.273615V480.502924h-74.01354V72.989637H73.842768v877.630911H512V1023.902729H90.664027zM658.271818 753.299865a95.369226 95.369226 0 0 0 95.076682 95.076682 95.369226 95.369226 0 0 0 95.076682-95.076682A95.369226 95.369226 0 0 0 753.3485 658.223183 95.369226 95.369226 0 0 0 658.271818 753.299865z m353.538986 262.045963a33.78879 33.78879 0 0 1-0.804495 0.804495l-5.850873 2.413485a15.139133 15.139133 0 0 0-4.241883 1.755262c-5.19265 2.632893-7.67927 3.510524-11.701745 3.510523a67.138765 67.138765 0 0 1-11.921153-0.731359 26.840879 26.840879 0 0 1-15.065998-6.947911l-123.014599-122.210104a171.138028 171.138028 0 0 1-89.079538 24.281121c-94.857274 0-167.627504-72.331414-167.627504-166.603601 0-94.272187 72.77023-166.603601 167.627504-166.603601 94.857274 0 167.627504 72.40455 167.627504 166.603601 0 34.958965-10.01962 67.723852-28.59614 95.076682l121.844425 121.03993c13.457007 12.87192 13.822687 34.227606 0.804495 47.538341zM186.545204 475.529682a36.567955 36.567955 0 0 1 36.567955-36.567955h511.951364a36.567955 36.567955 0 0 1 0 73.135909h-511.951364a36.567955 36.567955 0 0 1-36.567955-36.567954z m0-219.407728a36.567955 36.567955 0 0 1 36.567955-36.567954h511.951364a36.567955 36.567955 0 0 1 0 73.135909h-511.951364a36.567955 36.567955 0 0 1-36.567955-36.567955z">
|
||||
</path>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -92,7 +92,7 @@
|
|||
<el-col :span="8" class="header-center">
|
||||
<img class="prj-logo" :src="selProject.setting.orgLogo"
|
||||
v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
|
||||
数字建安施工管理平台
|
||||
{{ selProject?.setting?.orgName || '数字建安施工管理平台' }}
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="head-title-tab" style="display: inline-block">
|
||||
|
@ -203,6 +203,9 @@ export default {
|
|||
case 309:
|
||||
this.$router.push("/videoMonitor");
|
||||
break;
|
||||
case 301:
|
||||
this.$router.push("/safetyCheck");
|
||||
break;
|
||||
case 4:
|
||||
this.$router.push("/prjQuality");
|
||||
break;
|
||||
|
@ -309,6 +312,7 @@ export default {
|
|||
padding: 5px 40px;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
|
||||
.prj-logo {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
@ -362,12 +366,13 @@ export default {
|
|||
.header-center {
|
||||
font-size: 52px !important;
|
||||
margin-top: 10px;
|
||||
|
||||
.prj-logo {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
vertical-align: middle;
|
||||
border-radius: 25px;
|
||||
}
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
vertical-align: middle;
|
||||
border-radius: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.header-title-user-info {
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<template>
|
||||
<div class="screen-one-3-1 screen-module">
|
||||
<div class="module-title"><span>{{ label || '' }}</span></div>
|
||||
<div class="module-ctx">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
label: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.screen-one-3-1 {
|
||||
height: calc(33% - 20px);
|
||||
margin: 20px;
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 26px;
|
||||
top: 0px;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.module-title {
|
||||
position: relative;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -10,7 +10,7 @@ const routes = [
|
|||
meta: { nav: 1 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "index" */ "../views/index.vue"),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/detail",
|
||||
name: "detail",
|
||||
|
@ -38,23 +38,30 @@ const routes = [
|
|||
meta: { nav: 23 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "progress" */ "../views/projectProgress.vue"),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/greenCarbon",
|
||||
name: "greenCarbon",
|
||||
meta: { nav: 23 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "progress" */ "../views/greenCarbon.vue"),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/videoMonitor",
|
||||
name: "videoMonitor",
|
||||
meta: { nav: 23 },
|
||||
meta: { nav: 309 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"),
|
||||
},
|
||||
|
||||
|
||||
import(
|
||||
/* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "/safetyCheck",
|
||||
name: "safetyCheck",
|
||||
meta: { nav: 301 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "safetyCheck" */ "../views/safetyCheck.vue"),
|
||||
},
|
||||
];
|
||||
const router = new VueRouter({
|
||||
mode: "hash",
|
||||
|
|
|
@ -1,160 +1,199 @@
|
|||
import axios from 'axios'
|
||||
import { Notification, MessageBox, Message, Loading } from 'element-ui'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import errorCode from '@/utils/errorCode'
|
||||
import axios from "axios";
|
||||
import { Notification, MessageBox, Message, Loading } from "element-ui";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import errorCode from "@/utils/errorCode";
|
||||
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
||||
import cache from '@/plugins/cache'
|
||||
import { saveAs } from 'file-saver'
|
||||
import Cookies from 'js-cookie'
|
||||
import cache from "@/plugins/cache";
|
||||
import { saveAs } from "file-saver";
|
||||
import Cookies from "js-cookie";
|
||||
let downloadLoadingInstance;
|
||||
// 是否显示重新登录
|
||||
export let isRelogin = { show: false };
|
||||
|
||||
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
|
||||
axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
|
||||
// 创建axios实例
|
||||
const service = axios.create({
|
||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
baseURL: process.env.VUE_APP_BASE_API,
|
||||
// 超时
|
||||
timeout: 200000
|
||||
})
|
||||
timeout: 200000,
|
||||
});
|
||||
|
||||
// request拦截器
|
||||
service.interceptors.request.use(config => {
|
||||
// 是否需要设置 token
|
||||
const isToken = (config.headers || {}).isToken === false
|
||||
// 是否需要防止数据重复提交
|
||||
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
|
||||
if (getToken() && !isToken) {
|
||||
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||
}
|
||||
config.headers["proType"]=localStorage.getItem("proType")||"0";
|
||||
// get请求映射params参数
|
||||
if (config.method === 'get' && config.params) {
|
||||
let url = config.url + '?' + tansParams(config.params);
|
||||
url = url.slice(0, -1);
|
||||
config.params = {};
|
||||
config.url = url;
|
||||
}
|
||||
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
|
||||
const requestObj = {
|
||||
url: config.url,
|
||||
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
|
||||
time: new Date().getTime()
|
||||
service.interceptors.request.use(
|
||||
(config) => {
|
||||
// 是否需要设置 token
|
||||
const isToken = (config.headers || {}).isToken === false;
|
||||
// 是否需要防止数据重复提交
|
||||
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
|
||||
if (getToken() && !isToken) {
|
||||
config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||
}
|
||||
const sessionObj = cache.session.getJSON('sessionObj')
|
||||
if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
|
||||
cache.session.setJSON('sessionObj', requestObj)
|
||||
} else {
|
||||
const s_url = sessionObj.url; // 请求地址
|
||||
const s_data = sessionObj.data; // 请求数据
|
||||
const s_time = sessionObj.time; // 请求时间
|
||||
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
|
||||
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
|
||||
const message = '数据正在处理,请勿重复提交';
|
||||
console.warn("--->",s_data,requestObj.data,s_url)
|
||||
return Promise.reject(new Error(message))
|
||||
config.headers["proType"] = localStorage.getItem("proType") || "0";
|
||||
// get请求映射params参数
|
||||
if (config.method === "get" && config.params) {
|
||||
let url = config.url + "?" + tansParams(config.params);
|
||||
url = url.slice(0, -1);
|
||||
config.params = {};
|
||||
config.url = url;
|
||||
}
|
||||
if (
|
||||
!isRepeatSubmit &&
|
||||
(config.method === "post" || config.method === "put")
|
||||
) {
|
||||
const requestObj = {
|
||||
url: config.url,
|
||||
data:
|
||||
typeof config.data === "object"
|
||||
? JSON.stringify(config.data)
|
||||
: config.data,
|
||||
time: new Date().getTime(),
|
||||
};
|
||||
const sessionObj = cache.session.getJSON("sessionObj");
|
||||
if (
|
||||
sessionObj === undefined ||
|
||||
sessionObj === null ||
|
||||
sessionObj === ""
|
||||
) {
|
||||
cache.session.setJSON("sessionObj", requestObj);
|
||||
} else {
|
||||
cache.session.setJSON('sessionObj', requestObj)
|
||||
const s_url = sessionObj.url; // 请求地址
|
||||
const s_data = sessionObj.data; // 请求数据
|
||||
const s_time = sessionObj.time; // 请求时间
|
||||
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
|
||||
if (
|
||||
s_data === requestObj.data &&
|
||||
requestObj.time - s_time < interval &&
|
||||
s_url === requestObj.url
|
||||
) {
|
||||
const message = "数据正在处理,请勿重复提交";
|
||||
console.warn("--->", s_data, requestObj.data, s_url);
|
||||
return Promise.reject(new Error(message));
|
||||
} else {
|
||||
cache.session.setJSON("sessionObj", requestObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
console.log(error);
|
||||
Promise.reject(error);
|
||||
}
|
||||
return config
|
||||
}, error => {
|
||||
console.log(error)
|
||||
Promise.reject(error)
|
||||
})
|
||||
);
|
||||
|
||||
// 响应拦截器
|
||||
service.interceptors.response.use(res => {
|
||||
service.interceptors.response.use(
|
||||
(res) => {
|
||||
// 未设置状态码则默认成功状态
|
||||
const code = res.data.code || 200;
|
||||
// 获取错误信息
|
||||
const msg = errorCode[code] || res.data.msg || errorCode['default']
|
||||
const msg = errorCode[code] || res.data.msg || errorCode["default"];
|
||||
// 二进制数据则直接返回
|
||||
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
|
||||
return res.data
|
||||
if (
|
||||
res.request.responseType === "blob" ||
|
||||
res.request.responseType === "arraybuffer"
|
||||
) {
|
||||
return res.data;
|
||||
}
|
||||
if (code === 401) {
|
||||
if (!isRelogin.show) {
|
||||
isRelogin.show = true;
|
||||
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
|
||||
isRelogin.show = false;
|
||||
if(location.href.indexOf("localhost")>=0){
|
||||
//location.href = `/#/login?redirect=${encodeURIComponent("/xdbs/")}`;
|
||||
location.href=`http://localhost/#/login?redirect=${encodeURI('http://localhost:3000/xdbs/')}`
|
||||
}else{
|
||||
location.href = window.XDAPP+`#/login?redirect=${encodeURIComponent(window.XDBSAPP)}`;
|
||||
MessageBox.confirm(
|
||||
"登录状态已过期,您可以继续留在该页面,或者重新登录",
|
||||
"系统提示",
|
||||
{
|
||||
confirmButtonText: "重新登录",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}
|
||||
}).catch(() => {
|
||||
isRelogin.show = false;
|
||||
});
|
||||
}
|
||||
return Promise.reject('error')
|
||||
)
|
||||
.then(() => {
|
||||
isRelogin.show = false;
|
||||
if (location.href.indexOf("localhost") >= 0) {
|
||||
//location.href = `/#/login?redirect=${encodeURIComponent("/xdbs/")}`;
|
||||
location.href = `http://localhost/#/login?redirect=${encodeURI(
|
||||
"http://localhost:3000/xdbs/"
|
||||
)}`;
|
||||
} else {
|
||||
location.href =
|
||||
window.XDAPP +
|
||||
`#/login?redirect=${encodeURIComponent(window.XDBSAPP)}`;
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
isRelogin.show = false;
|
||||
});
|
||||
}
|
||||
return Promise.reject("error");
|
||||
} else if (code === 500) {
|
||||
if(msg.indexOf('重复提交')==-1){
|
||||
Message({ message: msg, type: 'error' })
|
||||
if (msg.indexOf("重复提交") == -1) {
|
||||
Message({ message: msg, type: "error" });
|
||||
}
|
||||
return Promise.reject(new Error(msg))
|
||||
return Promise.reject(new Error(msg));
|
||||
} else if (code === 601) {
|
||||
if(msg.indexOf('重复提交')==-1){
|
||||
Message({ message: msg, type: 'warning' })
|
||||
if (msg.indexOf("重复提交") == -1) {
|
||||
Message({ message: msg, type: "warning" });
|
||||
}
|
||||
return Promise.reject('error')
|
||||
return Promise.reject("error");
|
||||
} else if (code !== 200) {
|
||||
if(msg.indexOf('重复提交')==-1){
|
||||
Notification.error({ title: msg })
|
||||
if (msg.indexOf("重复提交") == -1) {
|
||||
Notification.error({ title: msg });
|
||||
}
|
||||
return Promise.reject('error')
|
||||
return Promise.reject("error");
|
||||
} else {
|
||||
return res.data
|
||||
return res.data;
|
||||
}
|
||||
},
|
||||
error => {
|
||||
console.log('err' + error)
|
||||
(error) => {
|
||||
console.log("err" + error);
|
||||
let { message } = error;
|
||||
if (message == "Network Error") {
|
||||
message = "后端接口连接异常";
|
||||
} else if (message.includes("Request failed with status code")) {
|
||||
} else if (message.includes("Request failed with status code")) {
|
||||
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
||||
}
|
||||
if(message.indexOf('重复提交')==-1){
|
||||
Message({ message: message, type: 'error', duration: 5 * 1000 })
|
||||
if (message.indexOf("重复提交") == -1) {
|
||||
Message({ message: message, type: "error", duration: 5 * 1000 });
|
||||
}
|
||||
return Promise.reject(error)
|
||||
return Promise.reject(error);
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
// 通用下载方法
|
||||
export function download(url, params, filename, config={}) {
|
||||
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
|
||||
export function download(url, params, filename, config = {}) {
|
||||
downloadLoadingInstance = Loading.service({
|
||||
text: "正在下载数据,请稍候",
|
||||
spinner: "el-icon-loading",
|
||||
background: "rgba(0, 0, 0, 0.7)",
|
||||
});
|
||||
return axios({
|
||||
url:url,
|
||||
method:"get",
|
||||
params:params||{},
|
||||
responseType: 'blob',
|
||||
...config
|
||||
}).then(async ({data}) => {
|
||||
|
||||
const isBlob = blobValidate(data);
|
||||
if (isBlob) {
|
||||
const blob = new Blob([data])
|
||||
saveAs(blob, filename)
|
||||
} else {
|
||||
const resText = await data.text();
|
||||
const rspObj = JSON.parse(resText);
|
||||
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
|
||||
Message.error(errMsg);
|
||||
}
|
||||
downloadLoadingInstance.close();
|
||||
}).catch((r) => {
|
||||
console.error(r)
|
||||
Message.error('下载文件出现错误,请联系管理员!')
|
||||
downloadLoadingInstance.close();
|
||||
url: url,
|
||||
method: "get",
|
||||
params: params || {},
|
||||
responseType: "blob",
|
||||
...config,
|
||||
})
|
||||
.then(async ({ data }) => {
|
||||
const isBlob = blobValidate(data);
|
||||
if (isBlob) {
|
||||
const blob = new Blob([data]);
|
||||
saveAs(blob, filename);
|
||||
} else {
|
||||
const resText = await data.text();
|
||||
const rspObj = JSON.parse(resText);
|
||||
const errMsg =
|
||||
errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
|
||||
Message.error(errMsg);
|
||||
}
|
||||
downloadLoadingInstance.close();
|
||||
})
|
||||
.catch((r) => {
|
||||
console.error(r);
|
||||
Message.error("下载文件出现错误,请联系管理员!");
|
||||
downloadLoadingInstance.close();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
export { axios,service}
|
||||
export default service
|
||||
export { axios, service };
|
||||
export default service;
|
||||
|
|
|
@ -51,9 +51,9 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="chart-bg power-chart2">
|
||||
<div class="chart-proc" :style="'height:'+leftPowerData[3]+'%'"></div>
|
||||
<div class="chart-proc" :style="'height:' + leftPowerData[3] + '%'"></div>
|
||||
<div class="data-top">
|
||||
<div class="chart-data led-number">{{ (leftPowerData[1]/1000.0).toFixed(1) }}</div>
|
||||
<div class="chart-data led-number">{{ (leftPowerData[1] / 1000.0).toFixed(1) }}</div>
|
||||
<div class="chart-unit">(T CO₂)</div>
|
||||
</div>
|
||||
<div class="data-bottom">
|
||||
|
@ -63,9 +63,9 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="chart-bg power-chart3">
|
||||
<div class="chart-proc" :style="'height:'+leftPowerData[4]+'%;'"></div>
|
||||
<div class="chart-proc" :style="'height:' + leftPowerData[4] + '%;'"></div>
|
||||
<div class="data-top">
|
||||
<div class="chart-data led-number">{{ (leftPowerData[2]/1000.0).toFixed(1) }}</div>
|
||||
<div class="chart-data led-number">{{ (leftPowerData[2] / 1000.0).toFixed(1) }}</div>
|
||||
<div class="chart-unit">(T CO₂)</div>
|
||||
</div>
|
||||
<div class="data-bottom">
|
||||
|
@ -87,7 +87,7 @@
|
|||
碳排放预估总量(T CO₂)
|
||||
</div>
|
||||
<div class="td-number">
|
||||
<people-number :number="(totalData[0]/1000.0).toFixed(1)" unit=""></people-number>
|
||||
<people-number :number="(totalData[0] / 1000.0).toFixed(1)" unit=""></people-number>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
@ -98,7 +98,7 @@
|
|||
碳排放监测累计总量(T CO₂)
|
||||
</div>
|
||||
<div class="td-number">
|
||||
<people-number :number="(totalData[1]/1000.0).toFixed(1)" unit=""></people-number>
|
||||
<people-number :number="(totalData[1] / 1000.0).toFixed(1)" unit=""></people-number>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
@ -109,7 +109,7 @@
|
|||
当月碳排放监测量(T CO₂)
|
||||
</div>
|
||||
<div class="td-number">
|
||||
<people-number :number="(totalData[2]/1000.0).toFixed(1)" unit=""></people-number>
|
||||
<people-number :number="(totalData[2] / 1000.0).toFixed(1)" unit=""></people-number>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
@ -167,8 +167,8 @@ export default {
|
|||
curMonthData: [],
|
||||
yearMonthData: {},
|
||||
leftOilData: [0, 0, 0, 0],
|
||||
leftPowerData:[0,0,0,40,60],
|
||||
totalData:[0,0,0],
|
||||
leftPowerData: [0, 0, 0, 40, 60],
|
||||
totalData: [0, 0, 0],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
@ -232,19 +232,19 @@ export default {
|
|||
(Math.round(tmps[0].sumEstimateValue / 10000) + 1) * 10,
|
||||
] : [0, 0, 0, 0];
|
||||
tmps = this.allData.filter(it => it.factorType == 3);
|
||||
this.leftPowerData=tmps.length>0?[
|
||||
this.leftPowerData = tmps.length > 0 ? [
|
||||
tmps[0].practicalValue,
|
||||
tmps[0].sumPracticalValue,
|
||||
tmps[0].sumEmissionReduction,
|
||||
tmps[0].sumEstimateValue==0?0:tmps[0].sumPracticalValue*100/tmps[0].sumEstimateValue,
|
||||
tmps[0].sumEstimateValue==0?0:tmps[0].sumEmissionReduction*100/tmps[0].sumEstimateValue,
|
||||
tmps[0].sumEstimateValue == 0 ? 0 : tmps[0].sumPracticalValue * 100 / tmps[0].sumEstimateValue,
|
||||
tmps[0].sumEstimateValue == 0 ? 0 : tmps[0].sumEmissionReduction * 100 / tmps[0].sumEstimateValue,
|
||||
|
||||
]:[0,0,0,0,0];
|
||||
] : [0, 0, 0, 0, 0];
|
||||
tmps = this.allData.filter(it => it.factorType == 0);
|
||||
this.totalData[0]=tmps.length>0?tmps[0].sumEstimateValue:0;
|
||||
this.totalData[1]=tmps.length>0?tmps[0].sumPracticalValue:0;
|
||||
tmps=this.curMonthData.filter(it=>it.factorType==0);
|
||||
this.totalData[2]=tmps.length>0?tmps[0].emissionReduction:0
|
||||
this.totalData[0] = tmps.length > 0 ? tmps[0].sumEstimateValue : 0;
|
||||
this.totalData[1] = tmps.length > 0 ? tmps[0].sumPracticalValue : 0;
|
||||
tmps = this.curMonthData.filter(it => it.factorType == 0);
|
||||
this.totalData[2] = tmps.length > 0 ? tmps[0].emissionReduction : 0
|
||||
this.chartKey++;
|
||||
});
|
||||
},
|
||||
|
@ -467,19 +467,19 @@ export default {
|
|||
return option;
|
||||
},
|
||||
renderChart4() {
|
||||
let sum=(objs)=>{
|
||||
let res=0;
|
||||
objs.forEach(it=>{
|
||||
res+=(it||0);
|
||||
let sum = (objs) => {
|
||||
let res = 0;
|
||||
objs.forEach(it => {
|
||||
res += (it || 0);
|
||||
});
|
||||
return res;
|
||||
}
|
||||
let is1K = this.$dpi() == "1K";
|
||||
let is2K = this.$dpi() == "2K";
|
||||
let datas=[0,0,0];
|
||||
datas[0]=this.yearMonthData.buildData?sum(this.yearMonthData.buildData.emissionReduction.datas):0;
|
||||
datas[1]=this.yearMonthData.oilData?sum(this.yearMonthData.oilData.emissionReduction.datas):0;
|
||||
datas[2]=this.yearMonthData.powerData?sum(this.yearMonthData.powerData.emissionReduction.datas):0;
|
||||
let datas = [0, 0, 0];
|
||||
datas[0] = this.yearMonthData.buildData ? sum(this.yearMonthData.buildData.emissionReduction.datas) : 0;
|
||||
datas[1] = this.yearMonthData.oilData ? sum(this.yearMonthData.oilData.emissionReduction.datas) : 0;
|
||||
datas[2] = this.yearMonthData.powerData ? sum(this.yearMonthData.powerData.emissionReduction.datas) : 0;
|
||||
let option = {
|
||||
legend: {
|
||||
|
||||
|
@ -555,7 +555,7 @@ export default {
|
|||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
valueFormatter: (v) => { return v?v:'- ' + 'T CO₂' },
|
||||
valueFormatter: (v) => { return v ? v : '- ' + 'T CO₂' },
|
||||
textStyle: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
|
@ -576,7 +576,7 @@ export default {
|
|||
{
|
||||
type: "category",
|
||||
boundaryGap: false,
|
||||
data: this.yearMonthData?.totalData?.emissionReduction?.titles||[],
|
||||
data: this.yearMonthData?.totalData?.emissionReduction?.titles || [],
|
||||
axisLabel: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24,
|
||||
color: "#a2c8f9"
|
||||
|
@ -603,7 +603,7 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
series: [
|
||||
{
|
||||
name: '碳预估',
|
||||
type: "line",
|
||||
|
@ -619,7 +619,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.totalData?.estimate?.datas||[],
|
||||
data: this.yearMonthData?.totalData?.estimate?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳排放',
|
||||
|
@ -636,7 +636,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.totalData?.practical?.datas||[],
|
||||
data: this.yearMonthData?.totalData?.practical?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳减排',
|
||||
|
@ -653,7 +653,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.totalData?.emissionReduction?.datas||[],
|
||||
data: this.yearMonthData?.totalData?.emissionReduction?.datas || [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
@ -672,7 +672,7 @@ export default {
|
|||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
|
||||
valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
|
||||
textStyle: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
|
@ -693,7 +693,7 @@ export default {
|
|||
{
|
||||
type: "category",
|
||||
boundaryGap: false,
|
||||
data: this.yearMonthData?.buildData?.emissionReduction?.titles||[],
|
||||
data: this.yearMonthData?.buildData?.emissionReduction?.titles || [],
|
||||
axisLabel: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24,
|
||||
color: "#a2c8f9"
|
||||
|
@ -720,7 +720,7 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
series: [
|
||||
{
|
||||
name: '碳预估',
|
||||
type: "bar",
|
||||
|
@ -736,7 +736,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
|
||||
},
|
||||
data:this.yearMonthData?.buildData?.estimate?.datas||[],
|
||||
data: this.yearMonthData?.buildData?.estimate?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳排放',
|
||||
|
@ -753,7 +753,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.buildData?.practical?.datas||[],
|
||||
data: this.yearMonthData?.buildData?.practical?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳减排',
|
||||
|
@ -770,10 +770,11 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.buildData?.emissionReduction?.datas||[],
|
||||
data: this.yearMonthData?.buildData?.emissionReduction?.datas || [],
|
||||
},
|
||||
],
|
||||
};
|
||||
console.log(option)
|
||||
return option;
|
||||
},
|
||||
renderChart7() {
|
||||
|
@ -789,7 +790,7 @@ export default {
|
|||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
|
||||
valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
|
||||
textStyle: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
|
@ -810,7 +811,7 @@ export default {
|
|||
{
|
||||
type: "category",
|
||||
boundaryGap: false,
|
||||
data: this.yearMonthData?.oilData?.emissionReduction?.titles||[],
|
||||
data: this.yearMonthData?.oilData?.emissionReduction?.titles || [],
|
||||
axisLabel: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24,
|
||||
color: "#a2c8f9"
|
||||
|
@ -837,7 +838,7 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
series: [
|
||||
{
|
||||
name: '碳预估',
|
||||
type: "line",
|
||||
|
@ -853,7 +854,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.oilData?.estimate?.datas||[],
|
||||
data: this.yearMonthData?.oilData?.estimate?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳排放',
|
||||
|
@ -870,7 +871,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.oilData?.practical?.datas||[],
|
||||
data: this.yearMonthData?.oilData?.practical?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳减排',
|
||||
|
@ -887,7 +888,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.oilData?.emissionReduction?.datas||[],
|
||||
data: this.yearMonthData?.oilData?.emissionReduction?.datas || [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
@ -906,7 +907,7 @@ export default {
|
|||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
|
||||
valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
|
||||
textStyle: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
|
@ -927,7 +928,7 @@ export default {
|
|||
{
|
||||
type: "category",
|
||||
boundaryGap: false,
|
||||
data: this.yearMonthData?.powerData?.emissionReduction?.titles||[],
|
||||
data: this.yearMonthData?.powerData?.emissionReduction?.titles || [],
|
||||
axisLabel: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24,
|
||||
color: "#a2c8f9"
|
||||
|
@ -954,7 +955,7 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
series: [
|
||||
{
|
||||
name: '碳预估',
|
||||
type: "bar",
|
||||
|
@ -970,7 +971,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
|
||||
},
|
||||
data:this.yearMonthData?.powerData?.estimate?.datas||[],
|
||||
data: this.yearMonthData?.powerData?.estimate?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳排放',
|
||||
|
@ -987,7 +988,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.powerData?.practical?.datas||[],
|
||||
data: this.yearMonthData?.powerData?.practical?.datas || [],
|
||||
},
|
||||
{
|
||||
name: '碳减排',
|
||||
|
@ -1004,7 +1005,7 @@ export default {
|
|||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
|
||||
},
|
||||
data: this.yearMonthData?.powerData?.emissionReduction?.datas||[],
|
||||
data: this.yearMonthData?.powerData?.emissionReduction?.datas || [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
|
@ -1,88 +1,99 @@
|
|||
import Vue from 'vue'
|
||||
import Api from '../api/index'
|
||||
import dayjs from 'dayjs'
|
||||
import './style/index.less'
|
||||
import dayfilter from '@/utils/dayfilter'
|
||||
import {tryToJson} from '../utils/tools'
|
||||
import { Loading } from 'element-ui';
|
||||
import Vue from "vue";
|
||||
import Api from "../api/index";
|
||||
import dayjs from "dayjs";
|
||||
import "./style/index.less";
|
||||
import dayfilter from "@/utils/dayfilter";
|
||||
import { tryToJson } from "../utils/tools";
|
||||
import { Loading } from "element-ui";
|
||||
|
||||
import moduleOne11 from '../components/module/module-one-1-1.vue'
|
||||
import moduleOne12 from '../components/module/module-one-1-2.vue'
|
||||
import moduleOne13 from '../components/module/module-one-1-3.vue'
|
||||
import moduleOne21 from '../components/module/module-one-2-1.vue'
|
||||
import moduleOne22 from '../components/module/module-one-2-2.vue'
|
||||
import moduleOne23 from '../components/module/module-one-2-3.vue'
|
||||
import peopleNumber from '@/components/people-number.vue'
|
||||
import dictTag from '@/components/DictTag/index.vue'
|
||||
import MyDialog from '@/components/MyDialog.vue'
|
||||
import MyChart from '@/components/MyChart.vue'
|
||||
import moduleOne11 from "../components/module/module-one-1-1.vue";
|
||||
import moduleOne12 from "../components/module/module-one-1-2.vue";
|
||||
import moduleOne13 from "../components/module/module-one-1-3.vue";
|
||||
import moduleOne21 from "../components/module/module-one-2-1.vue";
|
||||
import moduleOne22 from "../components/module/module-one-2-2.vue";
|
||||
import moduleOne23 from "../components/module/module-one-2-3.vue";
|
||||
import moduleOne31 from "../components/module/module-one-3-1.vue";
|
||||
import peopleNumber from "@/components/people-number.vue";
|
||||
import dictTag from "@/components/DictTag/index.vue";
|
||||
import MyDialog from "@/components/MyDialog.vue";
|
||||
import MyChart from "@/components/MyChart.vue";
|
||||
import projectOverviewChart from "@/components/project-overview-chart.vue";
|
||||
//import projectOverviewChart from '../components/project-overview-chart.vue'
|
||||
//import peopleNumber from '../components/people-number.vue'
|
||||
import header from '../components/header.vue'
|
||||
import header from "../components/header.vue";
|
||||
Loading.install(Vue);
|
||||
//H265Player.install(Vue);
|
||||
dayfilter(Vue);
|
||||
const vue=new Vue();
|
||||
Vue.component("screen-header",header)
|
||||
Vue.component("module-one-1-1",moduleOne11)
|
||||
Vue.component("module-one-1-2",moduleOne12)
|
||||
Vue.component("module-one-1-3",moduleOne13)
|
||||
Vue.component("module-one-2-1",moduleOne21)
|
||||
Vue.component("module-one-2-2",moduleOne22)
|
||||
Vue.component("module-one-2-3",moduleOne23)
|
||||
Vue.component("people-number",peopleNumber)
|
||||
Vue.component("my-chart",MyChart)
|
||||
Vue.component("dict-tag",dictTag)
|
||||
Vue.component("MyDialog",MyDialog)
|
||||
Vue.prototype.$bus=new Vue();
|
||||
const vue = new Vue();
|
||||
Vue.component("screen-header", header);
|
||||
Vue.component("module-one-1-1", moduleOne11);
|
||||
Vue.component("module-one-1-2", moduleOne12);
|
||||
Vue.component("module-one-1-3", moduleOne13);
|
||||
Vue.component("module-one-2-1", moduleOne21);
|
||||
Vue.component("module-one-2-2", moduleOne22);
|
||||
Vue.component("module-one-2-3", moduleOne23);
|
||||
Vue.component("module-one-3-1", moduleOne31);
|
||||
Vue.component("people-number", peopleNumber);
|
||||
Vue.component("my-chart", MyChart);
|
||||
Vue.component("dict-tag", dictTag);
|
||||
Vue.component("MyDialog", MyDialog);
|
||||
Vue.component("project-overview-chart", projectOverviewChart);
|
||||
Vue.prototype.$bus = new Vue();
|
||||
//Vue.component("people-number",peopleNumber)
|
||||
//Vue.component("project-overview-chart",projectOverviewChart)
|
||||
Vue.prototype.$api=Api;
|
||||
Vue.prototype.$bus=vue;
|
||||
Vue.prototype.$apiPath=process.env.VUE_APP_BASE_API
|
||||
Vue.prototype.$dt=dayjs;
|
||||
Vue.prototype.$tryToJson=tryToJson
|
||||
Vue.prototype.$toggleFullScreen=(el)=>{
|
||||
if(document.fullscreenElement==el){
|
||||
let screen = document.cancelFullScreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || document.exitFullScreen
|
||||
if (typeof screen != "undefined" && screen) {
|
||||
screen.call(document);
|
||||
return;
|
||||
}
|
||||
|
||||
}else{
|
||||
let screen = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen
|
||||
if (typeof screen != "undefined" && screen) {
|
||||
screen.call(el);
|
||||
return;
|
||||
}
|
||||
Vue.prototype.$api = Api;
|
||||
Vue.prototype.$bus = vue;
|
||||
Vue.prototype.$apiPath = process.env.VUE_APP_BASE_API;
|
||||
Vue.prototype.$dt = dayjs;
|
||||
Vue.prototype.$tryToJson = tryToJson;
|
||||
Vue.prototype.$toggleFullScreen = (el) => {
|
||||
if (document.fullscreenElement == el) {
|
||||
let screen =
|
||||
document.cancelFullScreen ||
|
||||
document.webkitCancelFullScreen ||
|
||||
document.mozCancelFullScreen ||
|
||||
document.exitFullScreen;
|
||||
if (typeof screen != "undefined" && screen) {
|
||||
screen.call(document);
|
||||
return;
|
||||
}
|
||||
}
|
||||
Vue.prototype.$dpi=()=>{
|
||||
let w=document.querySelector(".main-app").clientWidth;
|
||||
return w>2561?"4K":w<1920?"1K":"2K";
|
||||
}
|
||||
Vue.filter('toDate',d=>{
|
||||
return dayjs(d).format("YYYY-MM-DD")
|
||||
});
|
||||
Vue.filter('toDateTime',d=>{
|
||||
return dayjs(d).format("YYYY-MM-DD HH:mm:ss")
|
||||
});
|
||||
Vue.filter('toTime',d=>{
|
||||
return dayjs(d).format("HH:mm:ss")
|
||||
});
|
||||
window.__isfull__=false;
|
||||
window.fullscreenInterval=setInterval(()=>{
|
||||
if(document.fullscreenElement){
|
||||
if(!window.__isfull__){
|
||||
vue.$emit("fullscreen",true);
|
||||
window.__isfull__=true;
|
||||
}
|
||||
}else{
|
||||
if(window.__isfull__){
|
||||
vue.$emit("fullscreen",false);
|
||||
window.__isfull__=false;
|
||||
}
|
||||
} else {
|
||||
let screen =
|
||||
el.requestFullScreen ||
|
||||
el.webkitRequestFullScreen ||
|
||||
el.mozRequestFullScreen ||
|
||||
el.msRequestFullScreen;
|
||||
if (typeof screen != "undefined" && screen) {
|
||||
screen.call(el);
|
||||
return;
|
||||
}
|
||||
},500);
|
||||
window.xdcaches={};
|
||||
}
|
||||
};
|
||||
Vue.prototype.$dpi = () => {
|
||||
let w = document.querySelector(".main-app").clientWidth;
|
||||
return w > 2561 ? "4K" : w < 1920 ? "1K" : "2K";
|
||||
};
|
||||
Vue.filter("toDate", (d) => {
|
||||
return dayjs(d).format("YYYY-MM-DD");
|
||||
});
|
||||
Vue.filter("toDateTime", (d) => {
|
||||
return dayjs(d).format("YYYY-MM-DD HH:mm:ss");
|
||||
});
|
||||
Vue.filter("toTime", (d) => {
|
||||
return dayjs(d).format("HH:mm:ss");
|
||||
});
|
||||
window.__isfull__ = false;
|
||||
window.fullscreenInterval = setInterval(() => {
|
||||
if (document.fullscreenElement) {
|
||||
if (!window.__isfull__) {
|
||||
vue.$emit("fullscreen", true);
|
||||
window.__isfull__ = true;
|
||||
}
|
||||
} else {
|
||||
if (window.__isfull__) {
|
||||
vue.$emit("fullscreen", false);
|
||||
window.__isfull__ = false;
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
window.xdcaches = {};
|
||||
|
|
|
@ -275,7 +275,7 @@
|
|||
</p>
|
||||
<div>
|
||||
<span class="led-number">{{ selProject.scheduledStartTime | toDate
|
||||
}}</span>
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -291,7 +291,7 @@
|
|||
</p>
|
||||
<div>
|
||||
<span class="led-number">{{ selProject.plannedCompletionTime | toDate
|
||||
}}</span>
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -306,7 +306,7 @@
|
|||
</p>
|
||||
<div>
|
||||
<span class="led-number">{{ selProject.actualOperatingTime | toDate
|
||||
}}</span>
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -320,7 +320,8 @@
|
|||
合同工期
|
||||
</p>
|
||||
<div>
|
||||
<span class="led-number">{{ selProject.projectTimeLimit || '' }}</span> 天
|
||||
<span class="led-number">{{ selProject.projectTimeLimit || '' }}</span>
|
||||
天
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -490,7 +491,7 @@
|
|||
<div class="wi-label">当前风向</div>
|
||||
<div class="wi-data-unit">
|
||||
<span class="wi-txt">{{ weatherInfo.windDirection }}{{ weatherInfo.windScale
|
||||
}}</span>
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
@ -854,7 +855,7 @@ export default {
|
|||
}
|
||||
|
||||
.led-number {
|
||||
font-size: 40px;
|
||||
font-size: 36px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1150,7 +1151,7 @@ export default {
|
|||
|
||||
|
||||
.led-number {
|
||||
font-size: 50px;
|
||||
font-size: 48px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1442,7 +1443,7 @@ export default {
|
|||
font-size: 30px;
|
||||
|
||||
.led-number {
|
||||
font-size: 70px;
|
||||
font-size: 60px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1454,6 +1455,7 @@ export default {
|
|||
|
||||
.prj-img-list {
|
||||
height: calc(100% - 190px);
|
||||
|
||||
.prj-img-nav {
|
||||
.prj-img-nav-item {
|
||||
line-height: 60px;
|
||||
|
@ -1462,6 +1464,7 @@ export default {
|
|||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-carousel {
|
||||
height: 100%;
|
||||
|
||||
|
|
|
@ -0,0 +1,505 @@
|
|||
<template>
|
||||
<div class="project-safety-check main-page">
|
||||
<el-col :span="6" class="h100">
|
||||
<module-one-1-1 label="安全隐患排查" class="chart1-module">
|
||||
<el-col :span="12" v-for="(it, idx) in chart1Data" :key="idx">
|
||||
<div
|
||||
class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div">
|
||||
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
<svg-icon icon-class="notesearch"></svg-icon>
|
||||
</div>
|
||||
<div>
|
||||
<div class="equipment-list-data equipment-list-data_div_top">
|
||||
<span>{{ it.name }}</span>
|
||||
</div>
|
||||
<div class="equipment-list-data equipment-list-data_div_bottom">
|
||||
<span class="sp-data">{{ it.value || 0 }}</span><span class="sp-unit">条</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</module-one-1-1>
|
||||
<module-one-2-1 label="日常巡检">
|
||||
<div class="div-item-chart">
|
||||
<div class="data-item-chart">
|
||||
<div class="total-info">{{ item1Data.total }}<br />
|
||||
<span class="sp-label">问题总数</span>
|
||||
</div>
|
||||
<div class="chart-gif chart-overview-gif"></div>
|
||||
<my-chart :key="itemChartKey1" id="project-safety-check-item1" width="100%" height="100%"
|
||||
:render="o => renderDataItem1(1)"></my-chart>
|
||||
</div>
|
||||
{{ item1Data.infos }}
|
||||
</div>
|
||||
</module-one-2-1>
|
||||
</el-col>
|
||||
<el-col :span="18" class="h100">
|
||||
<module-one-1-3 label="隐患类别统计">
|
||||
<my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%"
|
||||
:render="renderChart2"></my-chart>
|
||||
</module-one-1-3>
|
||||
<el-row class="el-right">
|
||||
<el-col :span="8">
|
||||
<module-one-2-1 label="周检"></module-one-2-1>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<module-one-2-1 label="月检"></module-one-2-1>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<module-one-2-1 label="转型检查"></module-one-2-1>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
chartKey2: 0,
|
||||
itemChartKey1: 0,
|
||||
dpi: '',
|
||||
selProject: null,
|
||||
legendOpt1: {
|
||||
icon: "rect",
|
||||
textStyle: {
|
||||
color: "#c3dbfd",
|
||||
fontSize: 14,
|
||||
rich: {
|
||||
name: {
|
||||
color: "#c3dbfd",
|
||||
padding: [0, 20, 0, 0],
|
||||
},
|
||||
percent: {
|
||||
color: "#4676FD"
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
overviewText: '问题数',
|
||||
chart1Data: [],
|
||||
chart2Data: [],
|
||||
item1Data: {
|
||||
total: 0,
|
||||
datas: [],
|
||||
infos: [],
|
||||
},
|
||||
item2Data: {
|
||||
total: 0,
|
||||
datas: [],
|
||||
infos: [],
|
||||
},
|
||||
item3Data: {
|
||||
total: 0,
|
||||
datas: [],
|
||||
infos: [],
|
||||
},
|
||||
item4Data: {
|
||||
total: 0,
|
||||
datas: [],
|
||||
infos: [],
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
window.safetyApp = this;
|
||||
this.$store.dispatch('ChangeNav', 301);
|
||||
this.$bus.$on('projectChange', prj => {
|
||||
this.selProject = prj;
|
||||
this.init();
|
||||
});
|
||||
this.selProject = this.$store.getters.selProject;
|
||||
this.init();
|
||||
this.dpi = this.$dpi();
|
||||
window.addEventListener("resize", () => {
|
||||
if (this.dpi != this.$dpi()) {
|
||||
this.dpi = this.$dpi();
|
||||
this.chartKey++;
|
||||
}
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
if (!this.selProject) {
|
||||
return;
|
||||
}
|
||||
let postData = {
|
||||
projectId: this.selProject.id,
|
||||
comId: this.selProject.comId
|
||||
};
|
||||
let ajaxs = [
|
||||
this.$api.safety.groupByProblemType(postData),
|
||||
this.$api.safety.groupByDangerType(postData),
|
||||
this.$api.safety.listCountForBG({ ...postData, problemType: 1, infoType: 0 }),
|
||||
this.$api.safety.listForBG({ ...postData, problemType: 1, infoType: 0 }),
|
||||
this.$api.safety.listCountForBG({ ...postData, problemType: 2, infoType: 0 }),
|
||||
this.$api.safety.listForBG({ ...postData, problemType: 2, infoType: 0 }),
|
||||
this.$api.safety.listCountForBG({ ...postData, problemType: 3, infoType: 0 }),
|
||||
this.$api.safety.listForBG({ ...postData, problemType: 3, infoType: 0 }),
|
||||
this.$api.safety.listCountForBG({ ...postData, problemType: 4, infoType: 0 }),
|
||||
this.$api.safety.listForBG({ ...postData, problemType: 4, infoType: 0 }),
|
||||
];
|
||||
this.$api.http.all(ajaxs).then(res => {
|
||||
this.chart1Data = (res[0].data || []).map(it => {
|
||||
return {
|
||||
id: it.nickedInfo,
|
||||
value: it.id,
|
||||
name: it.problemType,
|
||||
data: it
|
||||
}
|
||||
});
|
||||
this.chart2Data = (res[1].data || []).map(it => {
|
||||
return {
|
||||
id: it.nickedInfo,
|
||||
name: it.dangerType,
|
||||
value1: it.id,
|
||||
value2: it.comId,
|
||||
}
|
||||
});
|
||||
this.showChart1();//安全隐患排查
|
||||
this.showChart2();//隐患类别统计
|
||||
this.makeItemData(this.item1Data, res[2].data)
|
||||
this.makeItemData(this.item2Data, res[4].data)
|
||||
this.makeItemData(this.item3Data, res[6].data)
|
||||
this.makeItemData(this.item4Data, res[8].data)
|
||||
this.itemChartKey1++;
|
||||
});
|
||||
},
|
||||
showChart1(n) {
|
||||
|
||||
},
|
||||
showChart2() {
|
||||
this.chartKey2++;
|
||||
},
|
||||
makeItemData(item, res) {
|
||||
let labels = ['问题总数', '待整改', '待复检', '复检驳回', '整改完成', '超时整改'];
|
||||
item.total = res[0].id;
|
||||
let total = res[0].id;
|
||||
item.datas = [];
|
||||
for (let i = 1; i < 5; i++) {
|
||||
item.datas.push({
|
||||
name: labels[i],
|
||||
value: res[i].id
|
||||
});
|
||||
}
|
||||
item.infos = [];
|
||||
for (let i = 0; i < res.length; i++) {
|
||||
item.infos.push({
|
||||
name: labels[i],
|
||||
value: res[i].id,
|
||||
percent: total == 0 ? 0 : (res[i].id / total * 100.0).toFixed(1)
|
||||
});
|
||||
}
|
||||
},
|
||||
renderDataItem1() {
|
||||
let option = {
|
||||
color: ["#71BCC4", "#EEBE47", "#5EA85D", "#5B84EB", "#E76168"],
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
padAngle: 1,
|
||||
itemStyle: {
|
||||
borderRadius: 5
|
||||
}, emphasis: {
|
||||
label: {
|
||||
show: false,
|
||||
}
|
||||
},
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
|
||||
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
data: this.item1Data.datas
|
||||
}
|
||||
]
|
||||
};
|
||||
console.log("--->", this.item1Data.datas)
|
||||
return option;
|
||||
},
|
||||
renderChart2(opt) {
|
||||
let is1K = this.$dpi() == "1K";
|
||||
let is2K = this.$dpi() == "2K";
|
||||
let option = {
|
||||
grid: {
|
||||
left: "5%",
|
||||
right: "5%",
|
||||
bottom: "0%",
|
||||
top: "15%",
|
||||
containLabel: true,
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
valueFormatter: (v) => { return v },
|
||||
textStyle: {
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
top: is1K ? '0%' : is2K ? '0%' : '0%',
|
||||
left: 'center',
|
||||
itemWidth: is1K ? 25 : is2K ? 30 : 40,
|
||||
itemHeight: is1K ? 14 : is2K ? 20 : 20,
|
||||
itemGap: is1K ? 20 : is2K ? 30 : 40,
|
||||
textStyle: {
|
||||
color: "#fff",
|
||||
fontSize: is1K ? 14 : is2K ? 20 : 30,
|
||||
}
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: "category",
|
||||
data: this.chart2Data.map(it => it.name.replace(/[“”]/g, "'")),
|
||||
axisLabel: {
|
||||
width: 60,
|
||||
rotate: 15,
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24,
|
||||
overflow: "break",
|
||||
color: "#a2c8f9"
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
opacity: 0.1
|
||||
}
|
||||
}
|
||||
},
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
type: "value",
|
||||
minInterval: 1,
|
||||
axisLabel: {
|
||||
formatter: '{value}',
|
||||
color: "#2ec2b3",
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
opacity: 0.1
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '问题数',
|
||||
type: "bar",
|
||||
barGap: '0%',
|
||||
barWidth: '20%',
|
||||
label: {
|
||||
show: true,
|
||||
position: "top",
|
||||
color: "#4DAAFC",
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
lineStyle: {
|
||||
color: "#7ddff2",
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
|
||||
},
|
||||
data: this.chart2Data.map(it => it.value1),
|
||||
},
|
||||
{
|
||||
name: '待改数',
|
||||
type: "bar",
|
||||
barGap: '0%',
|
||||
barWidth: '20%',
|
||||
label: {
|
||||
show: true,
|
||||
position: "top",
|
||||
color: "#4DAAFC",
|
||||
fontSize: is1K ? 12 : is2K ? 14 : 24
|
||||
},
|
||||
lineStyle: {
|
||||
color: "#006594",
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
|
||||
},
|
||||
data: this.chart2Data.map(it => it.value2),
|
||||
}
|
||||
],
|
||||
};
|
||||
return option;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.project-safety-check {
|
||||
.screen-one-1-3 {
|
||||
height: calc(33% - 20px) !important;
|
||||
}
|
||||
|
||||
.el-right {
|
||||
height: calc(66% - 20px) !important;
|
||||
|
||||
.el-col-8 {
|
||||
height: 100%;
|
||||
|
||||
.screen-one-2-1 {
|
||||
margin: 0px 20px;
|
||||
height: calc(100% - 0px) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chart1-module {
|
||||
.el-col-12 {
|
||||
height: 50%;
|
||||
width: 50%;
|
||||
display: flex;
|
||||
|
||||
.czz-number-img {
|
||||
display: flex;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
svg {
|
||||
width: 30px !important;
|
||||
height: 30px !important;
|
||||
fill: #00aaff59 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_top {
|
||||
span {
|
||||
font-size: 14px;
|
||||
color: #cbdaff;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_bottom {
|
||||
margin-top: 10px;
|
||||
|
||||
.sp-data {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.sp-unit {
|
||||
font-size: 14px;
|
||||
color: #cbdaff;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.div-item-chart {
|
||||
position: relative;
|
||||
height: 230px;
|
||||
|
||||
.data-item-chart {
|
||||
height: 230px;
|
||||
width: 230px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
|
||||
.total-info {
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
top: calc(50% - 20px);
|
||||
left: calc(50% - 50px);
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
|
||||
.sp-label {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-overview-gif {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
top: calc(50% - 40px);
|
||||
left: calc(50% - 40px);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||
.chart1-module {
|
||||
.el-col-12 {
|
||||
.czz-number-img {
|
||||
display: flex;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
|
||||
svg {
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_top {
|
||||
span {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_bottom {
|
||||
margin-top: 20px;
|
||||
|
||||
.sp-data {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.sp-unit {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 2561px) {
|
||||
.chart1-module {
|
||||
.el-col-12 {
|
||||
.czz-number-img {
|
||||
display: flex;
|
||||
width: 160px;
|
||||
height: 160px;
|
||||
|
||||
svg {
|
||||
width: 60px !important;
|
||||
height: 60px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_top {
|
||||
span {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_bottom {
|
||||
margin-top: 20px;
|
||||
|
||||
.sp-data {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.sp-unit {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -102,4 +102,11 @@ public interface SmzSspProblemmodifyMapper
|
|||
* @return
|
||||
*/
|
||||
public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where);
|
||||
|
||||
/**
|
||||
* 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
|
||||
* @param where
|
||||
* @return
|
||||
*/
|
||||
public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
|
||||
}
|
||||
|
|
|
@ -300,7 +300,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</update>
|
||||
|
||||
<sql id="countUserWhere">
|
||||
<if test="problemType != null and problemType != ''"> and a,problemType = #{problemType}</if>
|
||||
<if test="problemType != null and problemType != ''"> and a.problemType = #{problemType}</if>
|
||||
<if test="dangerType != null and dangerType != ''"> and a.danger_type = #{dangerType}</if>
|
||||
<if test="createTime != null "> and date(a.createTime) >= date(#{createTime})</if>
|
||||
<if test="updateTime != null "> and date(a.updateTime) <= date(#{updateTime})</if>
|
||||
|
@ -331,6 +331,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<include refid="countUserWhere"></include>
|
||||
</select>
|
||||
|
||||
<select id="getListCountBG" parameterType="SmzSspProblemmodify" resultMap="SmzSspProblemmodifyResult">
|
||||
select 'a' projectName, count(1) id ,'全部' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0
|
||||
<include refid="countUserWhere"></include>
|
||||
union
|
||||
select 'b' projectName, count(1) id,'待整改' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (0)
|
||||
<include refid="countUserWhere"></include>
|
||||
union
|
||||
select 'c' projectName, count(1) id,'待复检' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (1)
|
||||
<include refid="countUserWhere"></include>
|
||||
union
|
||||
select 'd' projectName, count(1) id,'驳回' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (3)
|
||||
<include refid="countUserWhere"></include>
|
||||
union
|
||||
select 'e' projectName, count(1) id,'完成' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (4)
|
||||
<include refid="countUserWhere"></include>
|
||||
union
|
||||
select 'f' projectName, count(1) id,'整改超时' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState not in (4) and date(a.nickedTime) <= curdate()
|
||||
<include refid="countUserWhere"></include>
|
||||
</select>
|
||||
<select id="getWxListCount" parameterType="SmzSspProblemmodify" resultType="Map">
|
||||
select ssp.checkState, count(1) as total from smz_ssp_problemmodify ssp
|
||||
<where>
|
||||
|
|
|
@ -338,7 +338,7 @@ public class SmzSspProblemmodifyController extends BaseController
|
|||
@RequiresPermissions("trouble:problemmodify:list")
|
||||
@GetMapping("/listCountForBG")
|
||||
public AjaxResult listCountForBG(SmzSspProblemmodify where){
|
||||
List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCount(where);
|
||||
List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCountBG(where);
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,4 +106,10 @@ public interface ISmzSspProblemmodifyService
|
|||
*/
|
||||
public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where);
|
||||
|
||||
/**
|
||||
* 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
|
||||
* @param where
|
||||
* @return
|
||||
*/
|
||||
public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ public class SmzSspAuditinfoServiceImpl implements ISmzSspAuditinfoService
|
|||
SmzSspProblemmodify smzSspProblemmodify = new SmzSspProblemmodify();
|
||||
smzSspProblemmodify.setId(smzSspAuditinfo.getMainId());
|
||||
// (0待审,1通过,2驳回)
|
||||
//(0待整改,1待复检,2复检驳回,3复检通过)
|
||||
//(0待整改,1待复检,3复检驳回,4复检通过)
|
||||
if("0".equals(smzSspAuditinfo.getProcessState())){
|
||||
smzSspProblemmodify.setCheckState(CheckStateEnums.DFJ.getCode());
|
||||
}else if("1".equals(smzSspAuditinfo.getProcessState())){
|
||||
|
|
|
@ -188,5 +188,14 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
|
|||
public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where) {
|
||||
return smzSspProblemmodifyMapper.groupByDangerType(where);
|
||||
}
|
||||
/**
|
||||
* 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
|
||||
* @param where
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where) {
|
||||
return smzSspProblemmodifyMapper.getListCountBG(where);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue