Browse Source

按照要求优化界面

master
douyage 4 weeks ago
parent
commit
f9fa9bd000
14 changed files with 296 additions and 107 deletions
  1. BIN
      src/assets/images/dialog-title-icon.png
  2. +120
    -13
      src/assets/styles/ruoyi.scss
  3. +11
    -11
      src/components/TopNav/index.vue
  4. +2
    -1
      src/layout/index.vue
  5. +12
    -8
      src/views/cards/assets/styles/index.scss
  6. +4
    -1
      src/views/cards/patrolPlan/notstart.vue
  7. +2
    -5
      src/views/cards/patrolReport/InspectionReporter.vue
  8. +4
    -4
      src/views/cards/site_management/components/chooseAlg.vue
  9. +113
    -33
      src/views/cards/site_management/site_management.vue
  10. +2
    -18
      src/views/cards/taskSummary/inspectionTask.vue
  11. +8
    -2
      src/views/cards/taskSummary/newInspectionTaskDetail.vue
  12. +2
    -1
      src/views/video/HistoryPlayback.vue
  13. +4
    -4
      src/views/video/LivePreview.vue
  14. +12
    -6
      src/views/video/components/NvrDeviceTree.vue

BIN
src/assets/images/dialog-title-icon.png View File

Before After
Width: 18  |  Height: 13  |  Size: 542 B

+ 120
- 13
src/assets/styles/ruoyi.scss View File

