mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	fix: 🐛 修复刷新页面后,选中菜单无法保持展开状态的问题
1.父级菜单也必须存在 name 属性,父级菜单 name 属性,在很早之前曾考虑过移除,后来发现会引起 Bug,于是没有改动。但前段时间调整动态路由时没有想起该情况,一时疏忽移除了,所幸发现问题不晚,现在及时恢复回来 2.优化实时监控示例的相关变量命名
This commit is contained in:
		@@ -25,7 +25,7 @@ import locale404 from '@/views/demo/exception/404/locale/en-US';
 | 
			
		||||
import locale500 from '@/views/demo/exception/500/locale/en-US';
 | 
			
		||||
import localeDataAnalysis from '@/views/demo/visualization/data-analysis/locale/en-US';
 | 
			
		||||
import localeMultiDAnalysis from '@/views/demo/visualization/multi-dimension-data-analysis/locale/en-US';
 | 
			
		||||
import localeMonitor from '@/views/demo/visualization/monitor/locale/en-US';
 | 
			
		||||
import localeRealTimeMonitor from '@/views/demo/visualization/real-time-monitor/locale/en-US';
 | 
			
		||||
 | 
			
		||||
import localeMessageBox from '@/components/message-box/locale/en-US';
 | 
			
		||||
import localeLogin from '@/views/login/locale/en-US';
 | 
			
		||||
