Merge branch 'shenzhen-dev' of http://139.9.66.234:18023/yjlHub/zhgdlarge into shenzhen-dev

This commit is contained in:
Vce 2024-06-13 22:00:30 +08:00
commit 500cc54d92
9 changed files with 287 additions and 102 deletions

View File

@ -4,8 +4,8 @@ NODE_ENV = 'development'
# 本地环境接口地址(/api/index.ts文件中使用) # 本地环境接口地址(/api/index.ts文件中使用)
# 后端本地 # 后端本地
# VITE_API_URL = 'http://192.168.34.221:19111' # VITE_API_URL = 'http://192.168.34.221:19111'
# VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地 VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程 # VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程
# VITE_API_URL = 'http://192.168.34.221:28889' # VITE_API_URL = 'http://192.168.34.221:28889'
# VITE_API_URL = 'http://121.196.214.246/api' # VITE_API_URL = 'http://121.196.214.246/api'
# VITE_API_URL = 'http://jxj.zhgdyun.com:100' # VITE_API_URL = 'http://jxj.zhgdyun.com:100'

4
package-lock.json generated
View File

@ -6560,7 +6560,7 @@
}, },
"node_modules/echarts-liquidfill": { "node_modules/echarts-liquidfill": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/echarts-liquidfill/-/echarts-liquidfill-2.0.6.tgz", "resolved": "https://registry.npmmirror.com/echarts-liquidfill/-/echarts-liquidfill-2.0.6.tgz",
"integrity": "sha512-p+AH0O9/BtwXMQQyhjJbMZo+GwRAgWG/DCyK5r27PQzpS0UWrgXu57MyEFc0A8Ub3sRuqEu08BuxwHICBkSWSQ==", "integrity": "sha512-p+AH0O9/BtwXMQQyhjJbMZo+GwRAgWG/DCyK5r27PQzpS0UWrgXu57MyEFc0A8Ub3sRuqEu08BuxwHICBkSWSQ==",
"peerDependencies": { "peerDependencies": {
"echarts": "^4.8.0", "echarts": "^4.8.0",
@ -21389,7 +21389,7 @@
}, },
"echarts-liquidfill": { "echarts-liquidfill": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/echarts-liquidfill/-/echarts-liquidfill-2.0.6.tgz", "resolved": "https://registry.npmmirror.com/echarts-liquidfill/-/echarts-liquidfill-2.0.6.tgz",
"integrity": "sha512-p+AH0O9/BtwXMQQyhjJbMZo+GwRAgWG/DCyK5r27PQzpS0UWrgXu57MyEFc0A8Ub3sRuqEu08BuxwHICBkSWSQ==", "integrity": "sha512-p+AH0O9/BtwXMQQyhjJbMZo+GwRAgWG/DCyK5r27PQzpS0UWrgXu57MyEFc0A8Ub3sRuqEu08BuxwHICBkSWSQ==",
"requires": {} "requires": {}
}, },

View File