@ -93,6 +93,7 @@
background: transparent;
border: 1px solid transparent;
border-bottom: none;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-size: 14px;
&::before,
@ -107,10 +108,11 @@
word-break: break-word;
background-color: #012773 !important;
color: #ffffff !important;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-size: 16px !important;
letter-spacing: 0 !important;
line-height: 16px !important;
font-weight: 600 !important;
font-weight: 700 !important;
}
}
@ -208,6 +210,15 @@ table thead th {
font-weight: inherit !important;
}
// Keep every Element table on the same PingFang typography and bold header.
.el-table th.el-table__cell,
.el-table th.el-table__cell > .cell,
.el-table .el-table__fixed-header-wrapper th.el-table__cell,
.el-table .el-table__fixed-header-wrapper th.el-table__cell > .cell {
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-weight: 700 !important;
}
// Unified body-cell typography for every Element table.
.el-table tbody td.el-table__cell,
.el-table .el-table__fixed-body-wrapper td.el-table__cell {
@ -681,30 +692,64 @@ table tbody tr > td {
.el-dialog {
overflow: hidden;
color: #dcecff;
background-color: #0F124A !important;
border: 1px solid #0B2567;
background-color: #0b205b !important;
border: 1px solid #3f7fd8;
border-radius: 2px;
box-shadow: 0 0 18px rgba(0, 0, 0, 0.45);
}
.el-dialog__header,
.el-dialog__header {
height: 32px;
box-sizing: border-box;
padding: 5px 48px 4px 20px;
line-height: 22px;
background: linear-gradient(180deg, #1c4695 0%, #102b70 100%) !important;
border-bottom: 1px solid #3f7fd8;
}
.el-dialog__body,
.el-dialog__footer {
color: #dcecff;
background-color: #0F124A !important;
}
.el-dialog__header {
border-bottom: 1px solid #0B2567;
background-color: #0b205b !important;
}
.el-dialog__footer {
border-top: 1px solid #0B2567;
border-top: 1px solid #234d9c;
}
.el-dialog__title,
.el-dialog__headerbtn .el-dialog__close {
color: #ffffff;
color: #54ffff;
}
.el-dialog__title {
display: inline-flex;
align-items: center;
gap: 7px;
line-height: 22px;
font-size: 16px;
font-weight: 700;
}
.el-dialog__headerbtn {
top: 5px;
right: 14px;
width: 22px;
height: 22px;
line-height: 22px;
}
.el-dialog__title::before {
content: "";
display: inline-block;
width: 18px;
height: 13px;
flex: 0 0 18px;
background: url("~@/assets/images/dialog-title-icon.png") center / contain no-repeat;
}
.el-dialog__headerbtn .el-dialog__close:hover {
color: #8fffff;
}
.v-modal {
@ -721,8 +766,8 @@ table tbody tr > td {
.el-autocomplete-suggestion,
.el-tooltip__popper.is-dark {
color: #dcecff;
background-color: #0F124A !important;
border-color: #0B2567 !important;
background-color: #0b205b !important;
border-color: #3f7fd8 !important;
}
.el-message-box__title,
@ -737,6 +782,47 @@ table tbody tr > td {
color: #dcecff;
}
.el-message-box__title {
display: flex;
align-items: center;
gap: 7px;
color: #54ffff;
}
.el-message-box__header {
height: 32px;
box-sizing: border-box;
padding: 5px 48px 4px 20px;
line-height: 22px;
background: linear-gradient(180deg, #1c4695 0%, #102b70 100%);
border-bottom: 1px solid #3f7fd8;
}
.el-message-box__headerbtn .el-message-box__close {
color: #54ffff;
}
.el-message-box__headerbtn {
top: 5px;
right: 14px;
width: 22px;
height: 22px;
line-height: 22px;
}
.el-message-box__headerbtn .el-message-box__close:hover {
color: #8fffff;
}
.el-message-box__title::before {
content: "";
display: inline-block;
width: 18px;
height: 13px;
flex: 0 0 18px;
background: url("~@/assets/images/dialog-title-icon.png") center / contain no-repeat;
}
.el-dropdown-menu__item:hover,
.el-dropdown-menu__item:focus,
.el-select-dropdown__item.hover,
@ -1122,6 +1208,27 @@ body .task-toolbar-btn:not(:has(.el-icon-search)) {
color: #43c0ff !important;
}
/* Table operation buttons use the same treatment as the reset button. */
body .el-table .el-button {
border: 1px solid transparent !important;
background: linear-gradient(#01016b, #01016b) padding-box,
linear-gradient(135deg, #3988ff, #0351c6) border-box !important;
background-image: linear-gradient(#01016b, #01016b) padding-box,
linear-gradient(135deg, #3988ff, #0351c6) border-box !important;
color: #43c0ff !important;
}
body .el-table .el-button:hover,
body .el-table .el-button:focus,
body .el-table .el-button:active {
border: 1px solid transparent !important;
background: linear-gradient(#01016b, #01016b) padding-box,
linear-gradient(135deg, #3988ff, #0351c6) border-box !important;
background-image: linear-gradient(#01016b, #01016b) padding-box,
linear-gradient(135deg, #3988ff, #0351c6) border-box !important;
color: #43c0ff !important;
}
body .el-button.el-button--primary:not(:has(.el-icon-search)):hover,
body .el-button.el-button--primary:not(:has(.el-icon-search)):focus,
body .el-button.el-button--primary:not(:has(.el-icon-search)):active,


+ 11
- 11
src/components/TopNav/index.vue View File

@ -102,7 +102,7 @@ export default {
}
} else if(!this.$route.children) {
activePath = path;
this.$store.dispatch('app/toggleSideBarHide', true);
this.$store.dispatch('app/toggleSideBarHide', false);
}
this.activeRoutes(activePath);
return activePath;
@ -139,7 +139,7 @@ export default {
} else {
this.$router.push({ path: key });
}
this.$store.dispatch('app/toggleSideBarHide', true);
this.$store.dispatch('app/toggleSideBarHide', false);
} else {
//
this.activeRoutes(key);
@ -168,19 +168,19 @@ export default {
<style lang="scss">
.topmenu-container.el-menu--horizontal {
height: 68px !important;
height: 36px !important;
border-bottom: 0 !important;
background: transparent !important;
}
.topmenu-container.el-menu--horizontal > .el-menu-item {
float: left;
height: 68px !important;
line-height: 68px !important;
height: 36px !important;
line-height: 36px !important;
color: #54FFFF !important;
background: transparent !important;
padding: 0 5px !important;
margin: 0 10px !important;
padding: 0 12px !important;
margin: 0 2px !important;
}
.topmenu-container.el-menu--horizontal > .el-menu-item.is-active, .el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
@ -191,11 +191,11 @@ export default {
/* submenu item */
.topmenu-container.el-menu--horizontal > .el-submenu .el-submenu__title {
float: left;
height: 68px !important;
line-height: 68px !important;
height: 36px !important;
line-height: 36px !important;
color: #54FFFF !important;
background: transparent !important;
padding: 0 5px !important;
margin: 0 10px !important;
padding: 0 12px !important;
margin: 0 2px !important;
}
</style>

+ 2
- 1
src/layout/index.vue View File

@ -1,7 +1,8 @@
<template>
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}">
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
<sidebar v-if="!sidebar.hide" class="sidebar-container"/>
<!-- Desktop keeps the vertical navigation visible alongside the new horizontal bar. -->
<sidebar v-if="device !== 'mobile' || sidebar.opened" class="sidebar-container"/>
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
<div class="layout-header" :class="{'fixed-header':fixedHeader}">
<navbar v-if="!isPatrolWorkspace"/>


+ 12
- 8
src/views/cards/assets/styles/index.scss View File

@ -464,20 +464,24 @@
.card-dialog {
.el-dialog__header {
background-color: #222F3D;
color: #fff;
border-bottom: #40486a 1px solid;
height: 63px;
padding: 17px 24px;
background: linear-gradient(180deg, #1c4695 0%, #102b70 100%) !important;
color: #54ffff;
border-bottom: #3f7fd8 1px solid;
height: 32px;
box-sizing: border-box;
padding: 5px 48px 4px 24px;
line-height: 22px;
.el-dialog__headerbtn .el-dialog__close {
color: #fff;
color: #54ffff;
}
.el-dialog__title {
color: #fff;
font-size: 20px;
color: #54ffff;
font-size: 16px;
font-weight: 700;
line-height: 22px;
}
}


+ 4
- 1
src/views/cards/patrolPlan/notstart.vue View File

@ -740,7 +740,10 @@ export default {
width: 1848px;
}
.el-dialog__header {
background-color: #222f3d !important;
height: 32px !important;
padding: 5px 48px 4px 20px !important;
line-height: 22px !important;
background: linear-gradient(180deg, #1c4695 0%, #102b70 100%) !important;
}
.el-dialog__body {
background-color: #222f3d !important;


+ 2
- 5
src/views/cards/patrolReport/InspectionReporter.vue View File

@ -480,8 +480,7 @@ export default {
display: none;
}
.task-toolbar-btn,
.card-page ::v-deep .el-table .el-button--primary {
.task-toolbar-btn {
border: 1px solid transparent !important;
background: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;
background-image: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;
@ -489,9 +488,7 @@ export default {
}
.task-toolbar-btn:hover,
.task-toolbar-btn:focus,
.card-page ::v-deep .el-table .el-button--primary:hover,
.card-page ::v-deep .el-table .el-button--primary:focus {
.task-toolbar-btn:focus {
border-color: transparent !important;
color: #43c0ff !important;
opacity: 0.9;


+ 4
- 4
src/views/cards/site_management/components/chooseAlg.vue View File

@ -689,7 +689,7 @@ export default {
<style scoped>
.algorithm-dialog {
background-color: #1a2a3a !important;
background-color: #0b205b !important;
}
.algorithm-dialog ::v-deep .el-dialog__title {
@ -701,17 +701,17 @@ export default {
}
.algorithm-dialog ::v-deep .el-dialog__body {
background-color: #1a2a3a;
background-color: #0b205b;
color: #ffffff;
}
.algorithm-dialog ::v-deep .el-dialog__footer {
border-top: 1px solid #2a3a4a;
background-color: #1a2a3a;
background-color: #0b205b;
}
.filter-form {
background-color: #1a2a3a;
background-color: transparent;
padding: 10px;
}


+ 113
- 33
src/views/cards/site_management/site_management.vue View File

@ -3,7 +3,7 @@
class="card-page page-content"
:showTitle="false"
>
<div class="sec-left app-container card-page" style="height: 100%">
<div class="sec-left point-layout app-container card-page" style="height: 100%">
<!-- 左侧可拖拽区域 - 只影响左侧树 -->
<div class="resize-container" :style="{ width: leftPanelWidth + 'px' }">
<div class="sec-line">
@ -64,7 +64,7 @@
<!-- 中间内容区域 - 保持原有结构不受拖拽影响 -->
<div
class="wid"
:style="{ left: leftPanelWidth + 8 + 'px' }"
:style="{ left: leftPanelWidth + 10 + 'px' }"
>
<div class="form" style="padding-top: 10px" ref="form">
<div class="line">
@ -3626,6 +3626,13 @@ export default {
overflow: hidden;
}
.point-layout {
display: block;
position: relative;
padding: 10px;
box-sizing: border-box;
}
/* 左侧面板容器 - 独立宽度控制 */
.resize-container {
height: 100%;
@ -3635,10 +3642,18 @@ export default {
flex-shrink: 0;
}
.point-layout > .resize-container {
height: 100%;
box-sizing: border-box;
}
/* 左侧内容区域 */
.sec-line {
width: 100%;
height: 100%;
top: 0;
bottom: 0;
margin-top: 0;
padding: 0 10px 10px;
box-sizing: border-box;
overflow: hidden;
@ -3646,6 +3661,9 @@ export default {
flex-direction: column;
position: relative;
padding-right: 14px;
background: transparent;
border: 1px solid rgba(63, 127, 216, 0.72);
border-radius: 2px;
}
.sec-a2 {
@ -3653,50 +3671,69 @@ export default {
min-height: 0;
position: relative;
box-sizing: border-box;
padding-right: 10px;
padding-right: 0;
overflow-y: auto;
overflow-x: hidden;
scrollbar-width: none;
-ms-overflow-style: none;
overflow-x: auto;
background: transparent !important;
scrollbar-width: thin;
scrollbar-color: #2f7fe8 rgba(6, 27, 79, 0.7);
&::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
width: 8px;
height: 8px;
}
&::-webkit-scrollbar-track {
background: rgba(6, 27, 79, 0.7);
}
&::-webkit-scrollbar-thumb {
background: #2f7fe8;
border-radius: 4px;
border: 1px solid #0d327d;
}
&::-webkit-scrollbar-thumb:hover {
background: #54a5ff;
}
::v-deep .el-tree {
width: 100%;
min-width: 0;
background-color: transparent;
display: inline-block;
width: max-content;
min-width: 100%;
background-color: transparent !important;
color: #e0e0e0;
}
::v-deep .el-tree-node__content {
background-color: transparent;
width: 100%;
min-width: 0;
height: 24px;
line-height: 24px;
background-color: transparent !important;
color: #e0e0e0;
font-size: 14px;
&:hover {
background-color: #1e3a4a;
background: #0c225c !important;
}
}
::v-deep .el-tree-node.is-current > .el-tree-node__content {
background-color: #274a58;
background: linear-gradient(180deg, #174d99 0%, #0c225c 50%, #174d99 100%) !important;
}
::v-deep .custom-tree-node {
min-width: 100%;
min-width: 0;
width: max-content;
display: flex;
align-items: center;
width: 100%;
padding-right: 8px;
}
::v-deep .child-count {
color: #909399;
font-size: 12px;
font-size: 14px;
flex-shrink: 0;
margin-left: 4px;
white-space: nowrap;
@ -3744,10 +3781,10 @@ export default {
bottom: 10px;
height: auto;
background-color: #102b50;
border-right: 1px solid #3988ff;
// border-right: 1px solid #3988ff;
border-left: 1px solid rgba(57, 136, 255, 0.45);
cursor: col-resize;
display: flex;
display: none;
flex-direction: column;
align-items: center;
justify-content: center;
@ -3820,6 +3857,18 @@ export default {
height: 100%;
z-index: 1;
box-sizing: border-box;
border: 1px solid rgba(63, 127, 216, 0.72);
background: rgba(8, 30, 86, 0.72);
}
.point-layout > .wid {
right: 10px;
margin-left: 10px;
width: auto;
top: 10px;
bottom: 10px;
height: auto;
min-width: 0;
}
.form {
@ -3831,6 +3880,7 @@ export default {
display: flex;
flex-direction: column;
min-width: 0;
padding-top: 0 !important;
}
.line {
@ -3866,6 +3916,7 @@ export default {
/* 添加重置按钮样式 */
.reset-width-btn {
display: none;
position: absolute;
bottom: 10px;
right: 10px;
@ -3873,7 +3924,6 @@ export default {
height: 24px;
background-color: #1e3a4a;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
@ -3991,22 +4041,34 @@ export default {
width: 100%;
border-radius: 4px;
overflow: hidden;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
::v-deep .el-table__header th {
background-color: #012773 !important;
color: #ffffff !important;
border-bottom: 2px solid #0b374e !important;
font-weight: bold;
font-weight: 600 !important;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
}
::v-deep .el-table__row td {
background-color: #0a1a2a !important;
color: #e0e0e0 !important;
border-bottom: 1px solid #1e3a4a !important;
background-color: #E0EAFF !important;
color: #000000 !important;
border-bottom: 1px solid #acb5e3 !important;
font-weight: 400 !important;
}
::v-deep .el-table__row--striped td {
background-color: #EBF1FF !important;
}
::v-deep .el-table__row td .cell {
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-weight: 400 !important;
}
::v-deep .el-table__row:hover td {
background-color: #1a2a3a !important;
background-color: #d6e4ff !important;
}
::v-deep .el-button--text {
@ -4087,6 +4149,7 @@ export default {
.card-page ::v-deep .el-table,
.card-page ::v-deep .card-table {
width: 100% !important;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
background: transparent !important;
color: #000000;
border-color: transparent !important;
@ -4101,7 +4164,9 @@ export default {
.card-page ::v-deep .el-table__header-wrapper,
.card-page ::v-deep .el-table__fixed-header-wrapper {
background: #dbe7fb !important;
background: #012773 !important;
border: 0 !important;
box-sizing: border-box;
}
.card-page ::v-deep .el-table__body-wrapper,
@ -4112,7 +4177,12 @@ export default {
.card-page ::v-deep .el-table th.el-table__cell {
background: #012773 !important;
border-color: rgba(64, 146, 255, 0.95) !important;
border-top: 0 !important;
border-bottom: 0 !important;
border-left: 0 !important;
border-right: 1px solid #acb5e3 !important;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-weight: 700 !important;
color: #ffffff !important;
}
@ -4120,6 +4190,15 @@ export default {
color: #ffffff !important;
}
.card-page ::v-deep .el-table__header-wrapper th.el-table__cell:last-child,
.card-page ::v-deep .el-table__fixed-header-wrapper th.el-table__cell:last-child {
border-right: 0 !important;
}
.card-page ::v-deep .el-table__resize-proxy {
border-left: 2px solid #acb5e3 !important;
}
.card-page ::v-deep .el-table td.el-table__cell {
background: transparent !important;
border-bottom: 1px solid #c7d7f4 !important;
@ -4129,23 +4208,24 @@ export default {
.card-page ::v-deep .el-table td.el-table__cell .cell {
color: #000000 !important;
font-weight: 500;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-weight: 400 !important;
}
.card-page ::v-deep .el-table__row {
background: #e4edfc !important;
background: #E0EAFF !important;
}
.card-page ::v-deep .el-table__body tbody tr:nth-child(odd) td.el-table__cell {
background: #e4edfc !important;
background: #E0EAFF !important;
}
.card-page ::v-deep .el-table__body tbody tr:nth-child(even) td.el-table__cell {
background: #d7e4f8 !important;
background: #EBF1FF !important;
}
.card-page ::v-deep .el-table__row--striped td.el-table__cell {
background: #d7e4f8 !important;
background: #EBF1FF !important;
}
.card-page ::v-deep .custom-table.el-table,


+ 2
- 18
src/views/cards/taskSummary/inspectionTask.vue View File

@ -1244,21 +1244,7 @@ export default {
opacity: 1 !important;
}
.card-page ::v-deep .el-table .el-button--primary {
background: #1f8fff !important;
border-color: #1f8fff !important;
color: #ffffff !important;
}
.card-page ::v-deep .el-table .el-button--primary:hover,
.card-page ::v-deep .el-table .el-button--primary:focus {
background: #006dff !important;
border-color: #006dff !important;
color: #ffffff !important;
}
.task-toolbar-btn,
.card-page ::v-deep .el-table .task-row-btn {
.task-toolbar-btn {
border: 1px solid transparent !important;
background: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;
background-image: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;
@ -1266,9 +1252,7 @@ export default {
}
.task-toolbar-btn:hover,
.task-toolbar-btn:focus,
.card-page ::v-deep .el-table .task-row-btn:hover,
.card-page ::v-deep .el-table .task-row-btn:focus {
.task-toolbar-btn:focus {
border: 1px solid transparent !important;
background: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;
background-image: linear-gradient(180deg, #397bff 0%, #0c0c8a 100%) !important;


+ 8
- 2
src/views/cards/taskSummary/newInspectionTaskDetail.vue View File

@ -260,8 +260,9 @@
<el-table-column
label="序号"
type="index"
width="50"
width="64"
align="center"
class-name="task-detail-index-column"
:index="getIndex"
/>
<!-- 点位名称列 -->
@ -1092,6 +1093,11 @@ export default {
linear-gradient(135deg, #3988ff, #0351c6) border-box !important;
color: #43c0ff !important;
}
::v-deep .task-detail-index-column .cell {
white-space: nowrap !important;
word-break: keep-all;
}
</style>
<!-- 全局样式用于 el-autocomplete 下拉菜单 -->
@ -1104,7 +1110,7 @@ export default {
overflow: hidden;
.el-dialog__header {
flex: 0 0 63px;
flex: 0 0 32px;
}
.el-dialog__body {


+ 2
- 1
src/views/video/HistoryPlayback.vue View File

@ -362,7 +362,8 @@ export default {
<style lang="scss" scoped>
.playback-console { height: 100%; min-height: 0; display: flex; flex-direction: column; color: #dcecff; background: #0b1248; }
.playback-body { flex: 1; min-height: 0; display: flex; }.playback-workspace { flex: 1; min-width: 0; min-height: 0; padding: 10px 14px; display: flex; flex-direction: column; gap: 9px; }
.playback-body { flex: 1; min-height: 0; display: flex; gap: 10px; }
.playback-workspace { flex: 1; min-width: 0; min-height: 0; padding: 10px 14px; display: flex; flex-direction: column; gap: 9px; border: 1px solid rgba(63,127,216,.72); border-radius: 2px; background: transparent; box-sizing: border-box; }
.query-bar { min-height: 58px; display: flex; align-items: flex-end; gap: 9px; padding: 7px 10px; border: 1px solid rgba(42,133,230,.38); background: rgba(7,30,84,.68); }.query-bar label { display: flex; flex-direction: column; gap: 5px; color: #7fa8d1; font-size: 11px; }.query-bar em { height: 29px; line-height: 29px; color: #6c97c2; font-style: normal; }.query-actions { margin-left: auto; display: flex; gap: 6px; }.query-actions button { height: 30px; padding: 0 11px; border: 1px solid rgba(50,147,244,.52); color: #a9d3ff; background: #0a2b67; cursor: pointer; }.query-actions button.primary { color: #fff; background: #176bc2; }.query-actions button i { margin-right: 5px; }.query-actions button:disabled { opacity: .55; cursor: not-allowed; }
::v-deep .query-bar .el-date-editor { width: 126px; }.query-bar label:first-child ::v-deep .el-date-editor { width: 140px; }::v-deep .query-bar .el-input__inner { height: 29px; padding: 0 28px 0 30px; line-height: 29px; }
.video-stage { position: relative; flex: 1; min-height: 260px; overflow: hidden; border: 1px solid #176bc2; background: #03081d; }.video-stage video { width: 100%; height: 100%; display: block; object-fit: contain; }.stage-head { position: absolute; z-index: 2; top: 0; left: 0; right: 0; height: 34px; padding: 0 10px; display: flex; align-items: center; gap: 12px; color: #c9e3ff; background: linear-gradient(180deg,rgba(2,9,31,.94),transparent); font-size: 11px; }.stage-head span { display: flex; align-items: center; gap: 6px; }.stage-head span i { width: 7px; height: 7px; border-radius: 50%; background: #d09231; }.stage-head span i.playing { background: #25dfa2; box-shadow: 0 0 8px #25dfa2; }.stage-head small { color: #7da8d4; }.stage-head em { margin-left: auto; color: #5e8dbb; font-style: normal; }.stage-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; color: #6d9bc8; background: radial-gradient(circle at center,rgba(10,45,96,.65),rgba(3,8,29,.92)); }.stage-overlay i { font-size: 36px; }.stage-overlay strong { color: #b9d8f7; font-size: 14px; }.stage-overlay span { font-size: 11px; }.stage-clock { position: absolute; right: 10px; bottom: 8px; color: #a7caec; font-family: Consolas,monospace; font-size: 12px; }


+ 4
- 4
src/views/video/LivePreview.vue View File

@ -498,17 +498,17 @@ export default {
<style lang="scss" scoped>
.video-console { height: 100%; min-height: 0; display: flex; flex-direction: column; color: #dcecff; background: #0b1248; }
.console-body { flex: 1; min-height: 0; display: flex; }
.monitor-workspace { flex: 1; min-width: 0; display: flex; flex-direction: column; padding: 10px; }
.console-body { flex: 1; min-height: 0; display: flex; gap: 10px; }
.monitor-workspace { flex: 1; min-width: 0; height: 100%; display: flex; flex-direction: column; padding: 10px; border: 1px solid rgba(63,127,216,.72); border-radius: 2px; box-sizing: border-box; }
.monitor-head { height: 32px; display: flex; align-items: center; justify-content: space-between; color: #cfe5ff; }.monitor-head small { color: #648fbc; }
.camera-grid { flex: 1; min-height: 0; display: grid; gap: 3px; background: rgba(14, 75, 146, .5); border: 1px solid #176bc2; }
.camera-card { position: relative; min-width: 0; min-height: 0; overflow: hidden; border: 1px solid transparent; background: #050b24; cursor: pointer; }.camera-card.active { border-color: #54ffff; box-shadow: inset 0 0 0 1px rgba(84,255,255,.35); }
.camera-label { position: absolute; left: 0; right: 0; top: 0; height: 28px; padding: 0 8px; display: flex; align-items: center; justify-content: space-between; color: #d8eaff; background: linear-gradient(180deg, rgba(0,10,36,.92), transparent); font-size: 11px; pointer-events: none; }.camera-label i { display: inline-block; width: 6px; height: 6px; margin-right: 5px; border-radius: 50%; background: #24e39f; box-shadow: 0 0 6px #24e39f; }
.camera-actions { position: absolute; right: 5px; bottom: 5px; display: none; gap: 3px; }.camera-card:hover .camera-actions { display: flex; }.camera-actions button { width: 26px; height: 25px; border: 1px solid rgba(66, 167, 255, .55); color: #bfe0ff; background: rgba(4,28,78,.88); cursor: pointer; }
.empty-slot { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #466f9c; background: radial-gradient(circle at center, #0b2a61, #050b24 70%); }.empty-slot i { font-size: 28px; }.empty-slot span { font-size: 11px; }
.control-panel { width: 242px; min-width: 242px; padding: 10px; overflow-y: auto; border-left: 1px solid rgba(41, 139, 255, .45); background: rgba(7, 24, 78, .82); }
.control-panel { width: 242px; min-width: 242px; height: 100%; align-self: stretch; margin: 0; padding: 10px; overflow-y: auto; border: 1px solid rgba(63,127,216,.72); border-radius: 2px; background: rgba(7, 24, 78, .82); box-sizing: border-box; }
.control-section { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid rgba(39, 128, 220, .28); }.section-title { height: 30px; display: flex; align-items: center; justify-content: space-between; color: #54ffff; }.section-title small { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #719bc8; }.section-title button { border: 0; color: #75bfff; background: transparent; cursor: pointer; }
.ptz-grid { width: 168px; margin: 6px auto 12px; display: grid; grid-template-columns: repeat(3, 50px); gap: 9px; }.ptz-grid button { width: 50px; height: 50px; border: 1px solid #b9d5fb; border-radius: 7px; color: #2874da; background: #e8f2ff; box-shadow: inset 0 0 0 1px rgba(255,255,255,.7); cursor: pointer; transition: color .15s, background .15s, transform .15s; }.ptz-grid button i { font-size: 18px; font-weight: 700; }.ptz-grid button:hover { color: #075cc6; background: #f6faff; }.ptz-grid button:active { color: #fff; background: #1670ca; transform: scale(.96); }
.ptz-grid { width: 168px; margin: 6px auto 12px; display: grid; grid-template-columns: repeat(3, 50px); gap: 9px; }.ptz-grid button { width: 50px; height: 50px; border: 1px solid #3988ff; border-radius: 7px; color: #43c0ff; background: #01016b; box-shadow: none; cursor: pointer; transition: color .15s, background .15s, transform .15s; }.ptz-grid button i { font-size: 18px; font-weight: 700; }.ptz-grid button:hover { color: #43c0ff; background: #01016b; }.ptz-grid button:active { color: #ffffff; background: #01016b; transform: scale(.96); }
.speed-row { display: grid; grid-template-columns: 34px minmax(0, 1fr) 48px; align-items: center; gap: 7px; color: #8eb7df; font-size: 12px; }.speed-row > input[type="range"] { min-width: 0; height: 8px; box-sizing: border-box; margin: 0; appearance: none; border: 1px solid #2787ed; border-radius: 4px; outline: none; cursor: pointer; }.speed-row > input[type="range"]::-webkit-slider-runnable-track { height: 6px; border: 0; border-radius: 3px; background: transparent; }.speed-row > input[type="range"]::-webkit-slider-thumb { width: 14px; height: 14px; margin-top: -4px; appearance: none; border: 0; border-radius: 50%; background: #2787ed; }.speed-row > input[type="range"]::-moz-range-track { height: 6px; border: 0; border-radius: 3px; background: transparent; }.speed-row > input[type="range"]::-moz-range-progress { background: transparent; }.speed-row > input[type="range"]::-moz-range-thumb { width: 14px; height: 14px; border: 0; border-radius: 50%; background: #2787ed; }.speed-input { width: 48px; }
.preset-quick-actions { display: flex; align-items: center; gap: 7px; margin: 9px 0 0 1px; }.preset-quick-actions button { display: grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 1px solid rgba(48, 151, 248, .5); color: #58bfff; background: transparent; cursor: pointer; }.preset-quick-actions button:hover { background: rgba(31, 126, 222, .25); }.preset-quick-actions img { width: 18px; height: 18px; object-fit: contain; }
.lens-actions { display: flex; align-items: center; justify-content: center; gap: 11px; min-height: 28px; margin: 0 0 10px; }.lens-tool { position: relative; width: 48px; height: 22px; overflow: hidden; }.lens-tool img { display: block; width: 100%; height: 100%; object-fit: fill; }.lens-tool button { position: absolute; top: 0; bottom: 0; width: 50%; padding: 0; border: 0; background: transparent; cursor: pointer; }.lens-tool button:first-of-type { left: 0; }.lens-tool button:last-of-type { right: 0; }.lens-tool button:active { background: rgba(73, 184, 255, .28); }


+ 12
- 6
src/views/video/components/NvrDeviceTree.vue View File

@ -145,7 +145,7 @@ export default {
</script>
<style lang="scss" scoped>
.nvr-tree { width: 280px; min-width: 280px; height: 100%; display: flex; flex-direction: column; border-right: 1px solid rgba(41,139,255,.55); background: transparent; color: #d7e9ff; }
.nvr-tree { width: 280px; min-width: 280px; height: 100%; display: flex; flex-direction: column; border: 1px solid rgba(63,127,216,.72); border-radius: 2px; background: transparent; color: #d7e9ff; box-sizing: border-box; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important; font-weight: 400 !important; }
.tree-title { height: 46px; padding: 0 14px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(41,139,255,.35); color: #54ffff; font-size: 14px; }
.tree-title i { margin-right: 6px; }
.tree-title strong { min-width: 28px; text-align: center; color: #b7d8ff; }
@ -154,14 +154,20 @@ export default {
.tree-filters .el-input { flex: 1; min-width: 0; }
.tree-filters .el-button { flex: 0 0 32px; padding: 0; border-color: #2787ed; color: #54ffff; background: #0a2b67; }
.tree-filters .el-button:hover, .tree-filters .el-button:focus { border-color: #2787ed; color: #ffffff; background: #176bc2; }
.tree-content { flex: 1; min-height: 0; overflow: auto; padding: 0 8px 8px; scrollbar-width: none; -ms-overflow-style: none; }
.tree-content::-webkit-scrollbar { display: none; }
.custom-tree-node { display: flex; align-items: center; width: 100%; gap: 6px; font-size: 14px; }
.node-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tree-content { flex: 1; min-height: 0; overflow-x: auto; overflow-y: auto; padding: 0 8px 8px; scrollbar-width: thin; scrollbar-color: #2f7fe8 rgba(6,27,79,.7); }
.tree-content::-webkit-scrollbar { width: 8px; height: 8px; }
.tree-content::-webkit-scrollbar-track { background: rgba(6,27,79,.7); }
.tree-content::-webkit-scrollbar-thumb { background: #2f7fe8; border: 1px solid #0d327d; border-radius: 4px; }
.custom-tree-node { display: flex; align-items: center; width: max-content; min-width: 100%; gap: 6px; font-size: 14px; white-space: nowrap; }
.node-label { white-space: nowrap; }
.tree-empty { padding: 40px 0; text-align: center; color: #7298c3; }
.tree-empty i { display: block; margin-bottom: 10px; font-size: 28px; }
.tree-tip { padding: 9px 12px; border-top: 1px solid rgba(41,139,255,.3); color: #6f9ecc; font-size: 11px; }
::v-deep .el-tree { background: transparent; color: inherit; font-size: 14px; }
::v-deep .el-tree { display: inline-block; width: max-content; min-width: 100%; background: transparent; color: inherit; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important; font-size: 14px; }
::v-deep .el-tree-node__content,
::v-deep .custom-tree-node,
::v-deep .node-label { font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important; font-weight: 400 !important; }
::v-deep .el-tree-node__content { display: flex; }
::v-deep .el-tree-node__content { height: 34px; }
::v-deep .el-tree-node__content:hover, ::v-deep .el-tree-node:focus > .el-tree-node__content { background: transparent; }
::v-deep .el-tree-node.is-current > .el-tree-node__content { color: #54ffff; background: transparent; }


Loading…
Cancel
Save