Merge branch 'master' of https://gitee.com/mllt9920/vue3-element-admin
This commit is contained in:
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
@@ -63,19 +63,8 @@
|
|||||||
"**/dist/**": true,
|
"**/dist/**": true,
|
||||||
"**/yarn.lock": true
|
"**/yarn.lock": true
|
||||||
},
|
},
|
||||||
"i18n-ally.keystyle": "nested",
|
|
||||||
"i18n-ally.sortKeys": true,
|
|
||||||
"i18n-ally.namespace": false,
|
|
||||||
"i18n-ally.pathMatcher": "{namespaces}/{locale}.{ext}",
|
|
||||||
"i18n-ally.enabledParsers": ["ts"],
|
|
||||||
"i18n-ally.sourceLanguage": "en",
|
|
||||||
"i18n-ally.displayLanguage": "zh-CN",
|
|
||||||
"i18n-ally.enabledFrameworks": [
|
|
||||||
"vue",
|
|
||||||
"react"
|
|
||||||
],
|
|
||||||
"i18n-ally.localesPaths": [
|
"i18n-ally.localesPaths": [
|
||||||
"src/lang"
|
"src/lang/package"
|
||||||
],
|
],
|
||||||
"scss.lint.unknownAtRules": "ignore"
|
"scss.lint.unknownAtRules": "ignore"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
// https://eslint.org/docs/latest/use/configure/configuration-files-new
|
// https://eslint.org/docs/latest/use/configure/configuration-files-new
|
||||||
|
|
||||||
|
// 基础ESLint配置
|
||||||
import eslint from "@eslint/js";
|
import eslint from "@eslint/js";
|
||||||
import pluginVue from "eslint-plugin-vue";
|
|
||||||
import * as typescriptEslint from "typescript-eslint";
|
|
||||||
import vueParser from "vue-eslint-parser";
|
|
||||||
import globals from "globals";
|
import globals from "globals";
|
||||||
|
// TypeScript支持
|
||||||
|
import * as typescriptEslint from "typescript-eslint";
|
||||||
|
// Vue支持
|
||||||
|
import pluginVue from "eslint-plugin-vue";
|
||||||
|
import vueParser from "vue-eslint-parser";
|
||||||
|
// 代码风格与格式化
|
||||||
import configPrettier from "eslint-config-prettier";
|
import configPrettier from "eslint-config-prettier";
|
||||||
|
import prettierPlugin from "eslint-plugin-prettier";
|
||||||
|
|
||||||
// 解析自动导入配置
|
// 解析自动导入配置
|
||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
@@ -132,6 +137,7 @@ export default [
|
|||||||
sourceType: "module",
|
sourceType: "module",
|
||||||
parser: typescriptEslint.parser,
|
parser: typescriptEslint.parser,
|
||||||
extraFileExtensions: [".vue"],
|
extraFileExtensions: [".vue"],
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
@@ -174,8 +180,10 @@ export default [
|
|||||||
languageOptions: {
|
languageOptions: {
|
||||||
parser: typescriptEslint.parser,
|
parser: typescriptEslint.parser,
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
project: true,
|
ecmaVersion: "latest",
|
||||||
tsconfigRootDir: import.meta.dirname,
|
sourceType: "module",
|
||||||
|
project: "./tsconfig.json",
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
@@ -212,5 +220,15 @@ export default [
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Prettier 集成(必须放在最后)
|
// Prettier 集成(必须放在最后)
|
||||||
configPrettier,
|
{
|
||||||
|
plugins: {
|
||||||
|
prettier: prettierPlugin, // 将 Prettier 的输出作为 ESLint 的问题来报告
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
...configPrettier.rules,
|
||||||
|
"prettier/prettier": ["error", {}, { usePrettierrc: true }],
|
||||||
|
"arrow-body-style": "off",
|
||||||
|
"prefer-arrow-callback": "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -2,18 +2,14 @@ import type { App } from "vue";
|
|||||||
import { createI18n } from "vue-i18n";
|
import { createI18n } from "vue-i18n";
|
||||||
import { useAppStoreHook } from "@/store/modules/app-store";
|
import { useAppStoreHook } from "@/store/modules/app-store";
|
||||||
// 本地语言包
|
// 本地语言包
|
||||||
import enLocale from "./package/en";
|
import enLocale from "./package/en.json";
|
||||||
import zhCnLocale from "./package/zh-cn";
|
import zhCnLocale from "./package/zh-cn.json";
|
||||||
|
|
||||||
const appStore = useAppStoreHook();
|
const appStore = useAppStoreHook();
|
||||||
|
|
||||||
const messages = {
|
const messages = {
|
||||||
"zh-cn": {
|
"zh-cn": zhCnLocale,
|
||||||
...zhCnLocale,
|
en: enLocale,
|
||||||
},
|
|
||||||
en: {
|
|
||||||
...enLocale,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const i18n = createI18n({
|
const i18n = createI18n({
|
||||||
|
|||||||
91
src/lang/package/en.json
Normal file
91
src/lang/package/en.json
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"route": {
|
||||||
|
"dashboard": "Dashboard",
|
||||||
|
"document": "Document"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"themeToggle": "Theme Switch",
|
||||||
|
"languageToggle": "Language Switch",
|
||||||
|
"dark": "Dark",
|
||||||
|
"light": "Light",
|
||||||
|
"username": "Username",
|
||||||
|
"password": "Password",
|
||||||
|
"login": "Login",
|
||||||
|
"captchaCode": "Verify Code",
|
||||||
|
"capsLock": "Caps Lock is On",
|
||||||
|
"rememberMe": "Remember Me",
|
||||||
|
"forgetPassword": "Forget Password?",
|
||||||
|
"message": {
|
||||||
|
"username": {
|
||||||
|
"required": "Please enter Username"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"required": "Please enter Password",
|
||||||
|
"min": "The password can not be less than 6 digits",
|
||||||
|
"confirm": "Please confirm the password again",
|
||||||
|
"inconformity": "The two password entries are inconsistent"
|
||||||
|
},
|
||||||
|
"captchaCode": {
|
||||||
|
"required": "Please enter Verify Code"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"otherLoginMethods": "Other",
|
||||||
|
"resetPassword": "Reset password",
|
||||||
|
"thinkOfPasswd": "Remember your password?",
|
||||||
|
"register": "Register account",
|
||||||
|
"agree": "I have read and agree to the",
|
||||||
|
"userAgreement": "User Agreement",
|
||||||
|
"haveAccount": "Already have an account?",
|
||||||
|
"noAccount": "Don't have an account?",
|
||||||
|
"quickFill": "Quick fill",
|
||||||
|
"reg": "Register"
|
||||||
|
},
|
||||||
|
"navbar": {
|
||||||
|
"dashboard": "Dashboard",
|
||||||
|
"logout": "Logout",
|
||||||
|
"document": "Document",
|
||||||
|
"gitee": "Gitee",
|
||||||
|
"profile": "User Profile"
|
||||||
|
},
|
||||||
|
"sizeSelect": {
|
||||||
|
"tooltip": "Layout Size",
|
||||||
|
"default": "Default",
|
||||||
|
"large": "Large",
|
||||||
|
"small": "Small",
|
||||||
|
"message": {
|
||||||
|
"success": "Switch Layout Size Successful!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"langSelect": {
|
||||||
|
"message": {
|
||||||
|
"success": "Switch Language Successful!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"project": "Project Settings",
|
||||||
|
"theme": "Theme",
|
||||||
|
"interface": "Interface",
|
||||||
|
"navigation": "Navigation",
|
||||||
|
"themeColor": "Theme Color",
|
||||||
|
"showTagsView": "Show Tags View",
|
||||||
|
"showAppLogo": "Show App Logo",
|
||||||
|
"sidebarColorScheme": "Sidebar Color Scheme",
|
||||||
|
"showWatermark": "Show Watermark",
|
||||||
|
"classicBlue": "Classic Blue",
|
||||||
|
"minimalWhite": "Minimal White",
|
||||||
|
"copyConfig": "Copy Config",
|
||||||
|
"resetConfig": "Reset Default",
|
||||||
|
"copySuccess": "Configuration copied to clipboard",
|
||||||
|
"resetSuccess": "Reset to default configuration",
|
||||||
|
"copyDescription": "Copy config will generate current settings code, reset will restore all settings to default",
|
||||||
|
"confirmReset": "Are you sure to reset all settings to default? This operation cannot be undone.",
|
||||||
|
"applyToFile": "Apply to File",
|
||||||
|
"onlyCopy": "Only Copy",
|
||||||
|
"leftLayout": "Left Mode",
|
||||||
|
"topLayout": "Top Mode",
|
||||||
|
"mixLayout": "Mix Mode",
|
||||||
|
"configManagement": "Config Management",
|
||||||
|
"copyConfigDescription": "Generate current settings code and copy to clipboard, then overwrite src/settings.ts file",
|
||||||
|
"resetConfigDescription": "Restore all settings to system default values"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
export default {
|
|
||||||
// 菜单国际化
|
|
||||||
route: {
|
|
||||||
dashboard: "Dashboard",
|
|
||||||
document: "Document",
|
|
||||||
},
|
|
||||||
// 登录页面国际化
|
|
||||||
login: {
|
|
||||||
themeToggle: "Theme Switch",
|
|
||||||
languageToggle: "Language Switch",
|
|
||||||
dark: "Dark",
|
|
||||||
light: "Light",
|
|
||||||
username: "Username",
|
|
||||||
password: "Password",
|
|
||||||
login: "Login",
|
|
||||||
captchaCode: "Verify Code",
|
|
||||||
capsLock: "Caps Lock is On",
|
|
||||||
rememberMe: "Remember Me",
|
|
||||||
forgetPassword: "Forget Password?",
|
|
||||||
message: {
|
|
||||||
username: {
|
|
||||||
required: "Please enter Username",
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
required: "Please enter Password",
|
|
||||||
min: "The password can not be less than 6 digits",
|
|
||||||
confirm: "Please confirm the password again",
|
|
||||||
inconformity: "The two password entries are inconsistent",
|
|
||||||
},
|
|
||||||
captchaCode: {
|
|
||||||
required: "Please enter Verify Code",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
otherLoginMethods: "Other",
|
|
||||||
resetPassword: "Reset password",
|
|
||||||
thinkOfPasswd: "Remember your password?",
|
|
||||||
register: "Register account",
|
|
||||||
agree: "I have read and agree to the",
|
|
||||||
userAgreement: "User Agreement",
|
|
||||||
haveAccount: "Already have an account?",
|
|
||||||
noAccount: "Don't have an account?",
|
|
||||||
quickFill: "Quick fill",
|
|
||||||
reg: "Register",
|
|
||||||
},
|
|
||||||
// 导航栏国际化
|
|
||||||
navbar: {
|
|
||||||
dashboard: "Dashboard",
|
|
||||||
logout: "Logout",
|
|
||||||
document: "Document",
|
|
||||||
gitee: "Gitee",
|
|
||||||
profile: "User Profile",
|
|
||||||
},
|
|
||||||
sizeSelect: {
|
|
||||||
tooltip: "Layout Size",
|
|
||||||
default: "Default",
|
|
||||||
large: "Large",
|
|
||||||
small: "Small",
|
|
||||||
message: {
|
|
||||||
success: "Switch Layout Size Successful!",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
langSelect: {
|
|
||||||
message: {
|
|
||||||
success: "Switch Language Successful!",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
settings: {
|
|
||||||
project: "Project Settings",
|
|
||||||
theme: "Theme",
|
|
||||||
interface: "Interface",
|
|
||||||
navigation: "Navigation",
|
|
||||||
themeColor: "Theme Color",
|
|
||||||
showTagsView: "Show Tags View",
|
|
||||||
showAppLogo: "Show App Logo",
|
|
||||||
sidebarColorScheme: "Sidebar Color Scheme",
|
|
||||||
showWatermark: "Show Watermark",
|
|
||||||
classicBlue: "Classic Blue",
|
|
||||||
minimalWhite: "Minimal White",
|
|
||||||
copyConfig: "Copy Config",
|
|
||||||
resetConfig: "Reset Default",
|
|
||||||
copySuccess: "Configuration copied to clipboard",
|
|
||||||
resetSuccess: "Reset to default configuration",
|
|
||||||
copyDescription:
|
|
||||||
"Copy config will generate current settings code, reset will restore all settings to default",
|
|
||||||
confirmReset: "Are you sure to reset all settings to default? This operation cannot be undone.",
|
|
||||||
applyToFile: "Apply to File",
|
|
||||||
onlyCopy: "Only Copy",
|
|
||||||
leftLayout: "Left Mode",
|
|
||||||
topLayout: "Top Mode",
|
|
||||||
mixLayout: "Mix Mode",
|
|
||||||
configManagement: "Config Management",
|
|
||||||
copyConfigDescription:
|
|
||||||
"Generate current settings code and copy to clipboard, then overwrite src/settings.ts file",
|
|
||||||
resetConfigDescription: "Restore all settings to system default values",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
94
src/lang/package/zh-cn.json
Normal file
94
src/lang/package/zh-cn.json
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
"route": {
|
||||||
|
"dashboard": "首页",
|
||||||
|
"document": "项目文档"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"themeToggle": "主题切换",
|
||||||
|
"languageToggle": "语言切换",
|
||||||
|
"dark": "暗黑",
|
||||||
|
"light": "明亮",
|
||||||
|
"username": "用户名",
|
||||||
|
"password": "密码",
|
||||||
|
"login": "登 录",
|
||||||
|
"captchaCode": "验证码",
|
||||||
|
"capsLock": "大写锁定已打开",
|
||||||
|
"rememberMe": "记住我",
|
||||||
|
"forgetPassword": "忘记密码?",
|
||||||
|
"message": {
|
||||||
|
"username": {
|
||||||
|
"required": "请输入用户名"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"required": "请输入密码",
|
||||||
|
"min": "密码不能少于6位",
|
||||||
|
"confirm": "请再次确认密码",
|
||||||
|
"inconformity": "两次密码输入不一致"
|
||||||
|
},
|
||||||
|
"captchaCode": {
|
||||||
|
"required": "请输入验证码"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"otherLoginMethods": "其他",
|
||||||
|
"resetPassword": "重置密码",
|
||||||
|
"thinkOfPasswd": "想起密码?",
|
||||||
|
"register": "注册账号",
|
||||||
|
"agree": "我已同意并阅读",
|
||||||
|
"userAgreement": "用户协议",
|
||||||
|
"haveAccount": "已有账号?",
|
||||||
|
"noAccount": "您没有账号?",
|
||||||
|
"quickFill": "快速填写",
|
||||||
|
"reg": "注 册"
|
||||||
|
},
|
||||||
|
"navbar": {
|
||||||
|
"dashboard": "首页",
|
||||||
|
"logout": "退出登录",
|
||||||
|
"document": "项目文档",
|
||||||
|
"gitee": "项目地址",
|
||||||
|
"profile": "个人中心"
|
||||||
|
},
|
||||||
|
"sizeSelect": {
|
||||||
|
"tooltip": "布局大小",
|
||||||
|
"default": "默认",
|
||||||
|
"large": "大型",
|
||||||
|
"small": "小型",
|
||||||
|
"message": {
|
||||||
|
"success": "切换布局大小成功!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"langSelect": {
|
||||||
|
"message": {
|
||||||
|
"success": "切换语言成功!"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"project": "项目配置",
|
||||||
|
"theme": "主题设置",
|
||||||
|
"interface": "界面设置",
|
||||||
|
"navigation": "导航设置",
|
||||||
|
"themeColor": "主题颜色",
|
||||||
|
"themeColorTip": "主题颜色",
|
||||||
|
"darkMode": "暗黑模式",
|
||||||
|
"layoutSetting": "布局设置",
|
||||||
|
"sidebarColorScheme": "侧边栏配色",
|
||||||
|
"showTagsView": "显示页签",
|
||||||
|
"showAppLogo": "显示Logo",
|
||||||
|
"showWatermark": "显示水印",
|
||||||
|
"classicBlue": "经典蓝",
|
||||||
|
"minimalWhite": "极简白",
|
||||||
|
"copyConfig": "复制配置",
|
||||||
|
"resetConfig": "重置默认",
|
||||||
|
"copySuccess": "配置已复制到剪贴板",
|
||||||
|
"resetSuccess": "已重置为默认配置",
|
||||||
|
"copyDescription": "复制配置将生成当前设置的代码,重置将恢复所有设置为默认值",
|
||||||
|
"confirmReset": "确定要重置所有设置为默认值吗?此操作不可恢复。",
|
||||||
|
"applyToFile": "应用到文件",
|
||||||
|
"onlyCopy": "仅复制",
|
||||||
|
"leftLayout": "左侧模式",
|
||||||
|
"topLayout": "顶部模式",
|
||||||
|
"mixLayout": "混合模式",
|
||||||
|
"configManagement": "配置管理",
|
||||||
|
"copyConfigDescription": "生成当前设置的代码并复制到剪贴板,然后覆盖 src/settings.ts 文件",
|
||||||
|
"resetConfigDescription": "恢复所有设置为系统默认值"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
export default {
|
|
||||||
// 菜单国际化
|
|
||||||
route: {
|
|
||||||
dashboard: "首页",
|
|
||||||
document: "项目文档",
|
|
||||||
},
|
|
||||||
// 登录页面国际化
|
|
||||||
login: {
|
|
||||||
themeToggle: "主题切换",
|
|
||||||
languageToggle: "语言切换",
|
|
||||||
dark: "暗黑",
|
|
||||||
light: "明亮",
|
|
||||||
username: "用户名",
|
|
||||||
password: "密码",
|
|
||||||
login: "登 录",
|
|
||||||
captchaCode: "验证码",
|
|
||||||
capsLock: "大写锁定已打开",
|
|
||||||
rememberMe: "记住我",
|
|
||||||
forgetPassword: "忘记密码?",
|
|
||||||
message: {
|
|
||||||
username: {
|
|
||||||
required: "请输入用户名",
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
required: "请输入密码",
|
|
||||||
min: "密码不能少于6位",
|
|
||||||
confirm: "请再次确认密码",
|
|
||||||
inconformity: "两次密码输入不一致",
|
|
||||||
},
|
|
||||||
captchaCode: {
|
|
||||||
required: "请输入验证码",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
otherLoginMethods: "其他",
|
|
||||||
resetPassword: "重置密码",
|
|
||||||
thinkOfPasswd: "想起密码?",
|
|
||||||
register: "注册账号",
|
|
||||||
agree: "我已同意并阅读",
|
|
||||||
userAgreement: "用户协议",
|
|
||||||
haveAccount: "已有账号?",
|
|
||||||
noAccount: "您没有账号?",
|
|
||||||
quickFill: "快速填写",
|
|
||||||
reg: "注 册",
|
|
||||||
},
|
|
||||||
// 导航栏国际化
|
|
||||||
navbar: {
|
|
||||||
dashboard: "首页",
|
|
||||||
logout: "退出登录",
|
|
||||||
document: "项目文档",
|
|
||||||
gitee: "项目地址",
|
|
||||||
profile: "个人中心",
|
|
||||||
},
|
|
||||||
sizeSelect: {
|
|
||||||
tooltip: "布局大小",
|
|
||||||
default: "默认",
|
|
||||||
large: "大型",
|
|
||||||
small: "小型",
|
|
||||||
message: {
|
|
||||||
success: "切换布局大小成功!",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
langSelect: {
|
|
||||||
message: {
|
|
||||||
success: "切换语言成功!",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
settings: {
|
|
||||||
project: "项目配置",
|
|
||||||
theme: "主题设置",
|
|
||||||
interface: "界面设置",
|
|
||||||
navigation: "导航设置",
|
|
||||||
themeColor: "主题颜色",
|
|
||||||
themeColorTip: "主题颜色",
|
|
||||||
darkMode: "暗黑模式",
|
|
||||||
layoutSetting: "布局设置",
|
|
||||||
sidebarColorScheme: "侧边栏配色",
|
|
||||||
showTagsView: "显示页签",
|
|
||||||
showAppLogo: "显示Logo",
|
|
||||||
showWatermark: "显示水印",
|
|
||||||
classicBlue: "经典蓝",
|
|
||||||
minimalWhite: "极简白",
|
|
||||||
copyConfig: "复制配置",
|
|
||||||
resetConfig: "重置默认",
|
|
||||||
copySuccess: "配置已复制到剪贴板",
|
|
||||||
resetSuccess: "已重置为默认配置",
|
|
||||||
copyDescription: "复制配置将生成当前设置的代码,重置将恢复所有设置为默认值",
|
|
||||||
confirmReset: "确定要重置所有设置为默认值吗?此操作不可恢复。",
|
|
||||||
applyToFile: "应用到文件",
|
|
||||||
onlyCopy: "仅复制",
|
|
||||||
leftLayout: "左侧模式",
|
|
||||||
topLayout: "顶部模式",
|
|
||||||
mixLayout: "混合模式",
|
|
||||||
configManagement: "配置管理",
|
|
||||||
copyConfigDescription: "生成当前设置的代码并复制到剪贴板,然后覆盖 src/settings.ts 文件",
|
|
||||||
resetConfigDescription: "恢复所有设置为系统默认值",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -107,9 +107,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 操作按钮区域 - 固定到底部 -->
|
<!-- 操作按钮区域 - 固定到底部 -->
|
||||||
<div class="action-footer">
|
<template #footer>
|
||||||
<div class="action-divider"></div>
|
|
||||||
<div class="action-card">
|
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
content="复制配置将生成当前设置的代码,覆盖 src/settings.ts 下的 defaultSettings 变量"
|
content="复制配置将生成当前设置的代码,覆盖 src/settings.ts 下的 defaultSettings 变量"
|
||||||
@@ -120,7 +118,6 @@
|
|||||||
size="default"
|
size="default"
|
||||||
:icon="copyIcon"
|
:icon="copyIcon"
|
||||||
:loading="copyLoading"
|
:loading="copyLoading"
|
||||||
class="action-btn"
|
|
||||||
@click="handleCopySettings"
|
@click="handleCopySettings"
|
||||||
>
|
>
|
||||||
{{ copyLoading ? "复制中..." : t("settings.copyConfig") }}
|
{{ copyLoading ? "复制中..." : t("settings.copyConfig") }}
|
||||||
@@ -132,15 +129,13 @@
|
|||||||
size="default"
|
size="default"
|
||||||
:icon="resetIcon"
|
:icon="resetIcon"
|
||||||
:loading="resetLoading"
|
:loading="resetLoading"
|
||||||
class="action-btn"
|
|
||||||
@click="handleResetSettings"
|
@click="handleResetSettings"
|
||||||
>
|
>
|
||||||
{{ resetLoading ? "重置中..." : t("settings.resetConfig") }}
|
{{ resetLoading ? "重置中..." : t("settings.resetConfig") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
</div>
|
|
||||||
</el-drawer>
|
</el-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -326,37 +321,14 @@ const handleCloseDrawer = () => {
|
|||||||
.settings-content {
|
.settings-content {
|
||||||
height: calc(100vh - 120px); /* 减去头部和底部按钮的高度 */
|
height: calc(100vh - 120px); /* 减去头部和底部按钮的高度 */
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
padding-bottom: 20px;
|
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 底部操作区域样式 */
|
/* 底部操作区域样式 */
|
||||||
.action-footer {
|
.action-buttons {
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 10;
|
|
||||||
padding: 0;
|
|
||||||
background: var(--el-bg-color);
|
|
||||||
border-top: 1px solid var(--el-border-color-light);
|
|
||||||
|
|
||||||
.action-divider {
|
|
||||||
display: none; /* 移除重复的分割线 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.action-card {
|
|
||||||
padding: 16px 20px;
|
|
||||||
margin: 0;
|
|
||||||
background: var(--el-fill-color-extra-light);
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
|
|
||||||
.action-buttons {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 12px;
|
|
||||||
|
|
||||||
.action-btn {
|
& > .el-button {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@@ -367,8 +339,6 @@ const handleCloseDrawer = () => {
|
|||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 主题切换器优化 */
|
/* 主题切换器优化 */
|
||||||
|
|||||||
@@ -107,31 +107,19 @@ const parseDynamicRoutes = (rawRoutes: RouteVO[]): RouteRecordRaw[] => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 去除中间层的路由 `component` 属性
|
* 路由处理函数
|
||||||
|
* - 去除中间层路由 `component: Layout` 的 `component` 属性
|
||||||
* @param routes 路由数组
|
* @param routes 路由数组
|
||||||
* @param isTopLevel 是否是顶层路由
|
* @param isTopLevel 是否是顶层路由
|
||||||
*/
|
*/
|
||||||
const processRoutes = (routes: RouteVO[], isTopLevel: boolean = true): RouteVO[] => {
|
const processRoutes = (routes: RouteVO[], isTopLevel: boolean = true): RouteVO[] => {
|
||||||
return routes.map((route) => {
|
return routes.map(({ component, children, ...args }) => {
|
||||||
// 创建新对象
|
return {
|
||||||
const newRoute: RouteVO = {
|
...args,
|
||||||
path: route.path,
|
component: isTopLevel || component !== "Layout" ? component : undefined,
|
||||||
name: route.name,
|
|
||||||
children: route.children,
|
|
||||||
meta: { ...route.meta },
|
|
||||||
};
|
|
||||||
|
|
||||||
// 如果是顶层或者component不是"Layout",保留component属性
|
|
||||||
if (isTopLevel || route.component !== "Layout") {
|
|
||||||
newRoute.component = route.component;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 递归处理children,标记为非顶层
|
// 递归处理children,标记为非顶层
|
||||||
if (route.children && route.children.length > 0) {
|
children: children && children.length > 0 ? processRoutes(children, false) : [],
|
||||||
newRoute.children = processRoutes(route.children, false);
|
};
|
||||||
}
|
|
||||||
|
|
||||||
return newRoute;
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user