@@ -80,7 +80,7 @@ export default {
 | 
			
		||||
  ...locale500,
 | 
			
		||||
  ...localeDataAnalysis,
 | 
			
		||||
  ...localeMultiDAnalysis,
 | 
			
		||||
  ...localeMonitor,
 | 
			
		||||
  ...localeRealTimeMonitor,
 | 
			
		||||
 | 
			
		||||
  ...localeMessageBox,
 | 
			
		||||
  ...localeLogin,
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ import locale404 from '@/views/demo/exception/404/locale/zh-CN';
 | 
			
		||||
import locale500 from '@/views/demo/exception/500/locale/zh-CN';
 | 
			
		||||
import localeDataAnalysis from '@/views/demo/visualization/data-analysis/locale/zh-CN';
 | 
			
		||||
import localeMultiDAnalysis from '@/views/demo/visualization/multi-dimension-data-analysis/locale/zh-CN';
 | 
			
		||||
import localeMonitor from '@/views/demo/visualization/monitor/locale/zh-CN';
 | 
			
		||||
import localeRealTimeMonitor from '@/views/demo/visualization/real-time-monitor/locale/zh-CN';
 | 
			
		||||
 | 
			
		||||
import localeMessageBox from '@/components/message-box/locale/zh-CN';
 | 
			
		||||
import localeLogin from '@/views/login/locale/zh-CN';
 | 
			
		||||
@@ -80,7 +80,7 @@ export default {
 | 
			
		||||
  ...locale500,
 | 
			
		||||
  ...localeDataAnalysis,
 | 
			
		||||
  ...localeMultiDAnalysis,
 | 
			
		||||
  ...localeMonitor,
 | 
			
		||||
  ...localeRealTimeMonitor,
 | 
			
		||||
 | 
			
		||||
  ...localeMessageBox,
 | 
			
		||||
  ...localeLogin,
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import './message-box';
 | 
			
		||||
 | 
			
		||||
import '@/views/dashboard/workplace/mock';
 | 
			
		||||
 | 
			
		||||
import '@/views/demo/visualization/monitor/mock';
 | 
			
		||||
import '@/views/demo/visualization/real-time-monitor/mock';
 | 
			
		||||
 | 
			
		||||
import '@/views/demo/list/card/mock';
 | 
			
		||||
import '@/views/demo/list/search-table/mock';
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const EXCEPTION: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Exception',
 | 
			
		||||
  path: '/demo/exception',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const FORM: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Form',
 | 
			
		||||
  path: '/demo/form',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const LIST: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'List',
 | 
			
		||||
  path: '/demo/list',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const PROFILE: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Profile',
 | 
			
		||||
  path: '/demo/profile',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const RESULT: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Result',
 | 
			
		||||
  path: '/demo/result',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const VISUALIZATION: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Visualization',
 | 
			
		||||
  path: '/demo/visualization',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
@@ -36,12 +37,12 @@ const VISUALIZATION: AppRouteRecordRaw = {
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: 'Monitor',
 | 
			
		||||
      path: 'monitor',
 | 
			
		||||
      name: 'RealTimeMonitor',
 | 
			
		||||
      path: 'real-time-monitor',
 | 
			
		||||
      component: () =>
 | 
			
		||||
        import('@/views/demo/visualization/monitor/index.vue'),
 | 
			
		||||
        import('@/views/demo/visualization/real-time-monitor/index.vue'),
 | 
			
		||||
      meta: {
 | 
			
		||||
        locale: 'menu.dashboard.monitor',
 | 
			
		||||
        locale: 'menu.dashboard.realTimeMonitor',
 | 
			
		||||
        requiresAuth: true,
 | 
			
		||||
        roles: ['*'],
 | 
			
		||||
      },
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@ import { DEFAULT_LAYOUT } from '../../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../../types';
 | 
			
		||||
 | 
			
		||||
const DASHBOARD: AppRouteRecordRaw = {
 | 
			
		||||
  path: '/dashboard',
 | 
			
		||||
  name: 'Dashboard',
 | 
			
		||||
  path: '/dashboard',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  redirect: '/dashboard/workplace',
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../types';
 | 
			
		||||
 | 
			
		||||
const Monitor: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Monitor',
 | 
			
		||||
  path: '/monitor',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../types';
 | 
			
		||||
 | 
			
		||||
const System: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'System',
 | 
			
		||||
  path: '/system',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
 | 
			
		||||
import { AppRouteRecordRaw } from '../types';
 | 
			
		||||
 | 
			
		||||
const Tool: AppRouteRecordRaw = {
 | 
			
		||||
  name: 'Tool',
 | 
			
		||||
  path: '/tool',
 | 
			
		||||
  component: DEFAULT_LAYOUT,
 | 
			
		||||
  meta: {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card class="general-card" :title="$t('monitor.title.studioInfo')">
 | 
			
		||||
    <a-form :model="{}" layout="vertical">
 | 
			
		||||
      <a-form-item :label="$t('monitor.studioInfo.label.studioTitle')" required>
 | 
			
		||||
        <a-input
 | 
			
		||||
          :placeholder="`王立群${$t(
 | 
			
		||||
            'monitor.studioInfo.placeholder.studioTitle'
 | 
			
		||||
          )}`"
 | 
			
		||||
        />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('monitor.studioInfo.label.onlineNotification')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-textarea />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('monitor.studioInfo.label.studioCategory')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-input-search />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('monitor.studioInfo.label.studioCategory')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-input-search />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
    </a-form>
 | 
			
		||||
    <a-button type="primary">{{ $t('monitor.studioInfo.btn.fresh') }}</a-button>
 | 
			
		||||
  </a-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
export default {
 | 
			
		||||
  'menu.dashboard.monitor': 'Real-time Monitor',
 | 
			
		||||
  'monitor.title.chatPanel': 'Chat Window',
 | 
			
		||||
  'monitor.title.quickOperation': 'Quick Operation',
 | 
			
		||||
  'monitor.title.studioInfo': 'Studio Information',
 | 
			
		||||
  'monitor.title.studioPreview': 'Studio Preview',
 | 
			
		||||
  'monitor.chat.options.all': 'All',
 | 
			
		||||
  'monitor.chat.placeholder.searchCategory': 'Search Category',
 | 
			
		||||
  'monitor.chat.update': 'Update',
 | 
			
		||||
  'monitor.list.title.order': 'Order',
 | 
			
		||||
  'monitor.list.title.cover': 'Cover',
 | 
			
		||||
  'monitor.list.title.name': 'Name',
 | 
			
		||||
  'monitor.list.title.duration': 'Duration',
 | 
			
		||||
  'monitor.list.title.id': 'ID',
 | 
			
		||||
  'monitor.list.tip.rotations': 'Rotations ',
 | 
			
		||||
  'monitor.list.tip.rest': ', The program list is not visible to viewers',
 | 
			
		||||
  'monitor.list.tag.auditFailed': 'Audit Failed',
 | 
			
		||||
  'monitor.tab.title.liveMethod': 'Live Method',
 | 
			
		||||
  'monitor.tab.title.onlinePopulation': 'Online Population',
 | 
			
		||||
  'monitor.liveMethod.normal': 'Normal Live',
 | 
			
		||||
  'monitor.liveMethod.flowControl': 'Flow Control Live',
 | 
			
		||||
  'monitor.liveMethod.video': 'Video Live',
 | 
			
		||||
  'monitor.liveMethod.web': 'Web Live',
 | 
			
		||||
  'monitor.editCarousel': 'Edit',
 | 
			
		||||
  'monitor.startCarousel': 'Start',
 | 
			
		||||
  'monitor.quickOperation.changeClarity': 'Change the Clarity',
 | 
			
		||||
  'monitor.quickOperation.switchStream': 'Switch Stream',
 | 
			
		||||
  'monitor.quickOperation.removeClarity': 'Remove the Clarity',
 | 
			
		||||
  'monitor.quickOperation.pushFlowGasket': 'Push Flow Gasket',
 | 
			
		||||
  'monitor.studioInfo.label.studioTitle': 'Studio Title',
 | 
			
		||||
  'monitor.studioInfo.label.onlineNotification': 'Online Notification',
 | 
			
		||||
  'monitor.studioInfo.label.studioCategory': 'Studio Category',
 | 
			
		||||
  'monitor.studioInfo.placeholder.studioTitle': "'s Studio",
 | 
			
		||||
  'monitor.studioInfo.btn.fresh': 'Fresh',
 | 
			
		||||
  'monitor.studioStatus.title.studioStatus': 'Studio Status',
 | 
			
		||||
  'monitor.studioStatus.title.pictureInfo': 'Picture Information',
 | 
			
		||||
  'monitor.studioStatus.smooth': 'Smooth',
 | 
			
		||||
  'monitor.studioStatus.frameRate': 'Frame',
 | 
			
		||||
  'monitor.studioStatus.bitRate': 'Bit',
 | 
			
		||||
  'monitor.studioStatus.mainstream': 'Main',
 | 
			
		||||
  'monitor.studioStatus.hotStandby': 'Hot',
 | 
			
		||||
  'monitor.studioStatus.coldStandby': 'Cold',
 | 
			
		||||
  'monitor.studioStatus.line': 'Line',
 | 
			
		||||
  'monitor.studioStatus.play': 'Format',
 | 
			
		||||
  'monitor.studioStatus.pictureQuality': 'Quality',
 | 
			
		||||
  'monitor.studioPreview.studio': 'Studio',
 | 
			
		||||
  'monitor.studioPreview.watching': 'watching',
 | 
			
		||||
};
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
export default {
 | 
			
		||||
  'menu.dashboard.monitor': '实时监控',
 | 
			
		||||
  'monitor.title.chatPanel': '聊天窗口',
 | 
			
		||||
  'monitor.title.quickOperation': '快捷操作',
 | 
			
		||||
  'monitor.title.studioInfo': '直播信息',
 | 
			
		||||
  'monitor.title.studioPreview': '直播预览',
 | 
			
		||||
  'monitor.chat.options.all': '全部',
 | 
			
		||||
  'monitor.chat.placeholder.searchCategory': '搜索类目',
 | 
			
		||||
  'monitor.chat.update': '更新',
 | 
			
		||||
  'monitor.list.title.order': '序号',
 | 
			
		||||
  'monitor.list.title.cover': '封面',
 | 
			
		||||
  'monitor.list.title.name': '名称',
 | 
			
		||||
  'monitor.list.title.duration': '视频时长',
 | 
			
		||||
  'monitor.list.title.id': '视频Id',
 | 
			
		||||
  'monitor.list.tip.rotations': '轮播次数',
 | 
			
		||||
  'monitor.list.tip.rest': ',节目单观众不可见',
 | 
			
		||||
  'monitor.list.tag.auditFailed': '审核未通过',
 | 
			
		||||
  'monitor.tab.title.liveMethod': '直播方式',
 | 
			
		||||
  'monitor.tab.title.onlinePopulation': '在线人数',
 | 
			
		||||
  'monitor.liveMethod.normal': '普通直播',
 | 
			
		||||
  'monitor.liveMethod.flowControl': '控流直播',
 | 
			
		||||
  'monitor.liveMethod.video': '视频直播',
 | 
			
		||||
  'monitor.liveMethod.web': '网页开播',
 | 
			
		||||
  'monitor.editCarousel': '编辑轮播',
 | 
			
		||||
  'monitor.startCarousel': '开始轮播',
 | 
			
		||||
  'monitor.quickOperation.changeClarity': '切换清晰度',
 | 
			
		||||
  'monitor.quickOperation.switchStream': '主备流切换',
 | 
			
		||||
  'monitor.quickOperation.removeClarity': '摘除清晰度',
 | 
			
		||||
  'monitor.quickOperation.pushFlowGasket': '推流垫片',
 | 
			
		||||
  'monitor.studioInfo.label.studioTitle': '直播标题',
 | 
			
		||||
  'monitor.studioInfo.label.onlineNotification': '上线通知',
 | 
			
		||||
  'monitor.studioInfo.label.studioCategory': '直播类目',
 | 
			
		||||
  'monitor.studioInfo.placeholder.studioTitle': '的直播间',
 | 
			
		||||
  'monitor.studioInfo.btn.fresh': '更新',
 | 
			
		||||
  'monitor.studioStatus.title.studioStatus': '直播状态',
 | 
			
		||||
  'monitor.studioStatus.title.pictureInfo': '画面信息',
 | 
			
		||||
  'monitor.studioStatus.smooth': '流畅',
 | 
			
		||||
  'monitor.studioStatus.frameRate': '帧率',
 | 
			
		||||
  'monitor.studioStatus.bitRate': '码率',
 | 
			
		||||
  'monitor.studioStatus.mainstream': '主流',
 | 
			
		||||
  'monitor.studioStatus.hotStandby': '热备',
 | 
			
		||||
  'monitor.studioStatus.coldStandby': '冷备',
 | 
			
		||||
  'monitor.studioStatus.line': '线路',
 | 
			
		||||
  'monitor.studioStatus.play': '播放格式',
 | 
			
		||||
  'monitor.studioStatus.pictureQuality': '画质',
 | 
			
		||||
  'monitor.studioPreview.studio': '直播间',
 | 
			
		||||
  'monitor.studioPreview.watching': '在看',
 | 
			
		||||
};
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card
 | 
			
		||||
    class="general-card chat-panel"
 | 
			
		||||
    :title="$t('monitor.title.chatPanel')"
 | 
			
		||||
    :title="$t('realTimeMonitor.title.chatPanel')"
 | 
			
		||||
    :bordered="false"
 | 
			
		||||
    :header-style="{ paddingBottom: '0' }"
 | 
			
		||||
    :body-style="{
 | 
			
		||||
@@ -14,11 +14,11 @@
 | 
			
		||||
    <a-space :size="8">
 | 
			
		||||
      <a-select style="width: 86px" default-value="all">
 | 
			
		||||
        <a-option value="all">
 | 
			
		||||
          {{ $t('monitor.chat.options.all') }}
 | 
			
		||||
          {{ $t('realTimeMonitor.chat.options.all') }}
 | 
			
		||||
        </a-option>
 | 
			
		||||
      </a-select>
 | 
			
		||||
      <a-input-search
 | 
			
		||||
        :placeholder="$t('monitor.chat.placeholder.searchCategory')"
 | 
			
		||||
        :placeholder="$t('realTimeMonitor.chat.placeholder.searchCategory')"
 | 
			
		||||
      />
 | 
			
		||||
      <a-button type="text">
 | 
			
		||||
        <icon-download />
 | 
			
		||||
@@ -36,7 +36,7 @@
 | 
			
		||||
            <icon-face-smile-fill />
 | 
			
		||||
          </template>
 | 
			
		||||
        </a-Input>
 | 
			
		||||
        <a-button type="primary">{{ $t('monitor.chat.update') }}</a-button>
 | 
			
		||||
        <a-button type="primary">{{ $t('realTimeMonitor.chat.update') }}</a-button>
 | 
			
		||||
      </a-space>
 | 
			
		||||
    </div>
 | 
			
		||||
  </a-card>
 | 
			
		||||
@@ -12,8 +12,8 @@
 | 
			
		||||
      :pagination="false"
 | 
			
		||||
    />
 | 
			
		||||
    <a-typography-text type="secondary" class="data-statistic-list-tip">
 | 
			
		||||
      {{ $t('monitor.list.tip.rotations') }} {{ data.length }}
 | 
			
		||||
      {{ $t('monitor.list.tip.rest') }}
 | 
			
		||||
      {{ $t('realTimeMonitor.list.tip.rotations') }} {{ data.length }}
 | 
			
		||||
      {{ $t('realTimeMonitor.list.tip.rest') }}
 | 
			
		||||
    </a-typography-text>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -47,7 +47,7 @@
 | 
			
		||||
  const renderTag = (status: number) => {
 | 
			
		||||
    if (status === -1) {
 | 
			
		||||
      return `<a-tag  color="red" class='data-statistic-list-cover-tag'>
 | 
			
		||||
            ${t('monitor.list.tag.auditFailed')}
 | 
			
		||||
            ${t('realTimeMonitor.list.tag.auditFailed')}
 | 
			
		||||
        </a-tag>`;
 | 
			
		||||
    }
 | 
			
		||||
    return '';
 | 
			
		||||
@@ -58,7 +58,7 @@
 | 
			
		||||
  const columns = computed(() => {
 | 
			
		||||
    return [
 | 
			
		||||
      {
 | 
			
		||||
        title: t('monitor.list.title.order'),
 | 
			
		||||
        title: t('realTimeMonitor.list.title.order'),
 | 
			
		||||
        render({
 | 
			
		||||
          rowIndex,
 | 
			
		||||
        }: {
 | 
			
		||||
@@ -71,7 +71,7 @@
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        title: t('monitor.list.title.cover'),
 | 
			
		||||
        title: t('realTimeMonitor.list.title.cover'),
 | 
			
		||||
        render({
 | 
			
		||||
          record,
 | 
			
		||||
        }: {
 | 
			
		||||
@@ -87,16 +87,16 @@
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        title: t('monitor.list.title.name'),
 | 
			
		||||
        title: t('realTimeMonitor.list.title.name'),
 | 
			
		||||
        dataIndex: 'name',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        dataIndex: 'duration',
 | 
			
		||||
        title: t('monitor.list.title.duration'),
 | 
			
		||||
        title: t('realTimeMonitor.list.title.duration'),
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        dataIndex: 'id',
 | 
			
		||||
        title: t('monitor.list.title.id'),
 | 
			
		||||
        title: t('realTimeMonitor.list.title.id'),
 | 
			
		||||
      },
 | 
			
		||||
    ];
 | 
			
		||||
  });
 | 
			
		||||
@@ -3,25 +3,25 @@
 | 
			
		||||
    <a-tabs default-active-tab="liveMethod">
 | 
			
		||||
      <a-tab-pane
 | 
			
		||||
        key="liveMethod"
 | 
			
		||||
        :title="$t('monitor.tab.title.liveMethod')"
 | 
			
		||||
        :title="$t('realTimeMonitor.tab.title.liveMethod')"
 | 
			
		||||
      />
 | 
			
		||||
      <a-tab-pane
 | 
			
		||||
        key="onlinePopulation"
 | 
			
		||||
        :title="$t('monitor.tab.title.onlinePopulation')"
 | 
			
		||||
        :title="$t('realTimeMonitor.tab.title.onlinePopulation')"
 | 
			
		||||
      />
 | 
			
		||||
    </a-tabs>
 | 
			
		||||
    <div class="data-statistic-content">
 | 
			
		||||
      <a-radio-group :default-value="3" type="button">
 | 
			
		||||
        <a-radio :value="1">{{ $t('monitor.liveMethod.normal') }}</a-radio>
 | 
			
		||||
        <a-radio :value="2">{{ $t('monitor.liveMethod.flowControl') }}</a-radio>
 | 
			
		||||
        <a-radio :value="3">{{ $t('monitor.liveMethod.video') }}</a-radio>
 | 
			
		||||
        <a-radio :value="4">{{ $t('monitor.liveMethod.web') }}</a-radio>
 | 
			
		||||
        <a-radio :value="1">{{ $t('realTimeMonitor.liveMethod.normal') }}</a-radio>
 | 
			
		||||
        <a-radio :value="2">{{ $t('realTimeMonitor.liveMethod.flowControl') }}</a-radio>
 | 
			
		||||
        <a-radio :value="3">{{ $t('realTimeMonitor.liveMethod.video') }}</a-radio>
 | 
			
		||||
        <a-radio :value="4">{{ $t('realTimeMonitor.liveMethod.web') }}</a-radio>
 | 
			
		||||
      </a-radio-group>
 | 
			
		||||
 | 
			
		||||
      <div class="data-statistic-list-wrapper">
 | 
			
		||||
        <div class="data-statistic-list-header">
 | 
			
		||||
          <a-button type="text">{{ $t('monitor.editCarousel') }}</a-button>
 | 
			
		||||
          <a-button disabled>{{ $t('monitor.startCarousel') }}</a-button>
 | 
			
		||||
          <a-button type="text">{{ $t('realTimeMonitor.editCarousel') }}</a-button>
 | 
			
		||||
          <a-button disabled>{{ $t('realTimeMonitor.startCarousel') }}</a-button>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="data-statistic-list-content">
 | 
			
		||||
          <DataStatisticList />
 | 
			
		||||
@@ -1,26 +1,26 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card class="general-card" :title="$t('monitor.title.quickOperation')">
 | 
			
		||||
  <a-card class="general-card" :title="$t('realTimeMonitor.title.quickOperation')">
 | 
			
		||||
    <a-space direction="vertical" fill :size="10">
 | 
			
		||||
      <a-button long>
 | 
			
		||||
        {{ $t('monitor.quickOperation.changeClarity') }}
 | 
			
		||||
        {{ $t('realTimeMonitor.quickOperation.changeClarity') }}
 | 
			
		||||
        <template #icon>
 | 
			
		||||
          <IconTags />
 | 
			
		||||
        </template>
 | 
			
		||||
      </a-button>
 | 
			
		||||
      <a-button long>
 | 
			
		||||
        {{ $t('monitor.quickOperation.switchStream') }}
 | 
			
		||||
        {{ $t('realTimeMonitor.quickOperation.switchStream') }}
 | 
			
		||||
        <template #icon>
 | 
			
		||||
          <IconSwap />
 | 
			
		||||
        </template>
 | 
			
		||||
      </a-button>
 | 
			
		||||
      <a-button long>
 | 
			
		||||
        {{ $t('monitor.quickOperation.removeClarity') }}
 | 
			
		||||
        {{ $t('realTimeMonitor.quickOperation.removeClarity') }}
 | 
			
		||||
        <template #icon>
 | 
			
		||||
          <IconStop />
 | 
			
		||||
        </template>
 | 
			
		||||
      </a-button>
 | 
			
		||||
      <a-button long>
 | 
			
		||||
        {{ $t('monitor.quickOperation.pushFlowGasket') }}
 | 
			
		||||
        {{ $t('realTimeMonitor.quickOperation.pushFlowGasket') }}
 | 
			
		||||
        <template #icon>
 | 
			
		||||
          <IconArrowRight />
 | 
			
		||||
        </template>
 | 
			
		||||
@@ -0,0 +1,34 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card class="general-card" :title="$t('realTimeMonitor.title.studioInfo')">
 | 
			
		||||
    <a-form :model="{}" layout="vertical">
 | 
			
		||||
      <a-form-item :label="$t('realTimeMonitor.studioInfo.label.studioTitle')" required>
 | 
			
		||||
        <a-input
 | 
			
		||||
          :placeholder="`王立群${$t(
 | 
			
		||||
            'realTimeMonitor.studioInfo.placeholder.studioTitle'
 | 
			
		||||
          )}`"
 | 
			
		||||
        />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('realTimeMonitor.studioInfo.label.onlineNotification')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-textarea />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('realTimeMonitor.studioInfo.label.studioCategory')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-input-search />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
      <a-form-item
 | 
			
		||||
        :label="$t('realTimeMonitor.studioInfo.label.studioCategory')"
 | 
			
		||||
        required
 | 
			
		||||
      >
 | 
			
		||||
        <a-input-search />
 | 
			
		||||
      </a-form-item>
 | 
			
		||||
    </a-form>
 | 
			
		||||
    <a-button type="primary">{{ $t('realTimeMonitor.studioInfo.btn.fresh') }}</a-button>
 | 
			
		||||
  </a-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card
 | 
			
		||||
    class="general-card"
 | 
			
		||||
    :title="$t('monitor.studioStatus.title.studioStatus')"
 | 
			
		||||
    :title="$t('realTimeMonitor.studioStatus.title.studioStatus')"
 | 
			
		||||
  >
 | 
			
		||||
    <template #extra>
 | 
			
		||||
      <a-tag color="green">{{ $t('monitor.studioStatus.smooth') }}</a-tag>
 | 
			
		||||
      <a-tag color="green">{{ $t('realTimeMonitor.studioStatus.smooth') }}</a-tag>
 | 
			
		||||
    </template>
 | 
			
		||||
    <a-descriptions layout="horizontal" :data="dataStatus" :column="2">
 | 
			
		||||
      <template #label="{ label }">
 | 
			
		||||
@@ -12,15 +12,15 @@
 | 
			
		||||
          v-if="['mainstream', 'hotStandby', 'coldStandby'].includes(label)"
 | 
			
		||||
        >
 | 
			
		||||
          <a-typography-text style="padding-right: 8px">
 | 
			
		||||
            {{ $t(`monitor.studioStatus.${label}`) }}
 | 
			
		||||
            {{ $t(`realTimeMonitor.studioStatus.${label}`) }}
 | 
			
		||||
          </a-typography-text>
 | 
			
		||||
          {{ $t('monitor.studioStatus.bitRate') }}
 | 
			
		||||
          {{ $t('realTimeMonitor.studioStatus.bitRate') }}
 | 
			
		||||
        </span>
 | 
			
		||||
        <span v-else>{{ label }}</span>
 | 
			
		||||
      </template>
 | 
			
		||||
    </a-descriptions>
 | 
			
		||||
    <a-typography-title style="margin-bottom: 16px" :heading="6">
 | 
			
		||||
      {{ $t('monitor.studioStatus.title.pictureInfo') }}
 | 
			
		||||
      {{ $t('realTimeMonitor.studioStatus.title.pictureInfo') }}
 | 
			
		||||
    </a-typography-title>
 | 
			
		||||
    <a-descriptions layout="horizontal" :data="dataPicture" :column="2" />
 | 
			
		||||
  </a-card>
 | 
			
		||||
@@ -37,7 +37,7 @@
 | 
			
		||||
      value: '6 Mbps',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.frameRate'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.frameRate'),
 | 
			
		||||
      value: '60',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
@@ -45,7 +45,7 @@
 | 
			
		||||
      value: '6 Mbps',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.frameRate'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.frameRate'),
 | 
			
		||||
      value: '60',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
@@ -53,13 +53,13 @@
 | 
			
		||||
      value: '6 Mbps',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.frameRate'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.frameRate'),
 | 
			
		||||
      value: '60',
 | 
			
		||||
    },
 | 
			
		||||
  ]);
 | 
			
		||||
  const dataPicture = computed(() => [
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.line'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.line'),
 | 
			
		||||
      value: '热备',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
@@ -67,11 +67,11 @@
 | 
			
		||||
      value: 'KS',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.play'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.play'),
 | 
			
		||||
      value: 'FLV',
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      label: t('monitor.studioStatus.pictureQuality'),
 | 
			
		||||
      label: t('realTimeMonitor.studioStatus.pictureQuality'),
 | 
			
		||||
      value: '原画',
 | 
			
		||||
    },
 | 
			
		||||
  ]);
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <a-card class="general-card" :title="$t('monitor.title.studioPreview')">
 | 
			
		||||
  <a-card class="general-card" :title="$t('realTimeMonitor.title.studioPreview')">
 | 
			
		||||
    <template #extra>
 | 
			
		||||
      <icon-more />
 | 
			
		||||
    </template>
 | 
			
		||||
@@ -15,12 +15,12 @@
 | 
			
		||||
              <img :src="getAvatar(userInfo.avatar, userInfo.gender)" />
 | 
			
		||||
            </a-avatar>
 | 
			
		||||
            <a-typography-text>
 | 
			
		||||
              {{ userInfo.nickname }} {{ $t('monitor.studioPreview.studio') }}
 | 
			
		||||
              {{ userInfo.nickname }} {{ $t('realTimeMonitor.studioPreview.studio') }}
 | 
			
		||||
            </a-typography-text>
 | 
			
		||||
          </a-space>
 | 
			
		||||
        </div>
 | 
			
		||||
        <a-typography-text type="secondary">
 | 
			
		||||
          36,000 {{ $t('monitor.studioPreview.watching') }}
 | 
			
		||||
          36,000 {{ $t('realTimeMonitor.studioPreview.watching') }}
 | 
			
		||||
        </a-typography-text>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="container">
 | 
			
		||||
    <Breadcrumb :items="['menu.dashboard', 'menu.dashboard.monitor']" />
 | 
			
		||||
    <Breadcrumb :items="['menu.dashboard', 'menu.dashboard.realTimeMonitor']" />
 | 
			
		||||
    <div class="layout">
 | 
			
		||||
      <div class="layout-left-side">
 | 
			
		||||
        <ChatPanel />
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
  export default {
 | 
			
		||||
    name: 'Monitor',
 | 
			
		||||
    name: 'RealTimeMonitor',
 | 
			
		||||
  };
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,48 @@
 | 
			
		||||
export default {
 | 
			
		||||
  'menu.dashboard.realTimeMonitor': 'Real-time Monitor',
 | 
			
		||||
  'realTimeMonitor.title.chatPanel': 'Chat Window',
 | 
			
		||||
  'realTimeMonitor.title.quickOperation': 'Quick Operation',
 | 
			
		||||
  'realTimeMonitor.title.studioInfo': 'Studio Information',
 | 
			
		||||
  'realTimeMonitor.title.studioPreview': 'Studio Preview',
 | 
			
		||||
  'realTimeMonitor.chat.options.all': 'All',
 | 
			
		||||
  'realTimeMonitor.chat.placeholder.searchCategory': 'Search Category',
 | 
			
		||||
  'realTimeMonitor.chat.update': 'Update',
 | 
			
		||||
  'realTimeMonitor.list.title.order': 'Order',
 | 
			
		||||
  'realTimeMonitor.list.title.cover': 'Cover',
 | 
			
		||||
  'realTimeMonitor.list.title.name': 'Name',
 | 
			
		||||
  'realTimeMonitor.list.title.duration': 'Duration',
 | 
			
		||||
  'realTimeMonitor.list.title.id': 'ID',
 | 
			
		||||
  'realTimeMonitor.list.tip.rotations': 'Rotations ',
 | 
			
		||||
  'realTimeMonitor.list.tip.rest': ', The program list is not visible to viewers',
 | 
			
		||||
  'realTimeMonitor.list.tag.auditFailed': 'Audit Failed',
 | 
			
		||||
  'realTimeMonitor.tab.title.liveMethod': 'Live Method',
 | 
			
		||||
  'realTimeMonitor.tab.title.onlinePopulation': 'Online Population',
 | 
			
		||||
  'realTimeMonitor.liveMethod.normal': 'Normal Live',
 | 
			
		||||
  'realTimeMonitor.liveMethod.flowControl': 'Flow Control Live',
 | 
			
		||||
  'realTimeMonitor.liveMethod.video': 'Video Live',
 | 
			
		||||
  'realTimeMonitor.liveMethod.web': 'Web Live',
 | 
			
		||||
  'realTimeMonitor.editCarousel': 'Edit',
 | 
			
		||||
  'realTimeMonitor.startCarousel': 'Start',
 | 
			
		||||
  'realTimeMonitor.quickOperation.changeClarity': 'Change the Clarity',
 | 
			
		||||
  'realTimeMonitor.quickOperation.switchStream': 'Switch Stream',
 | 
			
		||||
  'realTimeMonitor.quickOperation.removeClarity': 'Remove the Clarity',
 | 
			
		||||
  'realTimeMonitor.quickOperation.pushFlowGasket': 'Push Flow Gasket',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.studioTitle': 'Studio Title',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.onlineNotification': 'Online Notification',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.studioCategory': 'Studio Category',
 | 
			
		||||
  'realTimeMonitor.studioInfo.placeholder.studioTitle': "'s Studio",
 | 
			
		||||
  'realTimeMonitor.studioInfo.btn.fresh': 'Fresh',
 | 
			
		||||
  'realTimeMonitor.studioStatus.title.studioStatus': 'Studio Status',
 | 
			
		||||
  'realTimeMonitor.studioStatus.title.pictureInfo': 'Picture Information',
 | 
			
		||||
  'realTimeMonitor.studioStatus.smooth': 'Smooth',
 | 
			
		||||
  'realTimeMonitor.studioStatus.frameRate': 'Frame',
 | 
			
		||||
  'realTimeMonitor.studioStatus.bitRate': 'Bit',
 | 
			
		||||
  'realTimeMonitor.studioStatus.mainstream': 'Main',
 | 
			
		||||
  'realTimeMonitor.studioStatus.hotStandby': 'Hot',
 | 
			
		||||
  'realTimeMonitor.studioStatus.coldStandby': 'Cold',
 | 
			
		||||
  'realTimeMonitor.studioStatus.line': 'Line',
 | 
			
		||||
  'realTimeMonitor.studioStatus.play': 'Format',
 | 
			
		||||
  'realTimeMonitor.studioStatus.pictureQuality': 'Quality',
 | 
			
		||||
  'realTimeMonitor.studioPreview.studio': 'Studio',
 | 
			
		||||
  'realTimeMonitor.studioPreview.watching': 'watching',
 | 
			
		||||
};
 | 
			
		||||
@@ -0,0 +1,48 @@
 | 
			
		||||
export default {
 | 
			
		||||
  'menu.dashboard.realTimeMonitor': '实时监控',
 | 
			
		||||
  'realTimeMonitor.title.chatPanel': '聊天窗口',
 | 
			
		||||
  'realTimeMonitor.title.quickOperation': '快捷操作',
 | 
			
		||||
  'realTimeMonitor.title.studioInfo': '直播信息',
 | 
			
		||||
  'realTimeMonitor.title.studioPreview': '直播预览',
 | 
			
		||||
  'realTimeMonitor.chat.options.all': '全部',
 | 
			
		||||
  'realTimeMonitor.chat.placeholder.searchCategory': '搜索类目',
 | 
			
		||||
  'realTimeMonitor.chat.update': '更新',
 | 
			
		||||
  'realTimeMonitor.list.title.order': '序号',
 | 
			
		||||
  'realTimeMonitor.list.title.cover': '封面',
 | 
			
		||||
  'realTimeMonitor.list.title.name': '名称',
 | 
			
		||||
  'realTimeMonitor.list.title.duration': '视频时长',
 | 
			
		||||
  'realTimeMonitor.list.title.id': '视频Id',
 | 
			
		||||
  'realTimeMonitor.list.tip.rotations': '轮播次数',
 | 
			
		||||
  'realTimeMonitor.list.tip.rest': ',节目单观众不可见',
 | 
			
		||||
  'realTimeMonitor.list.tag.auditFailed': '审核未通过',
 | 
			
		||||
  'realTimeMonitor.tab.title.liveMethod': '直播方式',
 | 
			
		||||
  'realTimeMonitor.tab.title.onlinePopulation': '在线人数',
 | 
			
		||||
  'realTimeMonitor.liveMethod.normal': '普通直播',
 | 
			
		||||
  'realTimeMonitor.liveMethod.flowControl': '控流直播',
 | 
			
		||||
  'realTimeMonitor.liveMethod.video': '视频直播',
 | 
			
		||||
  'realTimeMonitor.liveMethod.web': '网页开播',
 | 
			
		||||
  'realTimeMonitor.editCarousel': '编辑轮播',
 | 
			
		||||
  'realTimeMonitor.startCarousel': '开始轮播',
 | 
			
		||||
  'realTimeMonitor.quickOperation.changeClarity': '切换清晰度',
 | 
			
		||||
  'realTimeMonitor.quickOperation.switchStream': '主备流切换',
 | 
			
		||||
  'realTimeMonitor.quickOperation.removeClarity': '摘除清晰度',
 | 
			
		||||
  'realTimeMonitor.quickOperation.pushFlowGasket': '推流垫片',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.studioTitle': '直播标题',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.onlineNotification': '上线通知',
 | 
			
		||||
  'realTimeMonitor.studioInfo.label.studioCategory': '直播类目',
 | 
			
		||||
  'realTimeMonitor.studioInfo.placeholder.studioTitle': '的直播间',
 | 
			
		||||
  'realTimeMonitor.studioInfo.btn.fresh': '更新',
 | 
			
		||||
  'realTimeMonitor.studioStatus.title.studioStatus': '直播状态',
 | 
			
		||||
  'realTimeMonitor.studioStatus.title.pictureInfo': '画面信息',
 | 
			
		||||
  'realTimeMonitor.studioStatus.smooth': '流畅',
 | 
			
		||||
  'realTimeMonitor.studioStatus.frameRate': '帧率',
 | 
			
		||||
  'realTimeMonitor.studioStatus.bitRate': '码率',
 | 
			
		||||
  'realTimeMonitor.studioStatus.mainstream': '主流',
 | 
			
		||||
  'realTimeMonitor.studioStatus.hotStandby': '热备',
 | 
			
		||||
  'realTimeMonitor.studioStatus.coldStandby': '冷备',
 | 
			
		||||
  'realTimeMonitor.studioStatus.line': '线路',
 | 
			
		||||
  'realTimeMonitor.studioStatus.play': '播放格式',
 | 
			
		||||
  'realTimeMonitor.studioStatus.pictureQuality': '画质',
 | 
			
		||||
  'realTimeMonitor.studioPreview.studio': '直播间',
 | 
			
		||||
  'realTimeMonitor.studioPreview.watching': '在看',
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user