|
@@ -70,11 +70,6 @@
|
|
|
|
|
|
|
|
<!-- 高级功能面板 -->
|
|
<!-- 高级功能面板 -->
|
|
|
<div v-show="activeTab === 'advanced'" class="advanced-panel">
|
|
<div v-show="activeTab === 'advanced'" class="advanced-panel">
|
|
|
- <div class="adv-section adv-section-between">
|
|
|
|
|
- <a-checkbox v-model:checked="advancedState.videoFrame" class="adv-check">视频框图</a-checkbox>
|
|
|
|
|
- <a-button class="adv-btn" @click="onAdvancedAction('alarmReport')">告警上报</a-button>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
<div class="adv-section">
|
|
<div class="adv-section">
|
|
|
<a-button class="adv-btn" @click="onAdvancedAction('snapshot')">一键抓拍</a-button>
|
|
<a-button class="adv-btn" @click="onAdvancedAction('snapshot')">一键抓拍</a-button>
|
|
|
<a-button class="adv-btn" @click="onAdvancedAction('viewImages')">查看图片</a-button>
|
|
<a-button class="adv-btn" @click="onAdvancedAction('viewImages')">查看图片</a-button>
|
|
@@ -180,41 +175,6 @@
|
|
|
{{ placeholderText }}
|
|
{{ placeholderText }}
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <!-- 告警上报弹窗 -->
|
|
|
|
|
- <Teleport to="body">
|
|
|
|
|
- <div v-if="alarmReportVisible" :class="['alarm-report-mask', { 'is-minimized': alarmReportMinimized }]" @click.self="closeAlarmReport">
|
|
|
|
|
- <div :class="['alarm-report-panel', { minimized: alarmReportMinimized }]">
|
|
|
|
|
- <div class="alarm-report-header">
|
|
|
|
|
- <span class="alarm-report-title">告警上报</span>
|
|
|
|
|
- <div class="alarm-report-actions">
|
|
|
|
|
- <button type="button" class="alarm-icon-btn" title="最小化" @click="toggleAlarmMinimize">
|
|
|
|
|
- <svg viewBox="0 0 16 16" width="14" height="14">
|
|
|
|
|
- <rect x="3" y="3" width="10" height="10" fill="none" stroke="currentColor" stroke-width="1.4" />
|
|
|
|
|
- <path d="M5 11 H11 M5 11 V8" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" />
|
|
|
|
|
- </svg>
|
|
|
|
|
- </button>
|
|
|
|
|
- <button type="button" class="alarm-icon-btn" title="关闭" @click="closeAlarmReport">
|
|
|
|
|
- <svg viewBox="0 0 16 16" width="14" height="14">
|
|
|
|
|
- <path d="M4 4 L12 12 M12 4 L4 12" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
|
|
|
- </svg>
|
|
|
|
|
- </button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <div v-show="!alarmReportMinimized" class="alarm-report-body">
|
|
|
|
|
- <div v-for="item in alarmReportFieldList" :key="item.key" class="alarm-field">
|
|
|
|
|
- <span class="alarm-field-label">{{ item.label }}</span>
|
|
|
|
|
- <div class="alarm-field-value editable">
|
|
|
|
|
- <a-input v-model:value="alarmForm[item.key]" class="alarm-field-input" :bordered="false" :placeholder="item.placeholder" />
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <a-button class="alarm-submit-btn" @click="submitAlarmReport">上报</a-button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </Teleport>
|
|
|
|
|
-
|
|
|
|
|
<!-- 未选摄像头提示弹窗(风格对齐报警弹窗) -->
|
|
<!-- 未选摄像头提示弹窗(风格对齐报警弹窗) -->
|
|
|
<Teleport to="body">
|
|
<Teleport to="body">
|
|
|
<div v-if="deviceTipVisible" class="device-tip-mask" @click.self="closeDeviceTip">
|
|
<div v-if="deviceTipVisible" class="device-tip-mask" @click.self="closeDeviceTip">
|
|
@@ -569,10 +529,21 @@ import {
|
|
|
presetSet,
|
|
presetSet,
|
|
|
presetDelete,
|
|
presetDelete,
|
|
|
} from '../hsqHome.api';
|
|
} from '../hsqHome.api';
|
|
|
-import type { DeviceNode, DeviceGroup, AlarmFormState, StatsCount, PresetItem, RecordFileItem, AutoAlarmPopupData, PicVideoRecord } from './type';
|
|
|
|
|
|
|
+import type {
|
|
|
|
|
+ DeviceNode,
|
|
|
|
|
+ DeviceGroup,
|
|
|
|
|
+ AlarmFormState,
|
|
|
|
|
+ AngleState,
|
|
|
|
|
+ StatsCount,
|
|
|
|
|
+ PresetItem,
|
|
|
|
|
+ RecordFileItem,
|
|
|
|
|
+ AutoAlarmPopupData,
|
|
|
|
|
+ PicVideoRecord,
|
|
|
|
|
+ PicViewItem,
|
|
|
|
|
+ VideoViewItem,
|
|
|
|
|
+} from './type';
|
|
|
import { tabs, ANGLE_DEFAULT, angleFields, checkTips, alarmReportFieldList, presetToolbarItems, PRESET_EMPTY_ROW_COUNT } from '../hsqHome.data';
|
|
import { tabs, ANGLE_DEFAULT, angleFields, checkTips, alarmReportFieldList, presetToolbarItems, PRESET_EMPTY_ROW_COUNT } from '../hsqHome.data';
|
|
|
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
|
|
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
|
|
|
-
|
|
|
|
|
const props = defineProps<{
|
|
const props = defineProps<{
|
|
|
treeData: DeviceGroup[];
|
|
treeData: DeviceGroup[];
|
|
|
selectedCamera: Ref<DeviceNode | null>;
|
|
selectedCamera: Ref<DeviceNode | null>;
|
|
@@ -583,17 +554,6 @@ const emit = defineEmits<{
|
|
|
(e: 'tabChange', key: string): void;
|
|
(e: 'tabChange', key: string): void;
|
|
|
(e: 'advancedAction', payload: { action: string; state: Record<string, unknown> }): void;
|
|
(e: 'advancedAction', payload: { action: string; state: Record<string, unknown> }): void;
|
|
|
(e: 'angleAction', payload: { action: string; state: AngleState }): void;
|
|
(e: 'angleAction', payload: { action: string; state: AngleState }): void;
|
|
|
- (
|
|
|
|
|
- e: 'alarmReport',
|
|
|
|
|
- payload: {
|
|
|
|
|
- deviceId: string;
|
|
|
|
|
- deviceName: string;
|
|
|
|
|
- longitude: string;
|
|
|
|
|
- latitude: string;
|
|
|
|
|
- operator: string;
|
|
|
|
|
- remark: string;
|
|
|
|
|
- }
|
|
|
|
|
- ): void;
|
|
|
|
|
(e: 'presetAction', key: string): void;
|
|
(e: 'presetAction', key: string): void;
|
|
|
/** 预置位操作列点击放大:放大当前选中摄像头并显示左侧区域选择,preset 为选中预置位编号 */
|
|
/** 预置位操作列点击放大:放大当前选中摄像头并显示左侧区域选择,preset 为选中预置位编号 */
|
|
|
(e: 'regionPreview', preset: number): void;
|
|
(e: 'regionPreview', preset: number): void;
|
|
@@ -615,9 +575,6 @@ const angleInputProps = {
|
|
|
controls: false,
|
|
controls: false,
|
|
|
bordered: false,
|
|
bordered: false,
|
|
|
} as const;
|
|
} as const;
|
|
|
-/** 告警上报弹窗 */
|
|
|
|
|
-const alarmReportVisible = ref(false);
|
|
|
|
|
-const alarmReportMinimized = ref(false);
|
|
|
|
|
/** 未选摄像头提示弹窗 */
|
|
/** 未选摄像头提示弹窗 */
|
|
|
const deviceTipVisible = ref(false);
|
|
const deviceTipVisible = ref(false);
|
|
|
/** 查看图片弹窗 */
|
|
/** 查看图片弹窗 */
|
|
@@ -724,7 +681,6 @@ const alarmForm = reactive<AlarmFormState>({
|
|
|
remark: '',
|
|
remark: '',
|
|
|
});
|
|
});
|
|
|
const advancedState = reactive({
|
|
const advancedState = reactive({
|
|
|
- videoFrame: false,
|
|
|
|
|
alarmPopup: false,
|
|
alarmPopup: false,
|
|
|
fillLight1: false,
|
|
fillLight1: false,
|
|
|
fillLight2: false,
|
|
fillLight2: false,
|
|
@@ -764,21 +720,6 @@ const currentRecordMime = computed(() => {
|
|
|
return item.infraredMime || 'video/mp4';
|
|
return item.infraredMime || 'video/mp4';
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-/** 当前选中设备 */
|
|
|
|
|
-const selectedDevice = computed(() => {
|
|
|
|
|
- for (const group of props.treeData || []) {
|
|
|
|
|
- const found = (group.children || []).find((d) => d.id === selectedId.value);
|
|
|
|
|
- if (found) return found;
|
|
|
|
|
- }
|
|
|
|
|
- return null;
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-/** 操作员:优先登录用户名 */
|
|
|
|
|
-const operatorName = computed(() => {
|
|
|
|
|
- const info = userStore.getUserInfo as any;
|
|
|
|
|
- return info?.username || info?.realname || 'admin';
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
/** 统计在线/离线:优先 netStatus,否则回退示意数据 */
|
|
/** 统计在线/离线:优先 netStatus,否则回退示意数据 */
|
|
|
const statsCount = computed<StatsCount>(() => {
|
|
const statsCount = computed<StatsCount>(() => {
|
|
|
let online = 0;
|
|
let online = 0;
|
|
@@ -877,15 +818,6 @@ function resolveCameraDeviceId(camera: Record<string, any> | null | undefined) {
|
|
|
return String(raw).trim();
|
|
return String(raw).trim();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 优先取 camera 字段,其次 device 字段,统一转字符串 */
|
|
|
|
|
-function pickCameraField(camera: Record<string, any>, device: DeviceNode | null, key: 'id' | 'name' | 'longitude' | 'latitude') {
|
|
|
|
|
- const fromCamera = camera[key];
|
|
|
|
|
- if (fromCamera != null && fromCamera !== '') return String(fromCamera);
|
|
|
|
|
- const fromDevice = device?.[key];
|
|
|
|
|
- if (fromDevice != null && fromDevice !== '') return String(fromDevice);
|
|
|
|
|
- return '';
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 解析数值,非法时回退默认值 */
|
|
/** 解析数值,非法时回退默认值 */
|
|
|
function toFiniteNumber(value: unknown, fallback: number) {
|
|
function toFiniteNumber(value: unknown, fallback: number) {
|
|
|
const num = Number(value);
|
|
const num = Number(value);
|
|
@@ -1034,7 +966,6 @@ function toggleSelectAll(checked: boolean) {
|
|
|
function onAdvancedAction(action: string) {
|
|
function onAdvancedAction(action: string) {
|
|
|
emit('advancedAction', { action, state: { ...advancedState } });
|
|
emit('advancedAction', { action, state: { ...advancedState } });
|
|
|
const actionMap: Record<string, () => void> = {
|
|
const actionMap: Record<string, () => void> = {
|
|
|
- alarmReport: tryOpenAlarmReport,
|
|
|
|
|
snapshot: trySnapshot,
|
|
snapshot: trySnapshot,
|
|
|
viewImages: tryViewImages,
|
|
viewImages: tryViewImages,
|
|
|
viewRecords: tryViewRecords,
|
|
viewRecords: tryViewRecords,
|
|
@@ -1042,12 +973,6 @@ function onAdvancedAction(action: string) {
|
|
|
actionMap[action]?.();
|
|
actionMap[action]?.();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 有选中摄像头则打开上报弹窗,否则提示选择设备 */
|
|
|
|
|
-function tryOpenAlarmReport() {
|
|
|
|
|
- if (!ensureSelectedCamera()) return;
|
|
|
|
|
- openAlarmReport();
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 关闭未选设备提示 */
|
|
/** 关闭未选设备提示 */
|
|
|
function closeDeviceTip() {
|
|
function closeDeviceTip() {
|
|
|
deviceTipVisible.value = false;
|
|
deviceTipVisible.value = false;
|
|
@@ -1109,47 +1034,6 @@ function closeSnapshotView() {
|
|
|
closePicPreview();
|
|
closePicPreview();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 打开告警上报弹窗(预填选中摄像头/设备信息,字段可再手动修改) */
|
|
|
|
|
-function openAlarmReport() {
|
|
|
|
|
- const camera = props.selectedCamera || {};
|
|
|
|
|
- const device = selectedDevice.value;
|
|
|
|
|
- alarmForm.deviceId = pickCameraField(camera, device, 'id');
|
|
|
|
|
- alarmForm.deviceName = pickCameraField(camera, device, 'name');
|
|
|
|
|
- alarmForm.longitude = pickCameraField(camera, device, 'longitude');
|
|
|
|
|
- alarmForm.latitude = pickCameraField(camera, device, 'latitude');
|
|
|
|
|
- alarmForm.operator = operatorName.value;
|
|
|
|
|
- alarmForm.remark = '';
|
|
|
|
|
- alarmReportMinimized.value = false;
|
|
|
|
|
- alarmReportVisible.value = true;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 关闭告警上报弹窗 */
|
|
|
|
|
-function closeAlarmReport() {
|
|
|
|
|
- alarmReportVisible.value = false;
|
|
|
|
|
- alarmReportMinimized.value = false;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 最小化 / 还原告警上报弹窗 */
|
|
|
|
|
-function toggleAlarmMinimize() {
|
|
|
|
|
- alarmReportMinimized.value = !alarmReportMinimized.value;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 提交告警上报 */
|
|
|
|
|
-function submitAlarmReport() {
|
|
|
|
|
- const payload = {
|
|
|
|
|
- deviceId: alarmForm.deviceId.trim(),
|
|
|
|
|
- deviceName: alarmForm.deviceName.trim(),
|
|
|
|
|
- longitude: alarmForm.longitude.trim(),
|
|
|
|
|
- latitude: alarmForm.latitude.trim(),
|
|
|
|
|
- operator: alarmForm.operator.trim(),
|
|
|
|
|
- remark: alarmForm.remark.trim(),
|
|
|
|
|
- };
|
|
|
|
|
- emit('alarmReport', payload);
|
|
|
|
|
- emit('advancedAction', { action: 'alarmReportSubmit', state: { ...payload } });
|
|
|
|
|
- createMessage.success('告警上报已提交');
|
|
|
|
|
- closeAlarmReport();
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 拼接录像完整路径(兼容 Windows / Unix 分隔符) */
|
|
/** 拼接录像完整路径(兼容 Windows / Unix 分隔符) */
|
|
|
function buildRecordFullPath(filePath: string, fileName: string) {
|
|
function buildRecordFullPath(filePath: string, fileName: string) {
|
|
|
if (!filePath) return fileName;
|
|
if (!filePath) return fileName;
|
|
@@ -2366,10 +2250,6 @@ onUnmounted(() => {
|
|
|
// border: 1px solid rgba(58, 225, 255, 0.12);
|
|
// border: 1px solid rgba(58, 225, 255, 0.12);
|
|
|
border-radius: 2px;
|
|
border-radius: 2px;
|
|
|
|
|
|
|
|
- &.adv-section-between {
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
&.adv-section-last {
|
|
&.adv-section-last {
|
|
|
border-bottom-color: rgba(58, 225, 255, 0.12);
|
|
border-bottom-color: rgba(58, 225, 255, 0.12);
|
|
|
}
|
|
}
|
|
@@ -2966,158 +2846,6 @@ onUnmounted(() => {
|
|
|
|
|
|
|
|
<!-- 弹窗等挂载到 body,需非 scoped 样式 -->
|
|
<!-- 弹窗等挂载到 body,需非 scoped 样式 -->
|
|
|
<style lang="less">
|
|
<style lang="less">
|
|
|
-/* 告警上报弹窗(Teleport 到 body) */
|
|
|
|
|
-.alarm-report-mask {
|
|
|
|
|
- position: fixed;
|
|
|
|
|
- inset: 0;
|
|
|
|
|
- z-index: 1100;
|
|
|
|
|
- background: rgba(0, 10, 24, 0.55);
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
-
|
|
|
|
|
- &.is-minimized {
|
|
|
|
|
- background: transparent;
|
|
|
|
|
- pointer-events: none;
|
|
|
|
|
- align-items: flex-end;
|
|
|
|
|
- justify-content: flex-end;
|
|
|
|
|
- padding: 24px;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-report-panel {
|
|
|
|
|
- width: min(420px, calc(100vw - 40px));
|
|
|
|
|
- background: linear-gradient(180deg, rgba(18, 48, 78, 0.98) 0%, rgba(8, 28, 50, 0.98) 100%);
|
|
|
|
|
- border: 1px solid rgba(0, 183, 255, 0.45);
|
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
- box-shadow: 0 0 24px rgba(0, 183, 255, 0.25);
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
- pointer-events: auto;
|
|
|
|
|
-
|
|
|
|
|
- &.minimized {
|
|
|
|
|
- width: 220px;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-report-header {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- padding: 12px 16px 8px;
|
|
|
|
|
- border-bottom: 1px solid rgba(0, 183, 255, 0.2);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-report-title {
|
|
|
|
|
- color: #ff7a45;
|
|
|
|
|
- font-size: 16px;
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- letter-spacing: 1px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-report-actions {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- gap: 10px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-icon-btn {
|
|
|
|
|
- width: 24px;
|
|
|
|
|
- height: 24px;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- border: none;
|
|
|
|
|
- background: transparent;
|
|
|
|
|
- color: #e8f4ff;
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
- display: inline-flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
-
|
|
|
|
|
- &:hover {
|
|
|
|
|
- color: #01fefc;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-report-body {
|
|
|
|
|
- padding: 18px 22px 22px;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
- gap: 16px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-field {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: flex-end;
|
|
|
|
|
- gap: 12px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-field-label {
|
|
|
|
|
- flex-shrink: 0;
|
|
|
|
|
- width: 72px;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- line-height: 28px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-field-value {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- min-width: 0;
|
|
|
|
|
- text-align: left;
|
|
|
|
|
- color: rgba(232, 244, 255, 0.92);
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- line-height: 28px;
|
|
|
|
|
- border-bottom: 1px solid rgba(232, 244, 255, 0.85);
|
|
|
|
|
- padding-bottom: 2px;
|
|
|
|
|
-
|
|
|
|
|
- &.editable {
|
|
|
|
|
- border-bottom: 1px solid rgba(232, 244, 255, 0.85);
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-field-input {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- background: transparent !important;
|
|
|
|
|
- box-shadow: none !important;
|
|
|
|
|
- border: none !important;
|
|
|
|
|
- padding: 0 !important;
|
|
|
|
|
-
|
|
|
|
|
- .ant-input,
|
|
|
|
|
- .zxm-input {
|
|
|
|
|
- background: transparent !important;
|
|
|
|
|
- color: #fff !important;
|
|
|
|
|
- text-align: center !important;
|
|
|
|
|
- padding: 0 2px !important;
|
|
|
|
|
- height: 28px !important;
|
|
|
|
|
- box-shadow: none !important;
|
|
|
|
|
- border: none !important;
|
|
|
|
|
-
|
|
|
|
|
- &::placeholder {
|
|
|
|
|
- color: rgba(200, 220, 235, 0.45);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.alarm-submit-btn {
|
|
|
|
|
- align-self: center;
|
|
|
|
|
- margin-top: 8px;
|
|
|
|
|
- min-width: 120px !important;
|
|
|
|
|
- height: 32px !important;
|
|
|
|
|
- padding: 0 28px !important;
|
|
|
|
|
- border-radius: 16px !important;
|
|
|
|
|
- border: 1px solid rgba(232, 244, 255, 0.85) !important;
|
|
|
|
|
- background: transparent !important;
|
|
|
|
|
- color: #fff !important;
|
|
|
|
|
- font-size: 14px !important;
|
|
|
|
|
- letter-spacing: 2px;
|
|
|
|
|
- box-shadow: none !important;
|
|
|
|
|
-
|
|
|
|
|
- &:hover,
|
|
|
|
|
- &:focus {
|
|
|
|
|
- border-color: #01fefc !important;
|
|
|
|
|
- color: #01fefc !important;
|
|
|
|
|
- background: rgba(1, 254, 252, 0.08) !important;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/* 未选设备提示弹窗(风格对齐报警自动弹窗) */
|
|
/* 未选设备提示弹窗(风格对齐报警自动弹窗) */
|
|
|
.device-tip-mask {
|
|
.device-tip-mask {
|
|
|
position: fixed;
|
|
position: fixed;
|
|
@@ -3677,39 +3405,6 @@ onUnmounted(() => {
|
|
|
flex-shrink: 0;
|
|
flex-shrink: 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination) {
|
|
|
|
|
- color: #cfe9ff;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-item),
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-prev),
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-next),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-item),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-prev),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-next) {
|
|
|
|
|
- min-width: 26px;
|
|
|
|
|
- height: 26px;
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- border: 1px solid rgba(58, 225, 255, 0.45);
|
|
|
|
|
- background: rgba(16, 64, 100, 0.85);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-item a),
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-prev button),
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-next button),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-item a),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-prev button),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-next button) {
|
|
|
|
|
- color: #cfe9ff;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.pic-view-footer :deep(.zxm-pagination-item-active),
|
|
|
|
|
-.pic-view-footer :deep(.ant-pagination-item-active) {
|
|
|
|
|
- border-color: #01fefc;
|
|
|
|
|
- background: rgba(32, 166, 169, 0.85);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/* 查看录像弹窗 */
|
|
/* 查看录像弹窗 */
|
|
|
.record-view-mask {
|
|
.record-view-mask {
|
|
|
position: fixed;
|
|
position: fixed;
|