Browse Source

修改汇聚系统下的样式

inspection_yanyuan
douyage 15 hours ago
parent
commit
453f8c7619
7 changed files with 81 additions and 23 deletions
  1. +1
    -1
      .env.development
  2. +1
    -1
      .env.htjc6
  3. +1
    -1
      .env.production
  4. +1
    -1
      .env.staging
  5. +1
    -1
      src/layout/components/Navbar.vue
  6. +2
    -2
      src/utils/stationTitle.js
  7. +74
    -16
      src/views/portal/index.vue

+ 1
- 1
.env.development View File

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 消防动环管理平台
VUE_APP_TITLE = 动环智能巡检系统
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'


+ 1
- 1
.env.htjc6 View File

@ -1,7 +1,7 @@
NODE_ENV = 'production' NODE_ENV = 'production'
ENV = 'production' ENV = 'production'
VUE_APP_TITLE = 消防动环管理平台
VUE_APP_TITLE = 动环智能巡检系统
VUE_APP_BASE_API = '/app/htjc6/api' VUE_APP_BASE_API = '/app/htjc6/api'
VUE_APP_NVR_API = '/nvr-api' VUE_APP_NVR_API = '/nvr-api'


+ 1
- 1
.env.production View File

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 消防动环管理平台
VUE_APP_TITLE = 动环智能巡检系统
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'


+ 1
- 1
.env.staging View File

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 消防动环管理平台
VUE_APP_TITLE = 动环智能巡检系统
BABEL_ENV = production BABEL_ENV = production


+ 1
- 1
src/layout/components/Navbar.vue View File

@ -3,7 +3,7 @@
<div v-if="isXfdh" class="xfdh-title-art" :style="{ backgroundImage: `url(${xfdhTitleNavbar})` }" /> <div v-if="isXfdh" class="xfdh-title-art" :style="{ backgroundImage: `url(${xfdhTitleNavbar})` }" />
<div class="navbar-brand"> <div class="navbar-brand">
<img :src="isXfdh ? xfdhBrand : headerLogo" class="header-logo" alt="" /> <img :src="isXfdh ? xfdhBrand : headerLogo" class="header-logo" alt="" />
<span class="platform-title">消防动环管理平台</span>
<span class="platform-title">动环智能巡检系统</span>
</div> </div>
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" /> <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
<div v-else class="navbar-spacer" /> <div v-else class="navbar-spacer" />


+ 2
- 2
src/utils/stationTitle.js View File

