mirror of
				https://github.com/nsnail/NetAdmin.git
				synced 2025-11-01 03:35:28 +08:00 
			
		
		
		
	chore: 🔨 补充语言文件
This commit is contained in:
		| @@ -42,5 +42,21 @@ | ||||
|   { | ||||
|     "ApiId": "api/sys/user/set.session.user.app.config", | ||||
|     "RoleId": 371729946431493, | ||||
|   }, | ||||
|   { | ||||
|     "ApiId": "api/sys/login.log/paged.query", | ||||
|     "RoleId": 371729946431493, | ||||
|   }, | ||||
|   { | ||||
|     "ApiId": "api/sys/login.log/get", | ||||
|     "RoleId": 371729946431493, | ||||
|   }, | ||||
|   { | ||||
|     "ApiId": "api/sys/login.log/count.by", | ||||
|     "RoleId": 371729946431493, | ||||
|   }, | ||||
|   { | ||||
|     "ApiId": "api/sys/login.log/export", | ||||
|     "RoleId": 371729946431493, | ||||
|   } | ||||
| ] | ||||
| @@ -23,7 +23,7 @@ | ||||
|         "sortablejs": "1.15.6", | ||||
|         "vkbeautify": "0.99.3", | ||||
|         "vue": "3.5.13", | ||||
|         "vue-i18n": "10.0.5", | ||||
|         "vue-i18n": "11.0.1", | ||||
|         "vue-router": "4.5.0", | ||||
|         "vue3-ace-editor": "2.2.4", | ||||
|         "vue3-json-viewer": "2.2.2", | ||||
| @@ -36,7 +36,7 @@ | ||||
|         "prettier-plugin-organize-attributes": "1.0.0", | ||||
|         "sass": "1.83.0", | ||||
|         "terser": "5.37.0", | ||||
|         "vite": "6.0.5" | ||||
|         "vite": "6.0.6" | ||||
|     }, | ||||
|     "browserslist": [ | ||||
|         "> 1%", | ||||
|   | ||||
| @@ -56,9 +56,11 @@ export default { | ||||
|             this.data = this.$TOOL.sortProperties(res.data) | ||||
|             if (queryEs) { | ||||
|                 this.esData = {} | ||||
|                 try { | ||||
|                     this.$API.adm_tools.queryEsLog.post(queryEs).then((res) => { | ||||
|                         this.esData = res.data | ||||
|                     }) | ||||
|                 } catch {} | ||||
|             } | ||||
|             return this | ||||
|         }, | ||||
|   | ||||
| @@ -525,7 +525,7 @@ export default { | ||||
|             this.loading = true | ||||
|             try { | ||||
|                 await this.exportApi.post(this.getQueryParams(), { responseType: 'blob' }) | ||||
|                 this.$message.success(`数据已导出(上限5万条)`) | ||||
|                 this.$message.success(this.$t('数据已导出(上限 {n} 条)', { n: 50000 })) | ||||
|             } catch {} | ||||
|             this.loading = false | ||||
|         }, | ||||
|   | ||||
| @@ -2,7 +2,7 @@ export default { | ||||
|     email: (_this) => { | ||||
|         return { | ||||
|             required: true, | ||||
|             message: '您的邮箱地址', | ||||
|             message: _this.$t('您的邮箱地址'), | ||||
|             pattern: _this.$GLOBAL.chars.RGXL_EMAIL, | ||||
|         } | ||||
|     }, | ||||
| @@ -20,16 +20,16 @@ export default { | ||||
|                 } catch { | ||||
|                     // | ||||
|                 } | ||||
|                 callback(new Error('邮箱已被使用')) | ||||
|                 callback(new Error(_this.$t('邮箱已被使用'))) | ||||
|             }, | ||||
|             trigger: 'blur', | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     code: () => { | ||||
|     code: (_this) => { | ||||
|         return { | ||||
|             required: true, | ||||
|             message: '请输入4位数字验证码', | ||||
|             message: _this.$t('请输入4位数字验证码'), | ||||
|         } | ||||
|     }, | ||||
| } | ||||
| @@ -2,17 +2,17 @@ export default { | ||||
|     passwordText: (_this) => { | ||||
|         return { | ||||
|             required: true, | ||||
|             message: '8位以上数字字母组合', | ||||
|             message: _this.$t('8位以上数字字母组合'), | ||||
|             pattern: _this.$GLOBAL.chars.RGX_PASSWORD, | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     passwordText2: (passwordText) => [ | ||||
|         { required: true, message: '请再次输入密码' }, | ||||
|     passwordText2: (_this, passwordText) => [ | ||||
|         { required: true, message: _this.$t('请再次输入密码') }, | ||||
|         { | ||||
|             validator: (rule, value, callback) => { | ||||
|                 if (value !== passwordText()) { | ||||
|                     callback(new Error('两次输入密码不一致')) | ||||
|                     callback(new Error(_this.$t('两次输入密码不一致'))) | ||||
|                 } else { | ||||
|                     callback() | ||||
|                 } | ||||
|   | ||||
| @@ -2,7 +2,7 @@ export default { | ||||
|     mobile: (_this) => { | ||||
|         return { | ||||
|             required: true, | ||||
|             message: '您的手机号码', | ||||
|             message: _this.$t('您的手机号码'), | ||||
|             pattern: _this.$GLOBAL.chars.RGX_MOBILE, | ||||
|         } | ||||
|     }, | ||||
| @@ -20,16 +20,16 @@ export default { | ||||
|                 } catch { | ||||
|                     // | ||||
|                 } | ||||
|                 callback(new Error('手机号已被使用')) | ||||
|                 callback(new Error(_this.$t('手机号已被使用'))) | ||||
|             }, | ||||
|             trigger: 'blur', | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     code: () => { | ||||
|     code: (_this) => { | ||||
|         return { | ||||
|             required: true, | ||||
|             message: '请输入4位数字验证码', | ||||
|             message: _this.$t('请输入4位数字验证码'), | ||||
|         } | ||||
|     }, | ||||
| } | ||||
| @@ -9,9 +9,9 @@ export default (el, binding) => { | ||||
|         value = value * 1000 | ||||
|     } | ||||
|     if (modifiers.tip) { | ||||
|         el.innerHTML = tool.time.getFormatTime(value) | ||||
|         el.innerHTML = tool.time.getFormatTime(binding.instance, value) | ||||
|         el.__timeout__ = setInterval(() => { | ||||
|             el.innerHTML = tool.time.getFormatTime(value) | ||||
|             el.innerHTML = tool.time.getFormatTime(binding.instance, value) | ||||
|         }, 60000) | ||||
|     } else { | ||||
|         const format = el.getAttribute('format') || undefined | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|                 <component :is="navMenu.meta.icon || 'el-icon-menu'" /> | ||||
|             </el-icon> | ||||
|             <template #title> | ||||
|                 <span>{{ navMenu.meta.title }}</span> | ||||
|                 <span>{{ this.$t(navMenu.meta.title) }}</span> | ||||
|                 <span v-if="navMenu.meta.tag" class="menu-tag">{{ navMenu.meta.tag }}</span> | ||||
|             </template> | ||||
|         </el-menu-item> | ||||
| @@ -18,7 +18,7 @@ | ||||
|                 <el-icon v-if="navMenu.meta && navMenu.meta.icon"> | ||||
|                     <component :is="navMenu.meta.icon || 'el-icon-menu'" /> | ||||
|                 </el-icon> | ||||
|                 <span>{{ navMenu.meta.title }}</span> | ||||
|                 <span>{{ this.$t(navMenu.meta.title) }}</span> | ||||
|                 <span v-if="navMenu.meta.tag" class="menu-tag">{{ navMenu.meta.tag }}</span> | ||||
|             </template> | ||||
|             <NavMenu :navMenus="navMenu.children"></NavMenu> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|                 :class="[isActive(tag) ? 'active' : '', tag.meta.affix ? 'affix' : '']" | ||||
|                 @contextmenu.prevent="openContextMenu($event, tag)"> | ||||
|                 <router-link :to="tag"> | ||||
|                     <span>{{ tag.meta.title }}</span> | ||||
|                     <span>{{ $t(tag.meta.title) }}</span> | ||||
|                     <el-icon v-if="!tag.meta.affix" @click.prevent.stop="closeSelectedTag(tag)"> | ||||
|                         <el-icon-close /> | ||||
|                     </el-icon> | ||||
| @@ -22,39 +22,39 @@ | ||||
|                 <el-icon> | ||||
|                     <el-icon-refresh /> | ||||
|                 </el-icon> | ||||
|                 刷新 | ||||
|                 {{ $t('刷新') }} | ||||
|             </li> | ||||
|             <li @click="scheduledRefresh()"> | ||||
|                 <el-icon> | ||||
|                     <el-icon-alarm-clock /> | ||||
|                 </el-icon> | ||||
|                 定时刷新 | ||||
|                 {{ $t('定时刷新') }} | ||||
|             </li> | ||||
|             <hr /> | ||||
|             <li :class="contextMenuItem.meta.affix ? 'disabled' : ''" @click="closeTabs()"> | ||||
|                 <el-icon> | ||||
|                     <el-icon-close /> | ||||
|                 </el-icon> | ||||
|                 关闭标签 | ||||
|                 {{ $t('关闭标签') }} | ||||
|             </li> | ||||
|             <li @click="closeOtherTabs()"> | ||||
|                 <el-icon> | ||||
|                     <el-icon-folder-delete /> | ||||
|                 </el-icon> | ||||
|                 关闭其他标签 | ||||
|                 {{ $t('关闭其他标签') }} | ||||
|             </li> | ||||
|             <hr /> | ||||
|             <li @click="maximize()"> | ||||
|                 <el-icon> | ||||
|                     <el-icon-full-screen /> | ||||
|                 </el-icon> | ||||
|                 最大化 | ||||
|                 {{ $t('最大化') }} | ||||
|             </li> | ||||
|             <li @click="openWindow()"> | ||||
|                 <el-icon> | ||||
|                     <el-icon-copy-document /> | ||||
|                 </el-icon> | ||||
|                 在新的窗口中打开 | ||||
|                 {{ $t('在新的窗口中打开') }} | ||||
|             </li> | ||||
|         </ul> | ||||
|     </transition> | ||||
| @@ -200,9 +200,9 @@ export default { | ||||
|         async scheduledRefresh() { | ||||
|             this.closeMenu() | ||||
|             try { | ||||
|                 const sleep = await this.$prompt('刷新时间间隔(秒)', '定时刷新', { | ||||
|                 const sleep = await this.$prompt(this.$t('刷新时间间隔(秒)'), this.$t('定时刷新'), { | ||||
|                     inputPattern: /^[1-9]\d*$/, | ||||
|                     inputErrorMessage: '时间必须为数字', | ||||
|                     inputErrorMessage: this.$t('时间必须为数字'), | ||||
|                     inputValue: '10', | ||||
|                 }) | ||||
|                 const sleepSecs = parseInt(sleep.value) | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|     <el-container v-loading="loading"> | ||||
|         <el-header class="flex" style="justify-content: space-evenly; height: unset"> | ||||
|             <div v-if="failJobs"> | ||||
|                 <el-badge :hidden="fail === 0" :value="`${$TOOL.time.getFormatTime(new Date(failJobViewTime).getTime())} 至今 ${fail}个`"> | ||||
|                 <el-badge :hidden="fail === 0" :value="`${$TOOL.time.getFormatTime(this, new Date(failJobViewTime).getTime())} 至今 ${fail}个`"> | ||||
|                     <el-button | ||||
|                         @click=" | ||||
|                             () => { | ||||
| @@ -41,9 +41,9 @@ | ||||
|                 <el-col :lg="12"> | ||||
|                     <el-empty v-if="!failJobs"> | ||||
|                         <template #description> | ||||
|                             <p>{{ $TOOL.time.getFormatTime(new Date(failJobViewTime).getTime()) }}</p> | ||||
|                             <p>至今</p> | ||||
|                             <p>未发现新的异常作业</p> | ||||
|                             <p>{{ $TOOL.time.getFormatTime(this, new Date(failJobViewTime).getTime()) }}</p> | ||||
|                             <p>{{ $t('至今') }}</p> | ||||
|                             <p>{{ $t('未发现新的异常作业') }}</p> | ||||
|                         </template> | ||||
|                     </el-empty> | ||||
|                     <el-card | ||||
| @@ -88,9 +88,9 @@ | ||||
|                             <div class="jobMain"> | ||||
|                                 <div class="title"> | ||||
|                                     <h2>{{ job.jobName }}</h2> | ||||
|                                     <p>{{ $t('上次执行:') }}<span v-time.tip="job.lastExecTime" :title="job.lastExecTime"></span></p> | ||||
|                                     <p>{{ $t('上次执行') }}:<span v-time.tip="job.lastExecTime" :title="job.lastExecTime"></span></p> | ||||
|                                     <p> | ||||
|                                         下次执行:<span>{{ job.nextExecTime }}</span> | ||||
|                                         {{ $t('下次执行') }}:<span>{{ job.nextExecTime }}</span> | ||||
|                                     </p> | ||||
|                                 </div> | ||||
|                                 <div class="bottom"> | ||||
|   | ||||
| @@ -501,4 +501,125 @@ export default { | ||||
|     本页: 'Page', | ||||
|     'JSON 格式化': 'JSON formatting', | ||||
|     格式错误: 'Format error', | ||||
|     模块信息: 'Module information', | ||||
|     当前项目模块信息: 'Current project module information', | ||||
|     本周: 'This week', | ||||
|     本月: 'This month', | ||||
|     后退一月: 'Back a month', | ||||
|     最近整点: 'Last hour', | ||||
|     '手机号 / 邮箱': 'Phone / Email', | ||||
|     后退一周: 'Back a week', | ||||
|     用户数量: 'Number of users', | ||||
|     复制角色: 'Copy the role', | ||||
|     删除角色: 'Delete the role', | ||||
|     删除部门: 'Delete a department', | ||||
|     作业日志: 'Job logs', | ||||
|     上次执行状态: 'Last Execution Status', | ||||
|     立即执行: 'Execute it now', | ||||
|     复制作业: 'Copy the job', | ||||
|     '项名 / 项值 / 备注': 'Item Name / Item Value / Notes', | ||||
|     设置项值: 'Set the item value', | ||||
|     过期时间: 'Expiration time', | ||||
|     查看缓存: 'View the cache', | ||||
|     删除缓存: 'Delete the cache', | ||||
|     文档分类: 'Document classification', | ||||
|     档案可见性: 'Archive visibility', | ||||
|     文档标题: 'The title of the document', | ||||
|     错误码: 'Error codes', | ||||
|     登录用户名: 'Login username', | ||||
|     客户端IP地址: 'Client IP address', | ||||
|     授权信息: 'Authorization Information', | ||||
|     用户标识: 'User ID', | ||||
|     授权令牌: 'Authorization tokens', | ||||
|     复制授权令牌: 'Copy the authorization token', | ||||
|     异常日志: 'Exception logs', | ||||
|     没有正在执行的作业: 'There are no jobs in progress', | ||||
|     空闲: 'Idle', | ||||
|     请输入用户名: 'Please enter a username', | ||||
|     请输入密码: 'Please enter your password', | ||||
|     '用户名 / 手机 / 邮箱': 'Username / Phone / Email', | ||||
|     您的手机号码: 'Your mobile phone number', | ||||
|     请输入4位数字验证码: 'Please enter a 4-digit verification code', | ||||
|     '8位以上数字字母组合': 'A combination of more than 8 digits of numbers and letters', | ||||
|     请再次输入密码: 'Please enter your password again', | ||||
|     发送成功: 'The sending was successful', | ||||
|     操作指引: 'How-to instructions', | ||||
|     '按下 {key} 可关闭当前标签页': 'Press {key} to close the current tab', | ||||
|     '按下 {key} 可关闭其它标签页': 'Press {key} to close other tabs', | ||||
|     '按下 {key} 快速查找菜单功能': 'Press {key} to quickly find the menu function', | ||||
|     原手机验证码: 'The verification code of the original mobile phone', | ||||
|     原手机号码: 'Original mobile phone number', | ||||
|     手机验证码: 'Mobile phone verification code', | ||||
|     邮箱已被使用: 'The email is already in use', | ||||
|     您的邮箱地址: 'Your email address', | ||||
|     自定义首页布局: 'Customize the homepage layout', | ||||
|     '喜欢就点个 Star⭐️ 吧!': 'If you like, order a Star⭐️!', | ||||
|     完成: 'Finish', | ||||
|     没有部件啦: 'There are no parts', | ||||
|     恢复默认: 'Restore the default', | ||||
|     添加部件: 'Add a part', | ||||
|     添加自定义布局: 'Add custom layouts', | ||||
|     '请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】': 'Please enter a 24-column layout separated by spaces: e.g. 24 or 12 12 or 8 8 8', | ||||
|     添加一行: 'Add a line', | ||||
|     '第 {n} 行': 'Line {n}', | ||||
|     版本信息: 'Version information', | ||||
|     外部组件: 'External components', | ||||
|     至今: 'Ever since', | ||||
|     未发现新的异常作业: 'No new anomalous jobs were found', | ||||
|     刚刚: 'Newly', | ||||
|     '{n} 天前': '{n} days ago', | ||||
|     '{n} 分钟前': '{n} minutes ago', | ||||
|     '{n} 小时前': '{n} hours ago', | ||||
|     下次执行: 'Next time', | ||||
|     成功率: 'Success rate', | ||||
|     总数: 'Total', | ||||
|     随机延时: 'Random delay', | ||||
|     '结束值(毫秒)': 'End Value (ms)', | ||||
|     '起始值(毫秒)': 'Starting Value (ms)', | ||||
|     复制: 'Copy', | ||||
|     新增: 'New', | ||||
|     '数据已导出(上限 {n} 条)': 'Data exported (Maximum {n} entries)', | ||||
|     同步成功: 'Synchronization succeeded', | ||||
|     缓存详情: 'Cache details', | ||||
|     操作日志: 'Operation logs', | ||||
|     数据权限: 'Data Permissions', | ||||
|     首页视图: 'Home view', | ||||
|     删除配置: 'Delete the configuration', | ||||
|     所属字典目录: 'Dictionary catalog', | ||||
|     删除字典项: 'Delete dictionary entries', | ||||
|     接口总数: 'Total number of apis', | ||||
|     所属文档分类: 'Document catalog', | ||||
|     请选择所属文档分类: 'Please select the document category', | ||||
|     请输入文档标题: 'Please enter a title for the document', | ||||
|     请输入文档内容: 'Please enter the content of the document', | ||||
|     请选择档案可见性: 'Please select profile visibility', | ||||
|     文档内容: 'Document content', | ||||
|     主控面板: 'Dashboard', | ||||
|     权限管理: 'Permissions', | ||||
|     用户管理: 'User', | ||||
|     角色管理: 'Role', | ||||
|     部门管理: 'Department', | ||||
|     菜单管理: 'Menu', | ||||
|     系统管理: 'System', | ||||
|     计划作业: 'Schedule jobs', | ||||
|     字典管理: 'Dictionary', | ||||
|     消息管理: 'Message', | ||||
|     接口管理: 'API', | ||||
|     缓存管理: 'Cache', | ||||
|     档案管理: 'Archives', | ||||
|     文档管理: 'Document', | ||||
|     日志管理: 'Log', | ||||
|     开发管理: 'Development', | ||||
|     代码生成: 'Code generation', | ||||
|     定时刷新: 'Refresh on interval', | ||||
|     关闭标签: 'Close the tab', | ||||
|     关闭其他标签: 'Close other tabs', | ||||
|     最大化: 'Maximum', | ||||
|     在新的窗口中打开: 'Opens in a new window', | ||||
|     '刷新时间间隔(秒)': 'Refresh interval (seconds)', | ||||
|     时间必须为数字: 'The time must be a number', | ||||
|     菜单: 'Menu', | ||||
|     链接: 'Link', | ||||
|     框架: 'IFrame', | ||||
|     按钮: 'Button', | ||||
| } | ||||
| @@ -501,4 +501,123 @@ export default { | ||||
|     '按下 {key} 可关闭当前标签页': '按下 {key} 可关闭当前标签页', | ||||
|     '按下 {key} 可关闭其它标签页': '按下 {key} 可关闭其它标签页', | ||||
|     '按下 {key} 快速查找菜单功能': '按下 {key} 快速查找菜单功能', | ||||
|     模块信息: '模块信息', | ||||
|     当前项目模块信息: '当前项目模块信息', | ||||
|     本周: '本周', | ||||
|     本月: '本月', | ||||
|     后退一月: '后退一月', | ||||
|     最近整点: '最近整点', | ||||
|     '手机号 / 邮箱': '手机号 / 邮箱', | ||||
|     后退一周: '后退一周', | ||||
|     用户数量: '用户数量', | ||||
|     复制角色: '复制角色', | ||||
|     删除角色: '删除角色', | ||||
|     删除部门: '删除部门', | ||||
|     作业日志: '作业日志', | ||||
|     上次执行状态: '上次执行状态', | ||||
|     立即执行: '立即执行', | ||||
|     复制作业: '复制作业', | ||||
|     '项名 / 项值 / 备注': '项名 / 项值 / 备注', | ||||
|     设置项值: '设置项值', | ||||
|     过期时间: '过期时间', | ||||
|     查看缓存: '查看缓存', | ||||
|     删除缓存: '删除缓存', | ||||
|     文档分类: '文档分类', | ||||
|     档案可见性: '档案可见性', | ||||
|     文档标题: '文档标题', | ||||
|     错误码: '错误码', | ||||
|     登录用户名: '登录用户名', | ||||
|     客户端IP地址: '客户端IP地址', | ||||
|     授权信息: '授权信息', | ||||
|     用户标识: '用户标识', | ||||
|     授权令牌: '授权令牌', | ||||
|     复制授权令牌: '复制授权令牌', | ||||
|     重置为默认值: '重置为默认值', | ||||
|     异常日志: '异常日志', | ||||
|     没有正在执行的作业: '没有正在执行的作业', | ||||
|     空闲: '空闲', | ||||
|     请输入用户名: '请输入用户名', | ||||
|     '用户名 / 手机 / 邮箱': '用户名 / 手机 / 邮箱', | ||||
|     请输入密码: '请输入密码', | ||||
|     您的手机号码: '您的手机号码', | ||||
|     请输入4位数字验证码: '请输入4位数字验证码', | ||||
|     '8位以上数字字母组合': '8位以上数字字母组合', | ||||
|     请再次输入密码: '请再次输入密码', | ||||
|     发送成功: '发送成功', | ||||
|     操作指引: '操作指引', | ||||
|     原手机验证码: '原手机验证码', | ||||
|     原手机号码: '原手机号码', | ||||
|     手机验证码: '手机验证码', | ||||
|     邮箱已被使用: '邮箱已被使用', | ||||
|     您的邮箱地址: '您的邮箱地址', | ||||
|     自定义首页布局: '自定义首页布局', | ||||
|     '喜欢就点个 Star⭐️ 吧!': '喜欢就点个 Star⭐️ 吧!', | ||||
|     完成: '完成', | ||||
|     没有部件啦: '没有部件啦', | ||||
|     恢复默认: '恢复默认', | ||||
|     添加部件: '添加部件', | ||||
|     添加自定义布局: '添加自定义布局', | ||||
|     '请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】': '请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】', | ||||
|     添加一行: '添加一行', | ||||
|     '第 {n} 行': '第 {n} 行', | ||||
|     版本信息: '版本信息', | ||||
|     外部组件: '外部组件', | ||||
|     至今: '至今', | ||||
|     未发现新的异常作业: '未发现新的异常作业', | ||||
|     刚刚: '刚刚', | ||||
|     '{n} 天前': '{n} 天前', | ||||
|     '{n} 分钟前': '{n} 分钟前', | ||||
|     '{n} 小时前': '{n} 小时前', | ||||
|     下次执行: '下次执行', | ||||
|     成功率: '成功率', | ||||
|     总数: '总数', | ||||
|     随机延时: '随机延时', | ||||
|     '结束值(毫秒)': '结束值(毫秒)', | ||||
|     '起始值(毫秒)': '起始值(毫秒)', | ||||
|     复制: '复制', | ||||
|     新增: '新增', | ||||
|     '数据已导出(上限 {n} 条)': '数据已导出(上限 {n} 条)', | ||||
|     同步成功: '同步成功', | ||||
|     缓存详情: '缓存详情', | ||||
|     操作日志: '操作日志', | ||||
|     数据权限: '数据权限', | ||||
|     首页视图: '首页视图', | ||||
|     删除配置: '删除配置', | ||||
|     所属字典目录: '所属字典目录', | ||||
|     删除字典项: '删除字典项', | ||||
|     接口总数: '接口总数', | ||||
|     所属文档分类: '所属文档分类', | ||||
|     请选择所属文档分类: '请选择所属文档分类', | ||||
|     请输入文档标题: '请输入文档标题', | ||||
|     请输入文档内容: '请输入文档内容', | ||||
|     请选择档案可见性: '请选择档案可见性', | ||||
|     文档内容: '文档内容', | ||||
|     主控面板: '主控面板', | ||||
|     权限管理: '权限管理', | ||||
|     用户管理: '用户管理', | ||||
|     角色管理: '角色管理', | ||||
|     部门管理: '部门管理', | ||||
|     菜单管理: '菜单管理', | ||||
|     系统管理: '系统管理', | ||||
|     计划作业: '计划作业', | ||||
|     字典管理: '字典管理', | ||||
|     消息管理: '消息管理', | ||||
|     接口管理: '接口管理', | ||||
|     缓存管理: '缓存管理', | ||||
|     档案管理: '档案管理', | ||||
|     文档管理: '文档管理', | ||||
|     日志管理: '日志管理', | ||||
|     开发管理: '开发管理', | ||||
|     代码生成: '代码生成', | ||||
|     定时刷新: '定时刷新', | ||||
|     关闭标签: '关闭标签', | ||||
|     关闭其他标签: '关闭其他标签', | ||||
|     最大化: '最大化', | ||||
|     在新的窗口中打开: '在新的窗口中打开', | ||||
|     '刷新时间间隔(秒)': '刷新时间间隔(秒)', | ||||
|     时间必须为数字: '时间必须为数字', | ||||
|     菜单: '菜单', | ||||
|     链接: '链接', | ||||
|     框架: '框架', | ||||
|     按钮: '按钮', | ||||
| } | ||||
| @@ -37,7 +37,7 @@ tool.time = { | ||||
|         return date.getFullYear() + '-' + month + '-' + day | ||||
|     }, | ||||
|     //转换时间 | ||||
|     getFormatTime: function (timestamp) { | ||||
|     getFormatTime: function (_this, timestamp) { | ||||
|         timestamp = new Date(timestamp) | ||||
|         const now = this.getUnix() | ||||
|         const today = this.getTodayUnix() | ||||
| @@ -46,15 +46,15 @@ tool.time = { | ||||
|         let tip | ||||
|  | ||||
|         if (timer <= 0) { | ||||
|             tip = '刚刚' | ||||
|             tip = _this.$t('刚刚') | ||||
|         } else if (Math.floor(timer / 60) <= 0) { | ||||
|             tip = '刚刚' | ||||
|             tip = _this.$t('刚刚') | ||||
|         } else if (timer < 3600) { | ||||
|             tip = Math.floor(timer / 60) + '分钟前' | ||||
|             tip = _this.$t('{n} 分钟前', { n: Math.floor(timer / 60) }) | ||||
|         } else if (timer >= 3600 && (timestamp - today >= 0 || Math.floor(timer / 86400) <= 0)) { | ||||
|             tip = Math.floor(timer / 3600) + '小时前' | ||||
|             tip = _this.$t('{n} 小时前', { n: Math.floor(timer / 3600) }) | ||||
|         } else if (timer / 86400 <= 31) { | ||||
|             tip = Math.floor(timer / 86400) + '天前' | ||||
|             tip = _this.$t('{n} 天前', { n: Math.floor(timer / 86400) }) | ||||
|         } else { | ||||
|             tip = this.getLastDate(timestamp) | ||||
|         } | ||||
|   | ||||
| @@ -109,7 +109,7 @@ export default { | ||||
|                         }, | ||||
|                     }, | ||||
|                 ], | ||||
|                 passwordText2: naFormPassword.passwordText2(() => this.form.passwordText), | ||||
|                 passwordText2: naFormPassword.passwordText2(this, () => this.form.passwordText), | ||||
|                 passwordText: naFormPassword.passwordText(this), | ||||
|                 userName: [ | ||||
|                     { required: true, message: this.$t('请输入用户名') }, | ||||
|   | ||||
| @@ -61,7 +61,7 @@ export default { | ||||
|                     destDevice: phoneConfig.mobile(this), | ||||
|                     code: phoneConfig.code(this), | ||||
|                 }, | ||||
|                 passwordText2: naFormPassword.passwordText2(() => this.form.passwordText), | ||||
|                 passwordText2: naFormPassword.passwordText2(this, () => this.form.passwordText), | ||||
|                 passwordText: naFormPassword.passwordText(this), | ||||
|             }, | ||||
|         } | ||||
|   | ||||
| @@ -3,19 +3,21 @@ | ||||
|         <el-form :model="form" ref="form"> | ||||
|             <el-form-item | ||||
|                 v-for="(row, index) in form.rows" | ||||
|                 :label="`第${index + 1}行`" | ||||
|                 :label="$t('第 {n} 行', { n: index + 1 })" | ||||
|                 :prop="'rows.' + index + '.value'" | ||||
|                 :rules="{ | ||||
|                     required: true, | ||||
|                     message: '请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】', | ||||
|                     message: $t('请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】'), | ||||
|                     trigger: 'blur', | ||||
|                 }"> | ||||
|                 <el-input | ||||
|                     v-model="form.rows[index].value" | ||||
|                     :input="form.rows[index].value = form.rows[index].value.replace(/[^0-9 ]/g, '')" | ||||
|                     placeholder="请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】"> | ||||
|                     :placeholder="$t('请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】')"> | ||||
|                     <template #append> | ||||
|                         <el-button @click.prevent="form.rows.splice(index, 1)" icon="delete">删除</el-button> | ||||
|                         <el-button @click.prevent="form.rows.splice(index, 1)" icon="el-icon-delete"> | ||||
|                             {{ $t('删除') }} | ||||
|                         </el-button> | ||||
|                     </template> | ||||
|                 </el-input> | ||||
|             </el-form-item> | ||||
| @@ -32,7 +34,7 @@ export default { | ||||
|     components: {}, | ||||
|     data() { | ||||
|         return { | ||||
|             title: '添加自定义布局', | ||||
|             title: this.$t('添加自定义布局'), | ||||
|             visible: false, | ||||
|             form: { | ||||
|                 rows: [{ value: '' }], | ||||
|   | ||||
| @@ -33,7 +33,7 @@ | ||||
|                                                 <el-icon> | ||||
|                                                     <component :is="allComps[element].icon" /> | ||||
|                                                 </el-icon> | ||||
|                                                 {{ allComps[element].title }}</label | ||||
|                                                 {{ $t(allComps[element].title) }}</label | ||||
|                                             > | ||||
|                                         </div> | ||||
|                                     </div> | ||||
| @@ -51,7 +51,7 @@ | ||||
|                         <el-icon> | ||||
|                             <el-icon-circle-plus-filled /> | ||||
|                         </el-icon> | ||||
|                         添加部件 | ||||
|                         {{ $t('添加部件') }} | ||||
|                     </div> | ||||
|                     <div> | ||||
|                         <el-button v-if="customizing" @click="save" icon="el-icon-check" round type="primary">{{ $t('完成') }}</el-button> | ||||
| @@ -77,7 +77,9 @@ | ||||
|                     </div> | ||||
|                 </el-header> | ||||
|                 <el-header style="height: auto"> | ||||
|                     <el-button @click="this.dialog.customLayout = { title: '添加自定义布局' }" style="margin: 0 auto">添加自定义布局</el-button> | ||||
|                     <el-button @click="this.dialog.customLayout = { title: this.$t('添加自定义布局') }" style="margin: 0 auto"> | ||||
|                         {{ this.$t('添加自定义布局') }} | ||||
|                     </el-button> | ||||
|                 </el-header> | ||||
|                 <el-main class="nopadding"> | ||||
|                     <div class="widgets-list"> | ||||
|   | ||||
| @@ -62,7 +62,7 @@ export default { | ||||
|                 }, | ||||
|  | ||||
|                 destDevice: [emailConfig.email(this)], | ||||
|                 code: emailConfig.code(), | ||||
|                 code: emailConfig.code(this), | ||||
|             }, | ||||
|             visible: false, | ||||
|         } | ||||
|   | ||||
| @@ -58,7 +58,7 @@ export default { | ||||
|             rules: { | ||||
|                 oldPassword: naFormPassword.passwordText(this), | ||||
|                 newPassword: naFormPassword.passwordText(this), | ||||
|                 confirmNewPassword: naFormPassword.passwordText2(() => this.form.newPassword), | ||||
|                 confirmNewPassword: naFormPassword.passwordText2(this, () => this.form.newPassword), | ||||
|             }, | ||||
|             visible: false, | ||||
|         } | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
|             <scTable | ||||
|                 :export-api="$API.sys_api.export" | ||||
|                 :query-api="$API.sys_api.query" | ||||
|                 :summary-method="(x) => ['接口总数', countTotalRows(x.data)]" | ||||
|                 :summary-method="(x) => [$t('接口总数'), countTotalRows(x.data)]" | ||||
|                 default-expand-all | ||||
|                 hidePagination | ||||
|                 ref="table" | ||||
| @@ -68,7 +68,7 @@ export default { | ||||
|             this.loading = true | ||||
|             try { | ||||
|                 await this.$API.sys_api.sync.post() | ||||
|                 this.$message.success('同步成功') | ||||
|                 this.$message.success(this.$t('同步成功')) | ||||
|             } catch { | ||||
|                 // | ||||
|             } | ||||
|   | ||||
| @@ -87,14 +87,14 @@ | ||||
|                     :buttons="[ | ||||
|                         { | ||||
|                             icon: 'el-icon-view', | ||||
|                             title: '查看缓存', | ||||
|                             title: $t('查看缓存'), | ||||
|                             click: viewClick, | ||||
|                         }, | ||||
|                         { | ||||
|                             icon: 'el-icon-delete', | ||||
|                             type: 'danger', | ||||
|                             confirm: true, | ||||
|                             title: '删除缓存', | ||||
|                             title: $t('删除缓存'), | ||||
|                             click: delClick, | ||||
|                         }, | ||||
|                     ]" | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -90,7 +90,7 @@ | ||||
|                     </template> | ||||
|                 </el-table-column> | ||||
|                 <naColOperation | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton('删除部门', $API.sys_config.delete))" | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton(this.$t('删除配置'), $API.sys_config.delete))" | ||||
|                     :vue="this" | ||||
|                     width="150" /> | ||||
|             </scTable> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -103,7 +103,7 @@ | ||||
|                     </template> | ||||
|                 </el-table-column> | ||||
|                 <naColOperation | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton('删除部门', $API.sys_dept.delete))" | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton(this.$t('删除部门'), $API.sys_dept.delete))" | ||||
|                     :vue="this" | ||||
|                     width="120" /> | ||||
|             </scTable> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -100,7 +100,7 @@ | ||||
|                     </template> | ||||
|                 </el-table-column> | ||||
|                 <naColOperation | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton('删除字典项', $API.sys_dic.deleteContent))" | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton(this.$t('删除字典项'), $API.sys_dic.deleteContent))" | ||||
|                     :vue="this" | ||||
|                     width="120" /> | ||||
|             </scTable> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
|   | ||||
| @@ -60,10 +60,10 @@ export default { | ||||
|             mode: 'add', | ||||
|             //验证规则 | ||||
|             rules: { | ||||
|                 catalogId: [{ required: true, message: '请选择所属文档分类' }], | ||||
|                 title: [{ required: true, message: '请输入文档标题' }], | ||||
|                 body: [{ required: true, message: '请输入文档内容' }], | ||||
|                 visibility: [{ required: true, message: '请选择档案可见性' }], | ||||
|                 catalogId: [{ required: true, message: this.$t('请选择所属文档分类') }], | ||||
|                 title: [{ required: true, message: this.$t('请输入文档标题') }], | ||||
|                 body: [{ required: true, message: this.$t('请输入文档内容') }], | ||||
|                 visibility: [{ required: true, message: this.$t('请选择档案可见性') }], | ||||
|             }, | ||||
|             titleMap: { | ||||
|                 add: this.$t('新增文档'), | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -211,16 +211,16 @@ | ||||
|                         naColOperation.buttons.concat( | ||||
|                             { | ||||
|                                 icon: 'el-icon-video-play', | ||||
|                                 title: '立即执行', | ||||
|                                 title: $t('立即执行'), | ||||
|                                 click: execute, | ||||
|                             }, | ||||
|                             { | ||||
|                                 icon: 'el-icon-document-copy', | ||||
|                                 confirm: true, | ||||
|                                 title: '复制作业', | ||||
|                                 title: $t('复制作业'), | ||||
|                                 click: copyJob, | ||||
|                             }, | ||||
|                             naColOperation.delButton('删除作业', $API.sys_job.delete), | ||||
|                             naColOperation.delButton($t('删除作业'), $API.sys_job.delete), | ||||
|                         ) | ||||
|                     " | ||||
|                     :vue="this" | ||||
|   | ||||
| @@ -4,12 +4,12 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :span="12"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.rate" suffix="%" title="成功率"></scStatistic> | ||||
|                         <scStatistic :title="$t('成功率')" :value="statistics.rate" suffix="%"></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|                         :filter-node-method="treeFilterNode" | ||||
|                         :props="{ | ||||
|                             label: (data) => { | ||||
|                                 return data.meta.title + ' - ' + data.sort | ||||
|                                 return this.$t(data.meta.title) + ' - ' + data.sort | ||||
|                             }, | ||||
|                         }" | ||||
|                         @node-click="treeClick" | ||||
|   | ||||
| @@ -26,7 +26,9 @@ | ||||
|                     </el-form-item> | ||||
|                     <el-form-item :label="$t('类型')" prop="meta.type"> | ||||
|                         <el-radio-group v-model="form.meta.type"> | ||||
|                             <el-radio-button v-for="(item, i) in this.$GLOBAL.enums.menuTypes" :key="i" :label="i">{{ item[1] }}</el-radio-button> | ||||
|                             <el-radio-button v-for="(item, i) in this.$GLOBAL.enums.menuTypes" :key="i" :label="i">{{ | ||||
|                                 this.$t(item[1]) | ||||
|                             }}</el-radio-button> | ||||
|                         </el-radio-group> | ||||
|                     </el-form-item> | ||||
|                     <el-form-item :label="$t('别名')" prop="name"> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -92,7 +92,7 @@ | ||||
|                 <el-table-column :label="$t('消息摘要')" min-width="400" prop="summary" show-overflow-tooltip sortable="custom" /> | ||||
|  | ||||
|                 <naColOperation | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton('删除消息', $API.sys_sitemsg.delete))" | ||||
|                     :buttons="naColOperation.buttons.concat(naColOperation.delButton($t('删除消息'), $API.sys_sitemsg.delete))" | ||||
|                     :vue="this" | ||||
|                     width="120" /> | ||||
|             </scTable> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
| @@ -176,10 +176,10 @@ | ||||
|                             { | ||||
|                                 icon: 'el-icon-document-copy', | ||||
|                                 confirm: true, | ||||
|                                 title: '复制角色', | ||||
|                                 title: $t('复制角色'), | ||||
|                                 click: copyRole, | ||||
|                             }, | ||||
|                             naColOperation.delButton('删除角色', $API.sys_role.delete), | ||||
|                             naColOperation.delButton(this.$t('删除角色'), $API.sys_role.delete), | ||||
|                         ) | ||||
|                     " | ||||
|                     :vue="this" | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             <el-row :gutter="15"> | ||||
|                 <el-col :lg="24"> | ||||
|                     <el-card shadow="never"> | ||||
|                         <scStatistic :value="statistics.total" group-separator title="总数"></scStatistic> | ||||
|                         <scStatistic :title="$t('总数')" :value="statistics.total" group-separator></scStatistic> | ||||
|                     </el-card> | ||||
|                 </el-col> | ||||
|             </el-row> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user