diff --git a/src/router/routes/newModules/dashboard.ts b/src/router/routes/newModules/dashboard.ts index 8011816..6e70b11 100644 --- a/src/router/routes/newModules/dashboard.ts +++ b/src/router/routes/newModules/dashboard.ts @@ -24,13 +24,12 @@ const DASHBOARD: AppRouteRecordRaw = { }, { path: 'monitor', - alias: 'MonitoringPanel', name: 'Monitor', component: () => import('@/views/home/monitor/index.vue'), meta: { locale: 'menu.home.monitor', requiresAuth: true, - roles: ['admin'], + permission: 'Home.Monitor', }, }, ], diff --git a/src/utils/route-name-mapper.ts b/src/utils/route-name-mapper.ts index 7405bc1..ef23f5c 100644 --- a/src/utils/route-name-mapper.ts +++ b/src/utils/route-name-mapper.ts @@ -16,6 +16,8 @@ const routeNameMap: Record = { // 首页相关 'home_workplace': 'Workplace', '/home/workplace': 'Workplace', + 'home_monitor': 'Monitor', + '/home/monitor': 'Monitor', 'home': 'Home', '/home': 'Home', diff --git a/src/views/home/monitor/components/chat-item.vue b/src/views/home/monitor/components/chat-item.vue deleted file mode 100644 index 7900366..0000000 --- a/src/views/home/monitor/components/chat-item.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/chat-list.vue b/src/views/home/monitor/components/chat-list.vue deleted file mode 100644 index 939bb63..0000000 --- a/src/views/home/monitor/components/chat-list.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/chat-panel.vue b/src/views/home/monitor/components/chat-panel.vue deleted file mode 100644 index 25ffdb9..0000000 --- a/src/views/home/monitor/components/chat-panel.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/data-statistic-list.vue b/src/views/home/monitor/components/data-statistic-list.vue deleted file mode 100644 index 8b00394..0000000 --- a/src/views/home/monitor/components/data-statistic-list.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/data-statistic.vue b/src/views/home/monitor/components/data-statistic.vue deleted file mode 100644 index 3fcad0f..0000000 --- a/src/views/home/monitor/components/data-statistic.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/quick-operation.vue b/src/views/home/monitor/components/quick-operation.vue deleted file mode 100644 index c37db88..0000000 --- a/src/views/home/monitor/components/quick-operation.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/src/views/home/monitor/components/studio-information.vue b/src/views/home/monitor/components/studio-information.vue deleted file mode 100644 index ba3f756..0000000 --- a/src/views/home/monitor/components/studio-information.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/src/views/home/monitor/components/studio-status.vue b/src/views/home/monitor/components/studio-status.vue deleted file mode 100644 index d6ecc6c..0000000 --- a/src/views/home/monitor/components/studio-status.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/components/studio.vue b/src/views/home/monitor/components/studio.vue deleted file mode 100644 index 9ae8651..0000000 --- a/src/views/home/monitor/components/studio.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/src/views/home/monitor/index.vue b/src/views/home/monitor/index.vue index 5495f8f..dd74f76 100644 --- a/src/views/home/monitor/index.vue +++ b/src/views/home/monitor/index.vue @@ -1,120 +1,1314 @@ + import { ref, computed, watch, onMounted, onUnmounted, nextTick } from 'vue'; + import * as echarts from 'echarts'; + import { modifyAlpha } from 'zrender/lib/tool/color'; + import { useI18n } from 'vue-i18n'; - diff --git a/src/views/home/monitor/locale/en-US.ts b/src/views/home/monitor/locale/en-US.ts index 7a4272a..c1338eb 100644 --- a/src/views/home/monitor/locale/en-US.ts +++ b/src/views/home/monitor/locale/en-US.ts @@ -1,48 +1,63 @@ export default { 'menu.home.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', + 'monitor.logistics.pageTitle': 'Real-time monitoring center', + 'monitor.logistics.stat.todayOrders': 'Forecast orders today', + 'monitor.logistics.stat.historicalOrders': 'All-time orders', + 'monitor.logistics.stat.pendingPayment': 'Pending payment', + 'monitor.logistics.stat.pendingOnline': 'Pending carrier scan', + 'monitor.logistics.stat.pendingSign': 'Pending delivery', + 'monitor.logistics.stat.orderExceptions': 'Order exceptions', + 'monitor.logistics.stat.todayRevenue': 'Revenue today', + 'monitor.logistics.stat.totalCustomers': 'Total customers', + 'monitor.logistics.stat.newCustomers': 'New customers', + 'monitor.logistics.stat.onlineCustomers': 'Online customers', + 'monitor.logistics.stat.inactiveLogin7d': 'No login 7+ days', + 'monitor.logistics.vsYesterday': 'vs yesterday', + 'monitor.logistics.vsLastMonth': 'vs last month', + 'monitor.logistics.hint.newCustomersToday': 'New sign-ups today', + 'monitor.logistics.hint.onlineRealtime': 'Active sessions (live)', + 'monitor.logistics.hint.inactiveLogin7d': 'Customers with no login in 7+ days', + 'monitor.logistics.hint.inactiveLogin7dCompare': '+5 vs last week', + 'monitor.logistics.chart.orders7d': 'Order volume (last 7 days)', + 'monitor.logistics.chart.revenueGross7d': 'Revenue & gross profit (last 7 days)', + 'monitor.logistics.chart.customerTrendsSection': 'By lane · week / month trends', + 'monitor.logistics.chart.customerOrdersByLine': 'Order volume trend', + 'monitor.logistics.chart.customerReceivableByLine': 'Accounts receivable trend', + 'monitor.logistics.axis.weekIndex': 'W{n}', + 'monitor.logistics.axis.monthIndex': 'M{n}', + 'monitor.logistics.chart.signRateByLine': 'On-time sign-off rate by lane', + 'monitor.logistics.axis.complianceRate': 'Compliance rate', + 'monitor.logistics.series.signRate': 'Sign-off compliance', + 'monitor.logistics.filter.line': 'Lane', + 'monitor.logistics.filter.signDays': 'Sign-off days', + 'monitor.logistics.filter.allLines': 'All lanes', + 'monitor.logistics.filter.signDaysOption': '{n} days', + 'monitor.logistics.line.us': 'US lane', + 'monitor.logistics.line.eu': 'EU lane', + 'monitor.logistics.line.sea': 'SEA lane', + 'monitor.logistics.line.au': 'AU lane', + 'monitor.logistics.line.jp': 'JP lane', + 'monitor.logistics.line.uk': 'UK lane', + 'monitor.logistics.series.orders': 'Orders', + 'monitor.logistics.series.revenue': 'Revenue', + 'monitor.logistics.series.grossProfit': 'Gross profit', + 'monitor.logistics.axis.d1': 'Day 1', + 'monitor.logistics.axis.d2': 'Day 2', + 'monitor.logistics.axis.d3': 'Day 3', + 'monitor.logistics.axis.d4': 'Day 4', + 'monitor.logistics.axis.d5': 'Day 5', + 'monitor.logistics.axis.d6': 'Day 6', + 'monitor.logistics.axis.today': 'Today', + 'monitor.logistics.filter.statPeriod': 'Period', + 'monitor.logistics.filter.periodWeek': 'Week', + 'monitor.logistics.filter.periodMonth': 'Month', + 'monitor.logistics.pie.sectionTitle': 'Track & OTD (by lane / period)', + 'monitor.logistics.pie.trackComplete': 'Track completeness', + 'monitor.logistics.pie.trackTimely': 'Track timeliness', + 'monitor.logistics.pie.otd': 'OTD compliance', + 'monitor.logistics.pie.pass': 'Met', + 'monitor.logistics.pie.fail': 'Not met', + 'monitor.logistics.tab.customer': 'Customers', + 'monitor.logistics.tab.order': 'Orders', + 'monitor.logistics.tab.track': 'Tracking', }; diff --git a/src/views/home/monitor/locale/zh-CN.ts b/src/views/home/monitor/locale/zh-CN.ts index f46a87a..0218612 100644 --- a/src/views/home/monitor/locale/zh-CN.ts +++ b/src/views/home/monitor/locale/zh-CN.ts @@ -1,48 +1,63 @@ export default { 'menu.home.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': '在看', + 'monitor.logistics.pageTitle': '实时监控中心', + 'monitor.logistics.stat.todayOrders': '今日预报订单', + 'monitor.logistics.stat.historicalOrders': '历史总订单', + 'monitor.logistics.stat.pendingPayment': '待支付订单', + 'monitor.logistics.stat.pendingOnline': '待上网订单', + 'monitor.logistics.stat.pendingSign': '待签收订单', + 'monitor.logistics.stat.orderExceptions': '订单异常', + 'monitor.logistics.stat.todayRevenue': '今日总营收', + 'monitor.logistics.stat.totalCustomers': '客户总数', + 'monitor.logistics.stat.newCustomers': '新增客户数', + 'monitor.logistics.stat.onlineCustomers': '在线客户数', + 'monitor.logistics.stat.inactiveLogin7d': '超7天未登录', + 'monitor.logistics.vsYesterday': '较昨日', + 'monitor.logistics.vsLastMonth': '较上月', + 'monitor.logistics.hint.newCustomersToday': '统计口径:今日新注册', + 'monitor.logistics.hint.onlineRealtime': '当前在线会话数(实时)', + 'monitor.logistics.hint.inactiveLogin7d': '超7天未产生登录行为的客户', + 'monitor.logistics.hint.inactiveLogin7dCompare': '较上周 +5 人', + 'monitor.logistics.chart.orders7d': '近7日订单数趋势', + 'monitor.logistics.chart.revenueGross7d': '近7日营收 & 毛利趋势', + 'monitor.logistics.chart.customerTrendsSection': '按线路 · 周/月趋势', + 'monitor.logistics.chart.customerOrdersByLine': '单量趋势', + 'monitor.logistics.chart.customerReceivableByLine': '应收趋势', + 'monitor.logistics.axis.weekIndex': '第{n}周', + 'monitor.logistics.axis.monthIndex': '{n}月', + 'monitor.logistics.chart.signRateByLine': '各线路签收达标率', + 'monitor.logistics.axis.complianceRate': '达标率', + 'monitor.logistics.series.signRate': '签收达标率', + 'monitor.logistics.filter.line': '线路', + 'monitor.logistics.filter.signDays': '签收天数', + 'monitor.logistics.filter.allLines': '全部线路', + 'monitor.logistics.filter.signDaysOption': '{n} 天', + 'monitor.logistics.line.us': '美线', + 'monitor.logistics.line.eu': '欧线', + 'monitor.logistics.line.sea': '东南亚线', + 'monitor.logistics.line.au': '澳线', + 'monitor.logistics.line.jp': '日本线', + 'monitor.logistics.line.uk': '英国线', + 'monitor.logistics.series.orders': '订单数', + 'monitor.logistics.series.revenue': '营收', + 'monitor.logistics.series.grossProfit': '毛利', + 'monitor.logistics.axis.d1': '1日', + 'monitor.logistics.axis.d2': '2日', + 'monitor.logistics.axis.d3': '3日', + 'monitor.logistics.axis.d4': '4日', + 'monitor.logistics.axis.d5': '5日', + 'monitor.logistics.axis.d6': '6日', + 'monitor.logistics.axis.today': '今日', + 'monitor.logistics.filter.statPeriod': '统计周期', + 'monitor.logistics.filter.periodWeek': '周', + 'monitor.logistics.filter.periodMonth': '月', + 'monitor.logistics.pie.sectionTitle': '轨迹与 OTD 达成(按线路 / 周期)', + 'monitor.logistics.pie.trackComplete': '轨迹完整率', + 'monitor.logistics.pie.trackTimely': '轨迹及时率', + 'monitor.logistics.pie.otd': 'OTD 达标率', + 'monitor.logistics.pie.pass': '达标', + 'monitor.logistics.pie.fail': '未达标', + 'monitor.logistics.tab.customer': '客户', + 'monitor.logistics.tab.order': '订单', + 'monitor.logistics.tab.track': '轨迹', }; diff --git a/src/views/home/monitor/mock.ts b/src/views/home/monitor/mock.ts index 47bee2d..4bdc142 100644 --- a/src/views/home/monitor/mock.ts +++ b/src/views/home/monitor/mock.ts @@ -1,26 +1,7 @@ -import Mock from 'mockjs'; - -import setupMock, { - successResponseWrap, - // failResponseWrap, -} from '@/utils/setup-mock'; +import setupMock from '@/utils/setup-mock'; setupMock({ setup() { - Mock.mock(new RegExp('/api/chat/list'), () => { - // return failResponseWrap(null, '重新登陆', 50008); - const data = Mock.mock({ - 'data|4-6': [ - { - 'id|+1': 1, - 'username': '用户7352772', - 'content': '马上就开始了,好激动!', - 'time': '13:09:12', - 'isCollect|2': true, - }, - ], - }); - return successResponseWrap(data.data); - }); + /* 物流监控页暂无独立 Mock 接口 */ }, }); diff --git a/src/views/home/workplace/components/announcement.vue b/src/views/home/workplace/components/announcement.vue index 504fa85..c68b514 100644 --- a/src/views/home/workplace/components/announcement.vue +++ b/src/views/home/workplace/components/announcement.vue @@ -101,7 +101,6 @@ height: 24px; margin-bottom: 4px; cursor: pointer; - transition: background-color 0.2s; &:hover { background-color: var(--color-fill-1); diff --git a/src/views/home/workplace/components/data-panel.vue b/src/views/home/workplace/components/data-panel.vue index c173679..fd9344b 100644 --- a/src/views/home/workplace/components/data-panel.vue +++ b/src/views/home/workplace/components/data-panel.vue @@ -12,8 +12,6 @@ :title="$t('workplace.onlineContent')" :value="373.5" :precision="1" - :value-from="0" - animation show-group-separator >