@ -231,7 +231,7 @@ onMounted(async () => {});
font-family: "OPPOSans-Bold"; font-family: "OPPOSans-Bold";
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 40px; margin: 0 20px;
padding-top: 10px; padding-top: 10px;
.title-time { .title-time {

View File

@ -31,6 +31,7 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
export const COMPANY: string = "agjtLive"; //鞍钢集团现场大屏 export const COMPANY: string = "agjtLive"; //鞍钢集团现场大屏
// export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏 // export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
// export const COMPANY: string = "agjtProjectKanban"; //鞍钢集团项目看板大屏 // export const COMPANY: string = "agjtProjectKanban"; //鞍钢集团项目看板大屏
// export const COMPANY: string = "agjtOverviewScreen"; //鞍钢集团项目总览
// export const COMPANY: string = "slx"; //苏立信项目 // export const COMPANY: string = "slx"; //苏立信项目
// export const COMPANY: string = "hfqc"; //合肥启程项目 // export const COMPANY: string = "hfqc"; //合肥启程项目
// export const COMPANY: string = "jsyc"; // 江苏盐城项目 // export const COMPANY: string = "jsyc"; // 江苏盐城项目

View File

@ -28,6 +28,8 @@ export const staticRouter: RouteRecordRaw[] = [
// component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏 // component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏
component: () => import("@/views/agjtLiveScreen/indexLive.vue"), //鞍钢现场大屏 component: () => import("@/views/agjtLiveScreen/indexLive.vue"), //鞍钢现场大屏
// component: () => import("@/views/overviewScreen/indexCommand.vue"), //总览大屏 // component: () => import("@/views/overviewScreen/indexCommand.vue"), //总览大屏
// component: () => import("@/views/agjtLiveScreen/indexLive.vue"), //鞍钢现场大屏
// component: () => import("@/views/overviewScreen/indexCommand.vue"), //总览大屏
// component: () => import("@/views/agjtProjectKanban/indexL.vue"), //鞍钢集团项目看板大屏 // component: () => import("@/views/agjtProjectKanban/indexL.vue"), //鞍钢集团项目看板大屏
// component: () => import("@/views/sevenLargeScreen/indexL_syhy.vue"), // 只有一级路由(盘锦、嘉兴、鄱湖美湾医疗项目需切换至该首页) // component: () => import("@/views/sevenLargeScreen/indexL_syhy.vue"), // 只有一级路由(盘锦、嘉兴、鄱湖美湾医疗项目需切换至该首页)
children: [ children: [
@ -284,9 +286,9 @@ export const staticRouter: RouteRecordRaw[] = [
component: () => import("@/views/agjtProjectKanban/comprehensiveManage/projectOverview/index.vue") component: () => import("@/views/agjtProjectKanban/comprehensiveManage/projectOverview/index.vue")
}, },
{ {
path: "/overviewScreen", path: "/agjtLiveScreen",
name: "大屏总览", name: "鞍钢现场大屏",
component: () => import("@/views/overviewScreen/commandCenter/index.vue") component: () => import("@/views/agjtLiveScreen/liveScreen/index.vue")
} }
], ],
meta: { meta: {

View File

@ -1,16 +1,8 @@
<template> <template>
<div class="leftTop"> <div class="leftTop">
<Card title="安全教育"> <Card title="安全教育">
<div class="video-config"> <div class="video-config" @click="openPeopleCountDialog">
<el-icon class="config-icon" color="#57BCE8" size="24"><Setting /></el-icon> <el-icon class="config-icon" color="#57BCE8" size="24"><Setting /></el-icon>
<div class="dialog-content" v-show="false">
<div class="dialog-title">
<div class="title-img"><img src="@/assets/images/titleIcon.png" alt="" /></div>
<div class="title-text">
<i>配置视频</i>
</div>
</div>
</div>
</div> </div>
<div class="href-content" v-if="showVideo == 1"> <div class="href-content" v-if="showVideo == 1">
<el-carousel indicator-position="none" height="450px" style="width: 100%;"> <el-carousel indicator-position="none" height="450px" style="width: 100%;">
@ -29,6 +21,7 @@
<video :src="BASEURL + '/image/' + projectData.videoUrl" class="videos" autoplay controls loop></video> <video :src="BASEURL + '/image/' + projectData.videoUrl" class="videos" autoplay controls loop></video>
</div> </div>
</Card> </Card>
<setVideoDialog ref="partyBuildRef"></setVideoDialog>
</div> </div>
</template> </template>
@ -42,6 +35,7 @@ import { editProjectInfo, eidtProjectShowConfig, queryBySnData } from "@/api/mod
import { selectLiveVideoListApi } from "@/api/modules/video"; import { selectLiveVideoListApi } from "@/api/modules/video";
import ckplayerComp from "./ckplayerComp.vue"; import ckplayerComp from "./ckplayerComp.vue";
import { COMPANY } from "@/config/config"; import { COMPANY } from "@/config/config";
import setVideoDialog from "@/components/setVideoDialog.vue";
const store = GlobalStore(); const store = GlobalStore();
const videoList = ref([] as any); const videoList = ref([] as any);
@ -55,7 +49,13 @@ const props = withDefaults(defineProps<Props>(), {
}); });
// //
const projectData = ref({} as any); const projectData = ref({} as any);
//
const partyBuildRef = ref();
const openPeopleCountDialog = () => {
partyBuildRef.value.openDialog({
title: "配置视频"
});
};
watch( watch(
() => props.projectData, () => props.projectData,
newVal => { newVal => {

View File

@ -134,6 +134,7 @@ const login = (formEl: FormInstance | undefined) => {
// router.push("/commandScreen"); // router.push("/commandScreen");
router.push("/agjtLiveScreen"); router.push("/agjtLiveScreen");
} else if (COMPANY === "agjtOverview") { } else if (COMPANY === "agjtOverview") {
} else if (COMPANY === "agjtOverviewScreen") {
router.push("/overviewScreen"); router.push("/overviewScreen");
} else { } else {
// router.push("/projectOverview"); // router.push("/projectOverview");

View File

@ -222,8 +222,8 @@ onMounted(() => {
.right { .right {
width: 26%; width: 26%;
height: 109.2%; height: 100%;
transform: translateY(-70px); // transform: translateY(-70px);
// .rightAll { // .rightAll {
// height: 32%; // height: 32%;
// } // }

View File

@ -1,7 +1,7 @@
<!-- eslint-disable vue/v-on-event-hyphenation --> <!-- eslint-disable vue/v-on-event-hyphenation -->
<template> <template>
<div class="rightAll"> <div class="rightAll">
<div class="card-content card-box"> <div class="card-content">
<Card title="隐患智能统计分析"> <Card title="隐患智能统计分析">
<div class="hRight"> <div class="hRight">
<el-date-picker <el-date-picker
@ -41,39 +41,48 @@
</div> </div>
<div class="enterprise-box"> <div class="enterprise-box">
<Card title="各企业本周数据统计"> <Card title="各企业本周数据统计">
<div class="enterprise-info"> <el-carousel style="width: 100%; height: 100%">
<div>辽宁五寰科技有限公司</div> <el-carousel-item v-for="item in 4" :key="item" style="width: 100%; height: 100%">
<div class="line1" style="display: flex"> <div class="enterprise-info">
<span style="margin-left: 15px">事故报警总数</span> <div>辽宁五寰科技有限公司{{ item }}</div>
<div class="numberCard" v-for="(item, i) in '204'" :key="i">{{ item }}</div> <div class="line1" style="display: flex">
</div> <span style="margin-left: 15px">事故报警总数</span>
</div> <div class="numberCard" v-for="(ele, i) in '204'" :key="i">{{ ele }}</div>
<div class="enterprise-list"> </div>
<div class="enterprise-title"> </div>
<div>入场人员总数</div> <div class="enterprise-list">
<div>55</div> <div class="enterprise-title">
</div> <div>入场人员总数</div>
<div class="enterprise-title"> <div>55</div>
<div>企业安全分</div> </div>
<div>55</div> <div class="enterprise-title">
</div> <div>企业安全分</div>
<div class="enterprise-title"> <div>55</div>
<div>安全隐患总数</div> </div>
<div>55</div> <div class="enterprise-title">
</div> <div>安全隐患总数</div>
<div class="enterprise-title"> <div>55</div>
<div>质量隐患总数</div> </div>
<div>55</div> <div class="enterprise-title">
</div> <div>质量隐患总数</div>
<div class="enterprise-title"> <div>55</div>
<div>特殊作业数量</div> </div>
<div>55</div> <div class="enterprise-title">
</div> <div>特殊作业数量</div>
<div class="enterprise-title"> <div>55</div>
<div>培训未通过率</div> </div>
<div>56%</div> <div class="enterprise-title">
</div> <div>培训未通过率</div>
</div> <div>56%</div>
</div>
</div>
</el-carousel-item>
</el-carousel>
</Card>
</div>
<div class="manAnalysis-box">
<Card title="区域人员数量分析">
<div id="eacherManAnalysis" style="width: 100%; height: 100%"></div>
</Card> </Card>
</div> </div>
</div> </div>
@ -629,6 +638,169 @@ const qualityInfo = async (showLoading: boolean) => {
// drawEchart2(); // drawEchart2();
}; };
function getManAnalysisEchart() {
const echartsTest = echarts.init(document.getElementById("eacherManAnalysis"));
let option = {
tooltip: {
trigger: "axis",
confine: true
},
legend: {
trigger: "item",
position: "inside",
top: "3%",
x: "center",
textStyle: {
color: "#fff"
},
itemWidth: 10,
itemHeight: 10,
icon: "roundRect",
data: ["一号区域", "二号区域", "三号区域"]
},
// color: ["#2BA5FF", "#F97766", "#1EF1FF", "#1EF1FF"],
grid: {
left: "6%",
right: "6%",
top: "15%",
bottom: "5%",
containLabel: true
},
xAxis: {
type: "category",
boundaryGap: false,
data: ["1", "5", "10", "15", "20", "25"],
axisLabel: {
color: "#fff"
},
axisTick: {
show: false
},
axisLine: {
show: true,
lineStyle: {
color: "#172A44"
}
}
},
yAxis: {
// name: "",
nameTextStyle: {
color: "#fff"
},
axisLabel: {
color: "#fff"
},
splitLine: {
lineStyle: {
color: "#172A44"
}
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: "#2079A0"
}
}
// type: 'value'
},
// dataZoom: [
// {
// id: "dataZoomX",
// type: "inside",
// xAxisIndex: [0],
// brushSelect: false,
// zoomOnMouseWheel: false,
// moveOnMouseWheel: true, //
// moveOnMouseMove: true, //
// preventDefaultMouseMove: false,
// // start:100,
// startValue: riskList.value.length - 1,
// endValue: riskList.value.length - 6,
// //
// width: 8,
// //
// // height: "80%",
// //
// right: 3,
// //
// handleSize: 0,
// filterMode: "empty"
// // top: "top",
// }
// ],
series: [
{
name: "一号区域",
type: "line",
// stack: "Total",
lineStyle: {
color: "rgba(43, 165, 255, 1) ",
shadowBlur: 12,
shadowColor: "rgba(43, 165, 255, 0.9)",
shadowOffsetX: 1,
shadowOffsetY: 1
},
itemStyle: {
color: "rgba(43, 165, 255, 1) ",
borderWidth: 1,
borderColor: "#FFF"
},
smooth: true,
symbol: "none",
data: [12, 8, 15, 20, 32, 20]
},
{
name: "二号区域",
type: "line",
lineStyle: {
color: "rgba(249, 119, 102, 1) ",
shadowBlur: 12,
shadowColor: "rgba(249, 119, 102, 0.9)",
shadowOffsetX: 1,
shadowOffsetY: 1
},
itemStyle: {
color: "rgba(249, 119, 102, 1) ",
borderWidth: 1,
borderColor: "#FFF"
},
smooth: true,
symbol: "none",
data: [12, 3, 4, 5, 6, 10]
},
{
name: "三号区域",
type: "line",
lineStyle: {
color: "rgba(30, 241, 255, 1) ",
shadowBlur: 12,
shadowColor: "rgba(30, 241, 255, 0.9)",
shadowOffsetX: 1,
shadowOffsetY: 1
},
itemStyle: {
color: "rgba(30, 241, 255, 1) ",
borderWidth: 1,
borderColor: "#FFF"
},
smooth: true,
symbol: "none",
data: [20, 30, 14, 15, 26, 1]
}
]
};
echartsTest.setOption(option, true);
window.addEventListener("resize", () => {
console.log(echartsTest);
echartsTest.resize();
});
console.log(echartsTest);
}
watch( watch(
dateRange, dateRange,
() => { () => {
@ -645,6 +817,7 @@ watch(
const setIntervalFn = (showLoading: boolean) => { const setIntervalFn = (showLoading: boolean) => {
getSafeInfo(showLoading); getSafeInfo(showLoading);
qualityInfo(showLoading); qualityInfo(showLoading);
getManAnalysisEchart();
}; };
onMounted(async () => { onMounted(async () => {
@ -656,10 +829,16 @@ onMounted(async () => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.manAnalysis-box {
height: 32%;
margin-top: 1%;
}
.enterprise-box { .enterprise-box {
height: 25%; height: 28%;
margin-top: 1%;
:deep(.h-card .content) { :deep(.h-card .content) {
padding: 6px 10px; padding: 6px 10px;
height: 80%;
} }
.enterprise-info { .enterprise-info {
display: flex; display: flex;
@ -674,7 +853,7 @@ onMounted(async () => {
.enterprise-list { .enterprise-list {
display: grid; display: grid;
grid-template-columns: 33% 33% 33%; grid-template-columns: 33% 33% 33%;
margin: 10px 8px; margin: 4px 8px 10px 8px;
.enterprise-title { .enterprise-title {
margin-left: 10px; margin-left: 10px;
margin-top: 10px; margin-top: 10px;
@ -696,7 +875,14 @@ onMounted(async () => {
} }
} }
.card-box { .card-content {
height: 40%;
.hRight {
width: 50%;
position: absolute;
top: 1%;
right: 0;
}
.contentTop { .contentTop {
width: 100%; width: 100%;
height: 100% !important; height: 100% !important;
@ -752,15 +938,6 @@ onMounted(async () => {
} }
} }
} }
.card-content {
height: 40%;
.hRight {
width: 50%;
position: absolute;
top: 1%;
right: 0;
}
}
.line1 { .line1 {
color: #fff; color: #fff;
@ -797,36 +974,40 @@ onMounted(async () => {
color: white; color: white;
right: 3%; right: 3%;
} }
:deep(.el-carousel__container) {
.title-tabs { height: 100%;
width: initial !important; }
display: flex; :deep() {
align-items: center; .el-carousel__indicator--horizontal .el-carousel__button {
height: 13%; width: 10px;
// margin-left: 4%; height: 10px;
color: white !important; background: #a8c3dd;
border: 1px solid #a8c3dd;
> div { border-radius: 50%;
// padding: 2px 0; opacity: 0.3;
font-size: 13px;
font-weight: normal;
line-height: 25px;
width: 170px;
width: 140px;
text-align: center;
// background-color: #315296;
background: rgb(0, 33, 116);
background: linear-gradient(270deg, rgba(0, 33, 116, 0.8) 0%, rgba(40, 88, 184, 0.3) 96%);
cursor: pointer;
} }
.el-carousel__indicator--horizontal.is-active .el-carousel__button {
.title-color { width: 10px;
// background-color: #1449b6; height: 10px;
background: rgb(0, 33, 116); background: #4ac0f3;
background: linear-gradient(270deg, rgba(0, 33, 116, 1) 0%, rgba(40, 88, 184, 1) 96%); border: 1px solid #4ac0f3;
border-radius: 50%;
opacity: 1;
} }
} }
.scroll {
height: 100%;
overflow: hidden;
}
.rightAll {
// background: url("@/assets/images/commandScreen/card-right-all.png") no-repeat;
// background-color: #fff;
// background-size: 100% 100%;
width: 100%;
height: 100%;
}
.notoDta { .notoDta {
top: 25%; top: 25%;
width: 50%; width: 50%;
@ -847,18 +1028,18 @@ onMounted(async () => {
margin: -6% 30%; margin: -6% 30%;
} }
} }
:deep(.el-input__inner) {
.scroll { color: #fff;
height: 100%;
overflow: hidden;
} }
.rightAll { :deep(.el-select .el-input .el-select__caret) {
// background: url("@/assets/images/commandScreen/card-right-all.png") no-repeat; color: #fff;
// background-color: #fff; }
// background-size: 100% 100%;
width: 100%; :deep(.el-input__wrapper) {
height: 100%; width: 85%;
height: 0%;
background: #0d2956;
} }
:deep(.el-range-separator) { :deep(.el-range-separator) {