Merge branch 'bjxz-rain' of http://139.9.66.234:18023/yjlHub/zhgdlarge into bjxz-rain

This commit is contained in:
”Rain“ 2024-06-06 17:02:54 +08:00
commit 3059dfeda5
15 changed files with 237 additions and 4829 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'
@ -29,6 +29,8 @@ VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程
# VITE_API_URL = 'http://jxj.zhgdyun.com:19812' # VITE_API_URL = 'http://jxj.zhgdyun.com:19812'
# 苏立信 # 苏立信
# VITE_API_URL = 'http://101.43.164.214:11111' # VITE_API_URL = 'http://101.43.164.214:11111'
# 中科安信
# VITE_API_URL = 'http://8.136.222.164:8808'
# 上传 # 上传
VITE_ULD_API_URL = 'http://192.168.34.155:8012/onlinePreview?url=' VITE_ULD_API_URL = 'http://192.168.34.155:8012/onlinePreview?url='

View File

@ -12,7 +12,7 @@ NODE_ENV = "production"
# VITE_API_URL = "http://183.249.224.118:9003" # VITE_API_URL = "http://183.249.224.118:9003"
# 百色 新项目通用地址 # 百色 新项目通用地址
VITE_API_URL = 'http://101.43.164.214:11111' # VITE_API_URL = 'http://101.43.164.214:11111'
# 七参数标准版(演示平台) # 七参数标准版(演示平台)
# VITE_API_URL = 'http://jxj.zhgdyun.com:9809' # VITE_API_URL = 'http://jxj.zhgdyun.com:9809'
@ -25,6 +25,8 @@ VITE_API_URL = 'http://101.43.164.214:11111'
# VITE_API_URL = 'http://42.180.188.17:11211' #测试环境 # VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
# 苏立信 # 苏立信
# VITE_API_URL = 'http://101.43.164.214:11111' # VITE_API_URL = 'http://101.43.164.214:11111'
# 中科安信
VITE_API_URL = 'http://8.136.222.164:8808'
# 打包 # 打包
VITE_ULD_API_URL = 'http://jxj.zhgdyun.com:8012/onlinePreview?url=' VITE_ULD_API_URL = 'http://jxj.zhgdyun.com:8012/onlinePreview?url='

4834
package-lock.json generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -28,7 +28,7 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
// export const COMPANY: string = "zsbf"; //中水北方 // export const COMPANY: string = "zsbf"; //中水北方
// export const COMPANY: string = "as"; //鞍山项目 // export const COMPANY: string = "as"; //鞍山项目
// export const COMPANY: string = "agjt"; //鞍钢集团 // export const COMPANY: string = "agjt"; //鞍钢集团
export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏 // export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
// 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"; // 江苏盐城项目
@ -37,3 +37,4 @@ export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
// export const COMPANY: string = "phmw"; //鄱湖美湾医疗、医美产业集群项目 (需要去src\routers\modules\staticRouter.ts更换首页) // export const COMPANY: string = "phmw"; //鄱湖美湾医疗、医美产业集群项目 (需要去src\routers\modules\staticRouter.ts更换首页)
// export const COMPANY: string = "xjnb"; // 新建宁波项目 // export const COMPANY: string = "xjnb"; // 新建宁波项目
// export const COMPANY: string = "ahsa"; // 安徽水安项目 // export const COMPANY: string = "ahsa"; // 安徽水安项目
export const COMPANY: string = "zkax"; // 中科安信项目

View File

@ -1321,3 +1321,26 @@ export const ZHZRFMenu: Array<any> = [
}, },
]; //中海·臻如府 ]; //中海·臻如府
// 中科安信大屏
export const ZKAXMenu: Array<any> = [
{
moduleName: "首页概览",
modulePath: "/projectOverview"
},
{
moduleName: "劳务管理",
modulePath: "/laborManagement"
},
{
moduleName: "质量管理",
modulePath: "/qualityManagement"
},
{
moduleName: "安全管理",
modulePath: "/securityManagement"
},
{
menuName: "进度计划",
companyPath: "/schedulePlan"
}
];

View File

