update code

dev_xd
lijun 2024-12-05 23:18:31 +08:00
parent 685a6db03e
commit 4bd4b8eb20
8 changed files with 565 additions and 263 deletions

View File

@ -30,7 +30,23 @@ body {
font-size: 16px;
overflow: auto;
}
.scroll::-webkit-scrollbar {
width: 8px ;
height: 8px;
}
.scroll::-webkit-scrollbar-thumb {
background-color: #01a9ff;
border-radius: 4px ;
}
@media (max-width: 1920px) {
.w-scroll::-webkit-scrollbar {
width: 8px !important;
height: 8px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: #01a9ff;
border-radius: 4px !important;
}
#app {
width: 1912px;
height: 1080px;
@ -62,16 +78,24 @@ body {
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
.w-scroll::-webkit-scrollbar {
width: 16px !important;
height: 16px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: #01a9ff;
border-radius: 8px !important;
}
#app {
width: 2552px;
width: 2550px;
height: 1440px;
}
.screen-content-max {
width: 2552px;
width: 2550px;
height: 1440px;
}
.background_video video {
width: 2552px;
width: 2550px;
height: 1440px;
}
.div-header {
@ -102,6 +126,14 @@ body {
}
}
@media (min-width: 2561px) {
.w-scroll::-webkit-scrollbar {
width: 20px !important;
height: 20px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: #01a9ff;
border-radius: 10px !important;
}
#app {
width: 3832px;
height: 2160px;
@ -175,14 +207,6 @@ body {
padding: 12px;
height: calc(100% - 48px);
}
.scroll::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.scroll::-webkit-scrollbar-thumb {
background-color: #01a9ff;
border-radius: 4px;
}
body::-webkit-scrollbar {
width: 8px;
height: 8px;
@ -1884,18 +1908,6 @@ table {
overflow-x: auto;
position: relative;
}
.dangerous-timeline-max::-webkit-scrollbar {
width: 10px;
height: 10px;
}
.dangerous-timeline-max::-webkit-scrollbar-thumb {
border-radius: 10px;
background: #192c64;
}
.dangerous-timeline-max::-webkit-scrollbar-track {
border-radius: 10px;
background: #010b2d;
}
.dangerous-timeline-min {
z-index: 2;
position: absolute;

View File

@ -36,8 +36,24 @@ body{
overflow: auto;
}
.scroll::-webkit-scrollbar {
width: 8px ;
height: 8px;
}
.scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 4px ;
}
@media (max-width: 1920px) {
.w-scroll::-webkit-scrollbar {
width: 8px !important;
height: 8px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 4px !important;
}
#app{
width:1912px;
height: 1080px;
@ -70,16 +86,24 @@ body{
}
@media (min-width: 1921px) and (max-width: 2560px) {
.w-scroll::-webkit-scrollbar {
width: 16px !important;
height: 16px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 8px !important;
}
#app{
width:2552px;
width:2550px;
height:1440px;
}
.screen-content-max{
width:2552px;
width:2550px;
height:1440px;
}
.background_video video{
width:2552px;
width:2550px;
height:1440px;
}
.div-header{
@ -113,6 +137,14 @@ body{
@media (min-width: 2561px) {
.w-scroll::-webkit-scrollbar {
width: 20px !important;
height: 20px !important;
}
.w-scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 10px !important;
}
#app{
width:3832px;
height:2160px;
@ -192,14 +224,6 @@ body{
padding:12px;
height: calc(100% - 48px);
}
.scroll::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 4px;
}
body::-webkit-scrollbar{
width: 8px;
height: 8px;
@ -1882,18 +1906,7 @@ table{
overflow-x: auto;
position: relative;
}
.dangerous-timeline-max::-webkit-scrollbar {
width: 10px;
height: 10px;
}
.dangerous-timeline-max::-webkit-scrollbar-thumb {
border-radius: 10px;
background: #192c64;
}
.dangerous-timeline-max::-webkit-scrollbar-track {
border-radius: 10px;
background: #010b2d;
}
.dangerous-timeline-min{
z-index: 2;
position: absolute;

View File

@ -111,7 +111,7 @@ export default {
@media (min-width: 1921px) and (max-width: 2560px) {
.div-header {
.head-nav {
font-size: 16px;
font-size: 18px;
width: auto;
height: auto;
padding: 5px 40px;
@ -146,10 +146,10 @@ export default {
@media (min-width: 2561px) {
.div-header {
.head-nav {
font-size: 20px;
font-size: 30px;
width: auto;
height: auto;
padding: 5px 40px;
padding: 10px 30px;
position: relative;
top: -8px;
}

View File

@ -1,202 +0,0 @@
<template>
<el-row :key="elKey">
<el-col :span="8">
<div class="time-study-value">
<p>今日预警数</p>
<div class="analyse-num">
<span>{{ todayCnt }}</span>
</div>
</div>
<div class="time-study-value">
<p>本周预警数</p>
<div class="analyse-num">
<span>{{ weekCnt }}</span>
</div>
</div>
</el-col>
<el-col :span="16">
<div class="survey-oil-title">
<div class="survey-oil-hr"></div>
<div class="survey-oil-text">预警类型</div>
<div class="survey-oil-summary" style="
position: absolute;
right: 0px;
top: 8px;
font-size: 15px;
padding: 0 15px;
background: #000b25;
">
<span style="font-weight: 800; color: red">未完成</span>/<span style="color: #c0dafb">总数</span>
</div>
</div>
<div class="analyse-number-max" id="afootOverflowType" style="height: unset">
<div class="glr-login-number-max analyse-num-max" v-for="(item, idx) in warningType" @click="doShowDetail(item)"
v-if="type != 'detail' || (type == 'detail' && item.name != '劳资预警')" style="height: unset;cursor: pointer;" :key="idx">
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe" >
<div><img src="images/text_red_spot.png" />{{ item.name }}</div>
<div class="glr-rate-value glr-rate-red-value">
<template v-if="idx == 0">
<span style="color: #c0dafb">{{ item.total }}</span>
</template>
<template v-else>
<span>{{ item.data }}</span>/
<span style="color: #c0dafb">{{ item.total }}</span>
</template>
</div>
</div>
</div>
</div>
</el-col>
<flowLabourDlg ref="flowLabourDlg"></flowLabourDlg>
</el-row>
</template>
<script>
import flowLabourDlg from "../dlg/flowLabourDlg";
export default {
name: "JhbigscreenMonitAndWarning",
components: {
flowLabourDlg,
},
props: {
type: {
type: String,
default: "index",
},
},
data() {
return {
elKey: 0,
prjInfo: {},
deptInfo: {},
todayCnt: 0,
weekCnt: 0,
warningType: [
{
name: "AI预警",
data: 0,
total: 0,
},
{
name: "安全预警",
data: 0,
total: 0,
},
{
name: "质量预警",
data: 0,
total: 0,
},
{
name: "劳资预警",
data: 0,
total: 0,
},
],
};
},
mounted() {
this.$bus.$on("projectChange", (res) => {
this.prjInfo = res;
this.deptInfo = this.$root.dept ||this.deptInfo|| {};
if (this.deptInfo.text) {
this.getMonitAndWarning();
}
});
if (this.$root.hasInitHeader) {
this.initMe();
}
},
created() {
this.initMe();
},
methods: {
doShowDetail(item){
if(item.name == '劳资预警'){
if(this.type=="detail"){
this.$refs.flowLabourDlg.showDialog(this.prjInfo);
}else{
this.$refs.flowLabourDlg.showDialog({id:0});
}
}
},
initMe() {
this.prjInfo = this.$root.project || {};
this.deptInfo = this.$root.dept || {};
this.getMonitAndWarning();
},
getMonitAndWarning() {
let prjId = 0;
if (this.type == "detail") {
prjId = this.prjInfo.id;
}
this.$api.problemmodify
.getMonitAndWarning(this.deptInfo.id || 0, prjId)
.then((d) => {
let tmps = d.data?.today || [];
let sum = 0;
tmps.forEach((it) => {
sum += it.total;
});
this.todayCnt = sum;
sum = 0;
tmps = d.data?.week || [];
tmps.forEach((it) => {
sum += it.total;
});
this.weekCnt = sum;
let data = 0;
sum = 0;
tmps = d.data?.group || [];
let objs = tmps.filter((it) => it.infotype == "0");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[1].data = data;
this.warningType[1].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "1");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[2].data = data;
this.warningType[2].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "96");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[0].data = data;
this.warningType[0].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "97");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "100") {
data += it.total;
}
});
this.warningType[3].data = data;
this.warningType[3].total = sum;
this.elKey++;
});
},
},
};
</script>

View File

@ -742,7 +742,7 @@
import "../components/module/module-one-1-2";
import "../components/staff-survey-chart";
import mapModle from "./detail/mapModle.vue";
import MonitAndWarning from "./components/MonitAndWarning.vue";
import MonitAndWarning from "../views/components/MonitAndWarning.vue";
import projectInfoDlg from "./detail/projectInfoDlg.vue";
import debounce from "lodash.debounce";
import AttendanceDetailDialog from "./components/AttendanceDetailDialog.vue";

View File

@ -0,0 +1,314 @@
<template>
<el-row :key="elKey" class="monit-and-warning" :class="'is-' + type">
<el-col :span="8">
<div class="time-study-value">
<p>今日预警数</p>
<div class="analyse-num">
<span>{{ todayCnt }}</span>
</div>
</div>
<div class="time-study-value">
<p>本周预警数</p>
<div class="analyse-num">
<span>{{ weekCnt }}</span>
</div>
</div>
</el-col>
<el-col :span="16">
<div class="survey-oil-title">
<div class="survey-oil-hr"></div>
<div class="survey-oil-text">预警类型</div>
<div class="survey-oil-summary" style="
position: absolute;
right: 0px;
top: 8px;
font-size: 15px;
padding: 0 15px;
background: #000b25;
">
<span style="font-weight: 800; color: red">未完成</span>/<span style="color: #c0dafb">总数</span>
</div>
</div>
<div class="analyse-number-max" id="afootOverflowType" style="height: unset">
<div class="glr-login-number-max analyse-num-max" v-for="(item, idx) in warningType" :key="idx"
@click="doShowDetail(item)" v-if="type != 'detail' || (type == 'detail' && item.name != '劳资预警')"
style="height: unset;cursor: pointer;">
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div><img src="images/text_red_spot.png" />{{ item.name }}</div>
<div class="glr-rate-value glr-rate-red-value">
<template v-if="idx == 0">
<span style="color: #c0dafb">{{ item.total }}</span>
</template>
<template v-else>
<span>{{ item.data }}</span>/
<span style="color: #c0dafb">{{ item.total }}</span>
</template>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</template>
<script>
import testData from '../test/detail'
import debounce from 'lodash.debounce'
export default {
props: {
type: {
type: String,
default: "index",
},
},
data() {
return {
elKey: 0,
prjInfo: {},
deptInfo: {},
todayCnt: 0,
weekCnt: 0,
warningType: [
{
name: "AI预警",
data: 0,
total: 0,
},
{
name: "安全预警",
data: 0,
total: 0,
},
{
name: "质量预警",
data: 0,
total: 0,
},
{
name: "劳资预警",
data: 0,
total: 0,
},
],
};
},
created() {
this.$bus.$on('projectChange', debounce(res => {
this.prjInfo = res;
this.getMonitAndWarning();
}));
},
methods: {
doShowDetail(item) {
if (item.name == '劳资预警') {
if (this.type == "detail") {
this.$refs.flowLabourDlg.showDialog(this.prjInfo);
} else {
this.$refs.flowLabourDlg.showDialog({ id: 0 });
}
}
},
getMonitAndWarning() {
let prjId = 0;
if (this.type == "detail") {
prjId = this.prjInfo.id;
}
let d = testData.monitAndWarning;
let tmps = d.data?.today || [];
let sum = 0;
tmps.forEach((it) => {
sum += it.total;
});
this.todayCnt = sum;
sum = 0;
tmps = d.data?.week || [];
tmps.forEach((it) => {
sum += it.total;
});
this.weekCnt = sum;
let data = 0;
sum = 0;
tmps = d.data?.group || [];
let objs = tmps.filter((it) => it.infotype == "0");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[1].data = data;
this.warningType[1].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "1");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[2].data = data;
this.warningType[2].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "96");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[0].data = data;
this.warningType[0].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "97");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "100") {
data += it.total;
}
});
this.warningType[3].data = data;
this.warningType[3].total = sum;
this.elKey++;
},
},
};
</script>
<style lang="less">
.monit-and-warning {
.time-study-value {
margin-bottom: 10px;
}
.analyse-number-max {
.analyse-num-max {
margin-top: 10px;
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
.monit-and-warning {
.time-study-value {
margin-bottom: 40px !important;
margin-top: 20px !important;
p {
font-size: 24px;
}
.analyse-num {
font-size: 18px;
span {
font-size: 40px;
}
}
}
}
.survey-oil-title {
.survey-oil-text {
font-size: 20px;
background-size: 12px 24px;
}
.survey-oil-summary{
font-size:30px !important;
}
}
.analyse-number-max {
.analyse-num-max {
margin-top: 30px !important;
.glr-login-number-red-bgd {
background-size: 100% 45px;
height: 45px;
;
}
.analyse-login-numbe {
font-size: 24px;
top: 20px;
img {
width: 10px;
height: 10px;
margin-right: 8px;
}
.glr-rate-value{
span{
font-size:30px;
}
}
}
}
}
}
@media (min-width: 2561px) {
.monit-and-warning {
.time-study-value {
margin-bottom: 80px !important;
margin-top: 30px !important;
p {
font-size: 36px;
}
.analyse-num {
font-size: 24px;
span {
font-size: 54px;
}
}
}
}
.survey-oil-title {
.survey-oil-text {
padding-left: 30px;
font-size: 30px;
background-size: 18px 36px;
}
.survey-oil-summary{
font-size:40px !important;
}
}
.analyse-number-max {
.analyse-num-max {
margin-top: 60px !important;
.glr-login-number-red-bgd {
background-size: 100% 80px;
height: 80px;
}
.analyse-login-numbe {
font-size: 36px;
top: 30px;
img {
width: 16px;
height: 16px;
margin-right: 10px;
}
.glr-rate-value{
span{
font-size:40px;
}
}
}
}
}
}
</style>

View File

@ -359,9 +359,9 @@
</el-carousel>
</div>
</module-one-2-2>
<module-one-1-2 label="项目节点计划预警">
<div class="dangerous-max">
<div class="dangerous-timeline-max">
<module-one-1-2 label="项目节点计划预警" class="prj-plan">
<div class="dangerous-max" :key="chartKey">
<div class="dangerous-timeline-max w-scroll">
<div class="dangerous-timeline-min" :style="{ width: maxWidth + 'px' }">
<template v-if="projectBuildNode && projectBuildNode.length > 0">
<div class="dangerous-timeline-con" v-for="item in projectBuildNode">
@ -490,7 +490,7 @@
</div>
</module-one-2-1>
<module-one-1-1 label="项目监测预警">
<MonitAndWarning type="detail"></MonitAndWarning>
</module-one-1-1>
</el-col>
<project-info-dialog ref="infoDlg"></project-info-dialog>
@ -500,12 +500,14 @@
<script>
import projectInfoDialog from './detail/projectInfoDialog.vue';
import staffSurveyChart from '@/components/staffSurveyChart.vue';
import MonitAndWarning from './components/MonitAndWarning.vue';
import testData from './test/detail'
import debounce from 'lodash.debounce'
export default {
components: {
projectInfoDialog,
staffSurveyChart
staffSurveyChart,
MonitAndWarning
},
data() {
return {
@ -567,14 +569,15 @@ export default {
this.cityInfo = d.data?.city || [];
});
this.projectBuildNode = testData.projectBuildNode;
this.maxWidth = 200 * this.projectBuildNode.length;
let itemWidth = this.$dpi() == "1K" ? 200 : this.$dpi() == "2K" ? 300 : 500;
this.maxWidth = itemWidth * this.projectBuildNode.length;
let n = 0;
for (let i = 0; i < this.projectBuildNode.length; i++) {
if (this.projectBuildNode[i].finish == "进行中") {
n = i;
}
}
this.minWidth = n * 200 + 100;
this.minWidth = n * itemWidth + 100;
},
methods: {
showDetailDlg() {
@ -878,6 +881,31 @@ export default {
}
}
}
.prj-plan {
.dangerous-timeline-max {
width: 850px;
height: 230px;
.dangerous-timeline-con {
width: 200px;
font-size: 14px;
}
.dangerous-text {
font-size: 14px;
}
.dangerous-time-max {
text-align: center;
.dangerous-time-nav {
display: inline-block;
}
}
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
@ -1114,6 +1142,37 @@ export default {
}
}
}
.prj-plan {
.dangerous-timeline-max {
width: 1160px;
height: 340px;
.dangerous-timeline-con {
width: 300px;
font-size: 24px;
}
.dangerous-text {
font-size: 24px;
}
.dangerous-time-max {
height: 150px;
line-height: 50px;
.project-expect-state {
font-size: 24px;
width: 160px;
height: 40px;
line-height: 40px;
}
}
}
}
}
}
@ -1366,6 +1425,40 @@ export default {
}
}
}
.prj-plan {
.dangerous-timeline-max {
width: 1790px;
height: 570px;
.strip-max{
top:136px;
}
.dangerous-timeline-con {
width: 500px;
font-size: 42px;
}
.dangerous-text {
font-size: 42px;
height: 100px;
line-height: 40px;
}
.dangerous-time-max {
height: 300px;
line-height: 100px;
.project-expect-state {
font-size: 36px;
width: 240px;
height: 60px;
line-height: 60px;
}
}
}
}
}
}
</style>

View File

@ -905,6 +905,78 @@ const nodes = [
},
];
export default {
projectBuildNode:nodes
const monitAndWarning={
"msg": "操作成功",
"code": 200,
"data": {
"week": [
{
"infotype": "1",
"total": 10
},
{
"infotype": "0",
"total": 5
},
{
"infotype": "96",
"total": 31
},
{
"infotype": "97",
"total": 0
}
],
"today": [
{
"infotype": "0",
"total": 3
},
{
"infotype": "96",
"total": 0
},
{
"infotype": "97",
"total": 0
}
],
"group": [
{
"infotype": "1",
"total": 73,
"checkState": "4"
},
{
"infotype": "0",
"total": 94,
"checkState": "4"
},
{
"infotype": "0",
"total": 9,
"checkState": "0"
},
{
"infotype": "0",
"total": 3,
"checkState": "1"
},
{
"infotype": "1",
"total": 2,
"checkState": "0"
},
{
"infotype": "96",
"total": 536,
"checkState": "4"
}
]
}
}
export default {
projectBuildNode:nodes ,
monitAndWarning:monitAndWarning
}