fix: 🐛 修复刷新页面后,选中菜单无法保持展开状态的问题

1.父级菜单也必须存在 name 属性,父级菜单 name 属性,在很早之前曾考虑过移除,后来发现会引起
Bug,于是没有改动。但前段时间调整动态路由时没有想起该情况,一时疏忽移除了,所幸发现问题不晚,现在及时恢复回来
2.优化实时监控示例的相关变量命名
This commit is contained in:
Charles7c 2023-09-05 23:22:00 +08:00
parent 10ca5d8c76
commit 3fc7adb1e2
31 changed files with 193 additions and 184 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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';

View File

@ -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: {

View File

@ -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: {

View File

@ -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: {

View File

@ -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: {

View File

@ -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: {

View File

@ -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: ['*'],
},

View File

@ -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: {

View File

@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
import { AppRouteRecordRaw } from '../types';
const Monitor: AppRouteRecordRaw = {
name: 'Monitor',
path: '/monitor',
component: DEFAULT_LAYOUT,
meta: {

View File

@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
import { AppRouteRecordRaw } from '../types';
const System: AppRouteRecordRaw = {
name: 'System',
path: '/system',
component: DEFAULT_LAYOUT,
meta: {

View File

@ -2,6 +2,7 @@ import { DEFAULT_LAYOUT } from '../base';
import { AppRouteRecordRaw } from '../types';
const Tool: AppRouteRecordRaw = {
name: 'Tool',
path: '/tool',
component: DEFAULT_LAYOUT,
meta: {

View File

@ -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>

View File

@ -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',
};

View File

@ -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': '在看',
};

View File

@ -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>

View File

@ -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'),
},
];
});

View File

@ -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 />

View File

@ -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>

View File

@ -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>

View File

@ -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: '原画',
},
]);

View File

@ -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>

View File

@ -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>

View File

@ -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',
};

View File

@ -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': '在看',
};

View File

@ -2,7 +2,7 @@
-- changeset Charles7c:1
-- 初始化默认菜单
INSERT IGNORE INTO `sys_menu` VALUES (1000, '系统管理', 0, 1, '/system', NULL, NULL, 'settings', b'0', b'0', b'0', NULL, 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1000, '系统管理', 0, 1, '/system', 'System', NULL, 'settings', b'0', b'0', b'0', NULL, 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1010, '用户管理', 1000, 2, '/system/user', 'User', '/system/user/index', NULL, b'0', b'0', b'0', 'system:user:list', 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1011, '用户新增', 1010, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:user:add', 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1012, '用户修改', 1010, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:user:update', 2, 1, 1, NOW(), NULL, NULL);
@ -25,7 +25,7 @@ INSERT IGNORE INTO `sys_menu` VALUES (1901, '菜单新增', 1900, 3, NULL, NULL,
INSERT IGNORE INTO `sys_menu` VALUES (1902, '菜单修改', 1900, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:menu:update', 2, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1903, '菜单删除', 1900, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:menu:delete', 3, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1904, '菜单导出', 1900, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:menu:export', 4, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (9000, '系统监控', 0, 1, '/monitor', NULL, NULL, 'computer', b'0', b'0', b'0', NULL, 899, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (9000, '系统监控', 0, 1, '/monitor', 'Monitor', NULL, 'computer', b'0', b'0', b'0', NULL, 899, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (9010, '在线用户', 9000, 2, '/monitor/online', 'OnlineUser', '/monitor/online/index', NULL, b'0', b'0', b'0', 'monitor:online:user:list', 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (9011, '强退用户', 9010, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'monitor:online:user:delete', 1, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (9030, '登录日志', 9000, 2, '/monitor/log/login', 'LoginLog', '/monitor/log/login/index', NULL, b'0', b'0', b'0', 'monitor:log:login:list', 2, 1, 1, NOW(), NULL, NULL);

View File

@ -6,5 +6,5 @@ INSERT IGNORE INTO `sys_menu` VALUES (1041, '公告新增', 1040, 3, NULL, NULL,
INSERT IGNORE INTO `sys_menu` VALUES (1042, '公告修改', 1040, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:announcement:update', 2, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1043, '公告删除', 1040, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:announcement:delete', 3, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (1044, '公告导出', 1040, 3, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'system:announcement:export', 4, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (2000, '系统工具', 0, 1, '/tool', NULL, NULL, 'tool', b'0', b'0', b'0', NULL, 2, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (2000, '系统工具', 0, 1, '/tool', 'Tool', NULL, 'tool', b'0', b'0', b'0', NULL, 2, 1, 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_menu` VALUES (2010, '代码生成', 2000, 2, '/tool/generator', 'Generator', '/tool/generator/index', NULL, b'0', b'0', b'0', 'tool:generator:list', 1, 1, 1, NOW(), NULL, NULL);