@ -50,12 +50,26 @@
<span :style="statScore.radio > 0 ? 'color:#0db027' : 'color:#f77c7d'">{{ statScore.radio > 0 ? "↑" : "↓" }} </span> <span :style="statScore.radio > 0 ? 'color:#0db027' : 'color:#f77c7d'">{{ statScore.radio > 0 ? "↑" : "↓" }} </span>
</div> </div>
</div> </div>
<div class="score-div" @click="openDialogData({ index: 9, title: '月度安全综合评分' })"> <div :class="['score-div', statScore.total >= 80 ? 'scoreBg1':statScore.total >= 60 ? 'scoreBg2':'scoreBg3']" @click="openDialogData({ index: 9, title: '月度安全综合评分' })">
<div class="score-part"> <div class="score-part">
<span>{{ statScore.total }}</span> <span>{{ statScore.total }}</span>
<span></span> <span></span>
</div> </div>
<span>安全评分</span> <div class="scoreInner scoreTextBg1" v-if="statScore.total >= 80">
<span style="font-size:18px">安全评分</span>
<div class="scoreReview" >优秀</div>
<div class="scoreStar"></div>
</div>
<div class="scoreInner scoreTextBg2" v-if="statScore.total >= 60 && statScore.total < 80">
<span style="font-size:18px">安全评分</span>
<div class="scoreReview">一般</div>
<div class="scoreStar"></div>
</div>
<div class="scoreInner scoreTextBg3" v-if="statScore.total < 60">
<span style="font-size:18px">安全评分</span>
<div class="scoreReview"></div>
<div class="scoreStar"></div>
</div>
</div> </div>
<div class="classify-div"> <div class="classify-div">
<div class="classify-div-item" @click="openDialogData({ index: 1, title: '危大工程' })"> <div class="classify-div-item" @click="openDialogData({ index: 1, title: '危大工程' })">
@ -288,13 +302,20 @@ onMounted(async () => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.scoreBg1{background-image: radial-gradient(circle, rgb(46, 200, 49) 0px, rgba(255, 255, 255, 0) 115px);}
.scoreBg2{background-image: radial-gradient(circle, rgb(255,175,0) 0px, rgba(255, 255, 255, 0) 115px);}
.scoreBg3{background-image: radial-gradient(circle, rgb(200, 46, 56) 0px, rgba(255, 255, 255, 0) 115px);}
.scoreTextBg1{background-image: radial-gradient(circle, rgb(46, 200, 49) 0px, rgba(255, 255, 255, 0) 40px);}
.scoreTextBg2{background-image: radial-gradient(circle, rgb(255,175,0) 0px, rgba(255, 255, 255, 0) 40px);}
.scoreTextBg3{background-image: radial-gradient(circle, rgb(200, 46, 56) 0px, rgba(255, 255, 255, 0) 40px);}
.centerTop { .centerTop {
// background-color: darkred; // background-color: darkred;
.top-content { .top-content {
height: 100%; height: 100%;
position: relative; position: relative;
background-image: url("@/assets/images/commandScreen/top-bg.png"); background-image: url("@/assets/images/commandScreen/top-bg.png");
background-position: center; // background-position: center;
background-position: -28px;
background-repeat: no-repeat; background-repeat: no-repeat;
.content-div { .content-div {
@ -388,19 +409,20 @@ onMounted(async () => {
} }
.score-div { .score-div {
color: white; color: white;
position: absolute; position: absolute;
// bottom: 210px; // bottom: 210px;
// left: 383px; // left: 383px;
width: 30%; width: 30%;
height: 30%; height: 45%;
bottom: 33%; bottom: 30%;
left: 35.5%; left: 35.5%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.score-part { .score-part {
margin-top: 60px;
span:nth-child(1) { span:nth-child(1) {
font-size: 72px; font-size: 72px;
} }
@ -414,6 +436,36 @@ onMounted(async () => {
color: white; color: white;
font-size: 18px; font-size: 18px;
} }
.scoreInner{
text-align: center;
margin-top: -10px;
width: 90%;
// height: 100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
// background-color: red;
.scoreReview{
opacity: 0.7;
display: flex;
justify-content: center;
align-items: center;
height: 50px;
// background-color: blue;
}
.scoreStar{
// background-color: purple;
// margin-top: 20px;
width: 28%;
height: 40px;
background: url("@/assets/images/green_flag_bg.png") no-repeat;
background-size: 100% 100%;
transform: translateY(-20px);
}
}
} }
.classify-div { .classify-div {

View File

@ -69,7 +69,7 @@ const mqttMSG = () => {
const result = JSON.parse(message); const result = JSON.parse(message);
openPeopleCountDialog({ openPeopleCountDialog({
index: 10, index: 10,
title: "查看", title: "人员呼叫",
timeOut: 60, timeOut: 60,
timeFlag: null, timeFlag: null,
show: true, show: true,
@ -90,7 +90,7 @@ onMounted(() => {
// setTimeout(() => { // setTimeout(() => {
// openPeopleCountDialog({ // openPeopleCountDialog({
// index: 10, // index: 10,
// title: "", // title: "",
// timeOut: 10, // timeOut: 10,
// timeFlag: null, // timeFlag: null,
// show: true, // show: true,

View File

@ -1,4 +1,4 @@
<template> s<template>
<div class="leftBottom"> <div class="leftBottom">
<div class="header"> <div class="header">
<div class="hLeft">项目人员考勤</div> <div class="hLeft">项目人员考勤</div>
@ -139,7 +139,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import * as echarts from "echarts"; import * as echarts from "echarts";
import ECharts from "vue-echarts"; // import ECharts from "vue-echarts";
import { selectQualityStatisticsApi } from "@/api/modules/projectOverview"; import { selectQualityStatisticsApi } from "@/api/modules/projectOverview";
import { import {
getPersonTypeAndEduStatisticsApi, getPersonTypeAndEduStatisticsApi,
@ -311,7 +311,10 @@ function drawBar() {
if (!attendanceRhbRate) { if (!attendanceRhbRate) {
attendanceRhbRate = "--"; attendanceRhbRate = "--";
} else { } else {
attendanceRhbRate = attendanceRhbRate + "%"; if(attendanceRhbRate > 0) attendanceRhbRate = "<span style='color:blue;margin-right:5px'>↑</span>"+Math.abs(attendanceRhbRate)+"%"
if(attendanceRhbRate < 0) attendanceRhbRate = "<span style='color:darkred;margin-right:5px'>↓</span>"+Math.abs(attendanceRhbRate)+"%"
if(attendanceRhbRate == 0) attendanceRhbRate = "0%"
// attendanceRhbRate = attendanceRhbRate + "%";
} }
console.log(params); console.log(params);
console.log(123123, projectCompanyWorkTotalList.value[params.dataIndex].attendancePersonRate); console.log(123123, projectCompanyWorkTotalList.value[params.dataIndex].attendancePersonRate);

View File

@ -30,7 +30,7 @@
</div> </div>
</div> </div>
<div class="ctContent" style="position: relative"> <div class="ctContent" style="position: relative">
<div id="echartsSafe" style="width: 100%; height: 100%"></div> <div id="echartsSafe" style="width: 100%; height: 100%;transform:translateY(-13px)"></div>
<div class="safetext1" v-if="dataList.length != 0">状态统计较昨日</div> <div class="safetext1" v-if="dataList.length != 0">状态统计较昨日</div>
<div class="safetext2" v-if="dataList.length != 0">风险统计较昨日</div> <div class="safetext2" v-if="dataList.length != 0">风险统计较昨日</div>
<div class="notoDta" v-if="dataCode != 200"> <div class="notoDta" v-if="dataCode != 200">
@ -341,7 +341,7 @@ function drawEchart() {
type: "plain", type: "plain",
orient: "vertical", orient: "vertical",
right: "0%", right: "0%",
top: "20%", top: "25%",
align: "left", align: "left",
itemGap: 14, itemGap: 14,
itemWidth: 8, // itemWidth: 8, //
@ -409,7 +409,7 @@ function drawEchart() {
type: "plain", type: "plain",
orient: "vertical", orient: "vertical",
left: "35%", left: "35%",
top: "20%", top: "25%",
align: "left", align: "left",
itemGap: 14, itemGap: 14,
itemWidth: 8, // itemWidth: 8, //

View File

@ -53,12 +53,14 @@
<p>暂无数据</p> <p>暂无数据</p>
</div> </div>
</div> --> </div> -->
<div class="tabList">
<!-- <div class="tabList">
<div>排名</div> <div>排名</div>
<div v-if="activeIndex === '1' || activeIndex === '2'">姓名</div> <div v-if="activeIndex === '1' || activeIndex === '2'">姓名</div>
<div v-if="activeIndex === '0'">分包单位</div> <div v-if="activeIndex === '0'">分包单位</div>
<div v-if="activeIndex === '0' || activeIndex === '2'">整改数量</div> <div v-if="activeIndex === '0' || activeIndex === '1'">整改数量</div>
<div v-if="activeIndex === '1'">发起隐患数</div> <div v-if="activeIndex === '2'">发起隐患数</div>
<div>整改率</div> <div>整改率</div>
<div>及时整改率</div> <div>及时整改率</div>
</div> </div>
@ -78,6 +80,81 @@
<img src="@/assets/images/noData.png" alt="" /> <img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p> <p>暂无数据</p>
</div> </div>
</div> -->
<div v-if="activeIndex === '0'">
<div class="tabList">
<div>排名</div>
<div>分包单位</div>
<div>整改数量</div>
<div>整改率</div>
<div>及时整改率</div>
</div>
<div class="listBox">
<el-scrollbar>
<div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ index + 1 }}</div>
<div :title="item.enterpriseName">{{ item.enterpriseName }}</div>
<div>{{ item.createDangerNum || item.rectifiedNum}}</div>
<div>{{ item.rectifiedNumRatio }}</div>
<div>{{ item.rectifiedNumRatioTimely }}</div>
</div>
</el-scrollbar>
<div class="notoDta" v-if="tabList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
<div v-if="activeIndex === '1'">
<div class="tabList">
<div>排名</div>
<div>姓名</div>
<div>整改数量</div>
<div>整改率</div>
<div>及时整改率</div>
</div>
<div class="listBox">
<el-scrollbar>
<div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ index + 1 }}</div>
<div>{{ item.workerName }}</div>
<div>{{ item.createDangerNum || item.rectifiedNum}}</div>
<div>{{ item.rectifiedNumRatio }}</div>
<div>{{ item.rectifiedNumRatioTimely }}</div>
</div>
</el-scrollbar>
<div class="notoDta" v-if="tabList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
<div v-if="activeIndex === '2'">
<div class="tabList">
<div>排名</div>
<div>姓名</div>
<div>发起隐患数</div>
<div>整改率</div>
<div>及时整改率</div>
</div>
<div class="listBox">
<el-scrollbar>
<div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ index + 1 }}</div>
<div>{{ item.workerName }}</div>
<div>{{ item.createDangerNum }}</div>
<div>{{ item.rectifiedNumRatio }}</div>
<div>{{ item.rectifiedNumRatioTimely }}</div>
</div>
</el-scrollbar>
<div class="notoDta" v-if="tabList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -57,6 +57,7 @@
<div v-else-if="showIndex == 10"> <div v-else-if="showIndex == 10">
<div class="list-detail" v-for="ele in mapsDetail.filter((option: any) => option.show)" :key="ele.id"> <div class="list-detail" v-for="ele in mapsDetail.filter((option: any) => option.show)" :key="ele.id">
<div :class="postData.type == 1 ? 'dialog-content' : postData.type == 2 ? 'dialog-content-show' : 'dialog-content-more'"> <div :class="postData.type == 1 ? 'dialog-content' : postData.type == 2 ? 'dialog-content-show' : 'dialog-content-more'">
<div class="warning-bg"></div>
<div class="dialog-title"> <div class="dialog-title">
<!-- <div class="title-img"><img src="@/assets/images/titleIcon.png" alt="" /></div> --> <!-- <div class="title-img"><img src="@/assets/images/titleIcon.png" alt="" /></div> -->
<div class="title-text"> <div class="title-text">
@ -72,7 +73,7 @@
</div> </div>
</div> </div>
<div class="political-outlook"> <div class="political-outlook">
<myMap :mapsDetail="ele" :key="ele.id" tip="查看"></myMap> <myMap :mapsDetail="ele" :key="ele.id" :tip="ele.title"></myMap>
</div> </div>
</div> </div>
</div> </div>
@ -201,6 +202,17 @@ onMounted(async () => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warning-bg {
width: 200px;
height: 200px;
background-image: url(@/assets/images/warning.gif);
background-repeat: no-repeat;
background-size: 100% 100%;
position: absolute;
top: -190px;
left: 50%;
transform: translateX(-50%);
}
.flex { .flex {
display: -webkit-box; display: -webkit-box;
} }

View File

@ -97,7 +97,7 @@ import ScaleBox from "vue3-scale-box";
import { ref, reactive, onMounted, onBeforeUnmount, computed } from "vue"; import { ref, reactive, onMounted, onBeforeUnmount, computed } from "vue";
import { getTaskTimeDetail } from "@/api/modules/schedulePlan"; import { getTaskTimeDetail } from "@/api/modules/schedulePlan";
import { jumpLargeUserInfoApi } from "@/api/modules/login"; import { jumpLargeUserInfoApi } from "@/api/modules/login";
import { JSYCMenu, XJNBMenu, AHSAMenu, HFQCMenu,ASMenu,AGJTMenu,SLXMenu } from "@/config/staticMenu"; import { JSYCMenu, XJNBMenu, AHSAMenu, HFQCMenu,ASMenu,AGJTMenu,SLXMenu,ZKAXMenu } from "@/config/staticMenu";
import { COMPANY } from "@/config/config"; import { COMPANY } from "@/config/config";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
@ -486,7 +486,9 @@ onMounted(async () => {
if (COMPANY === "slx") { if (COMPANY === "slx") {
menuList.value = SLXMenu; menuList.value = SLXMenu;
} }
if (COMPANY === "zkax") {
menuList.value = ZKAXMenu;
}
console.log("配置菜单", menuList.value); console.log("配置菜单", menuList.value);
console.log("当前跳转的路由", router.currentRoute.value); console.log("当前跳转的路由", router.currentRoute.value);
// await getAllModelMenu(); // await getAllModelMenu();

View File

@ -97,7 +97,7 @@ import ScaleBox from "vue3-scale-box";
import { ref, reactive, onMounted, onBeforeUnmount, computed } from "vue"; import { ref, reactive, onMounted, onBeforeUnmount, computed } from "vue";
import { getTaskTimeDetail } from "@/api/modules/schedulePlan"; import { getTaskTimeDetail } from "@/api/modules/schedulePlan";
import { jumpLargeUserInfoApi } from "@/api/modules/login"; import { jumpLargeUserInfoApi } from "@/api/modules/login";
import { JSYCMenu, XJNBMenu, AHSAMenu, HFQCMenu,ASMenu,AGJTMenu,SLXMenu,ZSBFMenu,ZHZRFMenu } from "@/config/staticMenu"; import { JSYCMenu, XJNBMenu, AHSAMenu, HFQCMenu,ASMenu,AGJTMenu,SLXMenu,ZSBFMenu,ZHZRFMenu, ZKAXMenu } from "@/config/staticMenu";
import { COMPANY } from "@/config/config"; import { COMPANY } from "@/config/config";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
@ -492,7 +492,9 @@ onMounted(async () => {
if (COMPANY === "zhzrf") { if (COMPANY === "zhzrf") {
menuList.value = ZHZRFMenu; menuList.value = ZHZRFMenu;
} }
if (COMPANY === "zkax") {
menuList.value = ZKAXMenu;
}
console.log("配置菜单", menuList.value); console.log("配置菜单", menuList.value);
console.log("当前跳转的路由", router.currentRoute.value); console.log("当前跳转的路由", router.currentRoute.value);
// await getAllModelMenu(); // await getAllModelMenu();