@ -2,7 +2,7 @@
// 后续接入新站点:把切图放到 src/assets/images/header/ 下, // 后续接入新站点:把切图放到 src/assets/images/header/ 下,
// 在 stationConfigMap 里加一行 "<该站IP或域名>: { titleImage, name }" 即可; // 在 stationConfigMap 里加一行 "<该站IP或域名>: { titleImage, name }" 即可;
// 同一 IP 不同端口是不同站点时,key 写成 "IP:端口"(如 "192.168.129.2:32799"); // 同一 IP 不同端口是不同站点时,key 写成 "IP:端口"(如 "192.168.129.2:32799");
// 未匹配到的站点使用默认横幅和默认标题"消防动环管理平台"。
// 未匹配到的站点使用默认横幅和默认标题"动环智能巡检系统"。
import defaultTitleImage from "@/assets/images/header/xfdh-title-navbar.png"; import defaultTitleImage from "@/assets/images/header/xfdh-title-navbar.png";
import baiyangpingTitleImage from "@/assets/images/header/baiyangping-title.png"; import baiyangpingTitleImage from "@/assets/images/header/baiyangping-title.png";
import baicaopoTitleImage from "@/assets/images/header/baicaopo-title.png"; import baicaopoTitleImage from "@/assets/images/header/baicaopo-title.png";
@ -29,7 +29,7 @@ const stationConfigMap = {
const defaultStationConfig = { const defaultStationConfig = {
titleImage: defaultTitleImage, titleImage: defaultTitleImage,
// 默认站名(环境变量 VUE_APP_TITLE 是"智能巡检",与需求不符,故直接写死) // 默认站名(环境变量 VUE_APP_TITLE 是"智能巡检",与需求不符,故直接写死)
name: "消防动环管理平台",
name: "动环智能巡检系统",
}; };
export function getStationConfig() { export function getStationConfig() {


+ 74
- 16
src/views/portal/index.vue View File

@ -131,9 +131,9 @@
:class="{ selected: isMonitorStationSelected(station.id) }" :class="{ selected: isMonitorStationSelected(station.id) }"
@click="selectMonitorStation(station)" @click="selectMonitorStation(station)"
> >
<div class="station-head" title="进入场站系统" @click.stop="enterStation(station)">
<span class="station-name" :title="station.name">{{ station.name }}</span>
<img class="enter-icon" :src="enterIcon" alt="">
<div class="station-head">
<span class="station-name" :title="station.name" @click.stop="enterStation(station)">{{ station.name }}</span>
<img class="enter-icon" :src="enterIcon" alt="" title="进入场站系统" @click.stop="enterStation(station)">
<span class="head-spacer" /> <span class="head-spacer" />
<span class="status-dot" :class="station.status === 'abnormal' ? 'abnormal' : 'normal'" /> <span class="status-dot" :class="station.status === 'abnormal' ? 'abnormal' : 'normal'" />
<span class="station-status" :class="station.status === 'abnormal' ? 'abnormal' : 'normal'"> <span class="station-status" :class="station.status === 'abnormal' ? 'abnormal' : 'normal'">
@ -160,6 +160,8 @@
<div class="panel-title"> <div class="panel-title">
<img class="title-icon" :src="triangleIcon" alt=""> <img class="title-icon" :src="triangleIcon" alt="">
<span>动环监控</span> <span>动环监控</span>
</div>
<div class="video-filter-row">
<el-select <el-select
v-model="videoStationIds" v-model="videoStationIds"
class="panel-select" class="panel-select"
@ -382,8 +384,7 @@ export default {
treeCollapseIcon, treeCollapseIcon,
navItems: [ navItems: [
{ key: "home", label: "首页" }, { key: "home", label: "首页" },
{ key: "patrol", label: "动环巡检" },
{ key: "system", label: "系统管理" }
{ key: "patrol", label: "动环巡检" }
], ],
stationButtons: STATION_BUTTONS, stationButtons: STATION_BUTTONS,
defectSlides: DEFECT_SLIDES, defectSlides: DEFECT_SLIDES,
@ -461,8 +462,9 @@ export default {
trendQueryKey() { trendQueryKey() {
this.loadDefectTrend(); this.loadDefectTrend();
}, },
videoStationIds() {
videoStationIds(ids) {
this.replacePortalVideos(this.filteredVideos); this.replacePortalVideos(this.filteredVideos);
if (ids && ids.length) this.openDeviceTree();
} }
}, },
mounted() { mounted() {
@ -476,6 +478,11 @@ export default {
methods: { methods: {
selectMonitorStation(station) { selectMonitorStation(station) {
this.videoStationIds = [station.id]; this.videoStationIds = [station.id];
this.openDeviceTree();
},
openDeviceTree() {
this.treeMounted = true;
this.treeVisible = true;
}, },
isMonitorStationSelected(stationId) { isMonitorStationSelected(stationId) {
return this.videoStationIds.some(id => String(id) === String(stationId)); return this.videoStationIds.some(id => String(id) === String(stationId));
@ -858,8 +865,11 @@ export default {
: `${month}`; : `${month}`;
}, },
toggleDeviceTree() { toggleDeviceTree() {
this.treeMounted = true;
this.treeVisible = !this.treeVisible;
if (this.treeVisible) {
this.treeVisible = false;
return;
}
this.openDeviceTree();
}, },
defectValue(card, slide) { defectValue(card, slide) {
const field = slide.fields.find(key => card[key] !== undefined && card[key] !== null); const field = slide.fields.find(key => card[key] !== undefined && card[key] !== null);
@ -1407,11 +1417,6 @@ $panel-border: rgba(84, 130, 255, 0.22);
align-items: center; align-items: center;
gap: 7px; gap: 7px;
min-width: 0; min-width: 0;
cursor: pointer;
&:hover .station-name {
color: $accent;
}
.station-name { .station-name {
min-width: 0; min-width: 0;
@ -1421,7 +1426,12 @@ $panel-border: rgba(84, 130, 255, 0.22);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: #eef7ff; color: #eef7ff;
cursor: pointer;
transition: color 0.2s; transition: color 0.2s;
&:hover {
color: $accent;
}
} }
.enter-icon { .enter-icon {
@ -1429,10 +1439,17 @@ $panel-border: rgba(84, 130, 255, 0.22);
width: 15px; width: 15px;
height: 14px; height: 14px;
object-fit: contain; object-fit: contain;
cursor: pointer;
} }
.head-spacer { .head-spacer {
flex: 1 1 auto; flex: 1 1 auto;
cursor: default;
}
.status-dot,
.station-status {
cursor: default;
} }
.station-status { .station-status {
@ -1512,6 +1529,24 @@ $panel-border: rgba(84, 130, 255, 0.22);
flex: 1; flex: 1;
} }
/* 场站筛选与左侧「表计/外观/红外巡检」分类名同一行、同一高度 */
.video-filter-row {
display: flex;
align-items: center;
justify-content: flex-end;
flex: none;
height: 16px;
margin: 6px 14px 4px;
padding: 0;
.panel-select {
position: relative;
top: -6px;
width: 132px;
height: 16px;
}
}
.video-monitor-body { .video-monitor-body {
display: flex; display: flex;
flex: 1; flex: 1;
@ -1527,13 +1562,15 @@ $panel-border: rgba(84, 130, 255, 0.22);
} }
.portal-device-tree { .portal-device-tree {
align-self: flex-start;
flex: 0 0 46%; flex: 0 0 46%;
width: 46%; width: 46%;
height: calc(100% + 1px);
min-width: 280px; min-width: 280px;
max-width: 360px; max-width: 360px;
min-height: 0; min-height: 0;
padding: 0; padding: 0;
margin: 10px 0 14px;
margin: -1px 0 14px;
overflow: hidden; overflow: hidden;
background: transparent !important; background: transparent !important;
@ -1631,12 +1668,33 @@ $panel-border: rgba(84, 130, 255, 0.22);
} }
} }
:deep(.video-filter-row .panel-select.el-select) {
height: 16px;
.el-input {
height: 16px;
line-height: 16px;
}
.el-input.el-input--mini .el-input__inner,
.el-input .el-input__inner {
height: 16px !important;
line-height: 14px !important;
}
.el-input__suffix,
.el-input__icon {
height: 16px;
line-height: 16px;
}
}
.camera-stats { .camera-stats {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
gap: 12px; gap: 12px;
flex: none; flex: none;
padding: 10px 14px 12px;
padding: 0 14px 12px;
} }
.video-monitor-body.tree-visible { .video-monitor-body.tree-visible {
@ -1913,7 +1971,7 @@ $panel-border: rgba(84, 130, 255, 0.22);
} }
.el-input__inner { .el-input__inner {
height: 28px !important;
height: 25px !important;
line-height: 26px !important; line-height: 26px !important;
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;


Loading…
Cancel
Save