feat: add Portfolio Management module with AI monitoring
This commit is contained in:
@@ -8,6 +8,15 @@ const components = {
|
||||
}
|
||||
|
||||
const locale = {
|
||||
// Common
|
||||
'common.confirm': 'Confirm',
|
||||
'common.cancel': 'Cancel',
|
||||
'common.save': 'Save',
|
||||
'common.delete': 'Delete',
|
||||
'common.edit': 'Edit',
|
||||
'common.add': 'Add',
|
||||
'common.close': 'Close',
|
||||
'common.ok': 'OK',
|
||||
'submit': 'Submit',
|
||||
'save': 'Save',
|
||||
'submit.ok': 'Submit successfully',
|
||||
@@ -19,6 +28,7 @@ const locale = {
|
||||
'menu.dashboard.indicator': 'Indicator Analysis',
|
||||
'menu.dashboard.community': 'Indicator Community',
|
||||
'menu.dashboard.tradingAssistant': 'Trading Assistant',
|
||||
'menu.dashboard.portfolio': 'Portfolio',
|
||||
'menu.settings': 'Settings',
|
||||
'menu.dashboard.aiTradingAssistant': 'AI Trading Assistant',
|
||||
'menu.dashboard.signalRobot': 'Signal Robot',
|
||||
@@ -97,6 +107,36 @@ const locale = {
|
||||
'app.setting.themecolor.geekblue': 'Geek Blue',
|
||||
'app.setting.themecolor.purple': 'Golden Purple',
|
||||
'app.setting.tooltip': 'Page Settings',
|
||||
|
||||
// Notification Center
|
||||
'notice.title': 'Notifications',
|
||||
'notice.empty': 'No notifications',
|
||||
'notice.markAllRead': 'Mark all as read',
|
||||
'notice.clear': 'Clear all',
|
||||
'notice.close': 'Close',
|
||||
'notice.justNow': 'Just now',
|
||||
'notice.minutesAgo': 'minutes ago',
|
||||
'notice.hoursAgo': 'hours ago',
|
||||
'notice.daysAgo': 'days ago',
|
||||
'notice.detailInfo': 'Details',
|
||||
'notice.aiDecision': 'AI Decision',
|
||||
'notice.confidence': 'Confidence',
|
||||
'notice.reasoning': 'Reasoning',
|
||||
'notice.symbol': 'Symbol',
|
||||
'notice.currentPrice': 'Current Price',
|
||||
'notice.triggerPrice': 'Trigger Price',
|
||||
'notice.action': 'Action',
|
||||
'notice.quantity': 'Quantity',
|
||||
'notice.viewPortfolio': 'View Portfolio',
|
||||
'notice.type.aiMonitor': 'AI Monitor',
|
||||
'notice.type.priceAlert': 'Price Alert',
|
||||
'notice.type.signal': 'Trade Signal',
|
||||
'notice.type.buy': 'Buy Signal',
|
||||
'notice.type.sell': 'Sell Signal',
|
||||
'notice.type.hold': 'Hold Suggestion',
|
||||
'notice.type.trade': 'Trade Execution',
|
||||
'notice.type.notification': 'Notification',
|
||||
|
||||
'user.login.userName': 'userName',
|
||||
'user.login.password': 'password',
|
||||
'user.login.username.placeholder': 'Account: admin',
|
||||
@@ -2049,7 +2089,140 @@ const locale = {
|
||||
'settings.desc.MAKER_WAIT_SEC': 'Wait time for limit order fill before switching to market order',
|
||||
'settings.desc.MAKER_OFFSET_BPS': 'Price offset in basis points. Buy: price*(1-offset), Sell: price*(1+offset)',
|
||||
'settings.desc.TIINGO_API_KEY': 'Tiingo API key for Forex/Metals data (free tier does not support 1-minute data)',
|
||||
'settings.desc.TIINGO_TIMEOUT': 'Tiingo API request timeout'
|
||||
'settings.desc.TIINGO_TIMEOUT': 'Tiingo API request timeout',
|
||||
|
||||
// Portfolio
|
||||
'portfolio.summary.totalValue': 'Total Value',
|
||||
'portfolio.summary.totalCost': 'Total Cost',
|
||||
'portfolio.summary.totalPnl': 'Total P&L',
|
||||
'portfolio.summary.positionCount': 'Positions',
|
||||
'portfolio.summary.profitLossRatio': 'Profit/Loss',
|
||||
'portfolio.summary.today': 'Today',
|
||||
'portfolio.summary.todayPnl': 'Today P&L',
|
||||
'portfolio.summary.bestPerformer': 'Best Performer',
|
||||
'portfolio.summary.worstPerformer': 'Worst Performer',
|
||||
'portfolio.summary.priceSync': 'Price Sync',
|
||||
'portfolio.summary.syncInterval': 'Refresh',
|
||||
'portfolio.summary.justNow': 'Just now',
|
||||
'portfolio.summary.ago': ' ago',
|
||||
'portfolio.positions.title': 'My Positions',
|
||||
'portfolio.positions.add': 'Add Position',
|
||||
'portfolio.positions.addFirst': 'Add Your First Position',
|
||||
'portfolio.positions.empty': 'No positions yet',
|
||||
'portfolio.positions.deleteConfirm': 'Are you sure to delete this position?',
|
||||
'portfolio.positions.currentPrice': 'Current',
|
||||
'portfolio.positions.entryPrice': 'Entry',
|
||||
'portfolio.positions.quantity': 'Quantity',
|
||||
'portfolio.positions.side': 'Side',
|
||||
'portfolio.positions.long': 'Long',
|
||||
'portfolio.positions.short': 'Short',
|
||||
'portfolio.positions.marketValue': 'Value',
|
||||
'portfolio.positions.pnl': 'P&L',
|
||||
'portfolio.positions.items': 'positions',
|
||||
'portfolio.monitors.title': 'AI Monitors',
|
||||
'portfolio.monitors.add': 'Add Monitor',
|
||||
'portfolio.monitors.addFirst': 'Add AI Monitor',
|
||||
'portfolio.monitors.empty': 'No monitors yet',
|
||||
'portfolio.monitors.deleteConfirm': 'Are you sure to delete this monitor?',
|
||||
'portfolio.monitors.interval': 'Interval',
|
||||
'portfolio.monitors.lastRun': 'Last Run',
|
||||
'portfolio.monitors.nextRun': 'Next Run',
|
||||
'portfolio.monitors.channels': 'Channels',
|
||||
'portfolio.monitors.runNow': 'Run Now',
|
||||
'portfolio.monitors.analysisResult': 'AI Analysis Result',
|
||||
'portfolio.modal.addPosition': 'Add Position',
|
||||
'portfolio.modal.editPosition': 'Edit Position',
|
||||
'portfolio.modal.addMonitor': 'Add Monitor',
|
||||
'portfolio.modal.editMonitor': 'Edit Monitor',
|
||||
'portfolio.form.market': 'Market',
|
||||
'portfolio.form.marketRequired': 'Please select a market',
|
||||
'portfolio.form.selectMarket': 'Select Market',
|
||||
'portfolio.form.symbol': 'Symbol',
|
||||
'portfolio.form.symbolRequired': 'Please enter symbol',
|
||||
'portfolio.form.searchSymbol': 'Search or enter symbol',
|
||||
'portfolio.form.useAsSymbol': 'Use',
|
||||
'portfolio.form.asSymbolCode': 'as symbol code',
|
||||
'portfolio.form.symbolHint': 'Search symbols or enter any code directly',
|
||||
'portfolio.form.side': 'Side',
|
||||
'portfolio.form.quantity': 'Quantity',
|
||||
'portfolio.form.quantityRequired': 'Please enter quantity',
|
||||
'portfolio.form.enterQuantity': 'Enter quantity',
|
||||
'portfolio.form.entryPrice': 'Entry Price',
|
||||
'portfolio.form.entryPriceRequired': 'Please enter entry price',
|
||||
'portfolio.form.enterEntryPrice': 'Enter entry price',
|
||||
'portfolio.form.notes': 'Notes',
|
||||
'portfolio.form.enterNotes': 'Optional: Add notes',
|
||||
'portfolio.form.monitorName': 'Monitor Name',
|
||||
'portfolio.form.monitorNameRequired': 'Please enter monitor name',
|
||||
'portfolio.form.enterMonitorName': 'e.g. Daily Portfolio Analysis',
|
||||
'portfolio.form.interval': 'Interval',
|
||||
'portfolio.form.minutes': 'minutes',
|
||||
'portfolio.form.hour': 'hour',
|
||||
'portfolio.form.hours': 'hours',
|
||||
'portfolio.form.notifyChannels': 'Notify Channels',
|
||||
'portfolio.form.browser': 'Browser',
|
||||
'portfolio.form.email': 'Email',
|
||||
'portfolio.form.telegramChatId': 'Telegram Chat ID',
|
||||
'portfolio.form.enterTelegramChatId': 'Enter Telegram Chat ID',
|
||||
'portfolio.form.telegramRequired': 'Please enter Telegram Chat ID',
|
||||
'portfolio.form.emailAddress': 'Email Address',
|
||||
'portfolio.form.enterEmail': 'Enter email address',
|
||||
'portfolio.form.emailRequired': 'Please enter email address',
|
||||
'portfolio.form.emailInvalid': 'Please enter a valid email address',
|
||||
'portfolio.form.customPrompt': 'Custom Prompt',
|
||||
'portfolio.form.customPromptPlaceholder': 'Optional: Add focus areas, e.g. "Focus on tech stock risks"',
|
||||
'portfolio.form.monitorScope': 'Monitor Scope',
|
||||
'portfolio.form.allPositions': 'All Positions',
|
||||
'portfolio.form.selectedPositions': 'Selected Positions',
|
||||
'portfolio.form.selectPositions': 'Select Positions',
|
||||
'portfolio.form.selectAll': 'Select All',
|
||||
'portfolio.form.deselectAll': 'Deselect All',
|
||||
'portfolio.form.selectedCount': '{count} of {total} selected',
|
||||
'portfolio.form.pleaseSelectPositions': 'Please select at least one position to monitor',
|
||||
'portfolio.message.loadFailed': 'Failed to load data',
|
||||
'portfolio.message.saveSuccess': 'Saved successfully',
|
||||
'portfolio.message.saveFailed': 'Failed to save',
|
||||
'portfolio.message.deleteSuccess': 'Deleted successfully',
|
||||
'portfolio.message.deleteFailed': 'Failed to delete',
|
||||
'portfolio.message.updateFailed': 'Failed to update',
|
||||
'portfolio.message.monitorEnabled': 'Monitor enabled',
|
||||
'portfolio.message.monitorDisabled': 'Monitor paused',
|
||||
'portfolio.message.monitorRunSuccess': 'Analysis completed',
|
||||
'portfolio.message.monitorRunFailed': 'Analysis failed',
|
||||
// Portfolio - Groups
|
||||
'portfolio.groups.all': 'All Positions',
|
||||
'portfolio.groups.ungrouped': 'Ungrouped',
|
||||
'portfolio.form.group': 'Group',
|
||||
'portfolio.form.enterGroup': 'Enter or select group',
|
||||
// Portfolio - Alerts
|
||||
'portfolio.alerts.title': 'Price/PnL Alerts',
|
||||
'portfolio.alerts.addAlert': 'Add Alert',
|
||||
'portfolio.alerts.editAlert': 'Edit Alert',
|
||||
'portfolio.alerts.alertType': 'Alert Type',
|
||||
'portfolio.alerts.priceAbove': 'Price Above',
|
||||
'portfolio.alerts.priceBelow': 'Price Below',
|
||||
'portfolio.alerts.pnlAbove': 'Profit Above (%)',
|
||||
'portfolio.alerts.pnlBelow': 'Loss Below (%)',
|
||||
'portfolio.alerts.threshold': 'Threshold',
|
||||
'portfolio.alerts.thresholdRequired': 'Please enter threshold',
|
||||
'portfolio.alerts.enterPrice': 'Enter price',
|
||||
'portfolio.alerts.enterPercent': 'Enter percentage',
|
||||
'portfolio.alerts.currentPrice': 'Current Price',
|
||||
'portfolio.alerts.currentPriceHint': 'Current price',
|
||||
'portfolio.alerts.repeatInterval': 'Repeat Alert',
|
||||
'portfolio.alerts.noRepeat': 'No repeat (trigger once)',
|
||||
'portfolio.alerts.every5min': 'Every 5 minutes',
|
||||
'portfolio.alerts.every15min': 'Every 15 minutes',
|
||||
'portfolio.alerts.every30min': 'Every 30 minutes',
|
||||
'portfolio.alerts.every1hour': 'Every 1 hour',
|
||||
'portfolio.alerts.every4hours': 'Every 4 hours',
|
||||
'portfolio.alerts.onceDaily': 'Once daily',
|
||||
'portfolio.alerts.enabled': 'Enable Alert',
|
||||
'portfolio.alerts.enabledDesc': 'Auto-monitor and trigger notifications',
|
||||
'portfolio.alerts.delete': 'Delete',
|
||||
'portfolio.alerts.deleteConfirm': 'Are you sure you want to delete this alert?',
|
||||
'portfolio.modal.addAlert': 'Add Alert',
|
||||
'portfolio.modal.editAlert': 'Edit Alert'
|
||||
}
|
||||
|
||||
export default {
|
||||
|
||||
@@ -8,6 +8,15 @@ momentLocale: momentCN
|
||||
}
|
||||
|
||||
const locale = {
|
||||
// 通用
|
||||
'common.confirm': '确定',
|
||||
'common.cancel': '取消',
|
||||
'common.save': '保存',
|
||||
'common.delete': '删除',
|
||||
'common.edit': '编辑',
|
||||
'common.add': '添加',
|
||||
'common.close': '关闭',
|
||||
'common.ok': '确定',
|
||||
'submit': '提交',
|
||||
'save': '保存',
|
||||
'submit.ok': '提交成功',
|
||||
@@ -19,6 +28,7 @@ const locale = {
|
||||
'menu.dashboard.community': '指标社区',
|
||||
'menu.dashboard.analysis': 'AI 分析',
|
||||
'menu.dashboard.tradingAssistant': '交易助手',
|
||||
'menu.dashboard.portfolio': '资产监测',
|
||||
'menu.settings': '系统设置',
|
||||
'menu.dashboard.aiTradingAssistant': 'AI交易助手',
|
||||
'menu.dashboard.signalRobot': '信号机器人',
|
||||
@@ -97,6 +107,36 @@ const locale = {
|
||||
'app.setting.themecolor.geekblue': '极客蓝',
|
||||
'app.setting.themecolor.purple': '酱紫',
|
||||
'app.setting.tooltip': '页面设置',
|
||||
|
||||
// 通知中心
|
||||
'notice.title': '通知中心',
|
||||
'notice.empty': '暂无通知',
|
||||
'notice.markAllRead': '全部已读',
|
||||
'notice.clear': '清空通知',
|
||||
'notice.close': '关闭',
|
||||
'notice.justNow': '刚刚',
|
||||
'notice.minutesAgo': '分钟前',
|
||||
'notice.hoursAgo': '小时前',
|
||||
'notice.daysAgo': '天前',
|
||||
'notice.detailInfo': '详细信息',
|
||||
'notice.aiDecision': 'AI决策',
|
||||
'notice.confidence': '置信度',
|
||||
'notice.reasoning': '分析理由',
|
||||
'notice.symbol': '标的代码',
|
||||
'notice.currentPrice': '当前价格',
|
||||
'notice.triggerPrice': '触发价格',
|
||||
'notice.action': '操作',
|
||||
'notice.quantity': '数量',
|
||||
'notice.viewPortfolio': '查看持仓',
|
||||
'notice.type.aiMonitor': 'AI监控',
|
||||
'notice.type.priceAlert': '价格提醒',
|
||||
'notice.type.signal': '交易信号',
|
||||
'notice.type.buy': '买入信号',
|
||||
'notice.type.sell': '卖出信号',
|
||||
'notice.type.hold': '持有建议',
|
||||
'notice.type.trade': '交易执行',
|
||||
'notice.type.notification': '系统通知',
|
||||
|
||||
'user.login.userName': '用户名',
|
||||
'user.login.password': '密码',
|
||||
'user.login.username.placeholder': '账户: admin',
|
||||
@@ -1858,7 +1898,140 @@ const locale = {
|
||||
'settings.desc.RATE_LIMIT': '每IP每分钟的API请求限制',
|
||||
'settings.desc.ENABLE_CACHE': '启用响应缓存以提高性能',
|
||||
'settings.desc.ENABLE_REQUEST_LOG': '记录所有API请求日志,用于调试',
|
||||
'settings.desc.ENABLE_AI_ANALYSIS': '启用AI驱动的市场分析功能'
|
||||
'settings.desc.ENABLE_AI_ANALYSIS': '启用AI驱动的市场分析功能',
|
||||
|
||||
// Portfolio - 资产监测
|
||||
'portfolio.summary.totalValue': '总市值',
|
||||
'portfolio.summary.totalCost': '总成本',
|
||||
'portfolio.summary.totalPnl': '总盈亏',
|
||||
'portfolio.summary.positionCount': '持仓数量',
|
||||
'portfolio.summary.profitLossRatio': '盈利/亏损',
|
||||
'portfolio.summary.today': '今日',
|
||||
'portfolio.summary.todayPnl': '今日盈亏',
|
||||
'portfolio.summary.bestPerformer': '最佳表现',
|
||||
'portfolio.summary.worstPerformer': '最差表现',
|
||||
'portfolio.summary.priceSync': '价格同步',
|
||||
'portfolio.summary.syncInterval': '刷新间隔',
|
||||
'portfolio.summary.justNow': '刚刚',
|
||||
'portfolio.summary.ago': '前',
|
||||
'portfolio.positions.title': '我的持仓',
|
||||
'portfolio.positions.add': '添加持仓',
|
||||
'portfolio.positions.addFirst': '添加第一笔持仓',
|
||||
'portfolio.positions.empty': '暂无持仓记录',
|
||||
'portfolio.positions.deleteConfirm': '确定删除这笔持仓吗?',
|
||||
'portfolio.positions.currentPrice': '现价',
|
||||
'portfolio.positions.entryPrice': '买入价',
|
||||
'portfolio.positions.quantity': '数量',
|
||||
'portfolio.positions.side': '方向',
|
||||
'portfolio.positions.long': '做多',
|
||||
'portfolio.positions.short': '做空',
|
||||
'portfolio.positions.marketValue': '市值',
|
||||
'portfolio.positions.pnl': '盈亏',
|
||||
'portfolio.positions.items': '个持仓',
|
||||
'portfolio.monitors.title': 'AI 监控',
|
||||
'portfolio.monitors.add': '添加监控',
|
||||
'portfolio.monitors.addFirst': '添加 AI 监控',
|
||||
'portfolio.monitors.empty': '暂无监控任务',
|
||||
'portfolio.monitors.deleteConfirm': '确定删除这个监控任务吗?',
|
||||
'portfolio.monitors.interval': '执行间隔',
|
||||
'portfolio.monitors.lastRun': '上次执行',
|
||||
'portfolio.monitors.nextRun': '下次执行',
|
||||
'portfolio.monitors.channels': '通知渠道',
|
||||
'portfolio.monitors.runNow': '立即执行',
|
||||
'portfolio.monitors.analysisResult': 'AI 分析结果',
|
||||
'portfolio.modal.addPosition': '添加持仓',
|
||||
'portfolio.modal.editPosition': '编辑持仓',
|
||||
'portfolio.modal.addMonitor': '添加监控',
|
||||
'portfolio.modal.editMonitor': '编辑监控',
|
||||
'portfolio.form.market': '市场',
|
||||
'portfolio.form.marketRequired': '请选择市场',
|
||||
'portfolio.form.selectMarket': '选择市场',
|
||||
'portfolio.form.symbol': '标的代码',
|
||||
'portfolio.form.symbolRequired': '请输入标的代码',
|
||||
'portfolio.form.searchSymbol': '搜索或输入标的代码',
|
||||
'portfolio.form.useAsSymbol': '使用',
|
||||
'portfolio.form.asSymbolCode': '作为标的代码',
|
||||
'portfolio.form.symbolHint': '可搜索标的库,或直接输入任意代码',
|
||||
'portfolio.form.side': '方向',
|
||||
'portfolio.form.quantity': '数量',
|
||||
'portfolio.form.quantityRequired': '请输入数量',
|
||||
'portfolio.form.enterQuantity': '输入持仓数量',
|
||||
'portfolio.form.entryPrice': '买入价',
|
||||
'portfolio.form.entryPriceRequired': '请输入买入价',
|
||||
'portfolio.form.enterEntryPrice': '输入买入价格',
|
||||
'portfolio.form.notes': '备注',
|
||||
'portfolio.form.enterNotes': '可选:添加备注',
|
||||
'portfolio.form.monitorName': '监控名称',
|
||||
'portfolio.form.monitorNameRequired': '请输入监控名称',
|
||||
'portfolio.form.enterMonitorName': '例如:每日组合分析',
|
||||
'portfolio.form.interval': '执行间隔',
|
||||
'portfolio.form.minutes': '分钟',
|
||||
'portfolio.form.hour': '小时',
|
||||
'portfolio.form.hours': '小时',
|
||||
'portfolio.form.notifyChannels': '通知渠道',
|
||||
'portfolio.form.browser': '浏览器通知',
|
||||
'portfolio.form.email': '邮件',
|
||||
'portfolio.form.telegramChatId': 'Telegram Chat ID',
|
||||
'portfolio.form.enterTelegramChatId': '输入 Telegram Chat ID',
|
||||
'portfolio.form.telegramRequired': '请输入 Telegram Chat ID',
|
||||
'portfolio.form.emailAddress': '邮箱地址',
|
||||
'portfolio.form.enterEmail': '输入邮箱地址',
|
||||
'portfolio.form.emailRequired': '请输入邮箱地址',
|
||||
'portfolio.form.emailInvalid': '请输入有效的邮箱地址',
|
||||
'portfolio.form.customPrompt': '自定义提示',
|
||||
'portfolio.form.customPromptPlaceholder': '可选:添加特别关注点,例如"重点关注科技股风险"',
|
||||
'portfolio.form.monitorScope': '监控范围',
|
||||
'portfolio.form.allPositions': '全部持仓',
|
||||
'portfolio.form.selectedPositions': '指定持仓',
|
||||
'portfolio.form.selectPositions': '选择持仓',
|
||||
'portfolio.form.selectAll': '全选',
|
||||
'portfolio.form.deselectAll': '全不选',
|
||||
'portfolio.form.selectedCount': '已选 {count}/{total}',
|
||||
'portfolio.form.pleaseSelectPositions': '请至少选择一个持仓进行监控',
|
||||
'portfolio.message.loadFailed': '加载数据失败',
|
||||
'portfolio.message.saveSuccess': '保存成功',
|
||||
'portfolio.message.saveFailed': '保存失败',
|
||||
'portfolio.message.deleteSuccess': '删除成功',
|
||||
'portfolio.message.deleteFailed': '删除失败',
|
||||
'portfolio.message.updateFailed': '更新失败',
|
||||
'portfolio.message.monitorEnabled': '监控已启用',
|
||||
'portfolio.message.monitorDisabled': '监控已暂停',
|
||||
'portfolio.message.monitorRunSuccess': '分析完成',
|
||||
'portfolio.message.monitorRunFailed': '分析失败',
|
||||
// Portfolio - 分组
|
||||
'portfolio.groups.all': '全部持仓',
|
||||
'portfolio.groups.ungrouped': '未分组',
|
||||
'portfolio.form.group': '分组',
|
||||
'portfolio.form.enterGroup': '输入或选择分组',
|
||||
// Portfolio - 预警
|
||||
'portfolio.alerts.title': '价格/盈亏预警',
|
||||
'portfolio.alerts.addAlert': '添加预警',
|
||||
'portfolio.alerts.editAlert': '编辑预警',
|
||||
'portfolio.alerts.alertType': '预警类型',
|
||||
'portfolio.alerts.priceAbove': '价格高于',
|
||||
'portfolio.alerts.priceBelow': '价格低于',
|
||||
'portfolio.alerts.pnlAbove': '盈利高于 (%)',
|
||||
'portfolio.alerts.pnlBelow': '亏损低于 (%)',
|
||||
'portfolio.alerts.threshold': '阈值',
|
||||
'portfolio.alerts.thresholdRequired': '请输入阈值',
|
||||
'portfolio.alerts.enterPrice': '输入价格',
|
||||
'portfolio.alerts.enterPercent': '输入百分比',
|
||||
'portfolio.alerts.currentPrice': '当前价格',
|
||||
'portfolio.alerts.currentPriceHint': '当前价格',
|
||||
'portfolio.alerts.repeatInterval': '重复提醒',
|
||||
'portfolio.alerts.noRepeat': '不重复 (触发一次)',
|
||||
'portfolio.alerts.every5min': '每 5 分钟',
|
||||
'portfolio.alerts.every15min': '每 15 分钟',
|
||||
'portfolio.alerts.every30min': '每 30 分钟',
|
||||
'portfolio.alerts.every1hour': '每 1 小时',
|
||||
'portfolio.alerts.every4hours': '每 4 小时',
|
||||
'portfolio.alerts.onceDaily': '每天一次',
|
||||
'portfolio.alerts.enabled': '启用预警',
|
||||
'portfolio.alerts.enabledDesc': '开启后将自动监测并触发通知',
|
||||
'portfolio.alerts.delete': '删除',
|
||||
'portfolio.alerts.deleteConfirm': '确定要删除此预警吗?',
|
||||
'portfolio.modal.addAlert': '添加预警',
|
||||
'portfolio.modal.editAlert': '编辑预警'
|
||||
}
|
||||
|
||||
export default {
|
||||
|
||||
Reference in New Issue
Block a user