中水北方配置,智能安全帽人员选择更改为树形
This commit is contained in:
parent
d16a7c77a8
commit
c8796dfd5b
@ -13,7 +13,7 @@ NODE_ENV = "production"
|
||||
# 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'
|
||||
@ -25,7 +25,7 @@ NODE_ENV = "production"
|
||||
# VITE_API_URL = 'http://42.180.188.17:9809' #生产环境
|
||||
# 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'
|
||||
# 中科佳成
|
||||
|
||||
@ -51,6 +51,10 @@ export const getVehiclePositionDayRecord = (params: {}) => {
|
||||
export const getHatDevOptionApi = (params: {}) => {
|
||||
return http.get(BASEURL + `/xmgl/safetyHatDev/list`, params);
|
||||
};
|
||||
// 智能安全帽--分类查询设备树
|
||||
export const getEnterpriseTreeApi = (params: {}) => {
|
||||
return http.get(BASEURL + `/xmgl/safetyHatDev/enterprise/tree/list`, params);
|
||||
};
|
||||
// 智能安全帽--查询设备状态总数
|
||||
export const getSafeHatTypeTotalApi = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/safetyHatDev/countSafetyHatDev`, params);
|
||||
|
||||
BIN
src/assets/images/mapimg/ey.png
Normal file
BIN
src/assets/images/mapimg/ey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
BIN
src/assets/images/mapimg/wx.png
Normal file
BIN
src/assets/images/mapimg/wx.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -55,6 +55,5 @@ export const COMPANY: string = ""; //标准版
|
||||
// export const COMPANY: string = "ztsyj"; // 中铁十一局
|
||||
// export const COMPANY: string = "xnyzhjj"; // 新能源智慧基建管理平台
|
||||
// export const COMPANY: string = "allxm"; // 安立路项目
|
||||
|
||||
|
||||
|
||||
// export const COMPANY: string = "hbla"; // 湖北龙澳
|
||||
// export const COMPANY: string = "qyg"; // 清远港
|
||||
|
||||
@ -2124,3 +2124,75 @@ export const ALLXMMenu: Array<any> = [
|
||||
},
|
||||
{ moduleName: "BIM模型", modulePath: "/bImModel" }
|
||||
]; // 安立路项目
|
||||
|
||||
export const HBLAMenu: Array<any> = [
|
||||
{
|
||||
moduleName: "综合管理",
|
||||
modulePath: "/projectOverview"
|
||||
},
|
||||
{
|
||||
moduleName: "视频监控",
|
||||
modulePath: "/videoManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "安全管理",
|
||||
modulePath: "/securityManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "质量管理",
|
||||
modulePath: "/qualityManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "塔吊监测",
|
||||
modulePath: "/towerCraneMonitoring"
|
||||
},
|
||||
{
|
||||
moduleName: "进度管理",
|
||||
modulePath: "/schedulePlan"
|
||||
}
|
||||
]; // 湖北龙澳
|
||||
export const QYGMenu: Array<any> = [
|
||||
{
|
||||
moduleName: "工程概况",
|
||||
modulePath: "/projectOverview"
|
||||
},
|
||||
{
|
||||
moduleName: "劳务管理",
|
||||
modulePath: "/laborManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "视频监控",
|
||||
modulePath: "/videoManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "安全管理",
|
||||
modulePath: "/securityManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "质量管理",
|
||||
modulePath: "/qualityManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "绿色施工",
|
||||
modulePath: "/headNoise",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "环境监测",
|
||||
companyPath: "/headNoise"
|
||||
},
|
||||
{
|
||||
menuName: "升降机监测",
|
||||
companyPath: "/elevatorMonitoring"
|
||||
},
|
||||
{
|
||||
menuName: "塔吊监测",
|
||||
companyPath: "/towerCraneMonitoring"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
moduleName: "进度管理",
|
||||
modulePath: "/schedulePlan"
|
||||
},
|
||||
{ moduleName: "BIM模型", modulePath: "/bImModel" }
|
||||
]; // 清远港
|
||||
|
||||
@ -50,21 +50,40 @@
|
||||
style="margin-left: 55px; color: #fff"
|
||||
>全选</el-checkbox
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-scrollbar class="treeStyle">
|
||||
<div style="margin: 15px 0"></div>
|
||||
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
||||
<el-tree
|
||||
:data="treeList"
|
||||
@check="handleCheck"
|
||||
:props="{
|
||||
children: 'safetyHatDevs',
|
||||
label: 'name'
|
||||
}"
|
||||
show-checkbox
|
||||
check-on-click-node
|
||||
default-expand-all
|
||||
node-key="devSn"
|
||||
ref="tree"
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<span class="custom-tree-node">
|
||||
<img :src="personOn" v-if="data.online === 1" />
|
||||
<img :src="personOff" v-if="data.online === 0" />
|
||||
<span class="nodeName">{{ node.label }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
<!-- <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
||||
<div v-for="item in devList" class="choice-item" :key="item.id">
|
||||
<div class="list-type">
|
||||
<img :src="personOn" v-if="item.online === 1" />
|
||||
<img :src="personOff" v-if="item.online === 0" />
|
||||
</div>
|
||||
<el-checkbox :label="item.devSn" :key="item.devSn" class="dev-check">
|
||||
<!-- {{ item.numberPlate || "" }}{{ item.personName || "" }} -->
|
||||
{{ item.workerName }}
|
||||
</el-checkbox>
|
||||
<!-- <div class="choice-speed" v-if="item.speed">{{ item.speed }}km/h</div> -->
|
||||
</div>
|
||||
</el-checkbox-group>
|
||||
</el-checkbox-group> -->
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div v-else style="text-align: center; margin-top: 130px; color: #fff; font-size: 20px">暂无设备</div>
|
||||
@ -113,11 +132,14 @@
|
||||
</div>
|
||||
<el-scrollbar class="list-box">
|
||||
<div v-for="(item, index) in fenceList" class="list-style" :key="item.id">
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;" @click="openDetail(item)">
|
||||
<div style="width: 50%">{{ item.fenceName }}</div>
|
||||
<div style="width: 50%">{{ item.workerNum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="width: 100%; display: flex; justify-content: space-between; align-items: center"
|
||||
@click="openDetail(item)"
|
||||
>
|
||||
<div style="width: 50%">{{ item.fenceName }}</div>
|
||||
<div style="width: 50%">{{ item.workerNum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="not-data" style="top: 20%" v-if="fenceList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
<p>暂无数据</p>
|
||||
@ -321,8 +343,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 地图类型 -->
|
||||
<div class="map-type" @click="changeMapType">
|
||||
<img v-if="mapType === 1" src="@/assets/images/mapimg/wx.png" alt="">
|
||||
<img v-if="mapType === 2" src="@/assets/images/mapimg/ey.png" alt="">
|
||||
<span>{{ mapType === 1 ? '卫星' : '二维' }}</span>
|
||||
</div>
|
||||
<!-- **********************围栏弹窗******************************** -->
|
||||
|
||||
<div class="start-track" @click="startAnimation" v-if="checked === 2" :style="enlarge ? 'bottom:8%' : 'bottom:5%'">开始轨迹动画</div>
|
||||
<div class="start-track-isEnlage" @click="enlargeMap" v-if="checked === 2 && !enlarge" :style="enlarge ? '' : 'bottom:5%'">
|
||||
<!-- 放大 -->
|
||||
@ -394,6 +421,7 @@ import {
|
||||
getAlarmRecordInfoApi,
|
||||
getAlarmRecordInfoApiPage,
|
||||
getHatDevOptionApi,
|
||||
getEnterpriseTreeApi,
|
||||
addstandardDevApi,
|
||||
getRealtimeRecordInfo,
|
||||
getRealtimeRecordList,
|
||||
@ -455,6 +483,7 @@ let checkAllFence = ref(false);
|
||||
let checkedCities = ref([]);
|
||||
let checkedFence = ref([]);
|
||||
let devList = ref(["鲁U6675", "刘江", "蒋东", "鲁U9675"]);
|
||||
let treeList = ref([]);
|
||||
let isIndeterminate = ref(true);
|
||||
let isIndeterminateFence = ref(true);
|
||||
let checked = ref(1);
|
||||
@ -464,6 +493,7 @@ interface RuleForm {
|
||||
// fenceName: string
|
||||
// areaRadius: number
|
||||
}
|
||||
let tree = ref(null);
|
||||
let addFormRef = ref<FormInstance>();
|
||||
// const addForm = reactive<RuleForm>({
|
||||
let addForm = ref({
|
||||
@ -493,6 +523,7 @@ let pagLabor = ref({
|
||||
pageNo: 1,
|
||||
total: 0
|
||||
});
|
||||
let mapType = ref(1); // 1: 二维,2: 卫星
|
||||
let tableListData = ref([]); // 劳务列表
|
||||
let choicePerson = ref(false);
|
||||
let laborRadio = ref(""); //选择
|
||||
@ -1218,7 +1249,8 @@ function getCrewListData() {
|
||||
};
|
||||
console.log("👇智能安全帽--分类查询设备列表--查询参数");
|
||||
console.log(data);
|
||||
getHatDevOptionApi(data).then(res => {
|
||||
// getHatDevOptionApi(data).then(res => {
|
||||
getEnterpriseTreeApi(data).then(res => {
|
||||
console.log("👇智能安全帽--分类查询设备列表");
|
||||
console.log(res);
|
||||
if (res.code == 200) {
|
||||
@ -1246,12 +1278,24 @@ function getCrewListData() {
|
||||
// nameOptions.value = nameOption.concat(carOption);
|
||||
nameOptions.value = nameOption.concat([]);
|
||||
|
||||
devList.value = res.result;
|
||||
treeList.value = res.result;
|
||||
devList.value = flattenTree(res.result).filter(item => item.devSn);
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
// 扁平化树形数据
|
||||
function flattenTree(tree) {
|
||||
let result = [];
|
||||
tree.forEach(item => {
|
||||
result.push(item);
|
||||
if (item.safetyHatDevs && item.safetyHatDevs.length > 0) {
|
||||
result = result.concat(flattenTree(item.safetyHatDevs));
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
|
||||
const moreScroll = ref(true as any);
|
||||
|
||||
@ -1331,6 +1375,7 @@ function handleCheckAllChange(val) {
|
||||
clearFn();
|
||||
let nameArr = devList.value.map(item => item.devSn);
|
||||
checkedCities.value = val ? nameArr : [];
|
||||
tree.value.setCheckedKeys(checkedCities.value);
|
||||
isIndeterminate.value = false;
|
||||
if (val) {
|
||||
listData;
|
||||
@ -1342,6 +1387,11 @@ function handleCheckAllChange(val) {
|
||||
getProgressListData();
|
||||
drawFencePoint();
|
||||
}
|
||||
const handleCheck = () => {
|
||||
checkedCities.value = tree?.value.getCheckedKeys().filter(item => item);
|
||||
console.info(checkedCities.value, "checkedCities");
|
||||
handleCheckedCitiesChange(checkedCities.value);
|
||||
};
|
||||
function handleCheckedCitiesChange(value) {
|
||||
console.log("设备选中", value);
|
||||
clearFn();
|
||||
@ -1589,7 +1639,7 @@ function trackMapInit(path: any, item: any) {
|
||||
//构建信息窗体中显示的内容
|
||||
// console.log(e);
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -1621,6 +1671,15 @@ const getProjectInfo = async () => {
|
||||
projectData.value = res.result;
|
||||
initMap();
|
||||
};
|
||||
function changeMapType() {
|
||||
mapType.value = mapType.value === 1 ? 2 : 1;
|
||||
var satellite = new AMap.TileLayer.Satellite();
|
||||
if(mapType.value === 2){
|
||||
map.setLayers([satellite]);
|
||||
}else{
|
||||
map.setLayers([new AMap.TileLayer()]);
|
||||
}
|
||||
}
|
||||
// 围栏定位地图
|
||||
function initMap() {
|
||||
var that = this;
|
||||
@ -1947,6 +2006,7 @@ function echoCarMarker(item) {
|
||||
// console.log(e)
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -2006,6 +2066,7 @@ function echoPersonMarker(item) {
|
||||
console.log(e);
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -2783,6 +2844,30 @@ function echoPersonMarker(item) {
|
||||
}
|
||||
}
|
||||
}
|
||||
.map-type {
|
||||
position: absolute;
|
||||
right: 1%;
|
||||
top: 14%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 4px 2px;
|
||||
border: solid 1px #fff;
|
||||
width: 80px;
|
||||
// height: 110px;
|
||||
cursor: pointer;
|
||||
background: #1d2d40;
|
||||
img {
|
||||
width: 72px;
|
||||
height: 72px;
|
||||
}
|
||||
span {
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.right-bottom {
|
||||
display: flex;
|
||||
@ -3108,4 +3193,55 @@ function echoPersonMarker(item) {
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep() {
|
||||
.el-tree {
|
||||
background-color: transparent;
|
||||
.el-tree-node {
|
||||
white-space: normal;
|
||||
&:focus > .el-tree-node__content {
|
||||
background-color: transparent;
|
||||
}
|
||||
&.is-current > .el-tree-node__content {
|
||||
background-color: rgba(81, 129, 246, 0.14);
|
||||
color: #5181f6;
|
||||
}
|
||||
}
|
||||
.el-tree-node__label {
|
||||
color: #fff;
|
||||
}
|
||||
.el-tree-node__content {
|
||||
position: relative;
|
||||
&:hover {
|
||||
background-color: rgba(81, 129, 246, 0.14);
|
||||
color: #5181f6;
|
||||
}
|
||||
}
|
||||
.el-tree-node__expand-icon {
|
||||
font-size: 16px;
|
||||
padding: 0 6px;
|
||||
&.is-leaf {
|
||||
color: transparent !important;
|
||||
}
|
||||
}
|
||||
.treeTitle {
|
||||
background-color: #f7f7f7;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.custom-tree-node {
|
||||
width: 100%;
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
.nodeName {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -69,21 +69,40 @@
|
||||
@change="handleCheckAllChange"
|
||||
style="margin-left: 55px; color: #fff"
|
||||
>全选</el-checkbox>
|
||||
<el-scrollbar>
|
||||
<el-scrollbar class="treeStyle">
|
||||
<div style="margin: 15px 0"></div>
|
||||
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
||||
<el-tree
|
||||
:data="treeList"
|
||||
@check="handleCheck"
|
||||
:props="{
|
||||
children: 'safetyHatDevs',
|
||||
label: 'name'
|
||||
}"
|
||||
show-checkbox
|
||||
check-on-click-node
|
||||
default-expand-all
|
||||
node-key="devSn"
|
||||
ref="tree"
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<span class="custom-tree-node">
|
||||
<img :src="personOn" v-if="data.online === 1" />
|
||||
<img :src="personOff" v-if="data.online === 0" />
|
||||
<span class="nodeName">{{ node.label }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
<!-- <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
||||
<div v-for="item in devList" class="choice-item" :key="item.id">
|
||||
<div class="list-type">
|
||||
<img :src="personOn" v-if="item.online === 1" />
|
||||
<img :src="personOff" v-if="item.online === 0" />
|
||||
</div>
|
||||
<el-checkbox :label="item.devSn" :key="item.devSn" class="dev-check">
|
||||
<!-- {{ item.numberPlate || "" }}{{ item.personName || "" }} -->
|
||||
{{ item.workerName }}
|
||||
</el-checkbox>
|
||||
<!-- <div class="choice-speed" v-if="item.speed">{{ item.speed }}km/h</div> -->
|
||||
</div>
|
||||
</el-checkbox-group>
|
||||
</el-checkbox-group> -->
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div v-else style="text-align: center; margin-top: 130px; color: #fff; font-size: 20px">暂无设备</div>
|
||||
@ -219,6 +238,12 @@
|
||||
<img src="@/assets/images/not-enlarge-icon.png" alt />
|
||||
<!-- <div>缩小</div> -->
|
||||
</div>
|
||||
<!-- 地图类型 -->
|
||||
<div class="map-type" @click="changeMapType">
|
||||
<img v-if="mapType === 1" src="@/assets/images/mapimg/wx.png" alt="">
|
||||
<img v-if="mapType === 2" src="@/assets/images/mapimg/ey.png" alt="">
|
||||
<span>{{ mapType === 1 ? '卫星' : '二维' }}</span>
|
||||
</div>
|
||||
<!-- **********************围栏弹窗******************************** -->
|
||||
<div class="fenceDialog" v-if="fenceShow" :style="enlarge ? 'top:8%' : ''">
|
||||
<!-- <div class="fence-dialog-modal" v-if="fenceCreateShow"></div> -->
|
||||
@ -467,6 +492,7 @@ import {
|
||||
getAlarmRecordInfoApi,
|
||||
getAlarmRecordInfoApiPage,
|
||||
getHatDevOptionApi,
|
||||
getEnterpriseTreeApi,
|
||||
addstandardDevApi,
|
||||
getRealtimeRecordInfo,
|
||||
getRealtimeRecordList,
|
||||
@ -526,6 +552,7 @@ let checkAllFence = ref(false);
|
||||
let checkedCities = ref([]);
|
||||
let checkedFence = ref([]);
|
||||
let devList = ref(["鲁U6675", "刘江", "蒋东", "鲁U9675"]);
|
||||
let treeList = ref([]);
|
||||
let isIndeterminate = ref(true);
|
||||
let isIndeterminateFence = ref(true);
|
||||
let checked = ref(1);
|
||||
@ -535,6 +562,7 @@ interface RuleForm {
|
||||
// fenceName: string
|
||||
// areaRadius: number
|
||||
}
|
||||
let tree = ref(null);
|
||||
let addFormRef = ref<FormInstance>();
|
||||
// const addForm = reactive<RuleForm>({
|
||||
let addForm = ref({
|
||||
@ -564,6 +592,7 @@ let pagLabor = ref({
|
||||
pageNo: 1,
|
||||
total: 0
|
||||
});
|
||||
let mapType = ref(2); // 1: 二维,2: 卫星
|
||||
let tableListData = ref([]); // 劳务列表
|
||||
let choicePerson = ref(false);
|
||||
let laborRadio = ref(""); //选择
|
||||
@ -1276,7 +1305,8 @@ function getCrewListData() {
|
||||
};
|
||||
console.log("👇智能安全帽--分类查询设备列表--查询参数");
|
||||
console.log(data);
|
||||
getHatDevOptionApi(data).then(res => {
|
||||
// getHatDevOptionApi(data).then(res => {
|
||||
getEnterpriseTreeApi(data).then(res => {
|
||||
console.log("👇智能安全帽--分类查询设备列表");
|
||||
console.log(res);
|
||||
if (res.code == 200) {
|
||||
@ -1304,12 +1334,24 @@ function getCrewListData() {
|
||||
// nameOptions.value = nameOption.concat(carOption);
|
||||
nameOptions.value = nameOption.concat([]);
|
||||
|
||||
devList.value = res.result;
|
||||
treeList.value = res.result;
|
||||
devList.value = flattenTree(res.result).filter(item => item.devSn);
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
// 扁平化树形数据
|
||||
function flattenTree(tree) {
|
||||
let result = [];
|
||||
tree.forEach(item => {
|
||||
result.push(item);
|
||||
if (item.safetyHatDevs && item.safetyHatDevs.length > 0) {
|
||||
result = result.concat(flattenTree(item.safetyHatDevs));
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
|
||||
const moreScroll = ref(true as any);
|
||||
@ -1387,6 +1429,7 @@ function handleCheckAllChange(val) {
|
||||
clearFn();
|
||||
let nameArr = devList.value.map(item => item.devSn);
|
||||
checkedCities.value = val ? nameArr : [];
|
||||
tree.value.setCheckedKeys(checkedCities.value);
|
||||
isIndeterminate.value = false;
|
||||
if (val) {
|
||||
listData;
|
||||
@ -1398,6 +1441,11 @@ function handleCheckAllChange(val) {
|
||||
getProgressListData();
|
||||
drawFencePoint();
|
||||
}
|
||||
const handleCheck = () => {
|
||||
checkedCities.value = tree?.value.getCheckedKeys().filter(item => item);
|
||||
console.info(checkedCities.value, "checkedCities");
|
||||
handleCheckedCitiesChange(checkedCities.value);
|
||||
};
|
||||
function handleCheckedCitiesChange(value) {
|
||||
console.log("设备选中", value);
|
||||
clearFn();
|
||||
@ -1645,6 +1693,7 @@ function trackMapInit(path: any, item: any) {
|
||||
// console.log(e);
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -1949,6 +1998,15 @@ const logisticsInfoList = ref([
|
||||
/*** Cellular-Z 20240829 08:15:32 ***/
|
||||
]);
|
||||
|
||||
function changeMapType() {
|
||||
mapType.value = mapType.value === 1 ? 2 : 1;
|
||||
var satellite = new AMap.TileLayer.Satellite();
|
||||
if(mapType.value === 2){
|
||||
map.setLayers([satellite]);
|
||||
}else{
|
||||
map.setLayers([new AMap.TileLayer()]);
|
||||
}
|
||||
}
|
||||
function initMap() {
|
||||
// 初始化地图
|
||||
map = new AMap.Map("mapContainer", {
|
||||
@ -2263,6 +2321,7 @@ function echoCarMarker(item) {
|
||||
// console.log(e)
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -2339,6 +2398,7 @@ function echoPersonMarker(item) {
|
||||
console.log(e);
|
||||
let info = [];
|
||||
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">所属单位:</text> ' + item.enterpriseName + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">设备序号:</text> ' + item.devSn + "</div>");
|
||||
info.push('<div style="padding:0 7px;"><text style="font-weight:bold">人员名称:</text> ' + item.workerName + "</div>");
|
||||
// info.push('<div style="padding:0 7px;"><text style="font-weight:bold">最后更新时间:</text> ' + item.updateTime + "</div>");
|
||||
@ -3126,7 +3186,30 @@ function echoPersonMarker(item) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.map-type {
|
||||
position: absolute;
|
||||
right: 1%;
|
||||
top: 14%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 4px 2px;
|
||||
border: solid 1px #fff;
|
||||
width: 80px;
|
||||
// height: 110px;
|
||||
cursor: pointer;
|
||||
background: #1d2d40;
|
||||
img {
|
||||
width: 72px;
|
||||
height: 72px;
|
||||
}
|
||||
span {
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
.right-bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@ -3451,4 +3534,55 @@ function echoPersonMarker(item) {
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep() {
|
||||
.el-tree {
|
||||
background-color: transparent;
|
||||
.el-tree-node {
|
||||
white-space: normal;
|
||||
&:focus > .el-tree-node__content {
|
||||
background-color: transparent;
|
||||
}
|
||||
&.is-current > .el-tree-node__content {
|
||||
background-color: rgba(81, 129, 246, 0.14);
|
||||
color: #5181f6;
|
||||
}
|
||||
}
|
||||
.el-tree-node__label {
|
||||
color: #fff;
|
||||
}
|
||||
.el-tree-node__content {
|
||||
position: relative;
|
||||
&:hover {
|
||||
background-color: rgba(81, 129, 246, 0.14);
|
||||
color: #5181f6;
|
||||
}
|
||||
}
|
||||
.el-tree-node__expand-icon {
|
||||
font-size: 16px;
|
||||
padding: 0 6px;
|
||||
&.is-leaf {
|
||||
color: transparent !important;
|
||||
}
|
||||
}
|
||||
.treeTitle {
|
||||
background-color: #f7f7f7;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.custom-tree-node {
|
||||
width: 100%;
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
.nodeName {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,12 +1,5 @@
|
||||
<template>
|
||||
<ScaleBox
|
||||
:width="1920"
|
||||
:height="1080"
|
||||
bgc="transparent"
|
||||
:delay="100"
|
||||
:isFlat="false"
|
||||
@scaleChange="scaleChange"
|
||||
>
|
||||
<ScaleBox :width="1920" :height="1080" bgc="transparent" :delay="100" :isFlat="false" @scaleChange="scaleChange">
|
||||
<!-- <div class="container"> -->
|
||||
<div class="largeScreen" ref="dataScreenRef" style="width: 100%; height: 100%">
|
||||
<div class="header" :class="!EntityMap.Mapswitch ? 'storeheader' : ''">
|
||||
@ -18,7 +11,7 @@
|
||||
<!-- <p>江坑110kv变电站智慧工地</p> -->
|
||||
</span>
|
||||
|
||||
<span class="projectSmallTitle">
|
||||
<span :class="{ projectSmallTitle: true, zsbf: COMPANY === 'zsbf' }">
|
||||
<p>{{ projectTimeInfo.name || "" }}</p>
|
||||
</span>
|
||||
<div class="rightIcon" @click.stop>
|
||||
@ -79,14 +72,17 @@
|
||||
<div class="menuList">
|
||||
<div v-for="(item, index) in menuList" :key="index" class="menStyle">
|
||||
<div
|
||||
class="subMenu"
|
||||
:index="item.modulePath"
|
||||
:class="{ active: activeTab === item.modulePath }"
|
||||
:class="{
|
||||
subMenu: true,
|
||||
active: activeTab === item.modulePath,
|
||||
zsbf: COMPANY === 'zsbf'
|
||||
}"
|
||||
>
|
||||
<span @click="navigateTo(item, 1)">{{ item.moduleName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="subMenuList" v-if="itemList != null && itemList.length >= 1">
|
||||
<div :class="{ subMenuList: true, zsbf: COMPANY === 'zsbf' }" v-if="itemList != null && itemList.length >= 1">
|
||||
<el-scrollbar class="scrollItem">
|
||||
<div class="subMenuItem">
|
||||
<div
|
||||
@ -97,23 +93,18 @@
|
||||
:index="data.companyPath"
|
||||
@click="navigateTo(data, 2)"
|
||||
>
|
||||
<span
|
||||
style="white-space: nowrap"
|
||||
:class="{ active2: activeTab2 === data.companyPath }"
|
||||
>{{ data.menuName }}</span>
|
||||
<span style="white-space: nowrap" :class="{ active2: activeTab2 === data.companyPath }">{{
|
||||
data.menuName
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentDate" v-if="itemList != null && itemList.length >= 1">
|
||||
<div class="contentDate">
|
||||
<span>
|
||||
自{{ projectTimeInfo.contractPeriodStartTime }}起开始计算,至今日{{ nowDate }}为
|
||||
<span class="numColor">
|
||||
{{
|
||||
projectPassDay
|
||||
}}
|
||||
</span>个日历天
|
||||
<span class="numColor"> {{ projectPassDay }} </span>个日历天
|
||||
</span>
|
||||
</div>
|
||||
<div class="dataBoardContent">
|
||||
@ -167,7 +158,9 @@ import {
|
||||
WHZTMenu,
|
||||
ZTSYJMenu,
|
||||
XNYZHJJMenu,
|
||||
ALLXMMenu
|
||||
ALLXMMenu,
|
||||
HBLAMenu,
|
||||
QYGMenu
|
||||
} from "@/config/staticMenu";
|
||||
import { COMPANY } from "@/config/config";
|
||||
|
||||
@ -668,6 +661,12 @@ onMounted(async () => {
|
||||
if (COMPANY === "allxm") {
|
||||
menuList.value = ALLXMMenu;
|
||||
}
|
||||
if (COMPANY === "hbla") {
|
||||
menuList.value = HBLAMenu;
|
||||
}
|
||||
if (COMPANY === "qyg") {
|
||||
menuList.value = QYGMenu;
|
||||
}
|
||||
console.log("配置菜单", menuList.value);
|
||||
console.log("当前跳转的路由", router.currentRoute.value);
|
||||
// await getAllModelMenu();
|
||||
@ -846,6 +845,10 @@ function jumpBgd() {
|
||||
font-size: 20px;
|
||||
color: #fff;
|
||||
font-family: YouSheBiaoTiHei;
|
||||
&.zsbf {
|
||||
font-size: 28px;
|
||||
top: 5%;
|
||||
}
|
||||
}
|
||||
|
||||
.rightIcon {
|
||||
@ -899,6 +902,9 @@ function jumpBgd() {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
font-size: 20px;
|
||||
&.zsbf {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
span {
|
||||
width: 90%;
|
||||
@ -919,6 +925,9 @@ function jumpBgd() {
|
||||
font-family: none;
|
||||
background: url("@/assets/images/subTabImg.gif") no-repeat;
|
||||
background-size: 100% 35%;
|
||||
&.zsbf {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.scrollItem {
|
||||
width: 73%;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user