mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	perf: 优化国际化
This commit is contained in:
		
							parent
							
								
									d94fb0ef06
								
							
						
					
					
						commit
						73705eb0e4
					
				
							
								
								
									
										11
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "recommendations": [
 | 
				
			||||||
 | 
					    "stylelint.vscode-stylelint",
 | 
				
			||||||
 | 
					    "dbaeumer.vscode-eslint",
 | 
				
			||||||
 | 
					    "esbenp.prettier-vscode",
 | 
				
			||||||
 | 
					    "johnsoncodehk.volar",
 | 
				
			||||||
 | 
					    "lokalise.i18n-ally",
 | 
				
			||||||
 | 
					    "mikestead.dotenv",
 | 
				
			||||||
 | 
					    "antfu.iconify"
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							@ -1,11 +1,14 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  // You should install these plugins:
 | 
					  /** 你需要安装这些插件,以便带来更好的提示体验
 | 
				
			||||||
  // ESLint
 | 
					   * ESLint
 | 
				
			||||||
  // Prettier - Code formatter
 | 
					   * Prettier - Code formatter
 | 
				
			||||||
  // stylelint
 | 
					   * stylelint
 | 
				
			||||||
  // vscode-icons
 | 
					   * vscode-icons
 | 
				
			||||||
  // TypeScript Vue Plugin (Volar)
 | 
					   * i18n Ally
 | 
				
			||||||
  // Vue Language Features (Volar)
 | 
					   * Iconify IntelliSense
 | 
				
			||||||
 | 
					   * TypeScript Vue Plugin (Volar)
 | 
				
			||||||
 | 
					   * Vue Language Features (Volar)
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
  "terminal.integrated.rendererType": "dom",
 | 
					  "terminal.integrated.rendererType": "dom",
 | 
				
			||||||
  "editor.formatOnType": true,
 | 
					  "editor.formatOnType": true,
 | 
				
			||||||
  "editor.formatOnSave": true,
 | 
					  "editor.formatOnSave": true,
 | 
				
			||||||
@ -45,5 +48,13 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "volar.tsPlugin": true,
 | 
					  "volar.tsPlugin": true,
 | 
				
			||||||
  "typescript.tsdk": "node_modules/typescript/lib",
 | 
					  "typescript.tsdk": "node_modules/typescript/lib",
 | 
				
			||||||
  "i18n-ally.localesPaths": ["src/plugins/i18n"]
 | 
					  "i18n-ally.localesPaths": ["src/plugins/i18n"],
 | 
				
			||||||
 | 
					  "i18n-ally.keystyle": "nested",
 | 
				
			||||||
 | 
					  "i18n-ally.sortKeys": true,
 | 
				
			||||||
 | 
					  "i18n-ally.namespace": true,
 | 
				
			||||||
 | 
					  "i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
 | 
				
			||||||
 | 
					  "i18n-ally.enabledParsers": ["ts"],
 | 
				
			||||||
 | 
					  "i18n-ally.sourceLanguage": "en",
 | 
				
			||||||
 | 
					  "i18n-ally.displayLanguage": "zh-CN",
 | 
				
			||||||
 | 
					  "i18n-ally.enabledFrameworks": ["vue", "react"]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								.vscode/vue3.2+.setup-snippets.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.vscode/vue3.2+.setup-snippets.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Vue3.2+快速生成模板": {
 | 
				
			||||||
 | 
					    "prefix": "Vue3.2+",
 | 
				
			||||||
 | 
					    "body": [
 | 
				
			||||||
 | 
					      "<script setup lang='ts'>",
 | 
				
			||||||
 | 
					      "</script>\n",
 | 
				
			||||||
 | 
					      "<template>",
 | 
				
			||||||
 | 
					      "\t<div>\n",
 | 
				
			||||||
 | 
					      "\t</div>",
 | 
				
			||||||
 | 
					      "</template>\n",
 | 
				
			||||||
 | 
					      "<style scoped>\n",
 | 
				
			||||||
 | 
					      "</style>",
 | 
				
			||||||
 | 
					      "$2"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "description": "Vue3.2+"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								.vscode/vue3.2.setup-snippets
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.vscode/vue3.2.setup-snippets
									
									
									
									
										vendored
									
									
								
							@ -1,20 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "Vue3.2快速生成模板": {
 | 
					 | 
				
			||||||
    "prefix": "Vue3.2",
 | 
					 | 
				
			||||||
    "body": [
 | 
					 | 
				
			||||||
      "<!-- $1 -->",
 | 
					 | 
				
			||||||
      "<script setup lang='ts'>",
 | 
					 | 
				
			||||||
      "\t$2",
 | 
					 | 
				
			||||||
      "</script>\n",
 | 
					 | 
				
			||||||
      "<template>",
 | 
					 | 
				
			||||||
      "\t<div>",
 | 
					 | 
				
			||||||
      "\t\t$3",
 | 
					 | 
				
			||||||
      "\t</div>",
 | 
					 | 
				
			||||||
      "</template>\n",
 | 
					 | 
				
			||||||
      "<style scoped>",
 | 
					 | 
				
			||||||
      "\t$4",
 | 
					 | 
				
			||||||
      "</style>"
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "description": "Vue3.2"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -8,7 +8,7 @@ const systemRouter = {
 | 
				
			|||||||
  redirect: "/system/user",
 | 
					  redirect: "/system/user",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Setting",
 | 
					    icon: "Setting",
 | 
				
			||||||
    title: "message.hssysManagement",
 | 
					    title: "menus.hssysManagement",
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 6
 | 
					    rank: 6
 | 
				
			||||||
@ -18,7 +18,7 @@ const systemRouter = {
 | 
				
			|||||||
      path: "/system/user",
 | 
					      path: "/system/user",
 | 
				
			||||||
      name: "user",
 | 
					      name: "user",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsBaseinfo",
 | 
					        title: "menus.hsBaseinfo",
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -27,7 +27,7 @@ const systemRouter = {
 | 
				
			|||||||
      path: "/system/dict",
 | 
					      path: "/system/dict",
 | 
				
			||||||
      name: "dict",
 | 
					      name: "dict",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsDict",
 | 
					        title: "menus.hsDict",
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        keepAlive: true
 | 
					        keepAlive: true
 | 
				
			||||||
@ -41,7 +41,7 @@ const permissionRouter = {
 | 
				
			|||||||
  name: "permission",
 | 
					  name: "permission",
 | 
				
			||||||
  redirect: "/permission/page",
 | 
					  redirect: "/permission/page",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    title: "message.permission",
 | 
					    title: "menus.permission",
 | 
				
			||||||
    icon: "Lollipop",
 | 
					    icon: "Lollipop",
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
@ -52,7 +52,7 @@ const permissionRouter = {
 | 
				
			|||||||
      path: "/permission/page",
 | 
					      path: "/permission/page",
 | 
				
			||||||
      name: "permissionPage",
 | 
					      name: "permissionPage",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.permissionPage",
 | 
					        title: "menus.permissionPage",
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -61,7 +61,7 @@ const permissionRouter = {
 | 
				
			|||||||
      path: "/permission/button",
 | 
					      path: "/permission/button",
 | 
				
			||||||
      name: "permissionButton",
 | 
					      name: "permissionButton",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.permissionButton",
 | 
					        title: "menus.permissionButton",
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        authority: []
 | 
					        authority: []
 | 
				
			||||||
@ -76,7 +76,7 @@ const tabsRouter = {
 | 
				
			|||||||
  redirect: "/tabs/index",
 | 
					  redirect: "/tabs/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "IF-team-icontabs",
 | 
					    icon: "IF-team-icontabs",
 | 
				
			||||||
    title: "message.hstabs",
 | 
					    title: "menus.hstabs",
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 8
 | 
					    rank: 8
 | 
				
			||||||
@ -86,7 +86,7 @@ const tabsRouter = {
 | 
				
			|||||||
      path: "/tabs/index",
 | 
					      path: "/tabs/index",
 | 
				
			||||||
      name: "reTabs",
 | 
					      name: "reTabs",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hstabs",
 | 
					        title: "menus.hstabs",
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true
 | 
					        i18n: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -19,21 +19,21 @@ const lists = ref([
 | 
				
			|||||||
  >
 | 
					  >
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-user"></i>
 | 
					        <el-icon><user /></el-icon>
 | 
				
			||||||
        用户名
 | 
					        用户名
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      xiaoxian
 | 
					      xiaoxian
 | 
				
			||||||
    </el-descriptions-item>
 | 
					    </el-descriptions-item>
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-mobile-phone"></i>
 | 
					        <el-icon><iphone /></el-icon>
 | 
				
			||||||
        手机号
 | 
					        手机号
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      123456789
 | 
					      123456789
 | 
				
			||||||
    </el-descriptions-item>
 | 
					    </el-descriptions-item>
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-location-outline"></i>
 | 
					        <el-icon><location /></el-icon>
 | 
				
			||||||
        居住地
 | 
					        居住地
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      上海
 | 
					      上海
 | 
				
			||||||
@ -48,7 +48,7 @@ const lists = ref([
 | 
				
			|||||||
  >
 | 
					  >
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-tickets"></i>
 | 
					        <el-icon><tickets /></el-icon>
 | 
				
			||||||
        标签
 | 
					        标签
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <el-tag
 | 
					      <el-tag
 | 
				
			||||||
@ -63,7 +63,7 @@ const lists = ref([
 | 
				
			|||||||
    </el-descriptions-item>
 | 
					    </el-descriptions-item>
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-office-building"></i>
 | 
					        <el-icon><office-building /></el-icon>
 | 
				
			||||||
        联系地址
 | 
					        联系地址
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      上海市徐汇区
 | 
					      上海市徐汇区
 | 
				
			||||||
@ -78,7 +78,7 @@ const lists = ref([
 | 
				
			|||||||
  >
 | 
					  >
 | 
				
			||||||
    <el-descriptions-item>
 | 
					    <el-descriptions-item>
 | 
				
			||||||
      <template #label>
 | 
					      <template #label>
 | 
				
			||||||
        <i class="el-icon-notebook-1"></i>
 | 
					        <el-icon><notebook /></el-icon>
 | 
				
			||||||
        留言
 | 
					        留言
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      好好学习,天天向上
 | 
					      好好学习,天天向上
 | 
				
			||||||
 | 
				
			|||||||
@ -114,14 +114,14 @@ function translationEn() {
 | 
				
			|||||||
          <el-dropdown-menu class="logout">
 | 
					          <el-dropdown-menu class="logout">
 | 
				
			||||||
            <el-dropdown-item @click="logout">
 | 
					            <el-dropdown-item @click="logout">
 | 
				
			||||||
              <i class="ri-logout-circle-r-line"></i
 | 
					              <i class="ri-logout-circle-r-line"></i
 | 
				
			||||||
              >{{ $t("message.hsLoginOut") }}</el-dropdown-item
 | 
					              >{{ $t("buttons.hsLoginOut") }}</el-dropdown-item
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
          </el-dropdown-menu>
 | 
					          </el-dropdown-menu>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
      </el-dropdown>
 | 
					      </el-dropdown>
 | 
				
			||||||
      <el-icon
 | 
					      <el-icon
 | 
				
			||||||
        class="el-icon-setting"
 | 
					        class="el-icon-setting"
 | 
				
			||||||
        :title="$t('message.hssystemSet')"
 | 
					        :title="$t('buttons.hssystemSet')"
 | 
				
			||||||
        @click="onPanel"
 | 
					        @click="onPanel"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <Setting />
 | 
					        <Setting />
 | 
				
			||||||
 | 
				
			|||||||
@ -8,8 +8,8 @@ const { isFullscreen, toggle } = useFullscreen();
 | 
				
			|||||||
    <i
 | 
					    <i
 | 
				
			||||||
      :title="
 | 
					      :title="
 | 
				
			||||||
        isFullscreen
 | 
					        isFullscreen
 | 
				
			||||||
          ? $t('message.hsexitfullscreen')
 | 
					          ? $t('buttons.hsexitfullscreen')
 | 
				
			||||||
          : $t('message.hsfullscreen')
 | 
					          : $t('buttons.hsfullscreen')
 | 
				
			||||||
      "
 | 
					      "
 | 
				
			||||||
      :class="
 | 
					      :class="
 | 
				
			||||||
        isFullscreen
 | 
					        isFullscreen
 | 
				
			||||||
 | 
				
			|||||||
@ -160,8 +160,8 @@ function onReset() {
 | 
				
			|||||||
      path: "/welcome",
 | 
					      path: "/welcome",
 | 
				
			||||||
      parentPath: "/",
 | 
					      parentPath: "/",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hshome",
 | 
					        title: "menus.hshome",
 | 
				
			||||||
        icon: "el-icon-s-home",
 | 
					        icon: "HomeFilled",
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -65,7 +65,7 @@ const getBreadcrumb = (): void => {
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
        path: "/welcome",
 | 
					        path: "/welcome",
 | 
				
			||||||
        parentPath: "/",
 | 
					        parentPath: "/",
 | 
				
			||||||
        meta: { title: "message.hshome", i18n: true }
 | 
					        meta: { title: "menus.hshome", i18n: true }
 | 
				
			||||||
      } as unknown as RouteLocationMatched
 | 
					      } as unknown as RouteLocationMatched
 | 
				
			||||||
    ].concat(matched);
 | 
					    ].concat(matched);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -181,14 +181,14 @@ onMounted(() => {
 | 
				
			|||||||
          <el-dropdown-menu class="logout">
 | 
					          <el-dropdown-menu class="logout">
 | 
				
			||||||
            <el-dropdown-item @click="logout">
 | 
					            <el-dropdown-item @click="logout">
 | 
				
			||||||
              <i class="ri-logout-circle-r-line"></i
 | 
					              <i class="ri-logout-circle-r-line"></i
 | 
				
			||||||
              >{{ $t("message.hsLoginOut") }}</el-dropdown-item
 | 
					              >{{ $t("buttons.hsLoginOut") }}</el-dropdown-item
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
          </el-dropdown-menu>
 | 
					          </el-dropdown-menu>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
      </el-dropdown>
 | 
					      </el-dropdown>
 | 
				
			||||||
      <el-icon
 | 
					      <el-icon
 | 
				
			||||||
        class="el-icon-setting"
 | 
					        class="el-icon-setting"
 | 
				
			||||||
        :title="$t('message.hssystemSet')"
 | 
					        :title="$t('buttons.hssystemSet')"
 | 
				
			||||||
        @click="onPanel"
 | 
					        @click="onPanel"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <Setting />
 | 
					        <Setting />
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@ import closeLeft from "/@/assets/svg/close_left.svg";
 | 
				
			|||||||
import closeOther from "/@/assets/svg/close_other.svg";
 | 
					import closeOther from "/@/assets/svg/close_other.svg";
 | 
				
			||||||
import closeRight from "/@/assets/svg/close_right.svg";
 | 
					import closeRight from "/@/assets/svg/close_right.svg";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import { emitter } from "/@/utils/mitt";
 | 
					import { emitter } from "/@/utils/mitt";
 | 
				
			||||||
import { isEqual, isEmpty } from "lodash-es";
 | 
					import { isEqual, isEmpty } from "lodash-es";
 | 
				
			||||||
import { transformI18n } from "/@/plugins/i18n";
 | 
					import { transformI18n } from "/@/plugins/i18n";
 | 
				
			||||||
@ -187,42 +188,42 @@ const handleScroll = (offset: number): void => {
 | 
				
			|||||||
const tagsViews = ref<Array<tagsViewsType>>([
 | 
					const tagsViews = ref<Array<tagsViewsType>>([
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: refresh,
 | 
					    icon: refresh,
 | 
				
			||||||
    text: "message.hsreload",
 | 
					    text: $t("buttons.hsreload"),
 | 
				
			||||||
    divided: false,
 | 
					    divided: false,
 | 
				
			||||||
    disabled: false,
 | 
					    disabled: false,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: close,
 | 
					    icon: close,
 | 
				
			||||||
    text: "message.hscloseCurrentTab",
 | 
					    text: $t("buttons.hscloseCurrentTab"),
 | 
				
			||||||
    divided: false,
 | 
					    divided: false,
 | 
				
			||||||
    disabled: multiTags.value.length > 1 ? false : true,
 | 
					    disabled: multiTags.value.length > 1 ? false : true,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: closeLeft,
 | 
					    icon: closeLeft,
 | 
				
			||||||
    text: "message.hscloseLeftTabs",
 | 
					    text: $t("buttons.hscloseLeftTabs"),
 | 
				
			||||||
    divided: true,
 | 
					    divided: true,
 | 
				
			||||||
    disabled: multiTags.value.length > 1 ? false : true,
 | 
					    disabled: multiTags.value.length > 1 ? false : true,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: closeRight,
 | 
					    icon: closeRight,
 | 
				
			||||||
    text: "message.hscloseRightTabs",
 | 
					    text: $t("buttons.hscloseRightTabs"),
 | 
				
			||||||
    divided: false,
 | 
					    divided: false,
 | 
				
			||||||
    disabled: multiTags.value.length > 1 ? false : true,
 | 
					    disabled: multiTags.value.length > 1 ? false : true,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: closeOther,
 | 
					    icon: closeOther,
 | 
				
			||||||
    text: "message.hscloseOtherTabs",
 | 
					    text: $t("buttons.hscloseOtherTabs"),
 | 
				
			||||||
    divided: true,
 | 
					    divided: true,
 | 
				
			||||||
    disabled: multiTags.value.length > 2 ? false : true,
 | 
					    disabled: multiTags.value.length > 2 ? false : true,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    icon: closeAll,
 | 
					    icon: closeAll,
 | 
				
			||||||
    text: "message.hscloseAllTabs",
 | 
					    text: $t("buttons.hscloseAllTabs"),
 | 
				
			||||||
    divided: false,
 | 
					    divided: false,
 | 
				
			||||||
    disabled: multiTags.value.length > 1 ? false : true,
 | 
					    disabled: multiTags.value.length > 1 ? false : true,
 | 
				
			||||||
    show: true
 | 
					    show: true
 | 
				
			||||||
@ -306,7 +307,7 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) {
 | 
				
			|||||||
          path: "/welcome",
 | 
					          path: "/welcome",
 | 
				
			||||||
          parentPath: "/",
 | 
					          parentPath: "/",
 | 
				
			||||||
          meta: {
 | 
					          meta: {
 | 
				
			||||||
            title: "message.hshome",
 | 
					            title: "menus.hshome",
 | 
				
			||||||
            i18n: true,
 | 
					            i18n: true,
 | 
				
			||||||
            icon: "el-icon-s-home",
 | 
					            icon: "el-icon-s-home",
 | 
				
			||||||
            showLink: true
 | 
					            showLink: true
 | 
				
			||||||
@ -682,7 +683,7 @@ onBeforeMount(() => {
 | 
				
			|||||||
    <ul class="right-button">
 | 
					    <ul class="right-button">
 | 
				
			||||||
      <li>
 | 
					      <li>
 | 
				
			||||||
        <el-icon
 | 
					        <el-icon
 | 
				
			||||||
          :title="$t('message.hsrefreshRoute')"
 | 
					          :title="$t('buttons.hsrefreshRoute')"
 | 
				
			||||||
          class="el-icon-refresh-right rotate"
 | 
					          class="el-icon-refresh-right rotate"
 | 
				
			||||||
          @click="onFresh"
 | 
					          @click="onFresh"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,9 @@ export const routerArrays: Array<RouteConfigs> = [
 | 
				
			|||||||
    path: "/welcome",
 | 
					    path: "/welcome",
 | 
				
			||||||
    parentPath: "/",
 | 
					    parentPath: "/",
 | 
				
			||||||
    meta: {
 | 
					    meta: {
 | 
				
			||||||
      title: "message.hshome",
 | 
					      title: "menus.hshome",
 | 
				
			||||||
      i18n: true,
 | 
					      i18n: true,
 | 
				
			||||||
      icon: "el-icon-s-home",
 | 
					      icon: "HomeFilled",
 | 
				
			||||||
      showLink: true
 | 
					      showLink: true
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -116,7 +116,13 @@ import {
 | 
				
			|||||||
  Close,
 | 
					  Close,
 | 
				
			||||||
  CloseBold,
 | 
					  CloseBold,
 | 
				
			||||||
  Bell,
 | 
					  Bell,
 | 
				
			||||||
  Guide
 | 
					  Guide,
 | 
				
			||||||
 | 
					  User,
 | 
				
			||||||
 | 
					  Iphone,
 | 
				
			||||||
 | 
					  Location,
 | 
				
			||||||
 | 
					  Tickets,
 | 
				
			||||||
 | 
					  OfficeBuilding,
 | 
				
			||||||
 | 
					  Notebook
 | 
				
			||||||
} from "@element-plus/icons-vue";
 | 
					} from "@element-plus/icons-vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Icon
 | 
					// Icon
 | 
				
			||||||
@ -136,7 +142,13 @@ export const iconComponents = [
 | 
				
			|||||||
  Close,
 | 
					  Close,
 | 
				
			||||||
  CloseBold,
 | 
					  CloseBold,
 | 
				
			||||||
  Bell,
 | 
					  Bell,
 | 
				
			||||||
  Guide
 | 
					  Guide,
 | 
				
			||||||
 | 
					  User,
 | 
				
			||||||
 | 
					  Iphone,
 | 
				
			||||||
 | 
					  Location,
 | 
				
			||||||
 | 
					  Tickets,
 | 
				
			||||||
 | 
					  OfficeBuilding,
 | 
				
			||||||
 | 
					  Notebook
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function useElementPlus(app: App) {
 | 
					export function useElementPlus(app: App) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
// 菜单国际化配置
 | 
					import { siphonI18n } from "./index";
 | 
				
			||||||
// vxe-table组件国际化
 | 
					// vxe-table组件国际化
 | 
				
			||||||
import zhVxeTable from "vxe-table/lib/locale/lang/zh-CN";
 | 
					import zhVxeTable from "vxe-table/lib/locale/lang/zh-CN";
 | 
				
			||||||
import enVxeTable from "vxe-table/lib/locale/lang/en-US";
 | 
					import enVxeTable from "vxe-table/lib/locale/lang/en-US";
 | 
				
			||||||
@ -7,158 +7,18 @@ import enVxeTable from "vxe-table/lib/locale/lang/en-US";
 | 
				
			|||||||
import enLocale from "element-plus/lib/locale/lang/en";
 | 
					import enLocale from "element-plus/lib/locale/lang/en";
 | 
				
			||||||
import zhLocale from "element-plus/lib/locale/lang/zh-cn";
 | 
					import zhLocale from "element-plus/lib/locale/lang/zh-cn";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 导航菜单配置
 | 
					// 项目内自定义国际化
 | 
				
			||||||
export const menusConfig = {
 | 
					const zhModules = import.meta.globEager("./zh-CN/**/*.ts");
 | 
				
			||||||
  zh: {
 | 
					const enModules = import.meta.globEager("./en/**/*.ts");
 | 
				
			||||||
    message: {
 | 
					 | 
				
			||||||
      hshome: "首页",
 | 
					 | 
				
			||||||
      hssysManagement: "系统管理",
 | 
					 | 
				
			||||||
      hsBaseinfo: "基础信息",
 | 
					 | 
				
			||||||
      hsDict: "字典管理",
 | 
					 | 
				
			||||||
      hseditor: "编辑器",
 | 
					 | 
				
			||||||
      hserror: "错误页面",
 | 
					 | 
				
			||||||
      hsfourZeroFour: "404",
 | 
					 | 
				
			||||||
      hsfourZeroOne: "401",
 | 
					 | 
				
			||||||
      hscomponents: "组件",
 | 
					 | 
				
			||||||
      hsvideo: "视频组件",
 | 
					 | 
				
			||||||
      hsmap: "地图组件",
 | 
					 | 
				
			||||||
      hsdraggable: "拖拽组件",
 | 
					 | 
				
			||||||
      hssplitPane: "切割面板",
 | 
					 | 
				
			||||||
      hsbutton: "按钮组件",
 | 
					 | 
				
			||||||
      hscropping: "图片裁剪",
 | 
					 | 
				
			||||||
      hscountTo: "数字动画",
 | 
					 | 
				
			||||||
      hsselector: "选择器组件",
 | 
					 | 
				
			||||||
      hsflowChart: "流程图",
 | 
					 | 
				
			||||||
      hsseamless: "无缝滚动",
 | 
					 | 
				
			||||||
      hscontextmenu: "右键菜单",
 | 
					 | 
				
			||||||
      hsmenus: "多级菜单",
 | 
					 | 
				
			||||||
      hsmenu1: "菜单1",
 | 
					 | 
				
			||||||
      "hsmenu1-1": "菜单1-1",
 | 
					 | 
				
			||||||
      "hsmenu1-2": "菜单1-2",
 | 
					 | 
				
			||||||
      "hsmenu1-2-1": "菜单1-2-1",
 | 
					 | 
				
			||||||
      "hsmenu1-2-2": "菜单1-2-2",
 | 
					 | 
				
			||||||
      "hsmenu1-3": "菜单1-3",
 | 
					 | 
				
			||||||
      hsmenu2: "菜单2",
 | 
					 | 
				
			||||||
      permission: "权限管理",
 | 
					 | 
				
			||||||
      permissionPage: "页面权限",
 | 
					 | 
				
			||||||
      permissionButton: "按钮权限",
 | 
					 | 
				
			||||||
      hstabs: "标签页操作",
 | 
					 | 
				
			||||||
      hsMenuTree: "菜单树结构",
 | 
					 | 
				
			||||||
      hsguide: "引导页",
 | 
					 | 
				
			||||||
      externalLink: "外链"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  en: {
 | 
					 | 
				
			||||||
    message: {
 | 
					 | 
				
			||||||
      hshome: "Home",
 | 
					 | 
				
			||||||
      hssysManagement: "System Manage",
 | 
					 | 
				
			||||||
      hsBaseinfo: "Base Info",
 | 
					 | 
				
			||||||
      hsDict: "Dict Manage",
 | 
					 | 
				
			||||||
      hseditor: "Editor",
 | 
					 | 
				
			||||||
      hserror: "Error Page",
 | 
					 | 
				
			||||||
      hsfourZeroFour: "404",
 | 
					 | 
				
			||||||
      hsfourZeroOne: "401",
 | 
					 | 
				
			||||||
      hscomponents: "Components",
 | 
					 | 
				
			||||||
      hsvideo: "Video Components",
 | 
					 | 
				
			||||||
      hsmap: "Map Components",
 | 
					 | 
				
			||||||
      hsdraggable: "Draggable Components",
 | 
					 | 
				
			||||||
      hssplitPane: "Split Pane",
 | 
					 | 
				
			||||||
      hsbutton: "Button Components",
 | 
					 | 
				
			||||||
      hscropping: "Picture Cropping",
 | 
					 | 
				
			||||||
      hscountTo: "Digital Animation",
 | 
					 | 
				
			||||||
      hsselector: "Selector Components",
 | 
					 | 
				
			||||||
      hsflowChart: "Flow Chart",
 | 
					 | 
				
			||||||
      hsseamless: "Seamless Scroll",
 | 
					 | 
				
			||||||
      hscontextmenu: "Context Menu",
 | 
					 | 
				
			||||||
      hsmenus: "MultiLevel Menu",
 | 
					 | 
				
			||||||
      hsmenu1: "Menu1",
 | 
					 | 
				
			||||||
      "hsmenu1-1": "Menu1-1",
 | 
					 | 
				
			||||||
      "hsmenu1-2": "Menu1-2",
 | 
					 | 
				
			||||||
      "hsmenu1-2-1": "Menu1-2-1",
 | 
					 | 
				
			||||||
      "hsmenu1-2-2": "Menu1-2-2",
 | 
					 | 
				
			||||||
      "hsmenu1-3": "Menu1-3",
 | 
					 | 
				
			||||||
      hsmenu2: "Menu2",
 | 
					 | 
				
			||||||
      permission: "Permission Manage",
 | 
					 | 
				
			||||||
      permissionPage: "Page Permission",
 | 
					 | 
				
			||||||
      permissionButton: "Button Permission",
 | 
					 | 
				
			||||||
      hstabs: "Tabs Operate",
 | 
					 | 
				
			||||||
      hsMenuTree: "Menu Tree",
 | 
					 | 
				
			||||||
      hsguide: "Guide",
 | 
					 | 
				
			||||||
      externalLink: "External Link"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 按钮配置
 | 
					 | 
				
			||||||
export const buttonConfig = {
 | 
					 | 
				
			||||||
  zh: {
 | 
					 | 
				
			||||||
    message: {
 | 
					 | 
				
			||||||
      hsLoginOut: "退出系统",
 | 
					 | 
				
			||||||
      hsfullscreen: "全屏",
 | 
					 | 
				
			||||||
      hsexitfullscreen: "退出全屏",
 | 
					 | 
				
			||||||
      hsrefreshRoute: "刷新路由",
 | 
					 | 
				
			||||||
      hslogin: "登陆",
 | 
					 | 
				
			||||||
      hsadd: "新增",
 | 
					 | 
				
			||||||
      hsmark: "标记/取消",
 | 
					 | 
				
			||||||
      hssave: "保存",
 | 
					 | 
				
			||||||
      hssearch: "搜索",
 | 
					 | 
				
			||||||
      hsexpendAll: "全部展开",
 | 
					 | 
				
			||||||
      hscollapseAll: "全部折叠",
 | 
					 | 
				
			||||||
      hssystemSet: "打开项目配置",
 | 
					 | 
				
			||||||
      hsdelete: "删除",
 | 
					 | 
				
			||||||
      hsreload: "重新加载",
 | 
					 | 
				
			||||||
      hscloseCurrentTab: "关闭当前标签页",
 | 
					 | 
				
			||||||
      hscloseLeftTabs: "关闭左侧标签页",
 | 
					 | 
				
			||||||
      hscloseRightTabs: "关闭右侧标签页",
 | 
					 | 
				
			||||||
      hscloseOtherTabs: "关闭其他标签页",
 | 
					 | 
				
			||||||
      hscloseAllTabs: "关闭全部标签页"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  en: {
 | 
					 | 
				
			||||||
    message: {
 | 
					 | 
				
			||||||
      hsLoginOut: "loginOut",
 | 
					 | 
				
			||||||
      hsfullscreen: "fullScreen",
 | 
					 | 
				
			||||||
      hsexitfullscreen: "exitFullscreen",
 | 
					 | 
				
			||||||
      hsrefreshRoute: "refreshRoute",
 | 
					 | 
				
			||||||
      hslogin: "login",
 | 
					 | 
				
			||||||
      hsadd: "Add",
 | 
					 | 
				
			||||||
      hsmark: "Mark/Cancel",
 | 
					 | 
				
			||||||
      hssave: "Save",
 | 
					 | 
				
			||||||
      hssearch: "Search",
 | 
					 | 
				
			||||||
      hsexpendAll: "Expand All",
 | 
					 | 
				
			||||||
      hscollapseAll: "Collapse All",
 | 
					 | 
				
			||||||
      hssystemSet: "Open ProjectConfig",
 | 
					 | 
				
			||||||
      hsdelete: "Delete",
 | 
					 | 
				
			||||||
      hsreload: "Reload",
 | 
					 | 
				
			||||||
      hscloseCurrentTab: "Close CurrentTab",
 | 
					 | 
				
			||||||
      hscloseLeftTabs: "Close LeftTabs",
 | 
					 | 
				
			||||||
      hscloseRightTabs: "Close RightTabs",
 | 
					 | 
				
			||||||
      hscloseOtherTabs: "Close OtherTabs",
 | 
					 | 
				
			||||||
      hscloseAllTabs: "Close AllTabs"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 配置
 | 
					 | 
				
			||||||
// export const xxxx = {
 | 
					 | 
				
			||||||
//   zh: {
 | 
					 | 
				
			||||||
//     message: {},
 | 
					 | 
				
			||||||
//   },
 | 
					 | 
				
			||||||
//   en: {
 | 
					 | 
				
			||||||
//     message: {},
 | 
					 | 
				
			||||||
//   },
 | 
					 | 
				
			||||||
// };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const localesList = [menusConfig, buttonConfig];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const localesConfigs = {
 | 
					export const localesConfigs = {
 | 
				
			||||||
  zh: {
 | 
					  zh: {
 | 
				
			||||||
    message: Object.assign({}, ...localesList.map(v => v.zh.message)),
 | 
					    ...siphonI18n(zhModules, "zh-CN"),
 | 
				
			||||||
    ...zhVxeTable,
 | 
					    ...zhVxeTable,
 | 
				
			||||||
    ...zhLocale
 | 
					    ...zhLocale
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  en: {
 | 
					  en: {
 | 
				
			||||||
    message: Object.assign({}, ...localesList.map(v => v.en.message)),
 | 
					    ...siphonI18n(enModules, "en"),
 | 
				
			||||||
    ...enVxeTable,
 | 
					    ...enVxeTable,
 | 
				
			||||||
    ...enLocale
 | 
					    ...enLocale
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								src/plugins/i18n/en/buttons.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/plugins/i18n/en/buttons.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  hsLoginOut: "LoginOut",
 | 
				
			||||||
 | 
					  hsfullscreen: "FullScreen",
 | 
				
			||||||
 | 
					  hsexitfullscreen: "ExitFullscreen",
 | 
				
			||||||
 | 
					  hsrefreshRoute: "RefreshRoute",
 | 
				
			||||||
 | 
					  hslogin: "Login",
 | 
				
			||||||
 | 
					  hsadd: "Add",
 | 
				
			||||||
 | 
					  hsmark: "Mark/Cancel",
 | 
				
			||||||
 | 
					  hssave: "Save",
 | 
				
			||||||
 | 
					  hssearch: "Search",
 | 
				
			||||||
 | 
					  hsexpendAll: "Expand All",
 | 
				
			||||||
 | 
					  hscollapseAll: "Collapse All",
 | 
				
			||||||
 | 
					  hssystemSet: "Open ProjectConfig",
 | 
				
			||||||
 | 
					  hsdelete: "Delete",
 | 
				
			||||||
 | 
					  hsreload: "Reload",
 | 
				
			||||||
 | 
					  hscloseCurrentTab: "Close CurrentTab",
 | 
				
			||||||
 | 
					  hscloseLeftTabs: "Close LeftTabs",
 | 
				
			||||||
 | 
					  hscloseRightTabs: "Close RightTabs",
 | 
				
			||||||
 | 
					  hscloseOtherTabs: "Close OtherTabs",
 | 
				
			||||||
 | 
					  hscloseAllTabs: "Close AllTabs"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										38
									
								
								src/plugins/i18n/en/menus.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/plugins/i18n/en/menus.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  hshome: "Home",
 | 
				
			||||||
 | 
					  hslogin: "Login",
 | 
				
			||||||
 | 
					  hssysManagement: "System Manage",
 | 
				
			||||||
 | 
					  hsBaseinfo: "Base Info",
 | 
				
			||||||
 | 
					  hsDict: "Dict Manage",
 | 
				
			||||||
 | 
					  hseditor: "Editor",
 | 
				
			||||||
 | 
					  hserror: "Error Page",
 | 
				
			||||||
 | 
					  hsfourZeroFour: "404",
 | 
				
			||||||
 | 
					  hsfourZeroOne: "401",
 | 
				
			||||||
 | 
					  hscomponents: "Components",
 | 
				
			||||||
 | 
					  hsvideo: "Video Components",
 | 
				
			||||||
 | 
					  hsmap: "Map Components",
 | 
				
			||||||
 | 
					  hsdraggable: "Draggable Components",
 | 
				
			||||||
 | 
					  hssplitPane: "Split Pane",
 | 
				
			||||||
 | 
					  hsbutton: "Button Components",
 | 
				
			||||||
 | 
					  hscropping: "Picture Cropping",
 | 
				
			||||||
 | 
					  hscountTo: "Digital Animation",
 | 
				
			||||||
 | 
					  hsselector: "Selector Components",
 | 
				
			||||||
 | 
					  hsflowChart: "Flow Chart",
 | 
				
			||||||
 | 
					  hsseamless: "Seamless Scroll",
 | 
				
			||||||
 | 
					  hscontextmenu: "Context Menu",
 | 
				
			||||||
 | 
					  hsmenus: "MultiLevel Menu",
 | 
				
			||||||
 | 
					  hsmenu1: "Menu1",
 | 
				
			||||||
 | 
					  "hsmenu1-1": "Menu1-1",
 | 
				
			||||||
 | 
					  "hsmenu1-2": "Menu1-2",
 | 
				
			||||||
 | 
					  "hsmenu1-2-1": "Menu1-2-1",
 | 
				
			||||||
 | 
					  "hsmenu1-2-2": "Menu1-2-2",
 | 
				
			||||||
 | 
					  "hsmenu1-3": "Menu1-3",
 | 
				
			||||||
 | 
					  hsmenu2: "Menu2",
 | 
				
			||||||
 | 
					  permission: "Permission Manage",
 | 
				
			||||||
 | 
					  permissionPage: "Page Permission",
 | 
				
			||||||
 | 
					  permissionButton: "Button Permission",
 | 
				
			||||||
 | 
					  hstabs: "Tabs Operate",
 | 
				
			||||||
 | 
					  hsMenuTree: "Menu Tree",
 | 
				
			||||||
 | 
					  hsguide: "Guide",
 | 
				
			||||||
 | 
					  externalLink: "External Link"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -1,19 +1,10 @@
 | 
				
			|||||||
// 多组件库的国际化和本地项目国际化兼容
 | 
					// 多组件库的国际化和本地项目国际化兼容
 | 
				
			||||||
import { App } from "vue";
 | 
					import { App } from "vue";
 | 
				
			||||||
 | 
					import { set } from "lodash-es";
 | 
				
			||||||
import { createI18n } from "vue-i18n";
 | 
					import { createI18n } from "vue-i18n";
 | 
				
			||||||
import { localesConfigs } from "./config";
 | 
					import { localesConfigs } from "./config";
 | 
				
			||||||
import { storageLocal } from "/@/utils/storage";
 | 
					import { storageLocal } from "/@/utils/storage";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const i18n = createI18n({
 | 
					 | 
				
			||||||
  locale: storageLocal.getItem("responsive-locale")?.locale ?? "zh",
 | 
					 | 
				
			||||||
  fallbackLocale: "en",
 | 
					 | 
				
			||||||
  messages: localesConfigs
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export function usI18n(app: App) {
 | 
					 | 
				
			||||||
  app.use(i18n);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 国际化转换工具函数
 | 
					 * 国际化转换工具函数
 | 
				
			||||||
 * @param message message
 | 
					 * @param message message
 | 
				
			||||||
@ -37,3 +28,47 @@ export function transformI18n(message: string | object = "", isI18n = false) {
 | 
				
			|||||||
    return message;
 | 
					    return message;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 从模块中抽取国际化
 | 
				
			||||||
 | 
					 * @param langs 存放国际化模块
 | 
				
			||||||
 | 
					 * @param prefix 语言 默认 zh-CN
 | 
				
			||||||
 | 
					 * @returns obj 格式:{模块名.**}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export function siphonI18n(
 | 
				
			||||||
 | 
					  langs: Record<string, Record<string, any>>,
 | 
				
			||||||
 | 
					  prefix = "zh-CN"
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  const langsObj: Recordable = {};
 | 
				
			||||||
 | 
					  Object.keys(langs).forEach((key: string) => {
 | 
				
			||||||
 | 
					    let fileName = key.replace(`./${prefix}/`, "").replace(/^\.\//, "");
 | 
				
			||||||
 | 
					    fileName = fileName.substring(0, fileName.lastIndexOf("."));
 | 
				
			||||||
 | 
					    const keyList = fileName.split("/");
 | 
				
			||||||
 | 
					    const moduleName = keyList.shift();
 | 
				
			||||||
 | 
					    const objKey = keyList.join(".");
 | 
				
			||||||
 | 
					    const langFileModule = langs[key].default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (moduleName) {
 | 
				
			||||||
 | 
					      if (objKey) {
 | 
				
			||||||
 | 
					        set(langsObj, moduleName, langsObj[moduleName] || {});
 | 
				
			||||||
 | 
					        set(langsObj[moduleName], objKey, langFileModule);
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        set(langsObj, moduleName, langFileModule || {});
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  return langsObj;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 此函数只是配合i18n Ally插件来进行国际化智能提示,并无实际意义(只对提示起作用),如果不需要国际化可删除
 | 
				
			||||||
 | 
					export const $t = (key: string) => key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const i18n = createI18n({
 | 
				
			||||||
 | 
					  locale: storageLocal.getItem("responsive-locale")?.locale ?? "zh",
 | 
				
			||||||
 | 
					  fallbackLocale: "en",
 | 
				
			||||||
 | 
					  messages: localesConfigs
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function usI18n(app: App) {
 | 
				
			||||||
 | 
					  app.use(i18n);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								src/plugins/i18n/zh-CN/buttons.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/plugins/i18n/zh-CN/buttons.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  hsLoginOut: "退出系统",
 | 
				
			||||||
 | 
					  hsfullscreen: "全屏",
 | 
				
			||||||
 | 
					  hsexitfullscreen: "退出全屏",
 | 
				
			||||||
 | 
					  hsrefreshRoute: "刷新路由",
 | 
				
			||||||
 | 
					  hslogin: "登陆",
 | 
				
			||||||
 | 
					  hsadd: "新增",
 | 
				
			||||||
 | 
					  hsmark: "标记/取消",
 | 
				
			||||||
 | 
					  hssave: "保存",
 | 
				
			||||||
 | 
					  hssearch: "搜索",
 | 
				
			||||||
 | 
					  hsexpendAll: "全部展开",
 | 
				
			||||||
 | 
					  hscollapseAll: "全部折叠",
 | 
				
			||||||
 | 
					  hssystemSet: "打开项目配置",
 | 
				
			||||||
 | 
					  hsdelete: "删除",
 | 
				
			||||||
 | 
					  hsreload: "重新加载",
 | 
				
			||||||
 | 
					  hscloseCurrentTab: "关闭当前标签页",
 | 
				
			||||||
 | 
					  hscloseLeftTabs: "关闭左侧标签页",
 | 
				
			||||||
 | 
					  hscloseRightTabs: "关闭右侧标签页",
 | 
				
			||||||
 | 
					  hscloseOtherTabs: "关闭其他标签页",
 | 
				
			||||||
 | 
					  hscloseAllTabs: "关闭全部标签页"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										38
									
								
								src/plugins/i18n/zh-CN/menus.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/plugins/i18n/zh-CN/menus.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  hshome: "首页",
 | 
				
			||||||
 | 
					  hslogin: "登陆",
 | 
				
			||||||
 | 
					  hssysManagement: "系统管理",
 | 
				
			||||||
 | 
					  hsBaseinfo: "基础信息",
 | 
				
			||||||
 | 
					  hsDict: "字典管理",
 | 
				
			||||||
 | 
					  hseditor: "编辑器",
 | 
				
			||||||
 | 
					  hserror: "错误页面",
 | 
				
			||||||
 | 
					  hsfourZeroFour: "404",
 | 
				
			||||||
 | 
					  hsfourZeroOne: "401",
 | 
				
			||||||
 | 
					  hscomponents: "组件",
 | 
				
			||||||
 | 
					  hsvideo: "视频组件",
 | 
				
			||||||
 | 
					  hsmap: "地图组件",
 | 
				
			||||||
 | 
					  hsdraggable: "拖拽组件",
 | 
				
			||||||
 | 
					  hssplitPane: "切割面板",
 | 
				
			||||||
 | 
					  hsbutton: "按钮组件",
 | 
				
			||||||
 | 
					  hscropping: "图片裁剪",
 | 
				
			||||||
 | 
					  hscountTo: "数字动画",
 | 
				
			||||||
 | 
					  hsselector: "选择器组件",
 | 
				
			||||||
 | 
					  hsflowChart: "流程图",
 | 
				
			||||||
 | 
					  hsseamless: "无缝滚动",
 | 
				
			||||||
 | 
					  hscontextmenu: "右键菜单",
 | 
				
			||||||
 | 
					  hsmenus: "多级菜单",
 | 
				
			||||||
 | 
					  hsmenu1: "菜单1",
 | 
				
			||||||
 | 
					  "hsmenu1-1": "菜单1-1",
 | 
				
			||||||
 | 
					  "hsmenu1-2": "菜单1-2",
 | 
				
			||||||
 | 
					  "hsmenu1-2-1": "菜单1-2-1",
 | 
				
			||||||
 | 
					  "hsmenu1-2-2": "菜单1-2-2",
 | 
				
			||||||
 | 
					  "hsmenu1-3": "菜单1-3",
 | 
				
			||||||
 | 
					  hsmenu2: "菜单2",
 | 
				
			||||||
 | 
					  permission: "权限管理",
 | 
				
			||||||
 | 
					  permissionPage: "页面权限",
 | 
				
			||||||
 | 
					  permissionButton: "按钮权限",
 | 
				
			||||||
 | 
					  hstabs: "标签页操作",
 | 
				
			||||||
 | 
					  hsMenuTree: "菜单树结构",
 | 
				
			||||||
 | 
					  hsguide: "引导页",
 | 
				
			||||||
 | 
					  externalLink: "外链"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -65,8 +65,8 @@ VXETable.setup({
 | 
				
			|||||||
  i18n: (key, args) => i18n.global.t(key, args),
 | 
					  i18n: (key, args) => i18n.global.t(key, args),
 | 
				
			||||||
  // 可选,对参数中的列头、校验提示..等进行自动翻译(只对支持国际化的有效)
 | 
					  // 可选,对参数中的列头、校验提示..等进行自动翻译(只对支持国际化的有效)
 | 
				
			||||||
  translate(key, args) {
 | 
					  translate(key, args) {
 | 
				
			||||||
    // 例如,只翻译 "message." 开头的键值
 | 
					    // 例如,只翻译 "buttons." 开头的键值
 | 
				
			||||||
    if (key && key.indexOf("message.") > -1) {
 | 
					    if (key && key.indexOf("buttons.") > -1) {
 | 
				
			||||||
      return i18n.global.t(key, args);
 | 
					      return i18n.global.t(key, args);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (key && key.indexOf("el.") > -1) {
 | 
					    if (key && key.indexOf("el.") > -1) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const componentsRouter = {
 | 
					const componentsRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const componentsRouter = {
 | 
				
			|||||||
  redirect: "/components/video",
 | 
					  redirect: "/components/video",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Menu",
 | 
					    icon: "Menu",
 | 
				
			||||||
    title: "message.hscomponents",
 | 
					    title: $t("menus.hscomponents"),
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 4
 | 
					    rank: 4
 | 
				
			||||||
@ -18,7 +19,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "video",
 | 
					      name: "video",
 | 
				
			||||||
      component: () => import("/@/views/components/video/index.vue"),
 | 
					      component: () => import("/@/views/components/video/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsvideo",
 | 
					        title: $t("menus.hsvideo"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true
 | 
					        i18n: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -28,7 +29,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "map",
 | 
					      name: "map",
 | 
				
			||||||
      component: () => import("/@/views/components/map/index.vue"),
 | 
					      component: () => import("/@/views/components/map/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsmap",
 | 
					        title: $t("menus.hsmap"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        keepAlive: true,
 | 
					        keepAlive: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
@ -42,7 +43,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "draggable",
 | 
					      name: "draggable",
 | 
				
			||||||
      component: () => import("/@/views/components/draggable/index.vue"),
 | 
					      component: () => import("/@/views/components/draggable/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsdraggable",
 | 
					        title: $t("menus.hsdraggable"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        transition: {
 | 
					        transition: {
 | 
				
			||||||
@ -57,7 +58,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "splitPane",
 | 
					      name: "splitPane",
 | 
				
			||||||
      component: () => import("/@/views/components/split-pane/index.vue"),
 | 
					      component: () => import("/@/views/components/split-pane/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hssplitPane",
 | 
					        title: $t("menus.hssplitPane"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        extraIcon: {
 | 
					        extraIcon: {
 | 
				
			||||||
@ -71,7 +72,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "button",
 | 
					      name: "button",
 | 
				
			||||||
      component: () => import("/@/views/components/button/index.vue"),
 | 
					      component: () => import("/@/views/components/button/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsbutton",
 | 
					        title: $t("menus.hsbutton"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -81,7 +82,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "cropping",
 | 
					      name: "cropping",
 | 
				
			||||||
      component: () => import("/@/views/components/cropping/index.vue"),
 | 
					      component: () => import("/@/views/components/cropping/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hscropping",
 | 
					        title: $t("menus.hscropping"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -91,7 +92,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "countTo",
 | 
					      name: "countTo",
 | 
				
			||||||
      component: () => import("/@/views/components/count-to/index.vue"),
 | 
					      component: () => import("/@/views/components/count-to/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hscountTo",
 | 
					        title: $t("menus.hscountTo"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -101,7 +102,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "selector",
 | 
					      name: "selector",
 | 
				
			||||||
      component: () => import("/@/views/components/selector/index.vue"),
 | 
					      component: () => import("/@/views/components/selector/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsselector",
 | 
					        title: $t("menus.hsselector"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -111,7 +112,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "seamlessScroll",
 | 
					      name: "seamlessScroll",
 | 
				
			||||||
      component: () => import("/@/views/components/seamless-scroll/index.vue"),
 | 
					      component: () => import("/@/views/components/seamless-scroll/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsseamless",
 | 
					        title: $t("menus.hsseamless"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -121,7 +122,7 @@ const componentsRouter = {
 | 
				
			|||||||
      name: "contextmenu",
 | 
					      name: "contextmenu",
 | 
				
			||||||
      component: () => import("/@/views/components/contextmenu/index.vue"),
 | 
					      component: () => import("/@/views/components/contextmenu/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hscontextmenu",
 | 
					        title: $t("menus.hscontextmenu"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const editorRouter = {
 | 
					const editorRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const editorRouter = {
 | 
				
			|||||||
  redirect: "/editor/index",
 | 
					  redirect: "/editor/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Edit",
 | 
					    icon: "Edit",
 | 
				
			||||||
    title: "message.hseditor",
 | 
					    title: $t("menus.hseditor"),
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 2
 | 
					    rank: 2
 | 
				
			||||||
@ -18,7 +19,7 @@ const editorRouter = {
 | 
				
			|||||||
      name: "reEditor",
 | 
					      name: "reEditor",
 | 
				
			||||||
      component: () => import("/@/views/editor/index.vue"),
 | 
					      component: () => import("/@/views/editor/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hseditor",
 | 
					        title: $t("menus.hseditor"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        keepAlive: true,
 | 
					        keepAlive: true,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const errorRouter = {
 | 
					const errorRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const errorRouter = {
 | 
				
			|||||||
  redirect: "/error/401",
 | 
					  redirect: "/error/401",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Position",
 | 
					    icon: "Position",
 | 
				
			||||||
    title: "message.hserror",
 | 
					    title: $t("menus.hserror"),
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    rank: 7
 | 
					    rank: 7
 | 
				
			||||||
@ -18,7 +19,7 @@ const errorRouter = {
 | 
				
			|||||||
      name: "401",
 | 
					      name: "401",
 | 
				
			||||||
      component: () => import("/@/views/error/401.vue"),
 | 
					      component: () => import("/@/views/error/401.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsfourZeroOne",
 | 
					        title: $t("menus.hsfourZeroOne"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -28,7 +29,7 @@ const errorRouter = {
 | 
				
			|||||||
      name: "404",
 | 
					      name: "404",
 | 
				
			||||||
      component: () => import("/@/views/error/404.vue"),
 | 
					      component: () => import("/@/views/error/404.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsfourZeroFour",
 | 
					        title: $t("menus.hsfourZeroFour"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const externalLink = {
 | 
					const externalLink = {
 | 
				
			||||||
@ -6,7 +7,7 @@ const externalLink = {
 | 
				
			|||||||
  component: Layout,
 | 
					  component: Layout,
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Link",
 | 
					    icon: "Link",
 | 
				
			||||||
    title: "message.externalLink",
 | 
					    title: $t("menus.externalLink"),
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    rank: 190
 | 
					    rank: 190
 | 
				
			||||||
@ -15,7 +16,7 @@ const externalLink = {
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "https://github.com/xiaoxian521/vue-pure-admin",
 | 
					      path: "https://github.com/xiaoxian521/vue-pure-admin",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.externalLink",
 | 
					        title: $t("menus.externalLink"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        rank: 191
 | 
					        rank: 191
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const flowChartRouter = {
 | 
					const flowChartRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const flowChartRouter = {
 | 
				
			|||||||
  redirect: "/flowChart/index",
 | 
					  redirect: "/flowChart/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "SetUp",
 | 
					    icon: "SetUp",
 | 
				
			||||||
    title: "message.hsflowChart",
 | 
					    title: $t("menus.hsflowChart"),
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    rank: 1
 | 
					    rank: 1
 | 
				
			||||||
@ -18,7 +19,7 @@ const flowChartRouter = {
 | 
				
			|||||||
      name: "flowChart",
 | 
					      name: "flowChart",
 | 
				
			||||||
      component: () => import("/@/views/flow-chart/index.vue"),
 | 
					      component: () => import("/@/views/flow-chart/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsflowChart",
 | 
					        title: $t("menus.hsflowChart"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const guideRouter = {
 | 
					const guideRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const guideRouter = {
 | 
				
			|||||||
  redirect: "/guide/index",
 | 
					  redirect: "/guide/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "Guide",
 | 
					    icon: "Guide",
 | 
				
			||||||
    title: "message.hsguide",
 | 
					    title: $t("menus.hsguide"),
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 10
 | 
					    rank: 10
 | 
				
			||||||
@ -18,7 +19,7 @@ const guideRouter = {
 | 
				
			|||||||
      name: "reGuide",
 | 
					      name: "reGuide",
 | 
				
			||||||
      component: () => import("/@/views/guide/index.vue"),
 | 
					      component: () => import("/@/views/guide/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsguide",
 | 
					        title: $t("menus.hsguide"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true
 | 
					        i18n: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const homeRouter = {
 | 
					const homeRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const homeRouter = {
 | 
				
			|||||||
  redirect: "/welcome",
 | 
					  redirect: "/welcome",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "HomeFilled",
 | 
					    icon: "HomeFilled",
 | 
				
			||||||
    title: "message.hshome",
 | 
					    title: $t("menus.hshome"),
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    rank: 0
 | 
					    rank: 0
 | 
				
			||||||
@ -18,7 +19,7 @@ const homeRouter = {
 | 
				
			|||||||
      name: "welcome",
 | 
					      name: "welcome",
 | 
				
			||||||
      component: () => import("/@/views/welcome.vue"),
 | 
					      component: () => import("/@/views/welcome.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hshome",
 | 
					        title: $t("menus.hshome"),
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        showLink: true
 | 
					        showLink: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const menuTreeRouter = {
 | 
					const menuTreeRouter = {
 | 
				
			||||||
@ -7,7 +8,7 @@ const menuTreeRouter = {
 | 
				
			|||||||
  redirect: "/menuTree/index",
 | 
					  redirect: "/menuTree/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "RI-node-tree",
 | 
					    icon: "RI-node-tree",
 | 
				
			||||||
    title: "message.hsMenuTree",
 | 
					    title: $t("menus.hsMenuTree"),
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    rank: 9
 | 
					    rank: 9
 | 
				
			||||||
@ -18,7 +19,7 @@ const menuTreeRouter = {
 | 
				
			|||||||
      name: "reMenuTree",
 | 
					      name: "reMenuTree",
 | 
				
			||||||
      component: () => import("/@/views/menu-tree/index.vue"),
 | 
					      component: () => import("/@/views/menu-tree/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsMenuTree",
 | 
					        title: $t("menus.hsMenuTree"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true
 | 
					        i18n: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const nestedRouter = {
 | 
					const nestedRouter = {
 | 
				
			||||||
@ -6,7 +7,7 @@ const nestedRouter = {
 | 
				
			|||||||
  redirect: "/nested/menu1/menu1-1",
 | 
					  redirect: "/nested/menu1/menu1-1",
 | 
				
			||||||
  name: "Nested",
 | 
					  name: "Nested",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    title: "message.hsmenus",
 | 
					    title: $t("menus.hsmenus"),
 | 
				
			||||||
    icon: "Histogram",
 | 
					    icon: "Histogram",
 | 
				
			||||||
    showLink: true,
 | 
					    showLink: true,
 | 
				
			||||||
    i18n: true,
 | 
					    i18n: true,
 | 
				
			||||||
@ -18,7 +19,7 @@ const nestedRouter = {
 | 
				
			|||||||
      component: () => import("/@/layout/routerView/parent.vue"),
 | 
					      component: () => import("/@/layout/routerView/parent.vue"),
 | 
				
			||||||
      name: "Menu1",
 | 
					      name: "Menu1",
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsmenu1",
 | 
					        title: $t("menus.hsmenu1"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        keepAlive: true
 | 
					        keepAlive: true
 | 
				
			||||||
@ -30,7 +31,7 @@ const nestedRouter = {
 | 
				
			|||||||
          component: () => import("/@/views/nested/menu1/menu1-1/index.vue"),
 | 
					          component: () => import("/@/views/nested/menu1/menu1-1/index.vue"),
 | 
				
			||||||
          name: "Menu1-1",
 | 
					          name: "Menu1-1",
 | 
				
			||||||
          meta: {
 | 
					          meta: {
 | 
				
			||||||
            title: "message.hsmenu1-1",
 | 
					            title: $t("menus.hsmenu1-1"),
 | 
				
			||||||
            showLink: true,
 | 
					            showLink: true,
 | 
				
			||||||
            i18n: true,
 | 
					            i18n: true,
 | 
				
			||||||
            keepAlive: true
 | 
					            keepAlive: true
 | 
				
			||||||
@ -42,7 +43,7 @@ const nestedRouter = {
 | 
				
			|||||||
          name: "Menu1-2",
 | 
					          name: "Menu1-2",
 | 
				
			||||||
          redirect: "/nested/menu1/menu1-2/menu1-2-1",
 | 
					          redirect: "/nested/menu1/menu1-2/menu1-2-1",
 | 
				
			||||||
          meta: {
 | 
					          meta: {
 | 
				
			||||||
            title: "message.hsmenu1-2",
 | 
					            title: $t("menus.hsmenu1-2"),
 | 
				
			||||||
            showLink: true,
 | 
					            showLink: true,
 | 
				
			||||||
            i18n: true,
 | 
					            i18n: true,
 | 
				
			||||||
            keepAlive: true
 | 
					            keepAlive: true
 | 
				
			||||||
@ -54,7 +55,7 @@ const nestedRouter = {
 | 
				
			|||||||
                import("/@/views/nested/menu1/menu1-2/menu1-2-1/index.vue"),
 | 
					                import("/@/views/nested/menu1/menu1-2/menu1-2-1/index.vue"),
 | 
				
			||||||
              name: "Menu1-2-1",
 | 
					              name: "Menu1-2-1",
 | 
				
			||||||
              meta: {
 | 
					              meta: {
 | 
				
			||||||
                title: "message.hsmenu1-2-1",
 | 
					                title: $t("menus.hsmenu1-2-1"),
 | 
				
			||||||
                showLink: true,
 | 
					                showLink: true,
 | 
				
			||||||
                i18n: true,
 | 
					                i18n: true,
 | 
				
			||||||
                keepAlive: true
 | 
					                keepAlive: true
 | 
				
			||||||
@ -66,7 +67,7 @@ const nestedRouter = {
 | 
				
			|||||||
                import("/@/views/nested/menu1/menu1-2/menu1-2-2/index.vue"),
 | 
					                import("/@/views/nested/menu1/menu1-2/menu1-2-2/index.vue"),
 | 
				
			||||||
              name: "Menu1-2-2",
 | 
					              name: "Menu1-2-2",
 | 
				
			||||||
              meta: {
 | 
					              meta: {
 | 
				
			||||||
                title: "message.hsmenu1-2-2",
 | 
					                title: $t("menus.hsmenu1-2-2"),
 | 
				
			||||||
                showLink: true,
 | 
					                showLink: true,
 | 
				
			||||||
                keepAlive: true,
 | 
					                keepAlive: true,
 | 
				
			||||||
                i18n: true,
 | 
					                i18n: true,
 | 
				
			||||||
@ -83,7 +84,7 @@ const nestedRouter = {
 | 
				
			|||||||
          component: () => import("/@/views/nested/menu1/menu1-3/index.vue"),
 | 
					          component: () => import("/@/views/nested/menu1/menu1-3/index.vue"),
 | 
				
			||||||
          name: "Menu1-3",
 | 
					          name: "Menu1-3",
 | 
				
			||||||
          meta: {
 | 
					          meta: {
 | 
				
			||||||
            title: "message.hsmenu1-3",
 | 
					            title: $t("menus.hsmenu1-3"),
 | 
				
			||||||
            showLink: true,
 | 
					            showLink: true,
 | 
				
			||||||
            i18n: true,
 | 
					            i18n: true,
 | 
				
			||||||
            keepAlive: true
 | 
					            keepAlive: true
 | 
				
			||||||
@ -96,7 +97,7 @@ const nestedRouter = {
 | 
				
			|||||||
      name: "Menu2",
 | 
					      name: "Menu2",
 | 
				
			||||||
      component: () => import("/@/views/nested/menu2/index.vue"),
 | 
					      component: () => import("/@/views/nested/menu2/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsmenu2",
 | 
					        title: $t("menus.hsmenu2"),
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        i18n: true,
 | 
					        i18n: true,
 | 
				
			||||||
        keepAlive: true
 | 
					        keepAlive: true
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import Layout from "/@/layout/index.vue";
 | 
					import Layout from "/@/layout/index.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const remainingRouter = [
 | 
					const remainingRouter = [
 | 
				
			||||||
@ -6,7 +7,7 @@ const remainingRouter = [
 | 
				
			|||||||
    name: "login",
 | 
					    name: "login",
 | 
				
			||||||
    component: () => import("/@/views/login.vue"),
 | 
					    component: () => import("/@/views/login.vue"),
 | 
				
			||||||
    meta: {
 | 
					    meta: {
 | 
				
			||||||
      title: "message.hslogin",
 | 
					      title: $t("menus.hslogin"),
 | 
				
			||||||
      showLink: false,
 | 
					      showLink: false,
 | 
				
			||||||
      i18n: true,
 | 
					      i18n: true,
 | 
				
			||||||
      rank: 101
 | 
					      rank: 101
 | 
				
			||||||
@ -18,7 +19,7 @@ const remainingRouter = [
 | 
				
			|||||||
    component: Layout,
 | 
					    component: Layout,
 | 
				
			||||||
    meta: {
 | 
					    meta: {
 | 
				
			||||||
      icon: "HomeFilled",
 | 
					      icon: "HomeFilled",
 | 
				
			||||||
      title: "message.hshome",
 | 
					      title: $t("menus.hshome"),
 | 
				
			||||||
      i18n: true,
 | 
					      i18n: true,
 | 
				
			||||||
      showLink: false,
 | 
					      showLink: false,
 | 
				
			||||||
      rank: 104
 | 
					      rank: 104
 | 
				
			||||||
 | 
				
			|||||||
@ -15,8 +15,8 @@ export const useMultiTagsStore = defineStore({
 | 
				
			|||||||
            path: "/welcome",
 | 
					            path: "/welcome",
 | 
				
			||||||
            parentPath: "/",
 | 
					            parentPath: "/",
 | 
				
			||||||
            meta: {
 | 
					            meta: {
 | 
				
			||||||
              title: "message.hshome",
 | 
					              title: "menus.hshome",
 | 
				
			||||||
              icon: "el-icon-s-home",
 | 
					              icon: "HomeFilled",
 | 
				
			||||||
              i18n: true,
 | 
					              i18n: true,
 | 
				
			||||||
              showLink: true
 | 
					              showLink: true
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -58,8 +58,8 @@ export const useUserStore = defineStore({
 | 
				
			|||||||
          path: "/welcome",
 | 
					          path: "/welcome",
 | 
				
			||||||
          parentPath: "/",
 | 
					          parentPath: "/",
 | 
				
			||||||
          meta: {
 | 
					          meta: {
 | 
				
			||||||
            title: "message.hshome",
 | 
					            title: "menus.hshome",
 | 
				
			||||||
            icon: "el-icon-s-home",
 | 
					            icon: "HomeFilled",
 | 
				
			||||||
            i18n: true,
 | 
					            i18n: true,
 | 
				
			||||||
            showLink: true
 | 
					            showLink: true
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
				
			|||||||
@ -41,7 +41,7 @@ export const injectResponsiveStorage = (app: App, config: ServerConfigs) => {
 | 
				
			|||||||
                path: "/welcome",
 | 
					                path: "/welcome",
 | 
				
			||||||
                parentPath: "/",
 | 
					                parentPath: "/",
 | 
				
			||||||
                meta: {
 | 
					                meta: {
 | 
				
			||||||
                  title: "message.hshome",
 | 
					                  title: "menus.hshome",
 | 
				
			||||||
                  i18n: true,
 | 
					                  i18n: true,
 | 
				
			||||||
                  icon: "HomeFilled",
 | 
					                  icon: "HomeFilled",
 | 
				
			||||||
                  showLink: true
 | 
					                  showLink: true
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <p>{{ $t("message.hsmenu1") }}</p>
 | 
					    <p>{{ $t("menus.hsmenu1") }}</p>
 | 
				
			||||||
    <p style="text-indent: 2em">{{ $t("message.hsmenu1-1") }}</p>
 | 
					    <p style="text-indent: 2em">{{ $t("menus.hsmenu1-1") }}</p>
 | 
				
			||||||
    <el-input v-model="input" />
 | 
					    <el-input v-model="input" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <p>{{ $t("message.hsmenu1") }}</p>
 | 
					    <p>{{ $t("menus.hsmenu1") }}</p>
 | 
				
			||||||
    <p style="text-indent: 2em">{{ $t("message.hsmenu1-2") }}</p>
 | 
					    <p style="text-indent: 2em">{{ $t("menus.hsmenu1-2") }}</p>
 | 
				
			||||||
    <p style="text-indent: 4em">{{ $t("message.hsmenu1-2-1") }}</p>
 | 
					    <p style="text-indent: 4em">{{ $t("menus.hsmenu1-2-1") }}</p>
 | 
				
			||||||
    <el-input v-model="input" />
 | 
					    <el-input v-model="input" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <p>{{ $t("message.hsmenu1") }}</p>
 | 
					    <p>{{ $t("menus.hsmenu1") }}</p>
 | 
				
			||||||
    <p style="text-indent: 2em">{{ $t("message.hsmenu1-2") }}</p>
 | 
					    <p style="text-indent: 2em">{{ $t("menus.hsmenu1-2") }}</p>
 | 
				
			||||||
    <p style="text-indent: 4em">{{ $t("message.hsmenu1-2-2") }}</p>
 | 
					    <p style="text-indent: 4em">{{ $t("menus.hsmenu1-2-2") }}</p>
 | 
				
			||||||
    <el-input v-model="input" />
 | 
					    <el-input v-model="input" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <p>{{ $t("message.hsmenu1") }}</p>
 | 
					    <p>{{ $t("menus.hsmenu1") }}</p>
 | 
				
			||||||
    <p style="text-indent: 2em">{{ $t("message.hsmenu1-3") }}</p>
 | 
					    <p style="text-indent: 2em">{{ $t("menus.hsmenu1-3") }}</p>
 | 
				
			||||||
    <el-input v-model="input" />
 | 
					    <el-input v-model="input" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <p>{{ $t("message.hsmenu2") }}</p>
 | 
					    <p>{{ $t("menus.hsmenu2") }}</p>
 | 
				
			||||||
    <el-input v-model="input" />
 | 
					    <el-input v-model="input" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -101,13 +101,13 @@ const checkboxChangeEvent: VxeTableEvents.CheckboxChange = ({ records }) => {
 | 
				
			|||||||
            <template #default="{ row }">
 | 
					            <template #default="{ row }">
 | 
				
			||||||
              <vxe-button
 | 
					              <vxe-button
 | 
				
			||||||
                type="text"
 | 
					                type="text"
 | 
				
			||||||
                icon="el-icon-edit"
 | 
					                icon="fa fa-pencil-square-o"
 | 
				
			||||||
                @click="editConfig(row)"
 | 
					                @click="editConfig(row)"
 | 
				
			||||||
                >编辑</vxe-button
 | 
					                >编辑</vxe-button
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
              <vxe-button
 | 
					              <vxe-button
 | 
				
			||||||
                type="text"
 | 
					                type="text"
 | 
				
			||||||
                icon="el-icon-delete"
 | 
					                icon="fa fa-trash-o"
 | 
				
			||||||
                @click="delConfig(row)"
 | 
					                @click="delConfig(row)"
 | 
				
			||||||
                >删除</vxe-button
 | 
					                >删除</vxe-button
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
@ -140,7 +140,7 @@ const checkboxChangeEvent: VxeTableEvents.CheckboxChange = ({ records }) => {
 | 
				
			|||||||
              <span class="select-count"
 | 
					              <span class="select-count"
 | 
				
			||||||
                >已选中{{ configData.selectRecords.length }}条</span
 | 
					                >已选中{{ configData.selectRecords.length }}条</span
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
              <vxe-button size="small">{{ $t("message.hsdelete") }}</vxe-button>
 | 
					              <vxe-button size="small">{{ $t("buttons.hsdelete") }}</vxe-button>
 | 
				
			||||||
            </span>
 | 
					            </span>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
        </vxe-pager>
 | 
					        </vxe-pager>
 | 
				
			||||||
@ -179,10 +179,4 @@ const checkboxChangeEvent: VxeTableEvents.CheckboxChange = ({ records }) => {
 | 
				
			|||||||
:deep(.el-divider--horizontal) {
 | 
					:deep(.el-divider--horizontal) {
 | 
				
			||||||
  margin: 13px 0;
 | 
					  margin: 13px 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
:deep(.el-icon-close) {
 | 
					 | 
				
			||||||
  &:hover {
 | 
					 | 
				
			||||||
    color: red;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 | 
				
			|||||||
@ -209,28 +209,28 @@ function handleClose() {
 | 
				
			|||||||
      <template #buttons>
 | 
					      <template #buttons>
 | 
				
			||||||
        <vxe-input
 | 
					        <vxe-input
 | 
				
			||||||
          v-model="dictData.filterName"
 | 
					          v-model="dictData.filterName"
 | 
				
			||||||
          :placeholder="$t('message.hssearch')"
 | 
					          :placeholder="$t('buttons.hssearch')"
 | 
				
			||||||
          @keyup="searchEvent"
 | 
					          @keyup="searchEvent"
 | 
				
			||||||
        ></vxe-input>
 | 
					        ></vxe-input>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <template #tools>
 | 
					      <template #tools>
 | 
				
			||||||
        <vxe-button
 | 
					        <vxe-button
 | 
				
			||||||
          icon="el-icon-circle-plus-outline"
 | 
					          icon="fa fa-plus-square-o"
 | 
				
			||||||
          status="primary"
 | 
					          status="primary"
 | 
				
			||||||
          @click="onAdd"
 | 
					          @click="onAdd"
 | 
				
			||||||
          >{{ $t("message.hsadd") }}</vxe-button
 | 
					          >{{ $t("buttons.hsadd") }}</vxe-button
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
        <vxe-button
 | 
					        <vxe-button
 | 
				
			||||||
          icon="el-icon-folder-opened"
 | 
					          icon="fa fa-folder-open-o"
 | 
				
			||||||
          status="primary"
 | 
					          status="primary"
 | 
				
			||||||
          @click="$refs.xTree.setAllTreeExpand(true)"
 | 
					          @click="$refs.xTree.setAllTreeExpand(true)"
 | 
				
			||||||
          >{{ $t("message.hsexpendAll") }}</vxe-button
 | 
					          >{{ $t("buttons.hsexpendAll") }}</vxe-button
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
        <vxe-button
 | 
					        <vxe-button
 | 
				
			||||||
          icon="el-icon-folder"
 | 
					          icon="fa fa-folder-o"
 | 
				
			||||||
          status="primary"
 | 
					          status="primary"
 | 
				
			||||||
          @click="$refs.xTree.clearTreeExpand()"
 | 
					          @click="$refs.xTree.clearTreeExpand()"
 | 
				
			||||||
          >{{ $t("message.hscollapseAll") }}</vxe-button
 | 
					          >{{ $t("buttons.hscollapseAll") }}</vxe-button
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
    </vxe-toolbar>
 | 
					    </vxe-toolbar>
 | 
				
			||||||
@ -266,23 +266,26 @@ function handleClose() {
 | 
				
			|||||||
      </vxe-table-column>
 | 
					      </vxe-table-column>
 | 
				
			||||||
      <vxe-table-column title="操作" width="330" fixed="right">
 | 
					      <vxe-table-column title="操作" width="330" fixed="right">
 | 
				
			||||||
        <template #default="{ row }">
 | 
					        <template #default="{ row }">
 | 
				
			||||||
          <vxe-button type="text" icon="el-icon-edit" @click="onEdit(row)"
 | 
					          <vxe-button
 | 
				
			||||||
 | 
					            type="text"
 | 
				
			||||||
 | 
					            icon="fa fa-pencil-square-o"
 | 
				
			||||||
 | 
					            @click="onEdit(row)"
 | 
				
			||||||
            >编辑</vxe-button
 | 
					            >编辑</vxe-button
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
          <vxe-button
 | 
					          <vxe-button
 | 
				
			||||||
            type="text"
 | 
					            type="text"
 | 
				
			||||||
            icon="el-icon-circle-plus-outline"
 | 
					            icon="fa fa-plus-square-o"
 | 
				
			||||||
            @click="onAddChild(row)"
 | 
					            @click="onAddChild(row)"
 | 
				
			||||||
            >新增子类型</vxe-button
 | 
					            >新增子类型</vxe-button
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
          <vxe-button
 | 
					          <vxe-button
 | 
				
			||||||
            v-show="row.model"
 | 
					            v-show="row.model"
 | 
				
			||||||
            type="text"
 | 
					            type="text"
 | 
				
			||||||
            icon="el-icon-setting"
 | 
					            icon="fa fa-cog"
 | 
				
			||||||
            @click="onDeploy(row)"
 | 
					            @click="onDeploy(row)"
 | 
				
			||||||
            >字典配置</vxe-button
 | 
					            >字典配置</vxe-button
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
          <vxe-button type="text" icon="el-icon-delete" @click="confirmEvent"
 | 
					          <vxe-button type="text" icon="fa fa-trash-o" @click="confirmEvent"
 | 
				
			||||||
            >删除</vxe-button
 | 
					            >删除</vxe-button
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@ export default {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { reactive } from "vue";
 | 
					import { reactive } from "vue";
 | 
				
			||||||
 | 
					import { $t } from "/@/plugins/i18n";
 | 
				
			||||||
import { VxeGridProps } from "vxe-table";
 | 
					import { VxeGridProps } from "vxe-table";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const gridOptions = reactive({
 | 
					const gridOptions = reactive({
 | 
				
			||||||
@ -29,19 +30,19 @@ const gridOptions = reactive({
 | 
				
			|||||||
    buttons: [
 | 
					    buttons: [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        code: "insert_actived",
 | 
					        code: "insert_actived",
 | 
				
			||||||
        name: "message.hsadd",
 | 
					        name: $t("buttons.hsadd"),
 | 
				
			||||||
        status: "perfect",
 | 
					        status: "perfect",
 | 
				
			||||||
        icon: "fa fa-plus"
 | 
					        icon: "fa fa-plus"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        code: "mark_cancel",
 | 
					        code: "mark_cancel",
 | 
				
			||||||
        name: "message.hsmark",
 | 
					        name: $t("buttons.hsmark"),
 | 
				
			||||||
        status: "perfect",
 | 
					        status: "perfect",
 | 
				
			||||||
        icon: "fa fa-trash-o"
 | 
					        icon: "fa fa-trash-o"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        code: "save",
 | 
					        code: "save",
 | 
				
			||||||
        name: "message.hssave",
 | 
					        name: $t("buttons.hssave"),
 | 
				
			||||||
        status: "perfect",
 | 
					        status: "perfect",
 | 
				
			||||||
        icon: "fa fa-save"
 | 
					        icon: "fa fa-save"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user