提交 7a431cb5 authored 作者: 汪雄's avatar 汪雄

update

上级 1bd1bc0c
...@@ -7,65 +7,57 @@ ...@@ -7,65 +7,57 @@
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
*/ */
import request from '@/utils/request' import request from "@/utils/request";
// 左侧菜单-星座构型信息 // 左侧菜单-星座构型信息
export function stellationInfoApi() { export function stellationInfoApi() {
return request({ return request({
url: '/constellationInfo/list', url: "/constellationInfo/list",
method: 'get', method: "get",
});
})
} }
// 左侧菜单-卫星列表信息 // 左侧菜单-卫星列表信息
export function stellateListInfoApi() { export function stellateListInfoApi() {
return request({ return request({
url: '/SatelliteBasicInfo/list', url: "/SatelliteBasicInfo/list",
method: 'get', method: "get",
});
})
} }
// 左侧菜单-地面系统信息 // 左侧菜单-地面系统信息
export function siteDataInfoListApi() { export function siteDataInfoListApi() {
return request({ return request({
url: '/SiteData/list', url: "/SiteData/list",
method: 'get' method: "get",
});
})
} }
export function siteDataPageErrorInfoApi(data) { export function siteDataPageErrorInfoApi(data) {
return request({ return request({
url: '/SiteData/pageError', url: "/SiteData/pageError",
method: 'post', method: "post",
params: data params: data,
}) });
} }
export function groundSystemStatisticsInfoApi() { export function groundSystemStatisticsInfoApi() {
return request({ return request({
url: '/GroundSystem/statistics', url: "/GroundSystem/statistics",
method: 'get', method: "get",
});
})
} }
export function subSystemStatisticsInfoApi() { export function subSystemStatisticsInfoApi() {
return request({ return request({
url: '/GroundSystem/statistics', url: "/GroundSystem/statistics",
method: 'get', method: "get",
// data: data // data: data
}) });
} }
export function getSubSystemOpitionListApi(data) { export function getSubSystemOpitionListApi(data) {
return request({ return request({
url: '/subSystem/getSubSystem?subSystemType='+data.subSystemType, url: "/subSystem/getSubSystem?subSystemType=" + data.subSystemType,
method: 'get', method: "get",
});
})
} }
// //console.log("propsDate-min--3333333333--------",{ // //console.log("propsDate-min--3333333333--------",{
...@@ -77,7 +69,66 @@ export function getSubSystemOpitionListApi(data) { ...@@ -77,7 +69,66 @@ export function getSubSystemOpitionListApi(data) {
// }); // });
export function getSubSystemCurveListApi(data) { export function getSubSystemCurveListApi(data) {
return request({ return request({
url: '/subSystem/getSubSystemCurve?satelliteId='+data.satelliteId+'&startTime='+data.startTime+'&endTime='+data.endTime+'&code='+data.code +'&subSystemType='+data.subSystemType, url:
method: 'get' "/subSystem/getSubSystemCurve?satelliteId=" +
}) data.satelliteId +
"&startTime=" +
data.startTime +
"&endTime=" +
data.endTime +
"&code=" +
data.code +
"&subSystemType=" +
data.subSystemType,
method: "get",
});
}
//配置模板中的区域数据
export function getRegionPanel() {
return request({
url: "/commPanel/getRegionPanel",
method: "get",
});
}
//配置模板中的信关站数据
export function getSignalSitePanel() {
return request({
url: "/commPanel/getSignalSitePanel",
method: "get",
});
}
//配置模板中的网格数据
export function getGridPanel() {
return request({
url: "/commPanel/getGridPanel",
method: "get",
});
}
// 容量/流量数据
export function getCapacityAndTraffic(data) {
return request({
url: "/commPanel/getCapacityAndTraffic",
method: "get",
params: {
gridCodes: data.gridCodes || null,
granularity: data.granularity,
startTime: data.startTime,
endTime: data.endTime,
regionName:data.regionName || null,
signalSiteCode: data.signalSiteCode || null,
},
});
}
//格网数据
export function getGridInfoList() {
return request({
url: "/GridInfo/list",
method: "get",
});
} }
\ No newline at end of file
...@@ -8,22 +8,21 @@ ...@@ -8,22 +8,21 @@
</div> </div>
<div class="templateCase_right_content_body"> <div class="templateCase_right_content_body">
<div class="horizontal-sections"> <div class="horizontal-sections">
<div class="section-item" v-for="(item, index) in 3" :key="index"> <div class="section-item" v-for="(item, index) in titles" :key="index">
<div class="section-item_title"> <div class="section-item_title">
<span>内容{{item}}</span> <span>{{ item.title }}</span>
</div> </div>
<div class="section-item_content_up"> <div class="section-item_content_up">
<div class="selector-item" v-for="(item, index) in objectSelector" :key="index"> <!-- <div v-for="(element,index) in [template1Selector,template2Selector]" :key="index">
<label class="selector-label">{{ item.label }}</label>
</div> -->
<div class="selector-item" v-for="(item, key) in item.templateSelector" :key="key">
<label class="selector-label">{{ item.label}}</label>
<div class="custom-select"> <div class="custom-select">
<!-- 粒度 --> <!-- 粒度 -->
<el-select v-model="item.default" placeholder="Select" style="width: 100%;" > <el-select v-model="item.default" placeholder="" style="width: 100%;">
<el-option <el-option v-for="itemele in item.options" :key="itemele.value" :label="itemele.label"
v-for="itemele in item.options" :value="itemele.value" />
:key="itemele.value"
:label="itemele.label"
:value="itemele.value"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -44,142 +43,242 @@ ...@@ -44,142 +43,242 @@
import hotMapComponent from '@/pages/all/components/hotMapComponents/index.vue'; import hotMapComponent from '@/pages/all/components/hotMapComponents/index.vue';
import cdf from '@/pages/all/components/cdf/index.vue'; import cdf from '@/pages/all/components/cdf/index.vue';
import instant from '@/pages/all/components/instant/index.vue'; import instant from '@/pages/all/components/instant/index.vue';
const allIdName = ref([['allIdName11', 'allIdName12'], ['allIdName21', 'allIdName22']]);
const allIdName = ref([['allIdName11', 'allIdName12'], ['allIdName21', 'allIdName22']]);
// 组件逻辑可以在这里添加 // 组件逻辑可以在这里添加
const objectSelector = [ const titles = [
{ {
label: '地面粒度', title: '容量/流量',
default: '区域', templateSelector: [
{
label: '曲线类型',
default: '热力图',
options: [ options: [
{ {
value: '区域', value: '瞬时值曲线',
label: '区域', label: '瞬时值曲线',
},
{
value: 'PDF曲线',
label: 'PDF曲线',
},
{
value: '热力图',
label: '热力图',
},
]
}, },
{ {
value: '站点', label: '地理标准',
label: '站点', default: '最小值',
options: [
{
value: '最小值',
label: '最小值',
}, },
{ {
value: '设备类型', value: '最大值',
label: '设备类型', label: '最大值',
}, },
{ {
value: '具体设备', value: '平均值',
label: '具体设备', label: '平均值',
} }
] ]
}, },
{ {
label: '卫星粒度', label: '时间标准',
default: '卫星', default: '最小值',
options: [ options: [
{ {
value: '卫星', value: '最小值',
label: '卫星', label: '最小值',
}, },
{ {
value: '星座', value: '最大值',
label: '星座', label: '最大值',
}, },
{ {
value: '波束', value: '平均值',
label: '波束', label: '平均值',
}
]
},
]
}, },
{ {
value: '转发器', title: '可用性',
label: '转发器', templateSelector: [
} {
label: '曲线类型',
default: '热力图',
options: [
{
value: 'PDF曲线',
label: 'PDF曲线',
},
{
value: '热力图',
label: '热力图',
},
] ]
}, },
{ {
label: '模板', label: '地理标准',
default: 'Example #1', default: '最小值',
options: [ options: [
{ {
value: 'Example #1', value: '最小值',
label: 'Example #1', label: '最小值',
}, },
{ {
value: 'Example #2', value: '最大值',
label: 'Example #2', label: '最大值',
}, },
{ {
value: 'Example #3', value: '平均值',
label: 'Example #3', label: '平均值',
}
]
}, },
{ {
value: '自定义模板', label: '时间标准',
label: '自定义模板', default: '最小值',
options: [
{
value: '最小值',
label: '最小值',
},
{
value: '最大值',
label: '最大值',
},
{
value: '平均值',
label: '平均值',
} }
] ]
}, },
]
},
{ {
label: '地面粒度', title: '网络时延/丢包',
default: '区域', templateSelector: [
{
label: '时延曲线类型',
default: '瞬时值曲线',
options: [ options: [
{ {
value: '区域', value: '瞬时值曲线',
label: '区域', label: '瞬时值曲线',
},
{
value: 'PDF曲线',
label: 'PDF曲线',
}, },
{ {
value: '站点', value: '热力图',
label: '站点', label: '热力图',
},
]
}, },
{ {
value: '设备类型', label: '地理标准',
label: '设备类型', default: '最小值',
options: [
{
value: '最小值',
label: '最小值',
}, },
{ {
value: '具体设备', value: '最大值',
label: '具体设备', label: '最大值',
},
{
value: '平均值',
label: '平均值',
} }
] ]
}, },
{ {
label: '卫星粒度', label: '时间标准',
default: '卫星', default: '最小值',
options: [ options: [
{ {
value: '卫星', value: '最小值',
label: '卫星', label: '最小值',
},
{
value: '最大值',
label: '最大值',
}, },
{ {
value: '星座', value: '平均值',
label: '星座', label: '平均值',
}
]
}, },
{ {
value: '波束', label: '丢包曲线类型',
label: '波束', default: '瞬时值曲线',
options: [
{
value: '最小值',
label: '最小值',
}, },
{ {
value: '转发器', value: '最大值',
label: '转发器', label: '最大值',
},
{
value: '平均值',
label: '平均值',
} }
] ]
}, },
{ {
label: '模板', label: '地理标准',
default: 'Example #1', default: '最小值',
options: [ options: [
{ {
value: 'Example #1', value: '最小值',
label: 'Example #1', label: '最小值',
}, },
{ {
value: 'Example #2', value: '最大值',
label: 'Example #2', label: '最大值',
}, },
{ {
value: 'Example #3', value: '平均值',
label: 'Example #3', label: '平均值',
}
]
}, },
{ {
value: '自定义模板', label: '时间标准',
label: '自定义模板', default: '最小值',
options: [
{
value: '最小值',
label: '最小值',
},
{
value: '最大值',
label: '最大值',
},
{
value: '平均值',
label: '平均值',
} }
] ]
},
]
} }
]; ];
const template2Selector = []
</script> </script>
<style scoped> <style scoped>
...@@ -208,22 +307,26 @@ const objectSelector = [ ...@@ -208,22 +307,26 @@ const objectSelector = [
} }
.horizontal-sections { .horizontal-sections {
display: flex; /* 启用弹性布局来水平排列 */ display: flex;
/* 启用弹性布局来水平排列 */
height: 100%; height: 100%;
border-right: 1px solid rgba(255, 0, 0, 0.1); border-right: 1px solid rgba(255, 0, 0, 0.1);
} }
.section-item { .section-item {
flex: 1; /* 平均分配宽度 */ flex: 1;
/* 平均分配宽度 */
height: 100%; height: 100%;
/* background-color: #f5f10c; */ /* background-color: #f5f10c; */
/* border: 1px solid rgba(255, 255, 255, 0.1); */ /* border: 1px solid rgba(255, 255, 255, 0.1); */
padding: 0px 10px; padding: 0px 10px;
padding-top: 5px; padding-top: 5px;
display: flex; /* 使内部内容也使用弹性布局 */ display: flex;
flex-direction: column; /* 垂直排列子元素 */ /* 使内部内容也使用弹性布局 */
/* overflow-y: auto; */ flex-direction: column;
/* 垂直排列子元素 */
/* overflow-y: auto; */
} }
.templateCase_right_content_header_item { .templateCase_right_content_header_item {
...@@ -237,13 +340,13 @@ const objectSelector = [ ...@@ -237,13 +340,13 @@ const objectSelector = [
.section-item_title{ .section-item_title {
height: 5%; height: 5%;
/* background-color: #051020; */ /* background-color: #051020; */
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: left; justify-content: left;
padding-left: 5px ; padding-left: 5px;
border-left: 1px solid #2e7dff; border-left: 1px solid #2e7dff;
font-size: 14px; font-size: 14px;
color: #fff; color: #fff;
...@@ -261,30 +364,41 @@ const objectSelector = [ ...@@ -261,30 +364,41 @@ const objectSelector = [
/* height: 42%; */ /* height: 42%; */
width: 100%; width: 100%;
/* background-color: #2d20a0; */ /* background-color: #2d20a0; */
display: flex; /* 启用弹性布局 */ display: flex;
flex-wrap: wrap; /* 允许换行 */ /* 启用弹性布局 */
gap: 10px; /* 元素间距 */ flex-wrap: wrap;
padding: 10px; /* 内边距 */ /* 允许换行 */
box-sizing: border-box; /* 包含padding */ gap: 10px;
align-content: flex-start; /* 对齐方式 */ /* 元素间距 */
padding: 10px;
/* 内边距 */
box-sizing: border-box;
/* 包含padding */
align-content: flex-start;
/* 对齐方式 */
} }
.selector-item { .selector-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
min-width: 100px; /* 最小宽度 */ min-width: 100px;
flex: 1; /* 弹性增长 */ /* 最小宽度 */
flex: 1;
/* 弹性增长 */
} }
.custom-select { .custom-select {
position: relative; position: relative;
width: 100%; /* 自适应宽度 */ width: 100%;
/* 自适应宽度 */
} }
:deep(.custom-select .el-select__wrapper) { :deep(.custom-select .el-select__wrapper) {
height: 12.5px; height: 12.5px;
} }
.section-item_content_down{
.section-item_content_down {
width: 100%; width: 100%;
/* background-color: #9520a0; */ /* background-color: #9520a0; */
padding: 10px 0; padding: 10px 0;
......
<template> <template>
<div class="dashboard-container"> <div class="dashboard-container">
<!-- 顶部导航栏 --> <!-- 顶部导航栏 -->
<header class="dashboard-header"> <header class="dashboard-header">
...@@ -26,18 +27,11 @@ ...@@ -26,18 +27,11 @@
<main class="dashboard-main"> <main class="dashboard-main">
<!-- 标签页导航 --> <!-- 标签页导航 -->
<div class="tabs-container"> <div class="tabs-container">
<div <div class="tab-item" :class="{ 'active': activeTab === 'equipmentCount' }"
class="tab-item" @click="activeTab = 'equipmentCount'">
:class="{ 'active': activeTab === 'equipmentCount' }"
@click="activeTab = 'equipmentCount'"
>
对象选取 对象选取
</div> </div>
<div <div class="tab-item" :class="{ 'active': activeTab === 'failureStatus' }" @click="activeTab = 'failureStatus'">
class="tab-item"
:class="{ 'active': activeTab === 'failureStatus' }"
@click="activeTab = 'failureStatus'"
>
模板列表 模板列表
</div> </div>
<div class="tab-indicator" :style="indicatorStyle"></div> <div class="tab-indicator" :style="indicatorStyle"></div>
...@@ -51,50 +45,39 @@ ...@@ -51,50 +45,39 @@
<div class="equipment-content"> <div class="equipment-content">
<!-- 下拉选择器区域 --> <!-- 下拉选择器区域 -->
<div class="selector-container"> <div class="selector-container">
<div class="selector-item" v-for="(item, index) in objectSelector" :key="index">
<label class="selector-label">{{ item.label }}</label> <div class="selector-item">
<label class="selector-label">{{ keliSelector.label }}</label>
<div class="custom-select"> <div class="custom-select">
<!-- 粒度 --> <!-- 粒度 -->
<el-select v-model="item.default" placeholder="Select" style="width: 100%;" > <el-select v-model="keliSelector.value" placeholder="" style="width: 100%;" @change="keliOnChange">
<el-option <el-option v-for="item in keliSelector.options" :key="item.value" :label="item.label"
v-for="itemele in item.options" :value="item.value" />
:key="itemele.value"
:label="itemele.label"
:value="itemele.value"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
<!-- <div class="selector-item"> <div class="selector-item" v-if="!isGlobal">
<label class="selector-label">{{ objectSelector[1].label }}</label> <label class="selector-label" style="visibility: hidden;">占位符</label>
<div class="custom-select"> <div class="custom-select">
<div class="select-trigger" @click="toggleDropdown(1)"> <el-select v-model="childrenSelector.value" placeholder="" style="width: 100%;" :disabled="isGlobal">
<span class="select-value">{{ selectedValues[1] }}</span> <el-option v-for="item in childrenSelector.options" :key="item.value" :label="item.label"
<i class="select-arrow"></i> :value="item.value" />
</div> </el-select>
<div class="select-dropdown" v-if="dropdownVisible[1]">
<div class="dropdown-option" v-for="option in objectSelector[1].options" :key="option" @click="selectOption(1, option)">
{{ option }}
</div>
</div>
</div> </div>
</div> </div>
<div class="selector-item"> <div class="selector-item">
<label class="selector-label">{{ objectSelector[2].label }}</label> <label class="selector-label">{{ templateSelector.label }}</label>
<div class="custom-select"> <div class="custom-select">
<div class="select-trigger" @click="toggleDropdown(2)"> <!-- 粒度 -->
<span class="select-value">{{ selectedValues[2] }}</span> <el-select v-model="templateSelector.value" placeholder="" style="width: 100%;">
<i class="select-arrow"></i> <el-option v-for="item in templateSelector.options" :key="item.value" :label="item.label"
</div> :value="item.value" />
<div class="select-dropdown" v-if="dropdownVisible[2]"> </el-select>
<div class="dropdown-option" v-for="option in objectSelector[2].options" :key="option" @click="selectOption(2, option)">
{{ option }}
</div>
</div> </div>
</div> </div>
</div> -->
</div> </div>
<div class="content-item"> <div class="content-item">
<hotMapComponent></hotMapComponent> <hotMapComponent></hotMapComponent>
...@@ -114,19 +97,18 @@ ...@@ -114,19 +97,18 @@
<div class="templateCase_left_header"> <div class="templateCase_left_header">
<div class="templateCase_left_header_item_title">模板列表</div> <div class="templateCase_left_header_item_title">模板列表</div>
<div class="templateCase_left_header_item_tool"> <div class="templateCase_left_header_item_tool">
<el-icon @click="templateCasedeleteHandFn"><Delete /></el-icon> <el-icon @click="templateCasedeleteHandFn">
<el-icon @click="templateCaseAddHandFn"><Plus /></el-icon> <Delete />
</el-icon>
<el-icon @click="templateCaseAddHandFn">
<Plus />
</el-icon>
</div> </div>
</div> </div>
<div class="templateCase_left_content"> <div class="templateCase_left_content">
<div <div class="templateCase_left_content_item" v-for="(item, index) in templateCaseList" :key="index"
class="templateCase_left_content_item" @click="templateCaseClickFn(index)" :class="{ 'CaseClickActive': activeTemplateIndex === index }">
v-for="(item, index) in templateCaseList"
:key="index"
@click="templateCaseClickFn(index)"
:class="{ 'CaseClickActive': activeTemplateIndex === index }"
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
...@@ -145,85 +127,83 @@ ...@@ -145,85 +127,83 @@
<script setup> <script setup>
import { ref, computed, onMounted } from 'vue'; import { ref, computed, onMounted, watch } from 'vue';
import hotMapComponent from '@/pages/all/components/hotMapComponents/index.vue'; import hotMapComponent from '@/pages/all/components/hotMapComponents/index.vue';
import cdf from '@/pages/all/components/cdf/index.vue'; import cdf from '@/pages/all/components/cdf/index.vue';
import instant from '@/pages/all/components/instant/index.vue'; import instant from '@/pages/all/components/instant/index.vue';
import screenConfigCase from './screenConfigCase.vue'; import screenConfigCase from './screenConfigCase.vue';
import { getCapacityAndTraffic } from '@/api/Zodiac';
import useAppStore from '@/store/module/app'
const appStore = useAppStore();
const emits = defineEmits(['handleScreenConfigeClose']); const emits = defineEmits(['handleScreenConfigeClose']);
const allIdName = ref([['allIdName11', 'allIdName12'], ['allIdName21', 'allIdName22']]); const allIdName = ref([['allIdName11', 'allIdName12'], ['allIdName21', 'allIdName22']]);
// 标签页状态管理 // 标签页状态管理
const activeTab = ref('equipmentCount'); // 默认选中"地面站设备数量" const activeTab = ref('equipmentCount'); // 默认选中"地面站设备数量"
const objectSelector = [
const keliSelector = ref(
{ {
label: '地面粒度', label: '地面粒度',
default: '区域', value: 'global',
options: [ options: [
{ {
value: '区域', value: 'global',
label: '区域', label: '全球',
}, },
{ {
value: '站点', value: 'region',
label: '站点', label: '区域',
}, },
{ {
value: '设备类型', value: 'station',
label: '设备类型', label: '信关站',
}, },
{ {
value: '具体设备', value: 'grid',
label: '具体设备', label: '格网',
} }
] ]
}, });
{
label: '卫星粒度', //根据前选择器决定后选择器
default: '卫星', const childrenSelector = ref(
options: [
{
value: '卫星',
label: '卫星',
},
{
value: '星座',
label: '星座',
},
{
value: '波束',
label: '波束',
},
{ {
value: '转发器', label: '',
label: '转发器', value: '',
options: []
} }
] )
},
const isGlobal = computed(() => keliSelector.value.value === 'global');
const templateSelector = ref(
{ {
label: '模板', label: '模板选择',
default: 'Example #1', value: '模板1',
options: [ options: [
{ {
value: 'Example #1', value: '模板1',
label: 'Example #1', label: '模板1',
}, },
{ {
value: 'Example #2', value: '模板2',
label: 'Example #2', label: '模板2',
}, },
{ {
value: 'Example #3', value: '模板3',
label: 'Example #3', label: '模板3',
}, },
{ {
value: '自定义模板', value: '模板4',
label: '自定义模板',
} }
] ]
} }
]; )
const templateCaseList = ref(['模板1', '模板2', '模板3', '模板4', '模板26', '模板27', '模板28'])
const templateCaseList = ref(['模板1', '模板2'])
// 下拉选择器状态 // 下拉选择器状态
const selectedValues = ref([]); const selectedValues = ref([]);
const dropdownVisible = ref([false, false, false]); const dropdownVisible = ref([false, false, false]);
...@@ -234,8 +214,8 @@ const templateCaseAddHandFn = () => { ...@@ -234,8 +214,8 @@ const templateCaseAddHandFn = () => {
//console.log('templateCaseAddHandFn'); //console.log('templateCaseAddHandFn');
}; };
// 初始化选中值 // 初始化选中值
onMounted(() => { onMounted(async () => {
selectedValues.value = objectSelector.map(item => item.default); await getCapacityAndTrafficData()
}); });
// 切换下拉菜单显示 // 切换下拉菜单显示
...@@ -244,11 +224,20 @@ const toggleDropdown = (index) => { ...@@ -244,11 +224,20 @@ const toggleDropdown = (index) => {
dropdownVisible.value = dropdownVisible.value.map((val, i) => i === index ? !val : false); dropdownVisible.value = dropdownVisible.value.map((val, i) => i === index ? !val : false);
}; };
// 选择下拉选项
const selectOption = (index, option) => { const getCapacityAndTrafficData = async () => {
selectedValues.value[index] = option; const res = await getCapacityAndTraffic({
dropdownVisible.value[index] = false; // 选择后关闭下拉菜单 granularity: keliSelector.value.value,
}; startTime: '2025-11-03 00:00:00',
endTime: '2025-11-06 00:00:00',
regionName: '',
signalSiteCode: '',
gridCodes: ''
})
console.log(res)
}
const activeTemplateIndex = ref(0); const activeTemplateIndex = ref(0);
const templateCaseClickFn = (index) => { const templateCaseClickFn = (index) => {
//console.log('templateCaseClickFn', index); //console.log('templateCaseClickFn', index);
...@@ -267,6 +256,24 @@ const indicatorStyle = computed(() => { ...@@ -267,6 +256,24 @@ const indicatorStyle = computed(() => {
? { left: '0%', width: '50%' } ? { left: '0%', width: '50%' }
: { left: '50%', width: '50%' }; : { left: '50%', width: '50%' };
}); });
const keliOnChange = () => {
childrenSelector.value.value = ''
switch (keliSelector.value.value) {
case 'region':
childrenSelector.value.options = appStore.regionPanelData
break;
case 'grid':
childrenSelector.value.options = appStore.gridPanelData
break;
case 'station':
childrenSelector.value.options = appStore.signalSitePanelData
break;
}
}
watch(() => keliSelector.value.value, keliOnChange)
</script> </script>
<style scoped> <style scoped>
...@@ -282,7 +289,8 @@ const indicatorStyle = computed(() => { ...@@ -282,7 +289,8 @@ const indicatorStyle = computed(() => {
position: fixed; /* 改为fixed定位 */ position: fixed;
/* 改为fixed定位 */
left: 10%; left: 10%;
top: 10%; top: 10%;
...@@ -438,14 +446,17 @@ const indicatorStyle = computed(() => { ...@@ -438,14 +446,17 @@ const indicatorStyle = computed(() => {
border-radius: 8px; border-radius: 8px;
padding: 5px 15px; padding: 5px 15px;
} }
.equipment-content{
.equipment-content {
height: 600px; height: 600px;
} }
.tab-panel { .tab-panel {
min-height: 600px; min-height: 600px;
/* max-height: 700px; */ /* max-height: 700px; */
color: #e2e8f0; color: #e2e8f0;
} }
.failure-content { .failure-content {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
...@@ -455,7 +466,8 @@ const indicatorStyle = computed(() => { ...@@ -455,7 +466,8 @@ const indicatorStyle = computed(() => {
/* height: 500px; */ /* height: 500px; */
/* background-color: rgba(1, 73, 241, 0.5); */ /* background-color: rgba(1, 73, 241, 0.5); */
/* padding: 15px; 添加内边距 */ /* padding: 15px; 添加内边距 */
border-radius: 8px; /* 添加圆角 */ border-radius: 8px;
/* 添加圆角 */
} }
.templateCase { .templateCase {
...@@ -466,7 +478,8 @@ const indicatorStyle = computed(() => { ...@@ -466,7 +478,8 @@ const indicatorStyle = computed(() => {
/* border-radius: 6px; 添加圆角 */ /* border-radius: 6px; 添加圆角 */
/* border: 1px solid rgba(255, 255, 255, 0.1); 添加边框 */ /* border: 1px solid rgba(255, 255, 255, 0.1); 添加边框 */
/* padding: 10px; 添加内边距 */ /* padding: 10px; 添加内边距 */
overflow: hidden; /* 防止内容溢出 */ overflow: hidden;
/* 防止内容溢出 */
} }
/* 可以为左右两侧添加不同样式 */ /* 可以为左右两侧添加不同样式 */
...@@ -492,7 +505,7 @@ const indicatorStyle = computed(() => { ...@@ -492,7 +505,7 @@ const indicatorStyle = computed(() => {
} }
.templateCase_right_content{ .templateCase_right_content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
...@@ -500,7 +513,8 @@ const indicatorStyle = computed(() => { ...@@ -500,7 +513,8 @@ const indicatorStyle = computed(() => {
/* background-color: #2b70df; */ /* background-color: #2b70df; */
/* padding: 10px 10px; */ /* padding: 10px 10px; */
} }
.templateCase_right_content_header{
.templateCase_right_content_header {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 8%; height: 8%;
...@@ -508,11 +522,13 @@ const indicatorStyle = computed(() => { ...@@ -508,11 +522,13 @@ const indicatorStyle = computed(() => {
padding: 10px 10px; padding: 10px 10px;
/* background-color: #df2b34; */ /* background-color: #df2b34; */
} }
.templateCase_right_content_body{
.templateCase_right_content_body {
height: 92%; height: 92%;
width: 100%; width: 100%;
background-color: #73df2b; background-color: #73df2b;
} }
/* 新增样式 */ /* 新增样式 */
.horizontal-sections { .horizontal-sections {
display: flex; display: flex;
...@@ -523,12 +539,15 @@ const indicatorStyle = computed(() => { ...@@ -523,12 +539,15 @@ const indicatorStyle = computed(() => {
.section-item { .section-item {
flex: 1; flex: 1;
height: 100%; height: 100%;
background-color: #1e293b; /* 您可以选择合适的背景色 */ background-color: #1e293b;
border: 1px solid rgba(255, 255, 255, 0.1); /* 可选:边框 */ /* 您可以选择合适的背景色 */
border: 1px solid rgba(255, 255, 255, 0.1);
/* 可选:边框 */
padding: 10px 10px; padding: 10px 10px;
/* border-radius: 4px; 可选:圆角 */ /* border-radius: 4px; 可选:圆角 */
} }
.templateCase_right_content_header_item{
.templateCase_right_content_header_item {
height: 100%; height: 100%;
width: 8%; width: 8%;
...@@ -538,34 +557,39 @@ const indicatorStyle = computed(() => { ...@@ -538,34 +557,39 @@ const indicatorStyle = computed(() => {
/* background-color: #6ffcba; */ /* background-color: #6ffcba; */
} }
.templateCase_left_header{
.templateCase_left_header {
display: flex; display: flex;
padding: 10px 0; padding: 10px 0;
} }
.templateCase_left_header_item_title{
.templateCase_left_header_item_title {
flex: 0.61; flex: 0.61;
padding-left: 10px; padding-left: 10px;
/* background-color: #2c60b4; */ /* background-color: #2c60b4; */
} }
.templateCase_left_header_item_tool { .templateCase_left_header_item_tool {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
flex: 0.39; flex: 0.39;
gap: 15px; gap: 15px;
padding-right: 10px; padding-right: 10px;
align-items: center; /* 垂直居中对齐 */ align-items: center;
/* 垂直居中对齐 */
} }
.templateCase_left_content{ .templateCase_left_content {
/* background-color: #6ffcba; */ /* background-color: #6ffcba; */
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
} }
.templateCase_left_content_item{
.templateCase_left_content_item {
height: 40px; height: 40px;
width: 100%; width: 100%;
display: flex; display: flex;
...@@ -578,13 +602,14 @@ const indicatorStyle = computed(() => { ...@@ -578,13 +602,14 @@ const indicatorStyle = computed(() => {
/* background-color: #2c78f5; */ /* background-color: #2c78f5; */
} }
.CaseClickActive{ .CaseClickActive {
background: linear-gradient(to right, #193d77 0, rgba(0, 0, 0, 1) 100%); background: linear-gradient(to right, #193d77 0, rgba(0, 0, 0, 1) 100%);
} }
.templateCase_left_content_item:hover{ .templateCase_left_content_item:hover {
background: linear-gradient(to right, #2b70df 0, rgba(0, 0, 0, 1) 100%); background: linear-gradient(to right, #2b70df 0, rgba(0, 0, 0, 1) 100%);
} }
/* 下拉选择器样式 */ /* 下拉选择器样式 */
.selector-container { .selector-container {
display: flex; display: flex;
...@@ -609,19 +634,22 @@ const indicatorStyle = computed(() => { ...@@ -609,19 +634,22 @@ const indicatorStyle = computed(() => {
position: relative; position: relative;
width: 160px; width: 160px;
/* color: #ffffff; */ /* color: #ffffff; */
border:1px solid #000000; border: 1px solid #000000;
} }
:deep(.custom-select .el-select__wrapper) { :deep(.custom-select .el-select__wrapper) {
height: 12.5px; height: 12.5px;
} }
:deep(.custom-select .el-select ){
:deep(.custom-select .el-select) {
background: #000000; background: #000000;
border:1px solid #000000; border: 1px solid #000000;
/* color: #ffffff; */ /* color: #ffffff; */
} }
:deep(.custom-select .el-select .el-select__wrapper ){
:deep(.custom-select .el-select .el-select__wrapper) {
background: #000000; background: #000000;
border:1px solid #000000; border: 1px solid #000000;
box-shadow: 0 0 2px rgba(131, 131, 131, 0.95); box-shadow: 0 0 2px rgba(131, 131, 131, 0.95);
/* color: #ffffff; */ /* color: #ffffff; */
} }
...@@ -631,15 +659,18 @@ const indicatorStyle = computed(() => { ...@@ -631,15 +659,18 @@ const indicatorStyle = computed(() => {
/* font-size: 10px; */ /* font-size: 10px; */
} }
:deep(.el-popper){ :deep(.el-popper) {
background-color: #000000 !important; background-color: #000000 !important;
} }
:deep(.el-select-dropdown){
:deep(.el-select-dropdown) {
background: #000000 !important; background: #000000 !important;
} }
:deep(.el-select-dropdown){
:deep(.el-select-dropdown) {
background-color: #000000 !important; background-color: #000000 !important;
} }
.select-trigger { .select-trigger {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -693,7 +724,8 @@ const indicatorStyle = computed(() => { ...@@ -693,7 +724,8 @@ const indicatorStyle = computed(() => {
background-color: #334155; background-color: #334155;
color: #ffffff; color: #ffffff;
} }
.content-item{
.content-item {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: 20px; gap: 20px;
...@@ -701,20 +733,23 @@ const indicatorStyle = computed(() => { ...@@ -701,20 +733,23 @@ const indicatorStyle = computed(() => {
/* background-color: #1c5abe; */ /* background-color: #1c5abe; */
} }
.content-item > * { .content-item>* {
flex: 1; flex: 1;
min-width: 0; min-width: 0;
} }
.content-item > *:not(:last-child) {
.content-item>*:not(:last-child) {
padding-right: 10px; padding-right: 10px;
border-right: 1px solid #1b1b1b; /* 右边框样式 */ border-right: 1px solid #1b1b1b;
/* 右边框样式 */
} }
.apply-btn-right{ .apply-btn-right {
position: absolute; position: absolute;
bottom: 16px; bottom: 16px;
} }
:deep(.apply-btn){
:deep(.apply-btn) {
width: 100px; width: 100px;
height: 30px; height: 30px;
/* margin-top: 10%; */ /* margin-top: 10%; */
...@@ -726,6 +761,7 @@ const indicatorStyle = computed(() => { ...@@ -726,6 +761,7 @@ const indicatorStyle = computed(() => {
cursor: pointer; cursor: pointer;
border-bottom: 1px solid #2c78f5; border-bottom: 1px solid #2c78f5;
} }
/* 滚动条样式 */ /* 滚动条样式 */
.select-dropdown::-webkit-scrollbar { .select-dropdown::-webkit-scrollbar {
width: 6px; width: 6px;
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
<div class="navbar-left"> <div class="navbar-left">
<div class="status-item weather-info"> <div class="status-item weather-info">
<span class="icon"> <span class="icon">
<img src="@/assets/images/headers/yuanxin.png" alt="图标" class="weather-icon" style="width: 100%; height: 100%;"> <img src="@/assets/images/headers/yuanxin.png" alt="图标" class="weather-icon"
style="width: 100%; height: 100%;">
</span> </span>
<!-- <span class="text">晴 18℃</span> --> <!-- <span class="text">晴 18℃</span> -->
</div> </div>
...@@ -30,13 +31,8 @@ ...@@ -30,13 +31,8 @@
<div class="navbar-right"> <div class="navbar-right">
<div class="control-item company-item" @click="handletoLinkClick"> <div class="control-item company-item" @click="handletoLinkClick">
<img <img v-if="!imageError" src="@/assets/images/headers/header_style.png" alt="大屏配置" class="company-logo"
v-if="!imageError" @error="handleImageError">
src="@/assets/images/headers/header_style.png"
alt="大屏配置"
class="company-logo"
@error="handleImageError"
>
<span class="control-label">跳转</span> <span class="control-label">跳转</span>
</div> </div>
...@@ -44,40 +40,26 @@ ...@@ -44,40 +40,26 @@
<div class="control-item digital-person-item" :class="{ active: digitalPersonShow }"> <div class="control-item digital-person-item" :class="{ active: digitalPersonShow }">
<el-switch <el-switch v-model="digitalPersonShow" />
v-model="digitalPersonShow"
/>
<span class="control-label">数字人</span> <span class="control-label">数字人</span>
</div> </div>
<div class="control-item company-item" @click="handleCompanyClick"> <div class="control-item company-item" @click="handleCompanyClick">
<img <img v-if="!imageError" src="@/assets/images/headers/header_style.png" alt="大屏配置" class="company-logo"
v-if="!imageError" @error="handleImageError">
src="@/assets/images/headers/header_style.png"
alt="大屏配置"
class="company-logo"
@error="handleImageError"
>
<!-- <div v-else class="logo-placeholder">DL</div> --> <!-- <div v-else class="logo-placeholder">DL</div> -->
<span class="control-label">大屏配置</span> <span class="control-label">大屏配置</span>
</div> </div>
<div class="control-item rightTime" > <div class="control-item rightTime">
<span class="timeColor">{{ currentTime.split(" ")[0] }}</span> <span class="timeColor">{{ currentTime.split(" ")[0] }}</span>
<span >{{ currentTime.split(" ")[1] }}</span> <span>{{ currentTime.split(" ")[1] }}</span>
</div> </div>
</div> </div>
</div> </div>
<el-dialog <el-dialog v-model="screenConfigeDialogVisible" :destroy-on-close="true" :modal="false" width="100"
v-model="screenConfigeDialogVisible" :show-close="false" :before-close="handleScreenConfigeClose"
:destroy-on-close="true" style=" background-color: rgba(0, 0, 0,0);padding: 0;margin: 0;">
:modal="false"
width="100"
:show-close="false"
:before-close="handleScreenConfigeClose"
style=" background-color: rgba(0, 0, 0,0);padding: 0;margin: 0;"
>
<screenConfige @handleScreenConfigeClose="handleScreenConfigeClose"></screenConfige> <screenConfige @handleScreenConfigeClose="handleScreenConfigeClose"></screenConfige>
<!-- <div style="width: 100px;height: 100px;background-color: blueviolet;"></div> --> <!-- <div style="width: 100px;height: 100px;background-color: blueviolet;"></div> -->
</el-dialog> </el-dialog>
...@@ -94,12 +76,7 @@ ...@@ -94,12 +76,7 @@
:close-on-click-modal="false" :close-on-click-modal="false"
> >
</el-dialog> --> </el-dialog> -->
<div <div v-if="digitalPersonShow" class="draggable-box" :style="{ left: pos.x + 'px', top: pos.y + 'px' }">
v-if="digitalPersonShow"
class="draggable-box"
:style="{ left: pos.x + 'px', top: pos.y + 'px' }"
>
<span class="title" @mousedown="startDrag">拖拽我(带边界限制)</span> <span class="title" @mousedown="startDrag">拖拽我(带边界限制)</span>
<!-- <el-input v-model="value" placeholder="请输入内容" /> --> <!-- <el-input v-model="value" placeholder="请输入内容" /> -->
<!-- <Sender v-model="senderValue" variant="updown" clearable allow-speech /> --> <!-- <Sender v-model="senderValue" variant="updown" clearable allow-speech /> -->
...@@ -112,11 +89,12 @@ ...@@ -112,11 +89,12 @@
<script setup> <script setup>
// import { BubbleList, Sender } from 'vue-element-plus-x'; // import { BubbleList, Sender } from 'vue-element-plus-x';
import { ref, onUnmounted, watch, onBeforeMount, onDeactivated ,onMounted} from 'vue'; import { ref, onUnmounted, watch, onBeforeMount, onDeactivated, onMounted } from 'vue';
import local from '@/utils/local.js' import local from '@/utils/local.js'
import screenConfige from './component/screenConfigeDialog.vue' import screenConfige from './component/screenConfigeDialog.vue'
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import useAppStore from '@/store/module/app' import useAppStore from '@/store/module/app'
import { getRegionPanel, getSignalSitePanel, getGridPanel } from "@/api/Zodiac";
import errorDialog from '@/pages/lefts/component/errorDialog.vue' import errorDialog from '@/pages/lefts/component/errorDialog.vue'
...@@ -126,16 +104,6 @@ const useAppStoreInstance = useAppStore() ...@@ -126,16 +104,6 @@ const useAppStoreInstance = useAppStore()
// 在 setup 中 // 在 setup 中
const router = useRouter(); const router = useRouter();
const senderRef = ref();
const senderValue = ref('');
// 数字人显示状态 // 数字人显示状态
const digitalPersonShow = ref(false); const digitalPersonShow = ref(false);
// 实时更新时间 // 实时更新时间
...@@ -159,8 +127,8 @@ const handleScreenConfigeClose = () => { ...@@ -159,8 +127,8 @@ const handleScreenConfigeClose = () => {
screenConfigeDialogVisible.value = false; screenConfigeDialogVisible.value = false;
if (window.ue5) { if (window.ue5) {
window.ue5("callBackAllDialogFn", String(JSON.stringify({ window.ue5("callBackAllDialogFn", String(JSON.stringify({
type:"LargeScreenConfigurationDialog", type: "LargeScreenConfigurationDialog",
status:"close" status: "close"
}))); })));
} }
}; };
...@@ -183,35 +151,7 @@ const handleImageError = (e) => { ...@@ -183,35 +151,7 @@ const handleImageError = (e) => {
e.target.style.display = 'none'; e.target.style.display = 'none';
}; };
// try {
// // 确保对象结构存在
// if (typeof window.ue5 !== 'object' || window.ue5 === null) {
// window.ue5 = {};
// }
// if (typeof window.ue5.interface !== 'object' || window.ue5.interface === null) {
// window.ue5.interface = {};
// }
// window.ue5.interface.emitUIInteraction = (res) => {
// //console.log("收到UE交互:", res.name);
// try {
// const resData = JSON.parse(res.data);
// //console.log("Received from UE:", resData);
// if (resData.locationReplace === true) {
// location.replace('/subsystem');
// }
// if (resData.locationReplace === false) {
// location.replace('/');
// }
// } catch (parseError) {
// console.error("Error parsing JSON:", parseError);
// }
// };
// } catch (initError) {
// console.error("Failed to initialize ue5 interface:", initError);
// }
const toSubSystemFlag = ref(false); const toSubSystemFlag = ref(false);
const handletoLinkClick = () => { const handletoLinkClick = () => {
try { try {
...@@ -221,7 +161,7 @@ const handletoLinkClick = () => { ...@@ -221,7 +161,7 @@ const handletoLinkClick = () => {
router.push('/'); router.push('/');
//console.log("1111111111111111111111111",useAppStoreInstance.isSourceLegendShow); //console.log("1111111111111111111111111",useAppStoreInstance.isSourceLegendShow);
useAppStoreInstance.setGlobalisFromTosub(true); useAppStoreInstance.setGlobalisFromTosub(true);
useAppStoreInstance.setislegendShow(useAppStoreInstance.isSourceLegendShow?true:false ); useAppStoreInstance.setislegendShow(useAppStoreInstance.isSourceLegendShow ? true : false);
//console.log("11111111111111111111111112",useAppStoreInstance.islegendShow); //console.log("11111111111111111111111112",useAppStoreInstance.islegendShow);
useAppStoreInstance.setiscontrolPanelShow(true); useAppStoreInstance.setiscontrolPanelShow(true);
useAppStoreInstance.setGlobalSubsystemSelectedTimeRange([]); useAppStoreInstance.setGlobalSubsystemSelectedTimeRange([]);
...@@ -254,12 +194,11 @@ const handletoLinkClick = () => { ...@@ -254,12 +194,11 @@ const handletoLinkClick = () => {
}; };
const handleCompanyClick = () => { const handleCompanyClick = () => {
// 可以添加点击事件逻辑 // 可以添加点击事件逻辑
// //console.log('大屏配置按钮点击');
screenConfigeDialogVisible.value = !screenConfigeDialogVisible.value; screenConfigeDialogVisible.value = !screenConfigeDialogVisible.value;
if (window.ue5) { if (window.ue5) {
window.ue5("callBackAllDialogFn", String(JSON.stringify({ window.ue5("callBackAllDialogFn", String(JSON.stringify({
type:"LargeScreenConfigurationDialog", type: "LargeScreenConfigurationDialog",
status:"open" status: "open"
}))); })));
} }
}; };
...@@ -275,65 +214,8 @@ onBeforeMount(() => { ...@@ -275,65 +214,8 @@ onBeforeMount(() => {
}, 1000); }, 1000);
}); });
// const handleUEMessage = () => {
// //console.log("我是handleUEMessage里面的window",window); onMounted(async () => {
// window.emitUIInteraction = (res) => {
// // //console.log('Received from UE:', data);
// //console.log("我是handleUEMessage,收到UE交互:", res);
// try {
// const resData = JSON.parse(res.data);
// if (window.ue5) {
// window.ue5("callBackTimeFn", String(JSON.stringify({
// taskCode: String("从UE里面传输的数据",resData,res),
// })))
// }
// //console.log("handleUEMessage,Received from UE:", resData);
// if (resData.locationReplace === true) {
// router.push('/subsystem');
// }
// if (resData.locationReplace === false) {
// router.push('/');
// }
// } catch (parseError) {
// console.error("Error parsing JSON:", parseError);
// }
// };
// };
// const handleUEMessage1 = () => {
// //console.log("我是handleUEMessage1里面的window",window);
// window.emitUIInteraction = (res) => {
// // //console.log('Received from UE:', data);
// //console.log("我是handleUEMessage1,收到UE交互:", res);
// try {
// const resData = JSON.parse(res.data);
// if (window.ue5) {
// window.ue5("callBackTimeFn", String(JSON.stringify({
// taskCode: String("handleUEMessage1从UE里面传输的数据",resData,res),
// })))
// }
// //console.log("Received from UE:", resData);
// if (resData.locationReplace === true) {
// router.push('/subsystem');
// }
// if (resData.locationReplace === false) {
// router.push('/');
// }
// } catch (parseError) {
// console.error("Error parsing JSON:", parseError);
// }
// };
// };
onMounted(() => {
// window.addEventListener('message', handleUEMessage); // window.addEventListener('message', handleUEMessage);
// window.addEventListener('emitUIInteraction', handleUEMessage1); // window.addEventListener('emitUIInteraction', handleUEMessage1);
window.ue.interface.emitUIInteraction = (res) => { window.ue.interface.emitUIInteraction = (res) => {
...@@ -369,7 +251,7 @@ onMounted(() => { ...@@ -369,7 +251,7 @@ onMounted(() => {
//console.log("1111111111111111111111111",useAppStoreInstance.isSourceLegendShow); //console.log("1111111111111111111111111",useAppStoreInstance.isSourceLegendShow);
useAppStoreInstance.setGlobalisFromTosub(true); useAppStoreInstance.setGlobalisFromTosub(true);
useAppStoreInstance.setislegendShow(useAppStoreInstance.isSourceLegendShow?true:false ); useAppStoreInstance.setislegendShow(useAppStoreInstance.isSourceLegendShow ? true : false);
//console.log("11111111111111111111111112",useAppStoreInstance.islegendShow); //console.log("11111111111111111111111112",useAppStoreInstance.islegendShow);
useAppStoreInstance.setiscontrolPanelShow(true); useAppStoreInstance.setiscontrolPanelShow(true);
useAppStoreInstance.setGlobalSubsystemSelectedTimeRange([]); useAppStoreInstance.setGlobalSubsystemSelectedTimeRange([]);
...@@ -394,6 +276,9 @@ onMounted(() => { ...@@ -394,6 +276,9 @@ onMounted(() => {
await initChartData();
}); });
...@@ -435,6 +320,14 @@ const stopDrag = () => { ...@@ -435,6 +320,14 @@ const stopDrag = () => {
}; };
const initChartData = async () => {
// console.log("初始化数据",useAppStoreInstance);
const [res1,res2,res3] = await Promise.all([getRegionPanel(), getSignalSitePanel(), getGridPanel()])
useAppStoreInstance.regionPanelData = res1.code==200?res1.data.map(item=>({value:item,label:item})):[]
useAppStoreInstance.signalSitePanelData = res2.code==200?res2.data.map((item)=>({value:item.siteId,label:item.siteName})):[]
useAppStoreInstance.gridPanelData = res3.code==200?res3.data.map(item=>({value:item.gridCode,label:item.gridName})):[]
};
...@@ -443,7 +336,7 @@ const stopDrag = () => { ...@@ -443,7 +336,7 @@ const stopDrag = () => {
</script> </script>
<style scoped> <style scoped>
*{ * {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
...@@ -470,7 +363,8 @@ const stopDrag = () => { ...@@ -470,7 +363,8 @@ const stopDrag = () => {
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
flex-shrink: 0; flex-shrink: 0;
user-select: none; /* 防止拖拽时选中文本 */ user-select: none;
/* 防止拖拽时选中文本 */
} }
...@@ -514,11 +408,12 @@ const stopDrag = () => { ...@@ -514,11 +408,12 @@ const stopDrag = () => {
height: 55px; height: 55px;
max-width: 1920px; max-width: 1920px;
margin: 0 auto; margin: 0 auto;
background: url("@/assets/images/headers/header_bg.png") ; background: url("@/assets/images/headers/header_bg.png");
/* padding: 0.6rem 0; */ /* padding: 0.6rem 0; */
position: relative; position: relative;
overflow: hidden; overflow: hidden;
background-size: 100% 160%; /* 或者 cover/auto */ background-size: 100% 160%;
/* 或者 cover/auto */
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
...@@ -608,13 +503,16 @@ const stopDrag = () => { ...@@ -608,13 +503,16 @@ const stopDrag = () => {
padding-top: 10px; padding-top: 10px;
/* background-color: #d10e0e; */ /* background-color: #d10e0e; */
} }
.timeColor{
.timeColor {
color: #ddd; color: #ddd;
} }
.rightTime{
.rightTime {
border-left: 1px solid #ddd; border-left: 1px solid #ddd;
height: 10px; height: 10px;
} }
.control-item { .control-item {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -702,15 +600,18 @@ const stopDrag = () => { ...@@ -702,15 +600,18 @@ const stopDrag = () => {
} }
@media (max-width: 992px) { @media (max-width: 992px) {
/* .navbar-left { /* .navbar-left {
display: none; display: none;
} */ } */
.company-item{ .company-item {
display: none; display: none;
} }
.digital-person-item{
.digital-person-item {
display: none; display: none;
} }
.navbar-right { .navbar-right {
gap: 1rem; gap: 1rem;
} }
......
...@@ -52,6 +52,11 @@ const useAppStore = defineStore( ...@@ -52,6 +52,11 @@ const useAppStore = defineStore(
globalSubsystemSelectedEndTime: '2025-11-04 00:00:00',//暂未使用 globalSubsystemSelectedEndTime: '2025-11-04 00:00:00',//暂未使用
globalDisableTimeLine: true, globalDisableTimeLine: true,
gridPanelData:[], //格网面板
regionPanelData:[], //区域面板
signalSitePanelData:[], //信关站面板
}), }),
actions: { actions: {
setGlobalRecordMainSysTaskCode(status) { setGlobalRecordMainSysTaskCode(status) {
......
...@@ -26,17 +26,6 @@ const service = axios.create({ ...@@ -26,17 +26,6 @@ const service = axios.create({
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
//console.log('--------------config', config)
// // 是否需要设置 token
// const isToken = (config.headers || {}).isToken === false
// //console.log('--------------isToken', isToken)
// // 是否需要防止数据重复提交
// const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
// //console.log('--------------isRepeatSubmit', isRepeatSubmit,(config.headers || {}).repeatSubmit,config.headers.repeatSubmit,undefined===false)
// if (getToken() && !isToken) {
// config.headers['token'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
// }
// get请求映射params参数
if (config.method === 'get' && config.params) { if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params); let url = config.url + '?' + tansParams(config.params);
url = url.slice(0, -1); url = url.slice(0, -1);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论