mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	refactor: 使用eslint.config.js替换.eslintrc.js并遵循esm语法 (#786)
				
					
				
			This commit is contained in:
		
							parent
							
								
									18158f8e0d
								
							
						
					
					
						commit
						5b7dd8c3e2
					
				@ -3,9 +3,9 @@ dist
 | 
				
			|||||||
*.d.ts
 | 
					*.d.ts
 | 
				
			||||||
/src/assets
 | 
					/src/assets
 | 
				
			||||||
package.json
 | 
					package.json
 | 
				
			||||||
.eslintrc.cjs
 | 
					eslint.config.js 
 | 
				
			||||||
.prettierrc.js
 | 
					.prettierrc.js
 | 
				
			||||||
commitlint.config.js
 | 
					commitlint.config.cjs
 | 
				
			||||||
postcss.config.js
 | 
					postcss.config.js
 | 
				
			||||||
tailwind.config.ts
 | 
					tailwind.config.ts
 | 
				
			||||||
stylelint.config.cjs
 | 
					stylelint.config.cjs
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										123
									
								
								.eslintrc.cjs
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								.eslintrc.cjs
									
									
									
									
									
								
							@ -1,123 +0,0 @@
 | 
				
			|||||||
// @ts-check
 | 
					 | 
				
			||||||
const { defineConfig } = require("eslint-define-config");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = defineConfig({
 | 
					 | 
				
			||||||
  root: true,
 | 
					 | 
				
			||||||
  env: {
 | 
					 | 
				
			||||||
    node: true
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  globals: {
 | 
					 | 
				
			||||||
    // Ref sugar (take 2)
 | 
					 | 
				
			||||||
    $: "readonly",
 | 
					 | 
				
			||||||
    $$: "readonly",
 | 
					 | 
				
			||||||
    $ref: "readonly",
 | 
					 | 
				
			||||||
    $shallowRef: "readonly",
 | 
					 | 
				
			||||||
    $computed: "readonly",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // index.d.ts
 | 
					 | 
				
			||||||
    // global.d.ts
 | 
					 | 
				
			||||||
    Fn: "readonly",
 | 
					 | 
				
			||||||
    PromiseFn: "readonly",
 | 
					 | 
				
			||||||
    RefType: "readonly",
 | 
					 | 
				
			||||||
    LabelValueOptions: "readonly",
 | 
					 | 
				
			||||||
    EmitType: "readonly",
 | 
					 | 
				
			||||||
    TargetContext: "readonly",
 | 
					 | 
				
			||||||
    ComponentElRef: "readonly",
 | 
					 | 
				
			||||||
    ComponentRef: "readonly",
 | 
					 | 
				
			||||||
    ElRef: "readonly",
 | 
					 | 
				
			||||||
    global: "readonly",
 | 
					 | 
				
			||||||
    ForDataType: "readonly",
 | 
					 | 
				
			||||||
    ComponentRoutes: "readonly",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // script setup
 | 
					 | 
				
			||||||
    defineProps: "readonly",
 | 
					 | 
				
			||||||
    defineEmits: "readonly",
 | 
					 | 
				
			||||||
    defineExpose: "readonly",
 | 
					 | 
				
			||||||
    withDefaults: "readonly"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  extends: [
 | 
					 | 
				
			||||||
    "plugin:vue/vue3-essential",
 | 
					 | 
				
			||||||
    "eslint:recommended",
 | 
					 | 
				
			||||||
    "@vue/typescript/recommended",
 | 
					 | 
				
			||||||
    "@vue/prettier",
 | 
					 | 
				
			||||||
    "@vue/eslint-config-typescript"
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  parser: "vue-eslint-parser",
 | 
					 | 
				
			||||||
  parserOptions: {
 | 
					 | 
				
			||||||
    parser: "@typescript-eslint/parser",
 | 
					 | 
				
			||||||
    ecmaVersion: "latest",
 | 
					 | 
				
			||||||
    sourceType: "module",
 | 
					 | 
				
			||||||
    jsxPragma: "React",
 | 
					 | 
				
			||||||
    ecmaFeatures: {
 | 
					 | 
				
			||||||
      jsx: true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  overrides: [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      files: ["*.ts", "*.vue"],
 | 
					 | 
				
			||||||
      rules: {
 | 
					 | 
				
			||||||
        "no-undef": "off"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      files: ["*.vue"],
 | 
					 | 
				
			||||||
      parser: "vue-eslint-parser",
 | 
					 | 
				
			||||||
      parserOptions: {
 | 
					 | 
				
			||||||
        parser: "@typescript-eslint/parser",
 | 
					 | 
				
			||||||
        extraFileExtensions: [".vue"],
 | 
					 | 
				
			||||||
        ecmaVersion: "latest",
 | 
					 | 
				
			||||||
        ecmaFeatures: {
 | 
					 | 
				
			||||||
          jsx: true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      rules: {
 | 
					 | 
				
			||||||
        "no-undef": "off"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  rules: {
 | 
					 | 
				
			||||||
    "vue/no-v-html": "off",
 | 
					 | 
				
			||||||
    "vue/require-default-prop": "off",
 | 
					 | 
				
			||||||
    "vue/require-explicit-emits": "off",
 | 
					 | 
				
			||||||
    "vue/multi-word-component-names": "off",
 | 
					 | 
				
			||||||
    "@typescript-eslint/no-explicit-any": "off", // any
 | 
					 | 
				
			||||||
    "no-debugger": "off",
 | 
					 | 
				
			||||||
    "@typescript-eslint/explicit-module-boundary-types": "off", // setup()
 | 
					 | 
				
			||||||
    "@typescript-eslint/ban-types": "off",
 | 
					 | 
				
			||||||
    "@typescript-eslint/ban-ts-comment": "off",
 | 
					 | 
				
			||||||
    "@typescript-eslint/no-empty-function": "off",
 | 
					 | 
				
			||||||
    "@typescript-eslint/no-non-null-assertion": "off",
 | 
					 | 
				
			||||||
    "vue/html-self-closing": [
 | 
					 | 
				
			||||||
      "error",
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        html: {
 | 
					 | 
				
			||||||
          void: "always",
 | 
					 | 
				
			||||||
          normal: "always",
 | 
					 | 
				
			||||||
          component: "always"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        svg: "always",
 | 
					 | 
				
			||||||
        math: "always"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "@typescript-eslint/no-unused-vars": [
 | 
					 | 
				
			||||||
      "error",
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        argsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
        varsIgnorePattern: "^_"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "no-unused-vars": [
 | 
					 | 
				
			||||||
      "error",
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        argsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
        varsIgnorePattern: "^_"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "prettier/prettier": [
 | 
					 | 
				
			||||||
      "error",
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        endOfLine: "auto"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
import type { Plugin } from "vite";
 | 
					import type { Plugin } from "vite";
 | 
				
			||||||
import picocolors from "picocolors";
 | 
					import picocolors from "picocolors";
 | 
				
			||||||
import dayjs, { Dayjs } from "dayjs";
 | 
					 | 
				
			||||||
import { getPackageSize } from "./utils";
 | 
					import { getPackageSize } from "./utils";
 | 
				
			||||||
 | 
					import dayjs, { type Dayjs } from "dayjs";
 | 
				
			||||||
import duration from "dayjs/plugin/duration";
 | 
					import duration from "dayjs/plugin/duration";
 | 
				
			||||||
dayjs.extend(duration);
 | 
					dayjs.extend(duration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,4 @@
 | 
				
			|||||||
// @ts-check
 | 
					module.exports = {
 | 
				
			||||||
 | 
					 | 
				
			||||||
/** @type {import("@commitlint/types").UserConfig} */
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  ignores: [commit => commit.includes("init")],
 | 
					  ignores: [commit => commit.includes("init")],
 | 
				
			||||||
  extends: ["@commitlint/config-conventional"],
 | 
					  extends: ["@commitlint/config-conventional"],
 | 
				
			||||||
  rules: {
 | 
					  rules: {
 | 
				
			||||||
							
								
								
									
										174
									
								
								eslint.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								eslint.config.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,174 @@
 | 
				
			|||||||
 | 
					import js from "@eslint/js";
 | 
				
			||||||
 | 
					import pluginVue from "eslint-plugin-vue";
 | 
				
			||||||
 | 
					import * as parserVue from "vue-eslint-parser";
 | 
				
			||||||
 | 
					import configPrettier from "eslint-config-prettier";
 | 
				
			||||||
 | 
					import pluginPrettier from "eslint-plugin-prettier";
 | 
				
			||||||
 | 
					import { defineFlatConfig } from "eslint-define-config";
 | 
				
			||||||
 | 
					import * as parserTypeScript from "@typescript-eslint/parser";
 | 
				
			||||||
 | 
					import pluginTypeScript from "@typescript-eslint/eslint-plugin";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default defineFlatConfig([
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    ...js.configs.recommended,
 | 
				
			||||||
 | 
					    ignores: ["src/assets/**", "src/**/iconfont/**"],
 | 
				
			||||||
 | 
					    languageOptions: {
 | 
				
			||||||
 | 
					      globals: {
 | 
				
			||||||
 | 
					        // index.d.ts
 | 
				
			||||||
 | 
					        RefType: "readonly",
 | 
				
			||||||
 | 
					        EmitType: "readonly",
 | 
				
			||||||
 | 
					        TargetContext: "readonly",
 | 
				
			||||||
 | 
					        ComponentRef: "readonly",
 | 
				
			||||||
 | 
					        ElRef: "readonly",
 | 
				
			||||||
 | 
					        ForDataType: "readonly",
 | 
				
			||||||
 | 
					        AnyFunction: "readonly",
 | 
				
			||||||
 | 
					        PropType: "readonly",
 | 
				
			||||||
 | 
					        Writable: "readonly",
 | 
				
			||||||
 | 
					        Nullable: "readonly",
 | 
				
			||||||
 | 
					        NonNullable: "readonly",
 | 
				
			||||||
 | 
					        Recordable: "readonly",
 | 
				
			||||||
 | 
					        ReadonlyRecordable: "readonly",
 | 
				
			||||||
 | 
					        Indexable: "readonly",
 | 
				
			||||||
 | 
					        DeepPartial: "readonly",
 | 
				
			||||||
 | 
					        Without: "readonly",
 | 
				
			||||||
 | 
					        Exclusive: "readonly",
 | 
				
			||||||
 | 
					        TimeoutHandle: "readonly",
 | 
				
			||||||
 | 
					        IntervalHandle: "readonly",
 | 
				
			||||||
 | 
					        Effect: "readonly",
 | 
				
			||||||
 | 
					        ChangeEvent: "readonly",
 | 
				
			||||||
 | 
					        WheelEvent: "readonly",
 | 
				
			||||||
 | 
					        ImportMetaEnv: "readonly",
 | 
				
			||||||
 | 
					        Fn: "readonly",
 | 
				
			||||||
 | 
					        PromiseFn: "readonly",
 | 
				
			||||||
 | 
					        ComponentElRef: "readonly",
 | 
				
			||||||
 | 
					        parseInt: "readonly",
 | 
				
			||||||
 | 
					        parseFloat: "readonly"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    plugins: {
 | 
				
			||||||
 | 
					      prettier: pluginPrettier
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    rules: {
 | 
				
			||||||
 | 
					      ...configPrettier.rules,
 | 
				
			||||||
 | 
					      ...pluginPrettier.configs.recommended.rules,
 | 
				
			||||||
 | 
					      "no-debugger": "off",
 | 
				
			||||||
 | 
					      "no-unused-vars": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          argsIgnorePattern: "^_",
 | 
				
			||||||
 | 
					          varsIgnorePattern: "^_"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "prettier/prettier": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          endOfLine: "auto"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    files: ["**/*.?([cm])ts", "**/*.?([cm])tsx"],
 | 
				
			||||||
 | 
					    languageOptions: {
 | 
				
			||||||
 | 
					      parser: parserTypeScript,
 | 
				
			||||||
 | 
					      parserOptions: {
 | 
				
			||||||
 | 
					        sourceType: "module"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    plugins: {
 | 
				
			||||||
 | 
					      "@typescript-eslint": pluginTypeScript
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    rules: {
 | 
				
			||||||
 | 
					      ...pluginTypeScript.configs.strict.rules,
 | 
				
			||||||
 | 
					      "@typescript-eslint/ban-types": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-redeclare": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/ban-ts-comment": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-explicit-any": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-as-const": "warn",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-empty-function": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-non-null-assertion": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-import-type-side-effects": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/explicit-module-boundary-types": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/consistent-type-imports": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        { disallowTypeAnnotations: false, fixStyle: "inline-type-imports" }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-literal-enum-member": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        { allowBitwiseExpressions: true }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-unused-vars": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          argsIgnorePattern: "^_",
 | 
				
			||||||
 | 
					          varsIgnorePattern: "^_"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    files: ["**/*.d.ts"],
 | 
				
			||||||
 | 
					    rules: {
 | 
				
			||||||
 | 
					      "eslint-comments/no-unlimited-disable": "off",
 | 
				
			||||||
 | 
					      "import/no-duplicates": "off",
 | 
				
			||||||
 | 
					      "unused-imports/no-unused-vars": "off"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    files: ["**/*.?([cm])js"],
 | 
				
			||||||
 | 
					    rules: {
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-require-imports": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-var-requires": "off"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    files: ["**/*.vue"],
 | 
				
			||||||
 | 
					    languageOptions: {
 | 
				
			||||||
 | 
					      globals: {
 | 
				
			||||||
 | 
					        $: "readonly",
 | 
				
			||||||
 | 
					        $$: "readonly",
 | 
				
			||||||
 | 
					        $computed: "readonly",
 | 
				
			||||||
 | 
					        $customRef: "readonly",
 | 
				
			||||||
 | 
					        $ref: "readonly",
 | 
				
			||||||
 | 
					        $shallowRef: "readonly",
 | 
				
			||||||
 | 
					        $toRef: "readonly"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      parser: parserVue,
 | 
				
			||||||
 | 
					      parserOptions: {
 | 
				
			||||||
 | 
					        ecmaFeatures: {
 | 
				
			||||||
 | 
					          jsx: true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        extraFileExtensions: [".vue"],
 | 
				
			||||||
 | 
					        parser: "@typescript-eslint/parser",
 | 
				
			||||||
 | 
					        sourceType: "module"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    plugins: {
 | 
				
			||||||
 | 
					      vue: pluginVue
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    processor: pluginVue.processors[".vue"],
 | 
				
			||||||
 | 
					    rules: {
 | 
				
			||||||
 | 
					      ...pluginVue.configs.base.rules,
 | 
				
			||||||
 | 
					      ...pluginVue.configs["vue3-essential"].rules,
 | 
				
			||||||
 | 
					      ...pluginVue.configs["vue3-recommended"].rules,
 | 
				
			||||||
 | 
					      "no-undef": "off",
 | 
				
			||||||
 | 
					      "no-unused-vars": "off",
 | 
				
			||||||
 | 
					      "vue/no-v-html": "off",
 | 
				
			||||||
 | 
					      "vue/require-default-prop": "off",
 | 
				
			||||||
 | 
					      "vue/require-explicit-emits": "off",
 | 
				
			||||||
 | 
					      "vue/multi-word-component-names": "off",
 | 
				
			||||||
 | 
					      "vue/no-setup-props-reactivity-loss": "off",
 | 
				
			||||||
 | 
					      "vue/html-self-closing": [
 | 
				
			||||||
 | 
					        "error",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          html: {
 | 
				
			||||||
 | 
					            void: "always",
 | 
				
			||||||
 | 
					            normal: "always",
 | 
				
			||||||
 | 
					            component: "always"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          svg: "always",
 | 
				
			||||||
 | 
					          math: "always"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]);
 | 
				
			||||||
@ -105,7 +105,7 @@
 | 
				
			|||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@commitlint/cli": "^18.2.0",
 | 
					    "@commitlint/cli": "^18.2.0",
 | 
				
			||||||
    "@commitlint/config-conventional": "^18.1.0",
 | 
					    "@commitlint/config-conventional": "^18.1.0",
 | 
				
			||||||
    "@commitlint/types": "^18.4.0",
 | 
					    "@eslint/js": "^8.53.0",
 | 
				
			||||||
    "@faker-js/faker": "^8.2.0",
 | 
					    "@faker-js/faker": "^8.2.0",
 | 
				
			||||||
    "@iconify-icons/ep": "^1.2.12",
 | 
					    "@iconify-icons/ep": "^1.2.12",
 | 
				
			||||||
    "@iconify-icons/ri": "^1.2.10",
 | 
					    "@iconify-icons/ri": "^1.2.10",
 | 
				
			||||||
@ -123,12 +123,11 @@
 | 
				
			|||||||
    "@typescript-eslint/parser": "^6.10.0",
 | 
					    "@typescript-eslint/parser": "^6.10.0",
 | 
				
			||||||
    "@vitejs/plugin-vue": "^4.4.1",
 | 
					    "@vitejs/plugin-vue": "^4.4.1",
 | 
				
			||||||
    "@vitejs/plugin-vue-jsx": "^3.0.2",
 | 
					    "@vitejs/plugin-vue-jsx": "^3.0.2",
 | 
				
			||||||
    "@vue/eslint-config-prettier": "^8.0.0",
 | 
					 | 
				
			||||||
    "@vue/eslint-config-typescript": "^12.0.0",
 | 
					 | 
				
			||||||
    "autoprefixer": "^10.4.16",
 | 
					    "autoprefixer": "^10.4.16",
 | 
				
			||||||
    "cloc": "^2.11.0",
 | 
					    "cloc": "^2.11.0",
 | 
				
			||||||
    "cssnano": "^6.0.1",
 | 
					    "cssnano": "^6.0.1",
 | 
				
			||||||
    "eslint": "^8.53.0",
 | 
					    "eslint": "^8.53.0",
 | 
				
			||||||
 | 
					    "eslint-config-prettier": "^9.0.0",
 | 
				
			||||||
    "eslint-define-config": "^1.24.1",
 | 
					    "eslint-define-config": "^1.24.1",
 | 
				
			||||||
    "eslint-plugin-prettier": "^5.0.1",
 | 
					    "eslint-plugin-prettier": "^5.0.1",
 | 
				
			||||||
    "eslint-plugin-vue": "^9.18.1",
 | 
					    "eslint-plugin-vue": "^9.18.1",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										146
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										146
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@ -175,9 +175,9 @@ devDependencies:
 | 
				
			|||||||
  '@commitlint/config-conventional':
 | 
					  '@commitlint/config-conventional':
 | 
				
			||||||
    specifier: ^18.1.0
 | 
					    specifier: ^18.1.0
 | 
				
			||||||
    version: 18.1.0
 | 
					    version: 18.1.0
 | 
				
			||||||
  '@commitlint/types':
 | 
					  '@eslint/js':
 | 
				
			||||||
    specifier: ^18.4.0
 | 
					    specifier: ^8.53.0
 | 
				
			||||||
    version: 18.4.0
 | 
					    version: 8.53.0
 | 
				
			||||||
  '@faker-js/faker':
 | 
					  '@faker-js/faker':
 | 
				
			||||||
    specifier: ^8.2.0
 | 
					    specifier: ^8.2.0
 | 
				
			||||||
    version: 8.2.0
 | 
					    version: 8.2.0
 | 
				
			||||||
@ -229,12 +229,6 @@ devDependencies:
 | 
				
			|||||||
  '@vitejs/plugin-vue-jsx':
 | 
					  '@vitejs/plugin-vue-jsx':
 | 
				
			||||||
    specifier: ^3.0.2
 | 
					    specifier: ^3.0.2
 | 
				
			||||||
    version: 3.0.2(vite@5.0.0-beta.17)(vue@3.3.8)
 | 
					    version: 3.0.2(vite@5.0.0-beta.17)(vue@3.3.8)
 | 
				
			||||||
  '@vue/eslint-config-prettier':
 | 
					 | 
				
			||||||
    specifier: ^8.0.0
 | 
					 | 
				
			||||||
    version: 8.0.0(eslint@8.53.0)(prettier@3.0.3)
 | 
					 | 
				
			||||||
  '@vue/eslint-config-typescript':
 | 
					 | 
				
			||||||
    specifier: ^12.0.0
 | 
					 | 
				
			||||||
    version: 12.0.0(eslint-plugin-vue@9.18.1)(eslint@8.53.0)(typescript@5.2.2)
 | 
					 | 
				
			||||||
  autoprefixer:
 | 
					  autoprefixer:
 | 
				
			||||||
    specifier: ^10.4.16
 | 
					    specifier: ^10.4.16
 | 
				
			||||||
    version: 10.4.16(postcss@8.4.31)
 | 
					    version: 10.4.16(postcss@8.4.31)
 | 
				
			||||||
@ -247,12 +241,15 @@ devDependencies:
 | 
				
			|||||||
  eslint:
 | 
					  eslint:
 | 
				
			||||||
    specifier: ^8.53.0
 | 
					    specifier: ^8.53.0
 | 
				
			||||||
    version: 8.53.0
 | 
					    version: 8.53.0
 | 
				
			||||||
 | 
					  eslint-config-prettier:
 | 
				
			||||||
 | 
					    specifier: ^9.0.0
 | 
				
			||||||
 | 
					    version: 9.0.0(eslint@8.53.0)
 | 
				
			||||||
  eslint-define-config:
 | 
					  eslint-define-config:
 | 
				
			||||||
    specifier: ^1.24.1
 | 
					    specifier: ^1.24.1
 | 
				
			||||||
    version: 1.24.1
 | 
					    version: 1.24.1
 | 
				
			||||||
  eslint-plugin-prettier:
 | 
					  eslint-plugin-prettier:
 | 
				
			||||||
    specifier: ^5.0.1
 | 
					    specifier: ^5.0.1
 | 
				
			||||||
    version: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@3.0.3)
 | 
					    version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3)
 | 
				
			||||||
  eslint-plugin-vue:
 | 
					  eslint-plugin-vue:
 | 
				
			||||||
    specifier: ^9.18.1
 | 
					    specifier: ^9.18.1
 | 
				
			||||||
    version: 9.18.1(eslint@8.53.0)
 | 
					    version: 9.18.1(eslint@8.53.0)
 | 
				
			||||||
@ -778,10 +775,10 @@ packages:
 | 
				
			|||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    hasBin: true
 | 
					    hasBin: true
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/format': 18.1.0
 | 
					      '@commitlint/format': 18.4.0
 | 
				
			||||||
      '@commitlint/lint': 18.1.0
 | 
					      '@commitlint/lint': 18.4.0
 | 
				
			||||||
      '@commitlint/load': 18.2.0(typescript@5.2.2)
 | 
					      '@commitlint/load': 18.4.0(typescript@5.2.2)
 | 
				
			||||||
      '@commitlint/read': 18.1.0
 | 
					      '@commitlint/read': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      execa: 5.1.1
 | 
					      execa: 5.1.1
 | 
				
			||||||
      lodash.isfunction: 3.0.9
 | 
					      lodash.isfunction: 3.0.9
 | 
				
			||||||
@ -799,16 +796,16 @@ packages:
 | 
				
			|||||||
      conventional-changelog-conventionalcommits: 7.0.2
 | 
					      conventional-changelog-conventionalcommits: 7.0.2
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/config-validator@18.1.0:
 | 
					  /@commitlint/config-validator@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-kbHkIuItXn93o2NmTdwi5Mk1ujyuSIysRE/XHtrcps/27GuUKEIqBJp6TdJ4Sq+ze59RlzYSHMKuDKZbfg9+uQ==}
 | 
					    resolution: {integrity: sha512-1y6qHMU3o4cYQSK+Y9EnmH6H1GRiwQGjnLIUOIKlekrmfc8MrMk1ByNmb8od4vK3qHJAaL/77/5n+1uyyIF5dA==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      ajv: 8.12.0
 | 
					      ajv: 8.12.0
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/ensure@18.1.0:
 | 
					  /@commitlint/ensure@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-CkPzJ9UBumIo54VDcpmBlaVX81J++wzEhN3DJH9+6PaLeiIG+gkSx8t7C2gfwG7PaiW4HzQtdQlBN5ab+c4vFQ==}
 | 
					    resolution: {integrity: sha512-N5cJo/n61ULSwz3W5Iz/IZJ0I9H/PaHc+OMcF2XcRVbLa6B3YwzEW66XGCRKVULlsBNSrIH6tk5un9ayXAXIdw==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
@ -819,44 +816,44 @@ packages:
 | 
				
			|||||||
      lodash.upperfirst: 4.3.1
 | 
					      lodash.upperfirst: 4.3.1
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/execute-rule@18.1.0:
 | 
					  /@commitlint/execute-rule@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-w3Vt4K+O7+nSr9/gFSEfZ1exKUOPSlJaRpnk7Y+XowEhvwT7AIk1HNANH+gETf0zGZ020+hfiMW/Ome+SNCUsg==}
 | 
					    resolution: {integrity: sha512-g013SWki6ZWhURBLOSXTaVQGWHdA0QlPJGiW4a+YpThezmJOemvc4LiKVpn13AjSKQ40QnmBqpBrxujOaSo+3A==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/format@18.1.0:
 | 
					  /@commitlint/format@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-So/w217tGWMZZb1yXcUFNF2qFLyYtSVqbnGoMbX8a+JKcG4oB11Gc1adS0ssUOMivtiNpaLtkSHFynyiwtJtiQ==}
 | 
					    resolution: {integrity: sha512-MiAe4D5/ahty38CzULdQbpRa3ReKZtx0kyigOWcntq+N5uqez+Ac4/MO7H+3j1kC4G7nfJVfBu6TqcXeyNvhCQ==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      chalk: 4.1.2
 | 
					      chalk: 4.1.2
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/is-ignored@18.1.0:
 | 
					  /@commitlint/is-ignored@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-fa1fY93J/Nx2GH6r6WOLdBOiL7x9Uc1N7wcpmaJ1C5Qs6P+rPSUTkofe2IOhSJIJoboHfAH6W0ru4xtK689t0Q==}
 | 
					    resolution: {integrity: sha512-vyBKBj3Q4N3Xe4ZQcJXW9ef6gVrDL9Fl2HXnnC3F0Qt/F6E4runhJkEuUh5DB3WCXTJUHIJkByKPqrnz4RNrZw==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      semver: 7.5.4
 | 
					      semver: 7.5.4
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/lint@18.1.0:
 | 
					  /@commitlint/lint@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-LGB3eI5UYu5LLayibNrRM4bSbowr1z9uyqvp0c7+0KaSJi+xHxy/QEhb6fy4bMAtbXEvygY0sUu9HxSWg41rVQ==}
 | 
					    resolution: {integrity: sha512-Wkkf1DPVeLdHYGqtzMBfWoMbUtCojvlzDR89OKVic1rid41iZbb0FzTcwgMYs/1TNWNxoIq9PVVwY7ovLX1aJQ==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/is-ignored': 18.1.0
 | 
					      '@commitlint/is-ignored': 18.4.0
 | 
				
			||||||
      '@commitlint/parse': 18.1.0
 | 
					      '@commitlint/parse': 18.4.0
 | 
				
			||||||
      '@commitlint/rules': 18.1.0
 | 
					      '@commitlint/rules': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/load@18.2.0(typescript@5.2.2):
 | 
					  /@commitlint/load@18.4.0(typescript@5.2.2):
 | 
				
			||||||
    resolution: {integrity: sha512-xjX3d3CRlOALwImhOsmLYZh14/+gW/KxsY7+bPKrzmGuFailf9K7ckhB071oYZVJdACnpY4hDYiosFyOC+MpAA==}
 | 
					    resolution: {integrity: sha512-7unGl1HGRNMgWrUPmj8OFkJyuNUMb6xA1i53/OAFKd9l+U3C4WTfoJe3t/TUz8vKZLCaDcWWR/b2cw5HveBBFg==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/config-validator': 18.1.0
 | 
					      '@commitlint/config-validator': 18.4.0
 | 
				
			||||||
      '@commitlint/execute-rule': 18.1.0
 | 
					      '@commitlint/execute-rule': 18.4.0
 | 
				
			||||||
      '@commitlint/resolve-extends': 18.1.0
 | 
					      '@commitlint/resolve-extends': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      '@types/node': 18.18.9
 | 
					      '@types/node': 18.18.9
 | 
				
			||||||
      chalk: 4.1.2
 | 
					      chalk: 4.1.2
 | 
				
			||||||
@ -870,13 +867,13 @@ packages:
 | 
				
			|||||||
      - typescript
 | 
					      - typescript
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/message@18.1.0:
 | 
					  /@commitlint/message@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-8dT/jJg73wf3o2Mut/fqEDTpBYSIEVtX5PWyuY/0uviEYeheZAczFo/VMIkeGzhJJn1IrcvAwWsvJ1lVGY2I/w==}
 | 
					    resolution: {integrity: sha512-3kg6NQO6pJ+VdBTWi51KInT8ngkxPJaW+iI7URtUALjKcO9K4XY3gf80ZPmS1hDessrjb7qCr1lau8eWMINAQw==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/parse@18.1.0:
 | 
					  /@commitlint/parse@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-23yv8uBweXWYn8bXk4PjHIsmVA+RkbqPh2h7irupBo2LthVlzMRc4LM6UStasScJ4OlXYYaWOmuP7jcExUF50Q==}
 | 
					    resolution: {integrity: sha512-SxTCSUZH8CJNYWOlFg18YUQ2RLz8ubXKbpHUIiSNwCbiQx7UDCydp1JnhoB4sOYOxgV8d3nuDwYluRU5KnEY4A==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
@ -884,22 +881,22 @@ packages:
 | 
				
			|||||||
      conventional-commits-parser: 5.0.0
 | 
					      conventional-commits-parser: 5.0.0
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/read@18.1.0:
 | 
					  /@commitlint/read@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-rzfzoKUwxmvYO81tI5o1371Nwt3vhcQR36oTNfupPdU1jgSL3nzBIS3B93LcZh3IYKbCIMyMPN5WZ10BXdeoUg==}
 | 
					    resolution: {integrity: sha512-IpnABCbDeOw5npZ09SZZGLfd3T7cFtsxUYm6wT3aGmIB2fXKE3fMeuj3jxXjMibiGIyA3Z5voCMuOcKWpkNySA==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/top-level': 18.1.0
 | 
					      '@commitlint/top-level': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      fs-extra: 11.1.1
 | 
					      fs-extra: 11.1.1
 | 
				
			||||||
      git-raw-commits: 2.0.11
 | 
					      git-raw-commits: 2.0.11
 | 
				
			||||||
      minimist: 1.2.8
 | 
					      minimist: 1.2.8
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/resolve-extends@18.1.0:
 | 
					  /@commitlint/resolve-extends@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-3mZpzOEJkELt7BbaZp6+bofJyxViyObebagFn0A7IHaLARhPkWTivXdjvZHS12nAORftv88Yhbh8eCPKfSvB7g==}
 | 
					    resolution: {integrity: sha512-qhgU6ach+S6sJMD9NjCYiEycOObGhxzWQLQzqlScJCv9zkPs15Bg0ffLXTQ3z7ipXv46XEKYMnSJzjLRw2Tlkg==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/config-validator': 18.1.0
 | 
					      '@commitlint/config-validator': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      import-fresh: 3.3.0
 | 
					      import-fresh: 3.3.0
 | 
				
			||||||
      lodash.mergewith: 4.6.2
 | 
					      lodash.mergewith: 4.6.2
 | 
				
			||||||
@ -907,24 +904,24 @@ packages:
 | 
				
			|||||||
      resolve-global: 1.0.0
 | 
					      resolve-global: 1.0.0
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/rules@18.1.0:
 | 
					  /@commitlint/rules@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-VJNQ674CRv4znI0DbsjZLVnn647J+BTxHGcrDIsYv7c99gW7TUGeIe5kL80G7l8+5+N0se8v9yn+Prr8xEy6Yw==}
 | 
					    resolution: {integrity: sha512-T3ChRxQZ6g0iNCpVLc6KeQId0/86TnyQA8PFkng+dWElO2DAA5km/yirgKZV1Xlc+gF7Rf6d+a0ottxdKpOY+w==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@commitlint/ensure': 18.1.0
 | 
					      '@commitlint/ensure': 18.4.0
 | 
				
			||||||
      '@commitlint/message': 18.1.0
 | 
					      '@commitlint/message': 18.4.0
 | 
				
			||||||
      '@commitlint/to-lines': 18.1.0
 | 
					      '@commitlint/to-lines': 18.4.0
 | 
				
			||||||
      '@commitlint/types': 18.4.0
 | 
					      '@commitlint/types': 18.4.0
 | 
				
			||||||
      execa: 5.1.1
 | 
					      execa: 5.1.1
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/to-lines@18.1.0:
 | 
					  /@commitlint/to-lines@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-aHIoSDjG0ckxPLYDpODUeSLbEKmF6Jrs1B5JIssbbE9eemBtXtjm9yzdiAx9ZXcwoHlhbTp2fbndDb3YjlvJag==}
 | 
					    resolution: {integrity: sha512-bZXuCtfBPjNgtEnG3gwJrveIgfKK2UdhIhFvKpMTrQl/gAwoto/3mzmE7qGAHwmuP4eZ2U8X7iwMnqIlWmv2Tw==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@commitlint/top-level@18.1.0:
 | 
					  /@commitlint/top-level@18.4.0:
 | 
				
			||||||
    resolution: {integrity: sha512-1/USHlolIxJlsfLKecSXH+6PDojIvnzaJGPYwF7MtnTuuXCNQ4izkeqDsRuNMe9nU2VIKpK9OT8Q412kGNmgGw==}
 | 
					    resolution: {integrity: sha512-TfulcA8UHF7MZ6tm4Ci3aqZgMBZa1OoCg4prccWHvwG/hsHujZ7+0FKbeKqDbcSli/YWm4NJwEjl4uh5itIJeA==}
 | 
				
			||||||
    engines: {node: '>=v18'}
 | 
					    engines: {node: '>=v18'}
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      find-up: 5.0.0
 | 
					      find-up: 5.0.0
 | 
				
			||||||
@ -2378,41 +2375,6 @@ packages:
 | 
				
			|||||||
  /@vue/devtools-api@6.5.1:
 | 
					  /@vue/devtools-api@6.5.1:
 | 
				
			||||||
    resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
 | 
					    resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /@vue/eslint-config-prettier@8.0.0(eslint@8.53.0)(prettier@3.0.3):
 | 
					 | 
				
			||||||
    resolution: {integrity: sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==}
 | 
					 | 
				
			||||||
    peerDependencies:
 | 
					 | 
				
			||||||
      eslint: '>= 8.0.0'
 | 
					 | 
				
			||||||
      prettier: '>= 3.0.0'
 | 
					 | 
				
			||||||
    dependencies:
 | 
					 | 
				
			||||||
      eslint: 8.53.0
 | 
					 | 
				
			||||||
      eslint-config-prettier: 8.10.0(eslint@8.53.0)
 | 
					 | 
				
			||||||
      eslint-plugin-prettier: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@3.0.3)
 | 
					 | 
				
			||||||
      prettier: 3.0.3
 | 
					 | 
				
			||||||
    transitivePeerDependencies:
 | 
					 | 
				
			||||||
      - '@types/eslint'
 | 
					 | 
				
			||||||
    dev: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.18.1)(eslint@8.53.0)(typescript@5.2.2):
 | 
					 | 
				
			||||||
    resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==}
 | 
					 | 
				
			||||||
    engines: {node: ^14.17.0 || >=16.0.0}
 | 
					 | 
				
			||||||
    peerDependencies:
 | 
					 | 
				
			||||||
      eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
 | 
					 | 
				
			||||||
      eslint-plugin-vue: ^9.0.0
 | 
					 | 
				
			||||||
      typescript: '*'
 | 
					 | 
				
			||||||
    peerDependenciesMeta:
 | 
					 | 
				
			||||||
      typescript:
 | 
					 | 
				
			||||||
        optional: true
 | 
					 | 
				
			||||||
    dependencies:
 | 
					 | 
				
			||||||
      '@typescript-eslint/eslint-plugin': 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2)
 | 
					 | 
				
			||||||
      '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2)
 | 
					 | 
				
			||||||
      eslint: 8.53.0
 | 
					 | 
				
			||||||
      eslint-plugin-vue: 9.18.1(eslint@8.53.0)
 | 
					 | 
				
			||||||
      typescript: 5.2.2
 | 
					 | 
				
			||||||
      vue-eslint-parser: 9.3.2(eslint@8.53.0)
 | 
					 | 
				
			||||||
    transitivePeerDependencies:
 | 
					 | 
				
			||||||
      - supports-color
 | 
					 | 
				
			||||||
    dev: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /@vue/language-core@1.8.22(typescript@5.2.2):
 | 
					  /@vue/language-core@1.8.22(typescript@5.2.2):
 | 
				
			||||||
    resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==}
 | 
					    resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==}
 | 
				
			||||||
    peerDependencies:
 | 
					    peerDependencies:
 | 
				
			||||||
@ -4224,8 +4186,8 @@ packages:
 | 
				
			|||||||
    optionalDependencies:
 | 
					    optionalDependencies:
 | 
				
			||||||
      source-map: 0.6.1
 | 
					      source-map: 0.6.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /eslint-config-prettier@8.10.0(eslint@8.53.0):
 | 
					  /eslint-config-prettier@9.0.0(eslint@8.53.0):
 | 
				
			||||||
    resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
 | 
					    resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
 | 
				
			||||||
    hasBin: true
 | 
					    hasBin: true
 | 
				
			||||||
    peerDependencies:
 | 
					    peerDependencies:
 | 
				
			||||||
      eslint: '>=7.0.0'
 | 
					      eslint: '>=7.0.0'
 | 
				
			||||||
@ -4238,7 +4200,7 @@ packages:
 | 
				
			|||||||
    engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'}
 | 
					    engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'}
 | 
				
			||||||
    dev: true
 | 
					    dev: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /eslint-plugin-prettier@5.0.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@3.0.3):
 | 
					  /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3):
 | 
				
			||||||
    resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==}
 | 
					    resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==}
 | 
				
			||||||
    engines: {node: ^14.18.0 || >=16.0.0}
 | 
					    engines: {node: ^14.18.0 || >=16.0.0}
 | 
				
			||||||
    peerDependencies:
 | 
					    peerDependencies:
 | 
				
			||||||
@ -4253,7 +4215,7 @@ packages:
 | 
				
			|||||||
        optional: true
 | 
					        optional: true
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      eslint: 8.53.0
 | 
					      eslint: 8.53.0
 | 
				
			||||||
      eslint-config-prettier: 8.10.0(eslint@8.53.0)
 | 
					      eslint-config-prettier: 9.0.0(eslint@8.53.0)
 | 
				
			||||||
      prettier: 3.0.3
 | 
					      prettier: 3.0.3
 | 
				
			||||||
      prettier-linter-helpers: 1.0.0
 | 
					      prettier-linter-helpers: 1.0.0
 | 
				
			||||||
      synckit: 0.8.5
 | 
					      synckit: 0.8.5
 | 
				
			||||||
 | 
				
			|||||||
@ -81,8 +81,8 @@ function onMouseleave() {
 | 
				
			|||||||
    placeholder="请选择动画"
 | 
					    placeholder="请选择动画"
 | 
				
			||||||
    clearable
 | 
					    clearable
 | 
				
			||||||
    filterable
 | 
					    filterable
 | 
				
			||||||
    @clear="onClear"
 | 
					 | 
				
			||||||
    :filter-method="filterMethod"
 | 
					    :filter-method="filterMethod"
 | 
				
			||||||
 | 
					    @clear="onClear"
 | 
				
			||||||
  >
 | 
					  >
 | 
				
			||||||
    <template #empty>
 | 
					    <template #empty>
 | 
				
			||||||
      <div class="w-[280px]">
 | 
					      <div class="w-[280px]">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { PropType } from "vue";
 | 
					import type { PropType } from "vue";
 | 
				
			||||||
import propTypes from "@/utils/propTypes";
 | 
					import propTypes from "@/utils/propTypes";
 | 
				
			||||||
export const countToProps = {
 | 
					export const countToProps = {
 | 
				
			||||||
  startVal: propTypes.number.def(0),
 | 
					  startVal: propTypes.number.def(0),
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { PropType } from "vue";
 | 
					import type { PropType } from "vue";
 | 
				
			||||||
import propTypes from "@/utils/propTypes";
 | 
					import propTypes from "@/utils/propTypes";
 | 
				
			||||||
export const reboundProps = {
 | 
					export const reboundProps = {
 | 
				
			||||||
  delay: propTypes.number.def(1),
 | 
					  delay: propTypes.number.def(1),
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ import {
 | 
				
			|||||||
  ref,
 | 
					  ref,
 | 
				
			||||||
  unref,
 | 
					  unref,
 | 
				
			||||||
  computed,
 | 
					  computed,
 | 
				
			||||||
  PropType,
 | 
					  type PropType,
 | 
				
			||||||
  onMounted,
 | 
					  onMounted,
 | 
				
			||||||
  onUnmounted,
 | 
					  onUnmounted,
 | 
				
			||||||
  defineComponent
 | 
					  defineComponent
 | 
				
			||||||
 | 
				
			|||||||
@ -84,11 +84,11 @@ function handleClose(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-dialog
 | 
					  <el-dialog
 | 
				
			||||||
    class="pure-dialog"
 | 
					 | 
				
			||||||
    v-for="(options, index) in dialogStore"
 | 
					    v-for="(options, index) in dialogStore"
 | 
				
			||||||
    :key="index"
 | 
					    :key="index"
 | 
				
			||||||
    v-bind="options"
 | 
					    v-bind="options"
 | 
				
			||||||
    v-model="options.visible"
 | 
					    v-model="options.visible"
 | 
				
			||||||
 | 
					    class="pure-dialog"
 | 
				
			||||||
    :fullscreen="fullscreen ? true : options?.fullscreen ? true : false"
 | 
					    :fullscreen="fullscreen ? true : options?.fullscreen ? true : false"
 | 
				
			||||||
    @close="handleClose(options, index)"
 | 
					    @close="handleClose(options, index)"
 | 
				
			||||||
    @opened="eventsCallBack('open', options, index)"
 | 
					    @opened="eventsCallBack('open', options, index)"
 | 
				
			||||||
@ -123,8 +123,8 @@ function handleClose(
 | 
				
			|||||||
        </i>
 | 
					        </i>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <component
 | 
					      <component
 | 
				
			||||||
        v-else
 | 
					 | 
				
			||||||
        :is="options?.headerRenderer({ close, titleId, titleClass })"
 | 
					        :is="options?.headerRenderer({ close, titleId, titleClass })"
 | 
				
			||||||
 | 
					        v-else
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <component
 | 
					    <component
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import "./index.css";
 | 
					import "./index.css";
 | 
				
			||||||
import { h, defineComponent, Component } from "vue";
 | 
					import { h, defineComponent, type Component } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface attrsType {
 | 
					export interface attrsType {
 | 
				
			||||||
  width?: string;
 | 
					  width?: string;
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,6 @@ export default defineComponent({
 | 
				
			|||||||
  name: "ReFlop",
 | 
					  name: "ReFlop",
 | 
				
			||||||
  props,
 | 
					  props,
 | 
				
			||||||
  setup(props) {
 | 
					  setup(props) {
 | 
				
			||||||
    // eslint-disable-next-line vue/no-setup-props-destructure
 | 
					 | 
				
			||||||
    const { frontText, backText, duration } = props;
 | 
					    const { frontText, backText, duration } = props;
 | 
				
			||||||
    const isFlipping = ref(false);
 | 
					    const isFlipping = ref(false);
 | 
				
			||||||
    const flipType = ref("down");
 | 
					    const flipType = ref("down");
 | 
				
			||||||
 | 
				
			|||||||
@ -35,9 +35,9 @@ const nodeDragNode = item => {
 | 
				
			|||||||
  <!-- 左侧bpmn元素选择器 -->
 | 
					  <!-- 左侧bpmn元素选择器 -->
 | 
				
			||||||
  <div class="node-panel">
 | 
					  <div class="node-panel">
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
      class="node-item dark:text-bg_color"
 | 
					 | 
				
			||||||
      v-for="item in props.nodeList"
 | 
					      v-for="item in props.nodeList"
 | 
				
			||||||
      :key="item.text"
 | 
					      :key="item.text"
 | 
				
			||||||
 | 
					      class="node-item dark:text-bg_color"
 | 
				
			||||||
      @mousedown="nodeDragNode(item)"
 | 
					      @mousedown="nodeDragNode(item)"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <div class="node-item-icon" :class="item.class">
 | 
					      <div class="node-item-icon" :class="item.class">
 | 
				
			||||||
 | 
				
			|||||||
@ -151,8 +151,8 @@ watch(
 | 
				
			|||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
            class="px-2 pt-2"
 | 
					 | 
				
			||||||
            v-model="filterValue"
 | 
					            v-model="filterValue"
 | 
				
			||||||
 | 
					            class="px-2 pt-2"
 | 
				
			||||||
            placeholder="搜索图标"
 | 
					            placeholder="搜索图标"
 | 
				
			||||||
            clearable
 | 
					            clearable
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import { iconType } from "./types";
 | 
					import type { iconType } from "./types";
 | 
				
			||||||
import { h, defineComponent, Component } from "vue";
 | 
					import { h, defineComponent, type Component } from "vue";
 | 
				
			||||||
import { IconifyIconOnline, IconifyIconOffline, FontIcon } from "../index";
 | 
					import { IconifyIconOnline, IconifyIconOffline, FontIcon } from "../index";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
				
			|||||||
@ -4,13 +4,13 @@ import {
 | 
				
			|||||||
  watch,
 | 
					  watch,
 | 
				
			||||||
  nextTick,
 | 
					  nextTick,
 | 
				
			||||||
  computed,
 | 
					  computed,
 | 
				
			||||||
  PropType,
 | 
					  type PropType,
 | 
				
			||||||
  defineComponent
 | 
					  defineComponent
 | 
				
			||||||
} from "vue";
 | 
					} from "vue";
 | 
				
			||||||
import "./index.scss";
 | 
					import "./index.scss";
 | 
				
			||||||
import propTypes from "@/utils/propTypes";
 | 
					import propTypes from "@/utils/propTypes";
 | 
				
			||||||
import { isString, cloneDeep } from "@pureadmin/utils";
 | 
					import { isString, cloneDeep } from "@pureadmin/utils";
 | 
				
			||||||
import QRCode, { QRCodeRenderersOptions } from "qrcode";
 | 
					import QRCode, { type QRCodeRenderersOptions } from "qrcode";
 | 
				
			||||||
import RefreshRight from "@iconify-icons/ep/refresh-right";
 | 
					import RefreshRight from "@iconify-icons/ep/refresh-right";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface QrcodeLogo {
 | 
					interface QrcodeLogo {
 | 
				
			||||||
 | 
				
			|||||||
@ -498,16 +498,16 @@ defineExpose({
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div :ref="'wrap' + props.classOption['key']">
 | 
					  <div :ref="'wrap' + props.classOption['key']">
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
      :style="leftSwitch"
 | 
					 | 
				
			||||||
      v-if="navigation"
 | 
					      v-if="navigation"
 | 
				
			||||||
 | 
					      :style="leftSwitch"
 | 
				
			||||||
      :class="leftSwitchClass"
 | 
					      :class="leftSwitchClass"
 | 
				
			||||||
      @click="leftSwitchClick"
 | 
					      @click="leftSwitchClick"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <slot name="left-switch" />
 | 
					      <slot name="left-switch" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
      :style="rightSwitch"
 | 
					 | 
				
			||||||
      v-if="navigation"
 | 
					      v-if="navigation"
 | 
				
			||||||
 | 
					      :style="rightSwitch"
 | 
				
			||||||
      :class="rightSwitchClass"
 | 
					      :class="rightSwitchClass"
 | 
				
			||||||
      @click="rightSwitchClick"
 | 
					      @click="rightSwitchClick"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
@ -526,7 +526,7 @@ defineExpose({
 | 
				
			|||||||
      <div :ref="'slotList' + props.classOption['key']" :style="float">
 | 
					      <div :ref="'slotList' + props.classOption['key']" :style="float">
 | 
				
			||||||
        <slot />
 | 
					        <slot />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div v-html="copyHtml" :style="float" />
 | 
					      <div :style="float" v-html="copyHtml" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -55,7 +55,6 @@ export default defineComponent({
 | 
				
			|||||||
  emits: ["selectedVal"],
 | 
					  emits: ["selectedVal"],
 | 
				
			||||||
  setup(props, { emit }) {
 | 
					  setup(props, { emit }) {
 | 
				
			||||||
    const instance = getCurrentInstance();
 | 
					    const instance = getCurrentInstance();
 | 
				
			||||||
    // eslint-disable-next-line vue/no-setup-props-destructure
 | 
					 | 
				
			||||||
    const currentValue = props.value;
 | 
					    const currentValue = props.value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const rateDisabled = computed(() => {
 | 
					    const rateDisabled = computed(() => {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { defineComponent, ref, unref, computed, PropType } from "vue";
 | 
					import { defineComponent, ref, unref, computed, type PropType } from "vue";
 | 
				
			||||||
import resizer from "./resizer";
 | 
					import resizer from "./resizer";
 | 
				
			||||||
import "./index.css";
 | 
					import "./index.css";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { App } from "vue";
 | 
					import type { App } from "vue";
 | 
				
			||||||
import axios from "axios";
 | 
					import axios from "axios";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let config: object = {};
 | 
					let config: object = {};
 | 
				
			||||||
 | 
				
			|||||||
@ -50,6 +50,12 @@ const getSectionStyle = computed(() => {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const transitionMain = defineComponent({
 | 
					const transitionMain = defineComponent({
 | 
				
			||||||
 | 
					  props: {
 | 
				
			||||||
 | 
					    route: {
 | 
				
			||||||
 | 
					      type: undefined,
 | 
				
			||||||
 | 
					      required: true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  render() {
 | 
					  render() {
 | 
				
			||||||
    const transitionName =
 | 
					    const transitionName =
 | 
				
			||||||
      transitions.value(this.route)?.name || "fade-transform";
 | 
					      transitions.value(this.route)?.name || "fade-transform";
 | 
				
			||||||
@ -72,12 +78,6 @@ const transitionMain = defineComponent({
 | 
				
			|||||||
        default: () => [this.$slots.default()]
 | 
					        default: () => [this.$slots.default()]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  props: {
 | 
					 | 
				
			||||||
    route: {
 | 
					 | 
				
			||||||
      type: undefined,
 | 
					 | 
				
			||||||
      required: true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
@ -118,8 +118,8 @@ const transitionMain = defineComponent({
 | 
				
			|||||||
                />
 | 
					                />
 | 
				
			||||||
              </keep-alive>
 | 
					              </keep-alive>
 | 
				
			||||||
              <component
 | 
					              <component
 | 
				
			||||||
                v-else
 | 
					 | 
				
			||||||
                :is="Component"
 | 
					                :is="Component"
 | 
				
			||||||
 | 
					                v-else
 | 
				
			||||||
                :key="route.fullPath"
 | 
					                :key="route.fullPath"
 | 
				
			||||||
                class="main-content"
 | 
					                class="main-content"
 | 
				
			||||||
              />
 | 
					              />
 | 
				
			||||||
@ -140,8 +140,8 @@ const transitionMain = defineComponent({
 | 
				
			|||||||
              />
 | 
					              />
 | 
				
			||||||
            </keep-alive>
 | 
					            </keep-alive>
 | 
				
			||||||
            <component
 | 
					            <component
 | 
				
			||||||
              v-else
 | 
					 | 
				
			||||||
              :is="Component"
 | 
					              :is="Component"
 | 
				
			||||||
 | 
					              v-else
 | 
				
			||||||
              :key="route.fullPath"
 | 
					              :key="route.fullPath"
 | 
				
			||||||
              class="main-content"
 | 
					              class="main-content"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
 | 
				
			|||||||
@ -62,8 +62,8 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
 | 
				
			|||||||
              @click="translationCh"
 | 
					              @click="translationCh"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <IconifyIconOffline
 | 
					              <IconifyIconOffline
 | 
				
			||||||
                class="check-zh"
 | 
					 | 
				
			||||||
                v-show="locale === 'zh'"
 | 
					                v-show="locale === 'zh'"
 | 
				
			||||||
 | 
					                class="check-zh"
 | 
				
			||||||
                :icon="Check"
 | 
					                :icon="Check"
 | 
				
			||||||
              />
 | 
					              />
 | 
				
			||||||
              简体中文
 | 
					              简体中文
 | 
				
			||||||
@ -73,7 +73,7 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
				
			||||||
              @click="translationEn"
 | 
					              @click="translationEn"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-en" v-show="locale === 'en'">
 | 
					              <span v-show="locale === 'en'" class="check-en">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              English
 | 
					              English
 | 
				
			||||||
 | 
				
			|||||||
@ -23,8 +23,8 @@ notices.value.map(v => (noticesNum.value += v.list.length));
 | 
				
			|||||||
    <template #dropdown>
 | 
					    <template #dropdown>
 | 
				
			||||||
      <el-dropdown-menu>
 | 
					      <el-dropdown-menu>
 | 
				
			||||||
        <el-tabs
 | 
					        <el-tabs
 | 
				
			||||||
          :stretch="true"
 | 
					 | 
				
			||||||
          v-model="activeKey"
 | 
					          v-model="activeKey"
 | 
				
			||||||
 | 
					          :stretch="true"
 | 
				
			||||||
          class="dropdown-tabs"
 | 
					          class="dropdown-tabs"
 | 
				
			||||||
          :style="{ width: notices.length === 0 ? '200px' : '330px' }"
 | 
					          :style="{ width: notices.length === 0 ? '200px' : '330px' }"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
 | 
				
			|||||||
@ -15,8 +15,8 @@ const props = defineProps({
 | 
				
			|||||||
  <div v-if="props.list.length">
 | 
					  <div v-if="props.list.length">
 | 
				
			||||||
    <NoticeItem
 | 
					    <NoticeItem
 | 
				
			||||||
      v-for="(item, index) in props.list"
 | 
					      v-for="(item, index) in props.list"
 | 
				
			||||||
      :noticeItem="item"
 | 
					 | 
				
			||||||
      :key="index"
 | 
					      :key="index"
 | 
				
			||||||
 | 
					      :noticeItem="item"
 | 
				
			||||||
    />
 | 
					    />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <el-empty v-else description="暂无数据" />
 | 
					  <el-empty v-else description="暂无数据" />
 | 
				
			||||||
 | 
				
			|||||||
@ -146,9 +146,9 @@ onKeyStroke("ArrowDown", handleDown);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-dialog
 | 
					  <el-dialog
 | 
				
			||||||
 | 
					    v-model="show"
 | 
				
			||||||
    top="5vh"
 | 
					    top="5vh"
 | 
				
			||||||
    class="pure-search-dialog"
 | 
					    class="pure-search-dialog"
 | 
				
			||||||
    v-model="show"
 | 
					 | 
				
			||||||
    :show-close="false"
 | 
					    :show-close="false"
 | 
				
			||||||
    :width="device === 'mobile' ? '80vw' : '40vw'"
 | 
					    :width="device === 'mobile' ? '80vw' : '40vw'"
 | 
				
			||||||
    :before-close="handleClose"
 | 
					    :before-close="handleClose"
 | 
				
			||||||
@ -161,8 +161,8 @@ onKeyStroke("ArrowDown", handleDown);
 | 
				
			|||||||
  >
 | 
					  >
 | 
				
			||||||
    <el-input
 | 
					    <el-input
 | 
				
			||||||
      ref="inputRef"
 | 
					      ref="inputRef"
 | 
				
			||||||
      size="large"
 | 
					 | 
				
			||||||
      v-model="keyword"
 | 
					      v-model="keyword"
 | 
				
			||||||
 | 
					      size="large"
 | 
				
			||||||
      clearable
 | 
					      clearable
 | 
				
			||||||
      placeholder="搜索菜单(中文模式下支持拼音搜索)"
 | 
					      placeholder="搜索菜单(中文模式下支持拼音搜索)"
 | 
				
			||||||
      @input="handleSearch"
 | 
					      @input="handleSearch"
 | 
				
			||||||
 | 
				
			|||||||
@ -254,8 +254,8 @@ onBeforeMount(() => {
 | 
				
			|||||||
        popper-class="pure-tooltip"
 | 
					        popper-class="pure-tooltip"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <li
 | 
					        <li
 | 
				
			||||||
          :class="layoutTheme.layout === 'vertical' ? 'is-select' : ''"
 | 
					 | 
				
			||||||
          ref="verticalRef"
 | 
					          ref="verticalRef"
 | 
				
			||||||
 | 
					          :class="layoutTheme.layout === 'vertical' ? 'is-select' : ''"
 | 
				
			||||||
          @click="setLayoutModel('vertical')"
 | 
					          @click="setLayoutModel('vertical')"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <div />
 | 
					          <div />
 | 
				
			||||||
@ -272,8 +272,8 @@ onBeforeMount(() => {
 | 
				
			|||||||
        popper-class="pure-tooltip"
 | 
					        popper-class="pure-tooltip"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <li
 | 
					        <li
 | 
				
			||||||
          :class="layoutTheme.layout === 'horizontal' ? 'is-select' : ''"
 | 
					 | 
				
			||||||
          ref="horizontalRef"
 | 
					          ref="horizontalRef"
 | 
				
			||||||
 | 
					          :class="layoutTheme.layout === 'horizontal' ? 'is-select' : ''"
 | 
				
			||||||
          @click="setLayoutModel('horizontal')"
 | 
					          @click="setLayoutModel('horizontal')"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <div />
 | 
					          <div />
 | 
				
			||||||
@ -290,8 +290,8 @@ onBeforeMount(() => {
 | 
				
			|||||||
        popper-class="pure-tooltip"
 | 
					        popper-class="pure-tooltip"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <li
 | 
					        <li
 | 
				
			||||||
          :class="layoutTheme.layout === 'mix' ? 'is-select' : ''"
 | 
					 | 
				
			||||||
          ref="mixRef"
 | 
					          ref="mixRef"
 | 
				
			||||||
 | 
					          :class="layoutTheme.layout === 'mix' ? 'is-select' : ''"
 | 
				
			||||||
          @click="setLayoutModel('mix')"
 | 
					          @click="setLayoutModel('mix')"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <div />
 | 
					          <div />
 | 
				
			||||||
@ -304,8 +304,8 @@ onBeforeMount(() => {
 | 
				
			|||||||
    <ul class="theme-color">
 | 
					    <ul class="theme-color">
 | 
				
			||||||
      <li
 | 
					      <li
 | 
				
			||||||
        v-for="(item, index) in themeColors"
 | 
					        v-for="(item, index) in themeColors"
 | 
				
			||||||
        :key="index"
 | 
					 | 
				
			||||||
        v-show="showThemeColors(item.themeColor)"
 | 
					        v-show="showThemeColors(item.themeColor)"
 | 
				
			||||||
 | 
					        :key="index"
 | 
				
			||||||
        :style="getThemeColorStyle(item.color)"
 | 
					        :style="getThemeColorStyle(item.color)"
 | 
				
			||||||
        @click="setLayoutThemeColor(item.themeColor)"
 | 
					        @click="setLayoutThemeColor(item.themeColor)"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
 | 
				
			|||||||
@ -108,9 +108,9 @@ watch(
 | 
				
			|||||||
  <el-breadcrumb class="!leading-[50px] select-none" separator="/">
 | 
					  <el-breadcrumb class="!leading-[50px] select-none" separator="/">
 | 
				
			||||||
    <transition-group name="breadcrumb">
 | 
					    <transition-group name="breadcrumb">
 | 
				
			||||||
      <el-breadcrumb-item
 | 
					      <el-breadcrumb-item
 | 
				
			||||||
        class="!inline !items-stretch"
 | 
					 | 
				
			||||||
        v-for="item in levelList"
 | 
					        v-for="item in levelList"
 | 
				
			||||||
        :key="item.path"
 | 
					        :key="item.path"
 | 
				
			||||||
 | 
					        class="!inline !items-stretch"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <a @click.prevent="handleLink(item)">
 | 
					        <a @click.prevent="handleLink(item)">
 | 
				
			||||||
          {{ transformI18n(item.meta.title) }}
 | 
					          {{ transformI18n(item.meta.title) }}
 | 
				
			||||||
 | 
				
			|||||||
@ -48,8 +48,8 @@ nextTick(() => {
 | 
				
			|||||||
      <span>{{ title }}</span>
 | 
					      <span>{{ title }}</span>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <el-menu
 | 
					    <el-menu
 | 
				
			||||||
      router
 | 
					 | 
				
			||||||
      ref="menuRef"
 | 
					      ref="menuRef"
 | 
				
			||||||
 | 
					      router
 | 
				
			||||||
      mode="horizontal"
 | 
					      mode="horizontal"
 | 
				
			||||||
      class="horizontal-header-menu"
 | 
					      class="horizontal-header-menu"
 | 
				
			||||||
      :default-active="defaultActive"
 | 
					      :default-active="defaultActive"
 | 
				
			||||||
@ -78,7 +78,7 @@ nextTick(() => {
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'zh')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'zh')]"
 | 
				
			||||||
              @click="translationCh"
 | 
					              @click="translationCh"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-zh" v-show="locale === 'zh'">
 | 
					              <span v-show="locale === 'zh'" class="check-zh">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              简体中文
 | 
					              简体中文
 | 
				
			||||||
@ -88,7 +88,7 @@ nextTick(() => {
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
				
			||||||
              @click="translationEn"
 | 
					              @click="translationEn"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-en" v-show="locale === 'en'">
 | 
					              <span v-show="locale === 'en'" class="check-en">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              English
 | 
					              English
 | 
				
			||||||
 | 
				
			|||||||
@ -61,12 +61,12 @@ watch(
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div
 | 
					  <div
 | 
				
			||||||
    v-if="device !== 'mobile'"
 | 
					    v-if="device !== 'mobile'"
 | 
				
			||||||
    class="horizontal-header"
 | 
					 | 
				
			||||||
    v-loading="usePermissionStoreHook().wholeMenus.length === 0"
 | 
					    v-loading="usePermissionStoreHook().wholeMenus.length === 0"
 | 
				
			||||||
 | 
					    class="horizontal-header"
 | 
				
			||||||
  >
 | 
					  >
 | 
				
			||||||
    <el-menu
 | 
					    <el-menu
 | 
				
			||||||
      router
 | 
					 | 
				
			||||||
      ref="menuRef"
 | 
					      ref="menuRef"
 | 
				
			||||||
 | 
					      router
 | 
				
			||||||
      mode="horizontal"
 | 
					      mode="horizontal"
 | 
				
			||||||
      class="horizontal-header-menu"
 | 
					      class="horizontal-header-menu"
 | 
				
			||||||
      :default-active="defaultActive"
 | 
					      :default-active="defaultActive"
 | 
				
			||||||
@ -111,7 +111,7 @@ watch(
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'zh')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'zh')]"
 | 
				
			||||||
              @click="translationCh"
 | 
					              @click="translationCh"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-zh" v-show="locale === 'zh'">
 | 
					              <span v-show="locale === 'zh'" class="check-zh">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              简体中文
 | 
					              简体中文
 | 
				
			||||||
@ -121,7 +121,7 @@ watch(
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
				
			||||||
              @click="translationEn"
 | 
					              @click="translationEn"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-en" v-show="locale === 'en'">
 | 
					              <span v-show="locale === 'en'" class="check-en">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              English
 | 
					              English
 | 
				
			||||||
 | 
				
			|||||||
@ -275,7 +275,6 @@ function resolvePath(routePath) {
 | 
				
			|||||||
        {{ transformI18n(props.item.meta.title) }}
 | 
					        {{ transformI18n(props.item.meta.title) }}
 | 
				
			||||||
      </span>
 | 
					      </span>
 | 
				
			||||||
      <div
 | 
					      <div
 | 
				
			||||||
        :style="getSubMenuDivStyle(props.item)"
 | 
					 | 
				
			||||||
        v-if="
 | 
					        v-if="
 | 
				
			||||||
          !(
 | 
					          !(
 | 
				
			||||||
            isCollapse &&
 | 
					            isCollapse &&
 | 
				
			||||||
@ -283,6 +282,7 @@ function resolvePath(routePath) {
 | 
				
			|||||||
            props.item.parentId === null
 | 
					            props.item.parentId === null
 | 
				
			||||||
          )
 | 
					          )
 | 
				
			||||||
        "
 | 
					        "
 | 
				
			||||||
 | 
					        :style="getSubMenuDivStyle(props.item)"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-tooltip
 | 
					        <el-tooltip
 | 
				
			||||||
          v-if="layout !== 'horizontal'"
 | 
					          v-if="layout !== 'horizontal'"
 | 
				
			||||||
 | 
				
			|||||||
@ -518,15 +518,15 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div ref="containerDom" class="tags-view" v-if="!showTags">
 | 
					  <div v-if="!showTags" ref="containerDom" class="tags-view">
 | 
				
			||||||
    <span v-show="isShowArrow" class="arrow-left">
 | 
					    <span v-show="isShowArrow" class="arrow-left">
 | 
				
			||||||
      <IconifyIconOffline :icon="ArrowLeftSLine" @click="handleScroll(200)" />
 | 
					      <IconifyIconOffline :icon="ArrowLeftSLine" @click="handleScroll(200)" />
 | 
				
			||||||
    </span>
 | 
					    </span>
 | 
				
			||||||
    <div ref="scrollbarDom" class="scroll-container">
 | 
					    <div ref="scrollbarDom" class="scroll-container">
 | 
				
			||||||
      <div class="tab select-none" ref="tabDom" :style="getTabStyle">
 | 
					      <div ref="tabDom" class="tab select-none" :style="getTabStyle">
 | 
				
			||||||
        <div
 | 
					        <div
 | 
				
			||||||
          :ref="'dynamic' + index"
 | 
					 | 
				
			||||||
          v-for="(item, index) in multiTags"
 | 
					          v-for="(item, index) in multiTags"
 | 
				
			||||||
 | 
					          :ref="'dynamic' + index"
 | 
				
			||||||
          :key="index"
 | 
					          :key="index"
 | 
				
			||||||
          :class="['scroll-item is-closable', linkIsActive(item)]"
 | 
					          :class="['scroll-item is-closable', linkIsActive(item)]"
 | 
				
			||||||
          @contextmenu.prevent="openMenu(item, $event)"
 | 
					          @contextmenu.prevent="openMenu(item, $event)"
 | 
				
			||||||
@ -550,8 +550,8 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
            <IconifyIconOffline :icon="CloseBold" />
 | 
					            <IconifyIconOffline :icon="CloseBold" />
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
          <div
 | 
					          <div
 | 
				
			||||||
            :ref="'schedule' + index"
 | 
					 | 
				
			||||||
            v-if="showModel !== 'card'"
 | 
					            v-if="showModel !== 'card'"
 | 
				
			||||||
 | 
					            :ref="'schedule' + index"
 | 
				
			||||||
            :class="[scheduleIsActive(item)]"
 | 
					            :class="[scheduleIsActive(item)]"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -46,11 +46,11 @@ onMounted(() => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div
 | 
					  <div
 | 
				
			||||||
    class="frame"
 | 
					 | 
				
			||||||
    v-loading="loading"
 | 
					    v-loading="loading"
 | 
				
			||||||
 | 
					    class="frame"
 | 
				
			||||||
    :element-loading-text="t('status.hsLoad')"
 | 
					    :element-loading-text="t('status.hsLoad')"
 | 
				
			||||||
  >
 | 
					  >
 | 
				
			||||||
    <iframe :src="frameSrc" class="frame-iframe" ref="frameRef" />
 | 
					    <iframe ref="frameRef" :src="frameSrc" class="frame-iframe" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
import { ref } from "vue";
 | 
					import { ref } from "vue";
 | 
				
			||||||
import { getConfig } from "@/config";
 | 
					import { getConfig } from "@/config";
 | 
				
			||||||
import { useLayout } from "./useLayout";
 | 
					import { useLayout } from "./useLayout";
 | 
				
			||||||
import { themeColorsType } from "../types";
 | 
					 | 
				
			||||||
import { useGlobal } from "@pureadmin/utils";
 | 
					import { useGlobal } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					import type { themeColorsType } from "../types";
 | 
				
			||||||
import { useEpThemeStoreHook } from "@/store/modules/epTheme";
 | 
					import { useEpThemeStoreHook } from "@/store/modules/epTheme";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  darken,
 | 
					  darken,
 | 
				
			||||||
 | 
				
			|||||||
@ -2,10 +2,10 @@ import { storeToRefs } from "pinia";
 | 
				
			|||||||
import { getConfig } from "@/config";
 | 
					import { getConfig } from "@/config";
 | 
				
			||||||
import { useRouter } from "vue-router";
 | 
					import { useRouter } from "vue-router";
 | 
				
			||||||
import { emitter } from "@/utils/mitt";
 | 
					import { emitter } from "@/utils/mitt";
 | 
				
			||||||
import { routeMetaType } from "../types";
 | 
					 | 
				
			||||||
import userAvatar from "@/assets/user.jpg";
 | 
					import userAvatar from "@/assets/user.jpg";
 | 
				
			||||||
import { getTopMenu } from "@/router/utils";
 | 
					import { getTopMenu } from "@/router/utils";
 | 
				
			||||||
import { useGlobal } from "@pureadmin/utils";
 | 
					import { useGlobal } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					import type { routeMetaType } from "../types";
 | 
				
			||||||
import { transformI18n } from "@/plugins/i18n";
 | 
					import { transformI18n } from "@/plugins/i18n";
 | 
				
			||||||
import { router, remainingPaths } from "@/router";
 | 
					import { router, remainingPaths } from "@/router";
 | 
				
			||||||
import { computed, type CSSProperties } from "vue";
 | 
					import { computed, type CSSProperties } from "vue";
 | 
				
			||||||
 | 
				
			|||||||
@ -4,10 +4,10 @@ import {
 | 
				
			|||||||
  computed,
 | 
					  computed,
 | 
				
			||||||
  reactive,
 | 
					  reactive,
 | 
				
			||||||
  onMounted,
 | 
					  onMounted,
 | 
				
			||||||
  CSSProperties,
 | 
					  type CSSProperties,
 | 
				
			||||||
  getCurrentInstance
 | 
					  getCurrentInstance
 | 
				
			||||||
} from "vue";
 | 
					} from "vue";
 | 
				
			||||||
import { tagsViewsType } from "../types";
 | 
					import type { tagsViewsType } from "../types";
 | 
				
			||||||
import { useRoute, useRouter } from "vue-router";
 | 
					import { useRoute, useRouter } from "vue-router";
 | 
				
			||||||
import { transformI18n, $t } from "@/plugins/i18n";
 | 
					import { transformI18n, $t } from "@/plugins/i18n";
 | 
				
			||||||
import { responsiveStorageNameSpace } from "@/config";
 | 
					import { responsiveStorageNameSpace } from "@/config";
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
 * @description ⚠️:此文件仅供主题插件使用,请不要在此文件中导出别的工具函数(仅在页面加载前运行)
 | 
					 * @description ⚠️:此文件仅供主题插件使用,请不要在此文件中导出别的工具函数(仅在页面加载前运行)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { type multipleScopeVarsOptions } from "@pureadmin/theme";
 | 
					import type { multipleScopeVarsOptions } from "@pureadmin/theme";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** 预设主题色 */
 | 
					/** 预设主题色 */
 | 
				
			||||||
const themeColors = {
 | 
					const themeColors = {
 | 
				
			||||||
 | 
				
			|||||||
@ -4,9 +4,9 @@ import { setupStore } from "@/store";
 | 
				
			|||||||
import ElementPlus from "element-plus";
 | 
					import ElementPlus from "element-plus";
 | 
				
			||||||
import { useI18n } from "@/plugins/i18n";
 | 
					import { useI18n } from "@/plugins/i18n";
 | 
				
			||||||
import { getPlatformConfig } from "./config";
 | 
					import { getPlatformConfig } from "./config";
 | 
				
			||||||
import { createApp, Directive } from "vue";
 | 
					 | 
				
			||||||
import { MotionPlugin } from "@vueuse/motion";
 | 
					import { MotionPlugin } from "@vueuse/motion";
 | 
				
			||||||
import { useEcharts } from "@/plugins/echarts";
 | 
					import { useEcharts } from "@/plugins/echarts";
 | 
				
			||||||
 | 
					import { createApp, type Directive } from "vue";
 | 
				
			||||||
import { injectResponsiveStorage } from "@/utils/responsive";
 | 
					import { injectResponsiveStorage } from "@/utils/responsive";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Table from "@pureadmin/table";
 | 
					import Table from "@pureadmin/table";
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { App, Component } from "vue";
 | 
					import type { App, Component } from "vue";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  ElTag,
 | 
					  ElTag,
 | 
				
			||||||
  ElAffix,
 | 
					  ElAffix,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
// 多组件库的国际化和本地项目国际化兼容
 | 
					// 多组件库的国际化和本地项目国际化兼容
 | 
				
			||||||
import { App, WritableComputedRef } from "vue";
 | 
					 | 
				
			||||||
import { type I18n, createI18n } from "vue-i18n";
 | 
					import { type I18n, createI18n } from "vue-i18n";
 | 
				
			||||||
 | 
					import type { App, WritableComputedRef } from "vue";
 | 
				
			||||||
import { responsiveStorageNameSpace } from "@/config";
 | 
					import { responsiveStorageNameSpace } from "@/config";
 | 
				
			||||||
import { storageLocal, isObject } from "@pureadmin/utils";
 | 
					import { storageLocal, isObject } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -20,10 +20,10 @@ import {
 | 
				
			|||||||
  formatFlatteningRoutes
 | 
					  formatFlatteningRoutes
 | 
				
			||||||
} from "./utils";
 | 
					} from "./utils";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  Router,
 | 
					  type Router,
 | 
				
			||||||
  createRouter,
 | 
					  createRouter,
 | 
				
			||||||
  RouteRecordRaw,
 | 
					  type RouteRecordRaw,
 | 
				
			||||||
  RouteComponent
 | 
					  type RouteComponent
 | 
				
			||||||
} from "vue-router";
 | 
					} from "vue-router";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  type DataInfo,
 | 
					  type DataInfo,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
import {
 | 
					import {
 | 
				
			||||||
  RouterHistory,
 | 
					  type RouterHistory,
 | 
				
			||||||
  RouteRecordRaw,
 | 
					  type RouteRecordRaw,
 | 
				
			||||||
  RouteComponent,
 | 
					  type RouteComponent,
 | 
				
			||||||
  createWebHistory,
 | 
					  createWebHistory,
 | 
				
			||||||
  createWebHashHistory
 | 
					  createWebHashHistory
 | 
				
			||||||
} from "vue-router";
 | 
					} from "vue-router";
 | 
				
			||||||
@ -17,7 +17,7 @@ import {
 | 
				
			|||||||
  isIncludeAllChildren
 | 
					  isIncludeAllChildren
 | 
				
			||||||
} from "@pureadmin/utils";
 | 
					} from "@pureadmin/utils";
 | 
				
			||||||
import { getConfig } from "@/config";
 | 
					import { getConfig } from "@/config";
 | 
				
			||||||
import { menuType } from "@/layout/types";
 | 
					import type { menuType } from "@/layout/types";
 | 
				
			||||||
import { buildHierarchyTree } from "@/utils/tree";
 | 
					import { buildHierarchyTree } from "@/utils/tree";
 | 
				
			||||||
import { userKey, type DataInfo } from "@/utils/auth";
 | 
					import { userKey, type DataInfo } from "@/utils/auth";
 | 
				
			||||||
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
					import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
import { store } from "@/store";
 | 
					import { store } from "@/store";
 | 
				
			||||||
import { appType } from "./types";
 | 
					 | 
				
			||||||
import { defineStore } from "pinia";
 | 
					import { defineStore } from "pinia";
 | 
				
			||||||
 | 
					import type { appType } from "./types";
 | 
				
			||||||
import { getConfig, responsiveStorageNameSpace } from "@/config";
 | 
					import { getConfig, responsiveStorageNameSpace } from "@/config";
 | 
				
			||||||
import { deviceDetection, storageLocal } from "@pureadmin/utils";
 | 
					import { deviceDetection, storageLocal } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
import { defineStore } from "pinia";
 | 
					import { defineStore } from "pinia";
 | 
				
			||||||
import { store } from "@/store";
 | 
					import { store } from "@/store";
 | 
				
			||||||
import { routerArrays } from "@/layout/types";
 | 
					import { routerArrays } from "@/layout/types";
 | 
				
			||||||
import { multiType, positionType } from "./types";
 | 
					 | 
				
			||||||
import { responsiveStorageNameSpace } from "@/config";
 | 
					import { responsiveStorageNameSpace } from "@/config";
 | 
				
			||||||
 | 
					import type { multiType, positionType } from "./types";
 | 
				
			||||||
import { isEqual, isBoolean, isUrl, storageLocal } from "@pureadmin/utils";
 | 
					import { isEqual, isBoolean, isUrl, storageLocal } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const useMultiTagsStore = defineStore({
 | 
					export const useMultiTagsStore = defineStore({
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
import { defineStore } from "pinia";
 | 
					import { defineStore } from "pinia";
 | 
				
			||||||
import { store } from "@/store";
 | 
					import { store } from "@/store";
 | 
				
			||||||
import { cacheType } from "./types";
 | 
					import type { cacheType } from "./types";
 | 
				
			||||||
import { constantMenus } from "@/router";
 | 
					import { constantMenus } from "@/router";
 | 
				
			||||||
import { useMultiTagsStoreHook } from "./multiTags";
 | 
					import { useMultiTagsStoreHook } from "./multiTags";
 | 
				
			||||||
import { debounce, getKeyList } from "@pureadmin/utils";
 | 
					import { debounce, getKeyList } from "@pureadmin/utils";
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
import { defineStore } from "pinia";
 | 
					import { defineStore } from "pinia";
 | 
				
			||||||
import { store } from "@/store";
 | 
					import { store } from "@/store";
 | 
				
			||||||
import { setType } from "./types";
 | 
					 | 
				
			||||||
import { getConfig } from "@/config";
 | 
					import { getConfig } from "@/config";
 | 
				
			||||||
 | 
					import type { setType } from "./types";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const useSettingStore = defineStore({
 | 
					export const useSettingStore = defineStore({
 | 
				
			||||||
  id: "pure-setting",
 | 
					  id: "pure-setting",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { RouteRecordName } from "vue-router";
 | 
					import type { RouteRecordName } from "vue-router";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type cacheType = {
 | 
					export type cacheType = {
 | 
				
			||||||
  mode: string;
 | 
					  mode: string;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,11 @@
 | 
				
			|||||||
import { defineStore } from "pinia";
 | 
					import { defineStore } from "pinia";
 | 
				
			||||||
import { store } from "@/store";
 | 
					import { store } from "@/store";
 | 
				
			||||||
import { userType } from "./types";
 | 
					import type { userType } from "./types";
 | 
				
			||||||
import { routerArrays } from "@/layout/types";
 | 
					import { routerArrays } from "@/layout/types";
 | 
				
			||||||
import { router, resetRouter } from "@/router";
 | 
					import { router, resetRouter } from "@/router";
 | 
				
			||||||
import { storageLocal } from "@pureadmin/utils";
 | 
					import { storageLocal } from "@pureadmin/utils";
 | 
				
			||||||
import { getLogin, refreshTokenApi } from "@/api/user";
 | 
					import { getLogin, refreshTokenApi } from "@/api/user";
 | 
				
			||||||
import { UserResult, RefreshTokenResult } from "@/api/user";
 | 
					import type { UserResult, RefreshTokenResult } from "@/api/user";
 | 
				
			||||||
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
					import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
				
			||||||
import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
 | 
					import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
import Axios, {
 | 
					import Axios, {
 | 
				
			||||||
  AxiosInstance,
 | 
					  type AxiosInstance,
 | 
				
			||||||
  AxiosRequestConfig,
 | 
					  type AxiosRequestConfig,
 | 
				
			||||||
  CustomParamsSerializer
 | 
					  type CustomParamsSerializer
 | 
				
			||||||
} from "axios";
 | 
					} from "axios";
 | 
				
			||||||
import {
 | 
					import type {
 | 
				
			||||||
  PureHttpError,
 | 
					  PureHttpError,
 | 
				
			||||||
  RequestMethods,
 | 
					  RequestMethods,
 | 
				
			||||||
  PureHttpResponse,
 | 
					  PureHttpResponse,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								src/utils/http/types.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/utils/http/types.d.ts
									
									
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
				
			|||||||
import Axios, {
 | 
					import type {
 | 
				
			||||||
  Method,
 | 
					  Method,
 | 
				
			||||||
  AxiosError,
 | 
					  AxiosError,
 | 
				
			||||||
  AxiosResponse,
 | 
					  AxiosResponse,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import forage from "localforage";
 | 
					import forage from "localforage";
 | 
				
			||||||
import { LocalForage, ProxyStorage, ExpiresData } from "./types.d";
 | 
					import type { LocalForage, ProxyStorage, ExpiresData } from "./types.d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StorageProxy implements ProxyStorage {
 | 
					class StorageProxy implements ProxyStorage {
 | 
				
			||||||
  protected storage: LocalForage;
 | 
					  protected storage: LocalForage;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { type VNode } from "vue";
 | 
					import type { VNode } from "vue";
 | 
				
			||||||
import { isFunction } from "@pureadmin/utils";
 | 
					import { isFunction } from "@pureadmin/utils";
 | 
				
			||||||
import { type MessageHandler, ElMessage } from "element-plus";
 | 
					import { type MessageHandler, ElMessage } from "element-plus";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,8 +2,8 @@ import type { CSSProperties, VNodeChild } from "vue";
 | 
				
			|||||||
import {
 | 
					import {
 | 
				
			||||||
  createTypes,
 | 
					  createTypes,
 | 
				
			||||||
  toValidableType,
 | 
					  toValidableType,
 | 
				
			||||||
  VueTypesInterface,
 | 
					  type VueTypesInterface,
 | 
				
			||||||
  VueTypeValidableDef
 | 
					  type VueTypeValidableDef
 | 
				
			||||||
} from "vue-types";
 | 
					} from "vue-types";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type VueNode = VNodeChild | JSX.Element;
 | 
					export type VueNode = VNodeChild | JSX.Element;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
// 响应式storage
 | 
					// 响应式storage
 | 
				
			||||||
import { App } from "vue";
 | 
					import type { App } from "vue";
 | 
				
			||||||
import Storage from "responsive-storage";
 | 
					import Storage from "responsive-storage";
 | 
				
			||||||
import { routerArrays } from "@/layout/types";
 | 
					import { routerArrays } from "@/layout/types";
 | 
				
			||||||
import { responsiveStorageNameSpace } from "@/config";
 | 
					import { responsiveStorageNameSpace } from "@/config";
 | 
				
			||||||
 | 
				
			|||||||
@ -40,8 +40,8 @@ import { subBefore, getQueryMap } from "@pureadmin/utils";
 | 
				
			|||||||
    setToken(params);
 | 
					    setToken(params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 删除不需要显示在 url 的参数
 | 
					    // 删除不需要显示在 url 的参数
 | 
				
			||||||
    delete params["roles"];
 | 
					    delete params.roles;
 | 
				
			||||||
    delete params["accessToken"];
 | 
					    delete params.accessToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const newUrl = `${location.origin}${location.pathname}${subBefore(
 | 
					    const newUrl = `${location.origin}${location.pathname}${subBefore(
 | 
				
			||||||
      location.hash,
 | 
					      location.hash,
 | 
				
			||||||
 | 
				
			|||||||
@ -32,8 +32,8 @@ const handleChange = value => {
 | 
				
			|||||||
          <span class="imp">
 | 
					          <span class="imp">
 | 
				
			||||||
            1. 二级联动(不带“全部”选项)
 | 
					            1. 二级联动(不带“全部”选项)
 | 
				
			||||||
            <el-cascader
 | 
					            <el-cascader
 | 
				
			||||||
              :options="provinceAndCityData"
 | 
					 | 
				
			||||||
              v-model="selectedOptions1"
 | 
					              v-model="selectedOptions1"
 | 
				
			||||||
 | 
					              :options="provinceAndCityData"
 | 
				
			||||||
              @change="handleChange"
 | 
					              @change="handleChange"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
@ -61,8 +61,8 @@ const handleChange = value => {
 | 
				
			|||||||
          <span class="imp">
 | 
					          <span class="imp">
 | 
				
			||||||
            2. 二级联动(带有“全部”选项)
 | 
					            2. 二级联动(带有“全部”选项)
 | 
				
			||||||
            <el-cascader
 | 
					            <el-cascader
 | 
				
			||||||
              :options="provinceAndCityDataPlus"
 | 
					 | 
				
			||||||
              v-model="selectedOptions3"
 | 
					              v-model="selectedOptions3"
 | 
				
			||||||
 | 
					              :options="provinceAndCityDataPlus"
 | 
				
			||||||
              @change="handleChange"
 | 
					              @change="handleChange"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
@ -90,8 +90,8 @@ const handleChange = value => {
 | 
				
			|||||||
          <span class="imp">
 | 
					          <span class="imp">
 | 
				
			||||||
            3. 三级联动(不带“全部”选项)
 | 
					            3. 三级联动(不带“全部”选项)
 | 
				
			||||||
            <el-cascader
 | 
					            <el-cascader
 | 
				
			||||||
              :options="regionData"
 | 
					 | 
				
			||||||
              v-model="selectedOptions2"
 | 
					              v-model="selectedOptions2"
 | 
				
			||||||
 | 
					              :options="regionData"
 | 
				
			||||||
              @change="handleChange"
 | 
					              @change="handleChange"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
@ -121,8 +121,8 @@ const handleChange = value => {
 | 
				
			|||||||
          <span class="imp">
 | 
					          <span class="imp">
 | 
				
			||||||
            4. 三级联动(带"全部选项")
 | 
					            4. 三级联动(带"全部选项")
 | 
				
			||||||
            <el-cascader
 | 
					            <el-cascader
 | 
				
			||||||
              :options="regionDataPlus"
 | 
					 | 
				
			||||||
              v-model="selectedOptions4"
 | 
					              v-model="selectedOptions4"
 | 
				
			||||||
 | 
					              :options="regionDataPlus"
 | 
				
			||||||
              @change="handleChange"
 | 
					              @change="handleChange"
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
 | 
				
			|||||||
@ -62,13 +62,13 @@ function onReset() {
 | 
				
			|||||||
    <div class="mb-2">
 | 
					    <div class="mb-2">
 | 
				
			||||||
      防抖指令(连续输入,只会执行第一次点击事件,立即执行)
 | 
					      防抖指令(连续输入,只会执行第一次点击事件,立即执行)
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="search"
 | 
				
			||||||
        v-optimize="{
 | 
					        v-optimize="{
 | 
				
			||||||
          event: 'input',
 | 
					          event: 'input',
 | 
				
			||||||
          fn: onInput,
 | 
					          fn: onInput,
 | 
				
			||||||
          immediate: true,
 | 
					          immediate: true,
 | 
				
			||||||
          timeout: 1000
 | 
					          timeout: 1000
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
        v-model="search"
 | 
					 | 
				
			||||||
        class="!w-[200px]"
 | 
					        class="!w-[200px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
        @clear="onInput"
 | 
					        @clear="onInput"
 | 
				
			||||||
@ -77,8 +77,8 @@ function onReset() {
 | 
				
			|||||||
    <div class="mb-2">
 | 
					    <div class="mb-2">
 | 
				
			||||||
      防抖指令(连续输入,只会执行最后一次事件,延后执行)
 | 
					      防抖指令(连续输入,只会执行最后一次事件,延后执行)
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
        v-optimize="{ event: 'input', fn: onInputTwo, timeout: 400 }"
 | 
					 | 
				
			||||||
        v-model="searchTwo"
 | 
					        v-model="searchTwo"
 | 
				
			||||||
 | 
					        v-optimize="{ event: 'input', fn: onInputTwo, timeout: 400 }"
 | 
				
			||||||
        class="!w-[200px]"
 | 
					        class="!w-[200px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
@ -86,13 +86,13 @@ function onReset() {
 | 
				
			|||||||
    <div>
 | 
					    <div>
 | 
				
			||||||
      防抖指令(连续输入,只会执行最后一次事件,延后执行,传参用法)
 | 
					      防抖指令(连续输入,只会执行最后一次事件,延后执行,传参用法)
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="searchThree"
 | 
				
			||||||
        v-optimize="{
 | 
					        v-optimize="{
 | 
				
			||||||
          event: 'input',
 | 
					          event: 'input',
 | 
				
			||||||
          fn: onInputThree,
 | 
					          fn: onInputThree,
 | 
				
			||||||
          timeout: 400,
 | 
					          timeout: 400,
 | 
				
			||||||
          params: { name: '小明', sex: '男' }
 | 
					          params: { name: '小明', sex: '男' }
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
        v-model="searchThree"
 | 
					 | 
				
			||||||
        class="!w-[200px]"
 | 
					        class="!w-[200px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
@ -103,8 +103,8 @@ function onReset() {
 | 
				
			|||||||
    <div class="mb-2">
 | 
					    <div class="mb-2">
 | 
				
			||||||
      节流指令(连续输入,每一秒只会执行一次事件)
 | 
					      节流指令(连续输入,每一秒只会执行一次事件)
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
        v-optimize:throttle="{ event: 'input', fn: onInputFour, timeout: 1000 }"
 | 
					 | 
				
			||||||
        v-model="searchFour"
 | 
					        v-model="searchFour"
 | 
				
			||||||
 | 
					        v-optimize:throttle="{ event: 'input', fn: onInputFour, timeout: 1000 }"
 | 
				
			||||||
        class="!w-[200px]"
 | 
					        class="!w-[200px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
@ -112,12 +112,12 @@ function onReset() {
 | 
				
			|||||||
    <div>
 | 
					    <div>
 | 
				
			||||||
      节流指令(连续输入,每一秒只会执行一次事件,传参用法)
 | 
					      节流指令(连续输入,每一秒只会执行一次事件,传参用法)
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="searchFive"
 | 
				
			||||||
        v-optimize:throttle="{
 | 
					        v-optimize:throttle="{
 | 
				
			||||||
          event: 'input',
 | 
					          event: 'input',
 | 
				
			||||||
          fn: onInputFive,
 | 
					          fn: onInputFive,
 | 
				
			||||||
          params: { name: '小明', sex: '男' }
 | 
					          params: { name: '小明', sex: '男' }
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
        v-model="searchFive"
 | 
					 | 
				
			||||||
        class="!w-[200px]"
 | 
					        class="!w-[200px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
@ -127,7 +127,7 @@ function onReset() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <div class="mb-2">
 | 
					    <div class="mb-2">
 | 
				
			||||||
      文本复制指令(双击输入框内容即可复制)
 | 
					      文本复制指令(双击输入框内容即可复制)
 | 
				
			||||||
      <el-input v-copy="searchSix" v-model="searchSix" class="!w-[200px]" />
 | 
					      <el-input v-model="searchSix" v-copy="searchSix" class="!w-[200px]" />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <div>
 | 
					    <div>
 | 
				
			||||||
      文本复制指令(自定义触发事件,单击复制)
 | 
					      文本复制指令(自定义触发事件,单击复制)
 | 
				
			||||||
 | 
				
			|||||||
@ -61,8 +61,8 @@ const filterMethod = (query: string, node: treeNode) => {
 | 
				
			|||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <el-input
 | 
					    <el-input
 | 
				
			||||||
      class="mb-4"
 | 
					 | 
				
			||||||
      v-model="query"
 | 
					      v-model="query"
 | 
				
			||||||
 | 
					      class="mb-4"
 | 
				
			||||||
      placeholder="请输入关键字查找"
 | 
					      placeholder="请输入关键字查找"
 | 
				
			||||||
      clearable
 | 
					      clearable
 | 
				
			||||||
      @input="onQueryChanged"
 | 
					      @input="onQueryChanged"
 | 
				
			||||||
 | 
				
			|||||||
@ -49,8 +49,8 @@ const onPrint = () => {
 | 
				
			|||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
      class="h-[calc(100vh-239px)]"
 | 
					 | 
				
			||||||
      v-loading="loading"
 | 
					      v-loading="loading"
 | 
				
			||||||
 | 
					      class="h-[calc(100vh-239px)]"
 | 
				
			||||||
      :element-loading-text="t('status.hsLoad')"
 | 
					      :element-loading-text="t('status.hsLoad')"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <div class="flex justify-between items-center h-9">
 | 
					      <div class="flex justify-between items-center h-9">
 | 
				
			||||||
@ -59,9 +59,9 @@ const onPrint = () => {
 | 
				
			|||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div v-else>
 | 
					        <div v-else>
 | 
				
			||||||
          <el-pagination
 | 
					          <el-pagination
 | 
				
			||||||
 | 
					            v-model:current-page="currentPage"
 | 
				
			||||||
            background
 | 
					            background
 | 
				
			||||||
            layout="prev, slot, next"
 | 
					            layout="prev, slot, next"
 | 
				
			||||||
            v-model:current-page="currentPage"
 | 
					 | 
				
			||||||
            :page-size="1"
 | 
					            :page-size="1"
 | 
				
			||||||
            :total="pageCount"
 | 
					            :total="pageCount"
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
@ -98,8 +98,8 @@ const onPrint = () => {
 | 
				
			|||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <el-scrollbar>
 | 
					      <el-scrollbar>
 | 
				
			||||||
        <vue-pdf-embed
 | 
					        <vue-pdf-embed
 | 
				
			||||||
          class="h-full container overflow-auto"
 | 
					 | 
				
			||||||
          ref="pdfRef"
 | 
					          ref="pdfRef"
 | 
				
			||||||
 | 
					          class="h-full container overflow-auto"
 | 
				
			||||||
          :rotation="rotations[currentRotation]"
 | 
					          :rotation="rotations[currentRotation]"
 | 
				
			||||||
          :page="currentPage"
 | 
					          :page="currentPage"
 | 
				
			||||||
          :source="source"
 | 
					          :source="source"
 | 
				
			||||||
 | 
				
			|||||||
@ -103,12 +103,12 @@ const tableData: User[] = [
 | 
				
			|||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <el-row :gutter="24">
 | 
					    <el-row :gutter="24">
 | 
				
			||||||
      <el-col
 | 
					      <el-col
 | 
				
			||||||
 | 
					        v-motion
 | 
				
			||||||
        :xs="24"
 | 
					        :xs="24"
 | 
				
			||||||
        :sm="24"
 | 
					        :sm="24"
 | 
				
			||||||
        :md="24"
 | 
					        :md="24"
 | 
				
			||||||
        :lg="24"
 | 
					        :lg="24"
 | 
				
			||||||
        :xl="24"
 | 
					        :xl="24"
 | 
				
			||||||
        v-motion
 | 
					 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -138,12 +138,12 @@ const tableData: User[] = [
 | 
				
			|||||||
      <el-divider />
 | 
					      <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <el-col
 | 
					      <el-col
 | 
				
			||||||
 | 
					        v-motion
 | 
				
			||||||
        :xs="11"
 | 
					        :xs="11"
 | 
				
			||||||
        :sm="11"
 | 
					        :sm="11"
 | 
				
			||||||
        :md="11"
 | 
					        :md="11"
 | 
				
			||||||
        :lg="11"
 | 
					        :lg="11"
 | 
				
			||||||
        :xl="11"
 | 
					        :xl="11"
 | 
				
			||||||
        v-motion
 | 
					 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -161,12 +161,12 @@ const tableData: User[] = [
 | 
				
			|||||||
      </el-col>
 | 
					      </el-col>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <el-col
 | 
					      <el-col
 | 
				
			||||||
 | 
					        v-motion
 | 
				
			||||||
        :xs="11"
 | 
					        :xs="11"
 | 
				
			||||||
        :sm="11"
 | 
					        :sm="11"
 | 
				
			||||||
        :md="11"
 | 
					        :md="11"
 | 
				
			||||||
        :lg="11"
 | 
					        :lg="11"
 | 
				
			||||||
        :xl="11"
 | 
					        :xl="11"
 | 
				
			||||||
        v-motion
 | 
					 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
 | 
				
			|||||||
@ -155,9 +155,9 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
      />
 | 
					      />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
 | 
					      id="canvas-container"
 | 
				
			||||||
      v-loading="loading"
 | 
					      v-loading="loading"
 | 
				
			||||||
      element-loading-text="温馨提示:可左右拖拽图片并单击选取所需的帧图片"
 | 
					      element-loading-text="温馨提示:可左右拖拽图片并单击选取所需的帧图片"
 | 
				
			||||||
      id="canvas-container"
 | 
					 | 
				
			||||||
      class="w-full h-[200px] overflow-hidden mt-6"
 | 
					      class="w-full h-[200px] overflow-hidden mt-6"
 | 
				
			||||||
    />
 | 
					    />
 | 
				
			||||||
  </el-card>
 | 
					  </el-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -23,9 +23,9 @@ const filteredItems = computed(() => {
 | 
				
			|||||||
    <div class="flex-ac mb-4 shadow-2xl">
 | 
					    <div class="flex-ac mb-4 shadow-2xl">
 | 
				
			||||||
      水平模式 horizontal
 | 
					      水平模式 horizontal
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="search"
 | 
				
			||||||
        class="mr-2 !w-[1/1.5]"
 | 
					        class="mr-2 !w-[1/1.5]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
        v-model="search"
 | 
					 | 
				
			||||||
        placeholder="Filter..."
 | 
					        placeholder="Filter..."
 | 
				
			||||||
        style="width: 300px"
 | 
					        style="width: 300px"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
 | 
				
			|||||||
@ -23,9 +23,9 @@ const filteredItems = computed(() => {
 | 
				
			|||||||
    <div class="flex-ac mb-4 shadow-2xl">
 | 
					    <div class="flex-ac mb-4 shadow-2xl">
 | 
				
			||||||
      垂直模式 vertical
 | 
					      垂直模式 vertical
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="search"
 | 
				
			||||||
        class="!w-[350px]"
 | 
					        class="!w-[350px]"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
        v-model="search"
 | 
					 | 
				
			||||||
        placeholder="Filter..."
 | 
					        placeholder="Filter..."
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -42,9 +42,9 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <span> 请输入要创建水印的值:</span>
 | 
					    <span> 请输入要创建水印的值:</span>
 | 
				
			||||||
    <el-input
 | 
					    <el-input
 | 
				
			||||||
 | 
					      v-model="value"
 | 
				
			||||||
      class="mb-4 mr-4"
 | 
					      class="mb-4 mr-4"
 | 
				
			||||||
      style="width: 200px"
 | 
					      style="width: 200px"
 | 
				
			||||||
      v-model="value"
 | 
					 | 
				
			||||||
      clearable
 | 
					      clearable
 | 
				
			||||||
    />
 | 
					    />
 | 
				
			||||||
    <span>请选择要创建水印的颜色:</span>
 | 
					    <span>请选择要创建水印的颜色:</span>
 | 
				
			||||||
 | 
				
			|||||||
@ -105,41 +105,41 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
      element-loading-background="transparent"
 | 
					      element-loading-background="transparent"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <div ref="wavesurferRef" />
 | 
					      <div ref="wavesurferRef" />
 | 
				
			||||||
      <div class="flex justify-between" v-show="totalTime">
 | 
					      <div v-show="totalTime" class="flex justify-between">
 | 
				
			||||||
        <span class="text-[#81888f]">00:00</span>
 | 
					        <span class="text-[#81888f]">00:00</span>
 | 
				
			||||||
        <h1 class="text-4xl mt-2">{{ curTime }}</h1>
 | 
					        <h1 class="text-4xl mt-2">{{ curTime }}</h1>
 | 
				
			||||||
        <span class="text-[#81888f]">{{ totalTime }}</span>
 | 
					        <span class="text-[#81888f]">{{ totalTime }}</span>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="flex mt-2 w-[180px] justify-around m-auto" v-show="totalTime">
 | 
					      <div v-show="totalTime" class="flex mt-2 w-[180px] justify-around m-auto">
 | 
				
			||||||
        <Rewind
 | 
					        <Rewind
 | 
				
			||||||
          class="cursor-pointer"
 | 
					 | 
				
			||||||
          v-tippy="{
 | 
					          v-tippy="{
 | 
				
			||||||
            content: '快退(可长按)',
 | 
					            content: '快退(可长按)',
 | 
				
			||||||
            placement: 'bottom',
 | 
					            placement: 'bottom',
 | 
				
			||||||
            animation: 'scale'
 | 
					            animation: 'scale'
 | 
				
			||||||
          }"
 | 
					          }"
 | 
				
			||||||
          v-longpress:0:100="() => wavesurfer?.skip(-1)"
 | 
					          v-longpress:0:100="() => wavesurfer?.skip(-1)"
 | 
				
			||||||
 | 
					          class="cursor-pointer"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
        <div
 | 
					        <div
 | 
				
			||||||
          class="cursor-pointer"
 | 
					 | 
				
			||||||
          v-tippy="{
 | 
					          v-tippy="{
 | 
				
			||||||
            content: isPlay ? '暂停' : '播放',
 | 
					            content: isPlay ? '暂停' : '播放',
 | 
				
			||||||
            placement: 'bottom',
 | 
					            placement: 'bottom',
 | 
				
			||||||
            animation: 'scale'
 | 
					            animation: 'scale'
 | 
				
			||||||
          }"
 | 
					          }"
 | 
				
			||||||
 | 
					          class="cursor-pointer"
 | 
				
			||||||
          @click="wavesurfer?.playPause()"
 | 
					          @click="wavesurfer?.playPause()"
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <Play v-if="isPlay" v-motion-pop />
 | 
					          <Play v-if="isPlay" v-motion-pop />
 | 
				
			||||||
          <Pause v-else v-motion-pop />
 | 
					          <Pause v-else v-motion-pop />
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <Forward
 | 
					        <Forward
 | 
				
			||||||
          class="cursor-pointer"
 | 
					 | 
				
			||||||
          v-tippy="{
 | 
					          v-tippy="{
 | 
				
			||||||
            content: '快进(可长按)',
 | 
					            content: '快进(可长按)',
 | 
				
			||||||
            placement: 'bottom',
 | 
					            placement: 'bottom',
 | 
				
			||||||
            animation: 'scale'
 | 
					            animation: 'scale'
 | 
				
			||||||
          }"
 | 
					          }"
 | 
				
			||||||
          v-longpress:0:100="() => wavesurfer?.skip(1)"
 | 
					          v-longpress:0:100="() => wavesurfer?.skip(1)"
 | 
				
			||||||
 | 
					          class="cursor-pointer"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -57,11 +57,11 @@ Object.keys(devDependencies).forEach(key => {
 | 
				
			|||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <el-descriptions border>
 | 
					      <el-descriptions border>
 | 
				
			||||||
        <el-descriptions-item
 | 
					        <el-descriptions-item
 | 
				
			||||||
 | 
					          v-for="(item, index) in schema"
 | 
				
			||||||
 | 
					          :key="index"
 | 
				
			||||||
          :label="item.label"
 | 
					          :label="item.label"
 | 
				
			||||||
          label-align="left"
 | 
					          label-align="left"
 | 
				
			||||||
          align="left"
 | 
					          align="left"
 | 
				
			||||||
          v-for="(item, index) in schema"
 | 
					 | 
				
			||||||
          :key="index"
 | 
					 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <a
 | 
					          <a
 | 
				
			||||||
            :href="'https://www.npmjs.com/package/' + item.label"
 | 
					            :href="'https://www.npmjs.com/package/' + item.label"
 | 
				
			||||||
@ -81,11 +81,11 @@ Object.keys(devDependencies).forEach(key => {
 | 
				
			|||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <el-descriptions border>
 | 
					      <el-descriptions border>
 | 
				
			||||||
        <el-descriptions-item
 | 
					        <el-descriptions-item
 | 
				
			||||||
 | 
					          v-for="(item, index) in devSchema"
 | 
				
			||||||
 | 
					          :key="index"
 | 
				
			||||||
          :label="item.label"
 | 
					          :label="item.label"
 | 
				
			||||||
          label-align="left"
 | 
					          label-align="left"
 | 
				
			||||||
          align="left"
 | 
					          align="left"
 | 
				
			||||||
          v-for="(item, index) in devSchema"
 | 
					 | 
				
			||||||
          :key="index"
 | 
					 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <a
 | 
					          <a
 | 
				
			||||||
            :href="'https://www.npmjs.com/package/' + item.label"
 | 
					            :href="'https://www.npmjs.com/package/' + item.label"
 | 
				
			||||||
 | 
				
			|||||||
@ -120,8 +120,8 @@ function addDanmu() {
 | 
				
			|||||||
    <div class="flex gap-5">
 | 
					    <div class="flex gap-5">
 | 
				
			||||||
      <vue-danmaku
 | 
					      <vue-danmaku
 | 
				
			||||||
        ref="danmaku"
 | 
					        ref="danmaku"
 | 
				
			||||||
        class="demo"
 | 
					 | 
				
			||||||
        v-model:danmus="danmus"
 | 
					        v-model:danmus="danmus"
 | 
				
			||||||
 | 
					        class="demo"
 | 
				
			||||||
        isSuspend
 | 
					        isSuspend
 | 
				
			||||||
        v-bind="config"
 | 
					        v-bind="config"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
@ -176,9 +176,9 @@ function addDanmu() {
 | 
				
			|||||||
        </p>
 | 
					        </p>
 | 
				
			||||||
        <p class="flex">
 | 
					        <p class="flex">
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
 | 
					            v-model="danmuMsg"
 | 
				
			||||||
            type="text"
 | 
					            type="text"
 | 
				
			||||||
            placeholder="输入评论后,回车发送弹幕"
 | 
					            placeholder="输入评论后,回车发送弹幕"
 | 
				
			||||||
            v-model="danmuMsg"
 | 
					 | 
				
			||||||
            @keyup.enter="addDanmu"
 | 
					            @keyup.enter="addDanmu"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
        </p>
 | 
					        </p>
 | 
				
			||||||
 | 
				
			|||||||
@ -27,15 +27,15 @@ const newFormInline = ref(props.formInline);
 | 
				
			|||||||
  <el-form :model="newFormInline">
 | 
					  <el-form :model="newFormInline">
 | 
				
			||||||
    <el-form-item label="姓名">
 | 
					    <el-form-item label="姓名">
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
        class="!w-[220px]"
 | 
					 | 
				
			||||||
        v-model="newFormInline.user"
 | 
					        v-model="newFormInline.user"
 | 
				
			||||||
 | 
					        class="!w-[220px]"
 | 
				
			||||||
        placeholder="请输入姓名"
 | 
					        placeholder="请输入姓名"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
    </el-form-item>
 | 
					    </el-form-item>
 | 
				
			||||||
    <el-form-item label="城市">
 | 
					    <el-form-item label="城市">
 | 
				
			||||||
      <el-select
 | 
					      <el-select
 | 
				
			||||||
        class="!w-[220px]"
 | 
					 | 
				
			||||||
        v-model="newFormInline.region"
 | 
					        v-model="newFormInline.region"
 | 
				
			||||||
 | 
					        class="!w-[220px]"
 | 
				
			||||||
        placeholder="请选择城市"
 | 
					        placeholder="请选择城市"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-option label="上海" value="上海" />
 | 
					        <el-option label="上海" value="上海" />
 | 
				
			||||||
 | 
				
			|||||||
@ -18,5 +18,5 @@ const data = useVModel(props, "data", emit);
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-input class="!w-[220px]" v-model="data" placeholder="请输入内容" />
 | 
					  <el-input v-model="data" class="!w-[220px]" placeholder="请输入内容" />
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -110,10 +110,10 @@ onMounted(() => {
 | 
				
			|||||||
            <draggable
 | 
					            <draggable
 | 
				
			||||||
              v-model="lists"
 | 
					              v-model="lists"
 | 
				
			||||||
              item-key="name"
 | 
					              item-key="name"
 | 
				
			||||||
              @change="change"
 | 
					 | 
				
			||||||
              chosen-class="chosen"
 | 
					              chosen-class="chosen"
 | 
				
			||||||
              force-fallback="true"
 | 
					              force-fallback="true"
 | 
				
			||||||
              animation="300"
 | 
					              animation="300"
 | 
				
			||||||
 | 
					              @change="change"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <template #item="{ element, index }">
 | 
					              <template #item="{ element, index }">
 | 
				
			||||||
                <div class="item-single">{{ element.name }} {{ index }}</div>
 | 
					                <div class="item-single">{{ element.name }} {{ index }}</div>
 | 
				
			||||||
@ -132,9 +132,9 @@ onMounted(() => {
 | 
				
			|||||||
            <!-- 拖拽实现元素位置切换 -->
 | 
					            <!-- 拖拽实现元素位置切换 -->
 | 
				
			||||||
            <div class="cut-container">
 | 
					            <div class="cut-container">
 | 
				
			||||||
              <div
 | 
					              <div
 | 
				
			||||||
                class="item-cut"
 | 
					 | 
				
			||||||
                v-for="(item, index) in cutLists"
 | 
					                v-for="(item, index) in cutLists"
 | 
				
			||||||
                :key="index"
 | 
					                :key="index"
 | 
				
			||||||
 | 
					                class="item-cut"
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
                <p>{{ item.name }}</p>
 | 
					                <p>{{ item.name }}</p>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -163,7 +163,7 @@ function onChange({ index, option }) {
 | 
				
			|||||||
        {{ optionsBasis[value].label }}
 | 
					        {{ optionsBasis[value].label }}
 | 
				
			||||||
      </span>
 | 
					      </span>
 | 
				
			||||||
    </p>
 | 
					    </p>
 | 
				
			||||||
    <Segmented :options="optionsBasis" v-model="value" />
 | 
					    <Segmented v-model="value" :options="optionsBasis" />
 | 
				
			||||||
    <el-divider />
 | 
					    <el-divider />
 | 
				
			||||||
    <p class="mb-2">禁用</p>
 | 
					    <p class="mb-2">禁用</p>
 | 
				
			||||||
    <Segmented :options="optionsDisabled" />
 | 
					    <Segmented :options="optionsDisabled" />
 | 
				
			||||||
 | 
				
			|||||||
@ -28,9 +28,9 @@ const selectedVal = ({ left, right }): void => {
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <el-card
 | 
					    <el-card
 | 
				
			||||||
      class="box-card"
 | 
					 | 
				
			||||||
      v-for="(item, key) in dataLists"
 | 
					      v-for="(item, key) in dataLists"
 | 
				
			||||||
      :key="key"
 | 
					      :key="key"
 | 
				
			||||||
 | 
					      class="box-card"
 | 
				
			||||||
      shadow="never"
 | 
					      shadow="never"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <template #header>
 | 
					      <template #header>
 | 
				
			||||||
@ -41,10 +41,10 @@ const selectedVal = ({ left, right }): void => {
 | 
				
			|||||||
      <Selector
 | 
					      <Selector
 | 
				
			||||||
        :HsKey="key"
 | 
					        :HsKey="key"
 | 
				
			||||||
        :echo="item.echo"
 | 
					        :echo="item.echo"
 | 
				
			||||||
        @selectedVal="selectedVal"
 | 
					 | 
				
			||||||
        :disabled="item.disabled"
 | 
					        :disabled="item.disabled"
 | 
				
			||||||
 | 
					        @selectedVal="selectedVal"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
      <h4 class="mt-3" v-if="!item.disabled">选中范围:{{ selectRange }}</h4>
 | 
					      <h4 v-if="!item.disabled" class="mt-3">选中范围:{{ selectRange }}</h4>
 | 
				
			||||||
    </el-card>
 | 
					    </el-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -55,7 +55,7 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-row :gutter="30" justify="space-around">
 | 
					  <el-row :gutter="30" justify="space-around">
 | 
				
			||||||
    <re-col :value="11" v-for="(edit, index) in editorList" :key="index">
 | 
					    <re-col v-for="(edit, index) in editorList" :key="index" :value="11">
 | 
				
			||||||
      <div class="wangeditor">
 | 
					      <div class="wangeditor">
 | 
				
			||||||
        <Toolbar
 | 
					        <Toolbar
 | 
				
			||||||
          :editor="edit.editorRef"
 | 
					          :editor="edit.editorRef"
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,8 @@ const router = useRouter();
 | 
				
			|||||||
    <noAccess />
 | 
					    <noAccess />
 | 
				
			||||||
    <div class="ml-12">
 | 
					    <div class="ml-12">
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="font-medium text-4xl mb-4 dark:text-white"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="font-medium text-4xl mb-4 dark:text-white"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -31,8 +31,8 @@ const router = useRouter();
 | 
				
			|||||||
        403
 | 
					        403
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="mb-4 text-gray-500"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="mb-4 text-gray-500"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -48,9 +48,8 @@ const router = useRouter();
 | 
				
			|||||||
        抱歉,你无权访问该页面
 | 
					        抱歉,你无权访问该页面
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <el-button
 | 
					      <el-button
 | 
				
			||||||
        type="primary"
 | 
					 | 
				
			||||||
        @click="router.push('/')"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        type="primary"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -62,6 +61,7 @@ const router = useRouter();
 | 
				
			|||||||
            delay: 500
 | 
					            delay: 500
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
 | 
					        @click="router.push('/')"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        返回首页
 | 
					        返回首页
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,8 @@ const router = useRouter();
 | 
				
			|||||||
    <noExist />
 | 
					    <noExist />
 | 
				
			||||||
    <div class="ml-12">
 | 
					    <div class="ml-12">
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="font-medium text-4xl mb-4 dark:text-white"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="font-medium text-4xl mb-4 dark:text-white"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -31,8 +31,8 @@ const router = useRouter();
 | 
				
			|||||||
        404
 | 
					        404
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="mb-4 text-gray-500"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="mb-4 text-gray-500"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -48,9 +48,8 @@ const router = useRouter();
 | 
				
			|||||||
        抱歉,你访问的页面不存在
 | 
					        抱歉,你访问的页面不存在
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <el-button
 | 
					      <el-button
 | 
				
			||||||
        type="primary"
 | 
					 | 
				
			||||||
        @click="router.push('/')"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        type="primary"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -62,6 +61,7 @@ const router = useRouter();
 | 
				
			|||||||
            delay: 500
 | 
					            delay: 500
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
 | 
					        @click="router.push('/')"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        返回首页
 | 
					        返回首页
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,8 @@ const router = useRouter();
 | 
				
			|||||||
    <noServer />
 | 
					    <noServer />
 | 
				
			||||||
    <div class="ml-12">
 | 
					    <div class="ml-12">
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="font-medium text-4xl mb-4 dark:text-white"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="font-medium text-4xl mb-4 dark:text-white"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -31,8 +31,8 @@ const router = useRouter();
 | 
				
			|||||||
        500
 | 
					        500
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <p
 | 
					      <p
 | 
				
			||||||
        class="mb-4 text-gray-500"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        class="mb-4 text-gray-500"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -48,9 +48,8 @@ const router = useRouter();
 | 
				
			|||||||
        抱歉,服务器出错了
 | 
					        抱歉,服务器出错了
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
      <el-button
 | 
					      <el-button
 | 
				
			||||||
        type="primary"
 | 
					 | 
				
			||||||
        @click="router.push('/')"
 | 
					 | 
				
			||||||
        v-motion
 | 
					        v-motion
 | 
				
			||||||
 | 
					        type="primary"
 | 
				
			||||||
        :initial="{
 | 
					        :initial="{
 | 
				
			||||||
          opacity: 0,
 | 
					          opacity: 0,
 | 
				
			||||||
          y: 100
 | 
					          y: 100
 | 
				
			||||||
@ -62,6 +61,7 @@ const router = useRouter();
 | 
				
			|||||||
            delay: 500
 | 
					            delay: 500
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }"
 | 
					        }"
 | 
				
			||||||
 | 
					        @click="router.push('/')"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        返回首页
 | 
					        返回首页
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
 | 
				
			|||||||
@ -84,8 +84,8 @@ onMounted(() => {
 | 
				
			|||||||
    <div class="logic-flow-view">
 | 
					    <div class="logic-flow-view">
 | 
				
			||||||
      <!-- 辅助工具栏 -->
 | 
					      <!-- 辅助工具栏 -->
 | 
				
			||||||
      <Control
 | 
					      <Control
 | 
				
			||||||
        class="demo-control"
 | 
					 | 
				
			||||||
        v-if="lf"
 | 
					        v-if="lf"
 | 
				
			||||||
 | 
					        class="demo-control"
 | 
				
			||||||
        :lf="lf"
 | 
					        :lf="lf"
 | 
				
			||||||
        :catTurboData="false"
 | 
					        :catTurboData="false"
 | 
				
			||||||
        @catData="catData"
 | 
					        @catData="catData"
 | 
				
			||||||
@ -96,9 +96,9 @@ onMounted(() => {
 | 
				
			|||||||
      <div id="turbo" />
 | 
					      <div id="turbo" />
 | 
				
			||||||
      <!-- 数据查看面板 -->
 | 
					      <!-- 数据查看面板 -->
 | 
				
			||||||
      <el-dialog
 | 
					      <el-dialog
 | 
				
			||||||
 | 
					        v-model="dataVisible"
 | 
				
			||||||
        class="flow-dialog"
 | 
					        class="flow-dialog"
 | 
				
			||||||
        title="数据"
 | 
					        title="数据"
 | 
				
			||||||
        v-model="dataVisible"
 | 
					 | 
				
			||||||
        width="50%"
 | 
					        width="50%"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-scrollbar>
 | 
					        <el-scrollbar>
 | 
				
			||||||
 | 
				
			|||||||
@ -102,8 +102,8 @@ const handleManageProduct = product => {
 | 
				
			|||||||
        新建产品
 | 
					        新建产品
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
        style="width: 300px"
 | 
					 | 
				
			||||||
        v-model="searchValue"
 | 
					        v-model="searchValue"
 | 
				
			||||||
 | 
					        style="width: 300px"
 | 
				
			||||||
        placeholder="请输入产品名称"
 | 
					        placeholder="请输入产品名称"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
@ -123,7 +123,6 @@ const handleManageProduct = product => {
 | 
				
			|||||||
      element-loading-svg-view-box="-10, -10, 50, 50"
 | 
					      element-loading-svg-view-box="-10, -10, 50, 50"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <el-empty
 | 
					      <el-empty
 | 
				
			||||||
        description="暂无数据"
 | 
					 | 
				
			||||||
        v-show="
 | 
					        v-show="
 | 
				
			||||||
          productList
 | 
					          productList
 | 
				
			||||||
            .slice(
 | 
					            .slice(
 | 
				
			||||||
@ -134,6 +133,7 @@ const handleManageProduct = product => {
 | 
				
			|||||||
              v.name.toLowerCase().includes(searchValue.toLowerCase())
 | 
					              v.name.toLowerCase().includes(searchValue.toLowerCase())
 | 
				
			||||||
            ).length === 0
 | 
					            ).length === 0
 | 
				
			||||||
        "
 | 
					        "
 | 
				
			||||||
 | 
					        description="暂无数据"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
      <template v-if="pagination.total > 0">
 | 
					      <template v-if="pagination.total > 0">
 | 
				
			||||||
        <el-row :gutter="16">
 | 
					        <el-row :gutter="16">
 | 
				
			||||||
@ -161,8 +161,8 @@ const handleManageProduct = product => {
 | 
				
			|||||||
          </el-col>
 | 
					          </el-col>
 | 
				
			||||||
        </el-row>
 | 
					        </el-row>
 | 
				
			||||||
        <el-pagination
 | 
					        <el-pagination
 | 
				
			||||||
          class="float-right"
 | 
					 | 
				
			||||||
          v-model:currentPage="pagination.current"
 | 
					          v-model:currentPage="pagination.current"
 | 
				
			||||||
 | 
					          class="float-right"
 | 
				
			||||||
          :page-size="pagination.pageSize"
 | 
					          :page-size="pagination.pageSize"
 | 
				
			||||||
          :total="pagination.total"
 | 
					          :total="pagination.total"
 | 
				
			||||||
          :page-sizes="[12, 24, 36]"
 | 
					          :page-sizes="[12, 24, 36]"
 | 
				
			||||||
 | 
				
			|||||||
@ -48,8 +48,8 @@ function onBack() {
 | 
				
			|||||||
    <Motion>
 | 
					    <Motion>
 | 
				
			||||||
      <el-form-item prop="phone">
 | 
					      <el-form-item prop="phone">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
          clearable
 | 
					 | 
				
			||||||
          v-model="ruleForm.phone"
 | 
					          v-model="ruleForm.phone"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
          :placeholder="t('login.phone')"
 | 
					          :placeholder="t('login.phone')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Iphone)"
 | 
					          :prefix-icon="useRenderIcon(Iphone)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -60,8 +60,8 @@ function onBack() {
 | 
				
			|||||||
      <el-form-item prop="verifyCode">
 | 
					      <el-form-item prop="verifyCode">
 | 
				
			||||||
        <div class="w-full flex justify-between">
 | 
					        <div class="w-full flex justify-between">
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
            clearable
 | 
					 | 
				
			||||||
            v-model="ruleForm.verifyCode"
 | 
					            v-model="ruleForm.verifyCode"
 | 
				
			||||||
 | 
					            clearable
 | 
				
			||||||
            :placeholder="t('login.smsVerifyCode')"
 | 
					            :placeholder="t('login.smsVerifyCode')"
 | 
				
			||||||
            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
					            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
 | 
				
			|||||||
@ -89,8 +89,8 @@ function onBack() {
 | 
				
			|||||||
        prop="username"
 | 
					        prop="username"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
          clearable
 | 
					 | 
				
			||||||
          v-model="ruleForm.username"
 | 
					          v-model="ruleForm.username"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
          :placeholder="t('login.username')"
 | 
					          :placeholder="t('login.username')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(User)"
 | 
					          :prefix-icon="useRenderIcon(User)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -100,8 +100,8 @@ function onBack() {
 | 
				
			|||||||
    <Motion :delay="100">
 | 
					    <Motion :delay="100">
 | 
				
			||||||
      <el-form-item prop="phone">
 | 
					      <el-form-item prop="phone">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
          clearable
 | 
					 | 
				
			||||||
          v-model="ruleForm.phone"
 | 
					          v-model="ruleForm.phone"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
          :placeholder="t('login.phone')"
 | 
					          :placeholder="t('login.phone')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Iphone)"
 | 
					          :prefix-icon="useRenderIcon(Iphone)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -112,8 +112,8 @@ function onBack() {
 | 
				
			|||||||
      <el-form-item prop="verifyCode">
 | 
					      <el-form-item prop="verifyCode">
 | 
				
			||||||
        <div class="w-full flex justify-between">
 | 
					        <div class="w-full flex justify-between">
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
            clearable
 | 
					 | 
				
			||||||
            v-model="ruleForm.verifyCode"
 | 
					            v-model="ruleForm.verifyCode"
 | 
				
			||||||
 | 
					            clearable
 | 
				
			||||||
            :placeholder="t('login.smsVerifyCode')"
 | 
					            :placeholder="t('login.smsVerifyCode')"
 | 
				
			||||||
            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
					            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
@ -135,9 +135,9 @@ function onBack() {
 | 
				
			|||||||
    <Motion :delay="200">
 | 
					    <Motion :delay="200">
 | 
				
			||||||
      <el-form-item prop="password">
 | 
					      <el-form-item prop="password">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="ruleForm.password"
 | 
				
			||||||
          clearable
 | 
					          clearable
 | 
				
			||||||
          show-password
 | 
					          show-password
 | 
				
			||||||
          v-model="ruleForm.password"
 | 
					 | 
				
			||||||
          :placeholder="t('login.password')"
 | 
					          :placeholder="t('login.password')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Lock)"
 | 
					          :prefix-icon="useRenderIcon(Lock)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -147,9 +147,9 @@ function onBack() {
 | 
				
			|||||||
    <Motion :delay="250">
 | 
					    <Motion :delay="250">
 | 
				
			||||||
      <el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
 | 
					      <el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="ruleForm.repeatPassword"
 | 
				
			||||||
          clearable
 | 
					          clearable
 | 
				
			||||||
          show-password
 | 
					          show-password
 | 
				
			||||||
          v-model="ruleForm.repeatPassword"
 | 
					 | 
				
			||||||
          :placeholder="t('login.sure')"
 | 
					          :placeholder="t('login.sure')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Lock)"
 | 
					          :prefix-icon="useRenderIcon(Lock)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
 | 
				
			|||||||
@ -72,8 +72,8 @@ function onBack() {
 | 
				
			|||||||
    <Motion>
 | 
					    <Motion>
 | 
				
			||||||
      <el-form-item prop="phone">
 | 
					      <el-form-item prop="phone">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
          clearable
 | 
					 | 
				
			||||||
          v-model="ruleForm.phone"
 | 
					          v-model="ruleForm.phone"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
          :placeholder="t('login.phone')"
 | 
					          :placeholder="t('login.phone')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Iphone)"
 | 
					          :prefix-icon="useRenderIcon(Iphone)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -84,8 +84,8 @@ function onBack() {
 | 
				
			|||||||
      <el-form-item prop="verifyCode">
 | 
					      <el-form-item prop="verifyCode">
 | 
				
			||||||
        <div class="w-full flex justify-between">
 | 
					        <div class="w-full flex justify-between">
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
            clearable
 | 
					 | 
				
			||||||
            v-model="ruleForm.verifyCode"
 | 
					            v-model="ruleForm.verifyCode"
 | 
				
			||||||
 | 
					            clearable
 | 
				
			||||||
            :placeholder="t('login.smsVerifyCode')"
 | 
					            :placeholder="t('login.smsVerifyCode')"
 | 
				
			||||||
            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
					            :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
@ -107,9 +107,9 @@ function onBack() {
 | 
				
			|||||||
    <Motion :delay="150">
 | 
					    <Motion :delay="150">
 | 
				
			||||||
      <el-form-item prop="password">
 | 
					      <el-form-item prop="password">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="ruleForm.password"
 | 
				
			||||||
          clearable
 | 
					          clearable
 | 
				
			||||||
          show-password
 | 
					          show-password
 | 
				
			||||||
          v-model="ruleForm.password"
 | 
					 | 
				
			||||||
          :placeholder="t('login.password')"
 | 
					          :placeholder="t('login.password')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Lock)"
 | 
					          :prefix-icon="useRenderIcon(Lock)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
@ -119,9 +119,9 @@ function onBack() {
 | 
				
			|||||||
    <Motion :delay="200">
 | 
					    <Motion :delay="200">
 | 
				
			||||||
      <el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
 | 
					      <el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
 | 
				
			||||||
        <el-input
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="ruleForm.repeatPassword"
 | 
				
			||||||
          clearable
 | 
					          clearable
 | 
				
			||||||
          show-password
 | 
					          show-password
 | 
				
			||||||
          v-model="ruleForm.repeatPassword"
 | 
					 | 
				
			||||||
          :placeholder="t('login.sure')"
 | 
					          :placeholder="t('login.sure')"
 | 
				
			||||||
          :prefix-icon="useRenderIcon(Lock)"
 | 
					          :prefix-icon="useRenderIcon(Lock)"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
 | 
				
			|||||||
@ -142,8 +142,8 @@ watch(loginDay, value => {
 | 
				
			|||||||
              @click="translationCh"
 | 
					              @click="translationCh"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <IconifyIconOffline
 | 
					              <IconifyIconOffline
 | 
				
			||||||
                class="check-zh"
 | 
					 | 
				
			||||||
                v-show="locale === 'zh'"
 | 
					                v-show="locale === 'zh'"
 | 
				
			||||||
 | 
					                class="check-zh"
 | 
				
			||||||
                :icon="Check"
 | 
					                :icon="Check"
 | 
				
			||||||
              />
 | 
					              />
 | 
				
			||||||
              简体中文
 | 
					              简体中文
 | 
				
			||||||
@ -153,7 +153,7 @@ watch(loginDay, value => {
 | 
				
			|||||||
              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
					              :class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
 | 
				
			||||||
              @click="translationEn"
 | 
					              @click="translationEn"
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <span class="check-en" v-show="locale === 'en'">
 | 
					              <span v-show="locale === 'en'" class="check-en">
 | 
				
			||||||
                <IconifyIconOffline :icon="Check" />
 | 
					                <IconifyIconOffline :icon="Check" />
 | 
				
			||||||
              </span>
 | 
					              </span>
 | 
				
			||||||
              English
 | 
					              English
 | 
				
			||||||
@ -194,8 +194,8 @@ watch(loginDay, value => {
 | 
				
			|||||||
                prop="username"
 | 
					                prop="username"
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
                <el-input
 | 
					                <el-input
 | 
				
			||||||
                  clearable
 | 
					 | 
				
			||||||
                  v-model="ruleForm.username"
 | 
					                  v-model="ruleForm.username"
 | 
				
			||||||
 | 
					                  clearable
 | 
				
			||||||
                  :placeholder="t('login.username')"
 | 
					                  :placeholder="t('login.username')"
 | 
				
			||||||
                  :prefix-icon="useRenderIcon(User)"
 | 
					                  :prefix-icon="useRenderIcon(User)"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
@ -205,9 +205,9 @@ watch(loginDay, value => {
 | 
				
			|||||||
            <Motion :delay="150">
 | 
					            <Motion :delay="150">
 | 
				
			||||||
              <el-form-item prop="password">
 | 
					              <el-form-item prop="password">
 | 
				
			||||||
                <el-input
 | 
					                <el-input
 | 
				
			||||||
 | 
					                  v-model="ruleForm.password"
 | 
				
			||||||
                  clearable
 | 
					                  clearable
 | 
				
			||||||
                  show-password
 | 
					                  show-password
 | 
				
			||||||
                  v-model="ruleForm.password"
 | 
					 | 
				
			||||||
                  :placeholder="t('login.password')"
 | 
					                  :placeholder="t('login.password')"
 | 
				
			||||||
                  :prefix-icon="useRenderIcon(Lock)"
 | 
					                  :prefix-icon="useRenderIcon(Lock)"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
@ -217,8 +217,8 @@ watch(loginDay, value => {
 | 
				
			|||||||
            <Motion :delay="200">
 | 
					            <Motion :delay="200">
 | 
				
			||||||
              <el-form-item prop="verifyCode">
 | 
					              <el-form-item prop="verifyCode">
 | 
				
			||||||
                <el-input
 | 
					                <el-input
 | 
				
			||||||
                  clearable
 | 
					 | 
				
			||||||
                  v-model="ruleForm.verifyCode"
 | 
					                  v-model="ruleForm.verifyCode"
 | 
				
			||||||
 | 
					                  clearable
 | 
				
			||||||
                  :placeholder="t('login.verifyCode')"
 | 
					                  :placeholder="t('login.verifyCode')"
 | 
				
			||||||
                  :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
					                  :prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
 | 
				
			||||||
                >
 | 
					                >
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@ const { query } = useRoute();
 | 
				
			|||||||
    <p style="text-indent: 4em">{{ t("menus.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 class="mt-4" v-if="query.text">
 | 
					    <div v-if="query.text" class="mt-4">
 | 
				
			||||||
      此页面携带的参数值为:{{ query.text }}
 | 
					      此页面携带的参数值为:{{ query.text }}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -41,15 +41,15 @@ const elStyle = computed((): CSSProperties => {
 | 
				
			|||||||
      <template #header>
 | 
					      <template #header>
 | 
				
			||||||
        <div class="card-header">函数方式判断权限</div>
 | 
					        <div class="card-header">函数方式判断权限</div>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <el-button type="success" v-if="hasAuth('btn_add')">
 | 
					      <el-button v-if="hasAuth('btn_add')" type="success">
 | 
				
			||||||
        拥有code:'btn_add' 权限可见
 | 
					        拥有code:'btn_add' 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <el-button type="primary" v-if="hasAuth(['btn_edit'])">
 | 
					      <el-button v-if="hasAuth(['btn_edit'])" type="primary">
 | 
				
			||||||
        拥有code:['btn_edit'] 权限可见
 | 
					        拥有code:['btn_edit'] 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <el-button
 | 
					      <el-button
 | 
				
			||||||
        type="danger"
 | 
					 | 
				
			||||||
        v-if="hasAuth(['btn_add', 'btn_edit', 'btn_delete'])"
 | 
					        v-if="hasAuth(['btn_add', 'btn_edit', 'btn_delete'])"
 | 
				
			||||||
 | 
					        type="danger"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
 | 
					        拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
@ -61,13 +61,13 @@ const elStyle = computed((): CSSProperties => {
 | 
				
			|||||||
          指令方式判断权限(该方式不能动态修改权限)
 | 
					          指令方式判断权限(该方式不能动态修改权限)
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <el-button type="success" v-auth="'btn_add'">
 | 
					      <el-button v-auth="'btn_add'" type="success">
 | 
				
			||||||
        拥有code:'btn_add' 权限可见
 | 
					        拥有code:'btn_add' 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <el-button type="primary" v-auth="['btn_edit']">
 | 
					      <el-button v-auth="['btn_edit']" type="primary">
 | 
				
			||||||
        拥有code:['btn_edit'] 权限可见
 | 
					        拥有code:['btn_edit'] 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <el-button type="danger" v-auth="['btn_add', 'btn_edit', 'btn_delete']">
 | 
					      <el-button v-auth="['btn_add', 'btn_edit', 'btn_delete']" type="danger">
 | 
				
			||||||
        拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
 | 
					        拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
    </el-card>
 | 
					    </el-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@ function tabClick({ index }) {
 | 
				
			|||||||
              <span>{{ item.title }}</span>
 | 
					              <span>{{ item.title }}</span>
 | 
				
			||||||
            </el-tooltip>
 | 
					            </el-tooltip>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          <component v-if="selected == index" :is="item.component" />
 | 
					          <component :is="item.component" v-if="selected == index" />
 | 
				
			||||||
        </el-tab-pane>
 | 
					        </el-tab-pane>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
    </el-tabs>
 | 
					    </el-tabs>
 | 
				
			||||||
 | 
				
			|||||||
@ -61,15 +61,15 @@ const tableDataImage = clone(tableData, true).map((item, index) =>
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const tableDataSortable = clone(tableData, true).map((item, index) => {
 | 
					const tableDataSortable = clone(tableData, true).map((item, index) => {
 | 
				
			||||||
  delete item["date"];
 | 
					  delete item.date;
 | 
				
			||||||
  Object.assign(item, {
 | 
					  Object.assign(item, {
 | 
				
			||||||
    date: `${dayjs(new Date()).format("YYYY-MM")}-${index + 1}`
 | 
					    date: `${dayjs(new Date()).format("YYYY-MM")}-${index + 1}`
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const tableDataDrag = clone(tableData, true).map((item, index) => {
 | 
					const tableDataDrag = clone(tableData, true).map((item, index) => {
 | 
				
			||||||
  delete item["address"];
 | 
					  delete item.address;
 | 
				
			||||||
  delete item["date"];
 | 
					  delete item.date;
 | 
				
			||||||
  return Object.assign(
 | 
					  return Object.assign(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      id: index + 1,
 | 
					      id: index + 1,
 | 
				
			||||||
@ -80,7 +80,7 @@ const tableDataDrag = clone(tableData, true).map((item, index) => {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const tableDataEdit = clone(tableData, true).map((item, index) => {
 | 
					const tableDataEdit = clone(tableData, true).map((item, index) => {
 | 
				
			||||||
  delete item["date"];
 | 
					  delete item.date;
 | 
				
			||||||
  return Object.assign(
 | 
					  return Object.assign(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      id: index + 1,
 | 
					      id: index + 1,
 | 
				
			||||||
 | 
				
			|||||||
@ -8,8 +8,8 @@ const { columns, dataList, exportExcel } = useColumns();
 | 
				
			|||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <el-button
 | 
					    <el-button
 | 
				
			||||||
      type="primary"
 | 
					      type="primary"
 | 
				
			||||||
      @click="exportExcel"
 | 
					 | 
				
			||||||
      class="mb-[20px] float-right"
 | 
					      class="mb-[20px] float-right"
 | 
				
			||||||
 | 
					      @click="exportExcel"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      导出
 | 
					      导出
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
 | 
				
			|||||||
@ -9,13 +9,13 @@ const { columns, dataList, print, cellStyle, rowStyle, headerCellStyle } =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <el-button type="primary" @click="print" class="mb-[20px] float-right">
 | 
					    <el-button type="primary" class="mb-[20px] float-right" @click="print">
 | 
				
			||||||
      打印
 | 
					      打印
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
    <!-- rowHoverBgColor="transparent" 鼠标经过行时,去掉行的背景色 -->
 | 
					    <!-- rowHoverBgColor="transparent" 鼠标经过行时,去掉行的背景色 -->
 | 
				
			||||||
    <pure-table
 | 
					    <pure-table
 | 
				
			||||||
      rowHoverBgColor="transparent"
 | 
					 | 
				
			||||||
      ref="printRef"
 | 
					      ref="printRef"
 | 
				
			||||||
 | 
					      rowHoverBgColor="transparent"
 | 
				
			||||||
      row-key="id"
 | 
					      row-key="id"
 | 
				
			||||||
      border
 | 
					      border
 | 
				
			||||||
      :data="dataList"
 | 
					      :data="dataList"
 | 
				
			||||||
 | 
				
			|||||||
@ -18,9 +18,9 @@ const {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-select
 | 
					  <el-select
 | 
				
			||||||
    class="w-[160px]"
 | 
					 | 
				
			||||||
    ref="selectRef"
 | 
					    ref="selectRef"
 | 
				
			||||||
    v-model="selectValue"
 | 
					    v-model="selectValue"
 | 
				
			||||||
 | 
					    class="w-[160px]"
 | 
				
			||||||
    placeholder="请选择"
 | 
					    placeholder="请选择"
 | 
				
			||||||
    clearable
 | 
					    clearable
 | 
				
			||||||
    multiple
 | 
					    multiple
 | 
				
			||||||
 | 
				
			|||||||
@ -50,7 +50,7 @@ function tabClick({ index }) {
 | 
				
			|||||||
              <span>{{ item.title }}</span>
 | 
					              <span>{{ item.title }}</span>
 | 
				
			||||||
            </el-tooltip>
 | 
					            </el-tooltip>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          <component v-if="selected == index" :is="item.component" />
 | 
					          <component :is="item.component" v-if="selected == index" />
 | 
				
			||||||
        </el-tab-pane>
 | 
					        </el-tab-pane>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
    </el-tabs>
 | 
					    </el-tabs>
 | 
				
			||||||
 | 
				
			|||||||
@ -41,8 +41,8 @@ defineExpose({ getRef });
 | 
				
			|||||||
      <re-col>
 | 
					      <re-col>
 | 
				
			||||||
        <el-form-item label="上级部门">
 | 
					        <el-form-item label="上级部门">
 | 
				
			||||||
          <el-cascader
 | 
					          <el-cascader
 | 
				
			||||||
            class="w-full"
 | 
					 | 
				
			||||||
            v-model="newFormInline.parentId"
 | 
					            v-model="newFormInline.parentId"
 | 
				
			||||||
 | 
					            class="w-full"
 | 
				
			||||||
            :options="newFormInline.higherDeptOptions"
 | 
					            :options="newFormInline.higherDeptOptions"
 | 
				
			||||||
            :props="{
 | 
					            :props="{
 | 
				
			||||||
              value: 'id',
 | 
					              value: 'id',
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@ import { getDeptList } from "@/api/system";
 | 
				
			|||||||
import { usePublicHooks } from "../../hooks";
 | 
					import { usePublicHooks } from "../../hooks";
 | 
				
			||||||
import { addDialog } from "@/components/ReDialog";
 | 
					import { addDialog } from "@/components/ReDialog";
 | 
				
			||||||
import { reactive, ref, onMounted, h } from "vue";
 | 
					import { reactive, ref, onMounted, h } from "vue";
 | 
				
			||||||
import { type FormItemProps } from "../utils/types";
 | 
					import type { FormItemProps } from "../utils/types";
 | 
				
			||||||
import { cloneDeep, isAllEmpty } from "@pureadmin/utils";
 | 
					import { cloneDeep, isAllEmpty } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function useDept() {
 | 
					export function useDept() {
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,8 @@ import { getRoleList } from "@/api/system";
 | 
				
			|||||||
import { ElMessageBox } from "element-plus";
 | 
					import { ElMessageBox } from "element-plus";
 | 
				
			||||||
import { usePublicHooks } from "../../hooks";
 | 
					import { usePublicHooks } from "../../hooks";
 | 
				
			||||||
import { addDialog } from "@/components/ReDialog";
 | 
					import { addDialog } from "@/components/ReDialog";
 | 
				
			||||||
import { type FormItemProps } from "../utils/types";
 | 
					import type { FormItemProps } from "../utils/types";
 | 
				
			||||||
import { type PaginationProps } from "@pureadmin/table";
 | 
					import type { PaginationProps } from "@pureadmin/table";
 | 
				
			||||||
import { reactive, ref, onMounted, h, toRaw } from "vue";
 | 
					import { reactive, ref, onMounted, h, toRaw } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function useRole() {
 | 
					export function useRole() {
 | 
				
			||||||
 | 
				
			|||||||
@ -70,10 +70,10 @@ defineExpose({ getRef });
 | 
				
			|||||||
      </re-col>
 | 
					      </re-col>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <re-col
 | 
					      <re-col
 | 
				
			||||||
 | 
					        v-if="newFormInline.title === '新增'"
 | 
				
			||||||
        :value="12"
 | 
					        :value="12"
 | 
				
			||||||
        :xs="24"
 | 
					        :xs="24"
 | 
				
			||||||
        :sm="24"
 | 
					        :sm="24"
 | 
				
			||||||
        v-if="newFormInline.title === '新增'"
 | 
					 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-form-item label="用户密码" prop="password">
 | 
					        <el-form-item label="用户密码" prop="password">
 | 
				
			||||||
          <el-input
 | 
					          <el-input
 | 
				
			||||||
@ -123,8 +123,8 @@ defineExpose({ getRef });
 | 
				
			|||||||
      <re-col :value="12" :xs="24" :sm="24">
 | 
					      <re-col :value="12" :xs="24" :sm="24">
 | 
				
			||||||
        <el-form-item label="归属部门">
 | 
					        <el-form-item label="归属部门">
 | 
				
			||||||
          <el-cascader
 | 
					          <el-cascader
 | 
				
			||||||
            class="w-full"
 | 
					 | 
				
			||||||
            v-model="newFormInline.parentId"
 | 
					            v-model="newFormInline.parentId"
 | 
				
			||||||
 | 
					            class="w-full"
 | 
				
			||||||
            :options="newFormInline.higherDeptOptions"
 | 
					            :options="newFormInline.higherDeptOptions"
 | 
				
			||||||
            :props="{
 | 
					            :props="{
 | 
				
			||||||
              value: 'id',
 | 
					              value: 'id',
 | 
				
			||||||
@ -144,10 +144,10 @@ defineExpose({ getRef });
 | 
				
			|||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
      </re-col>
 | 
					      </re-col>
 | 
				
			||||||
      <re-col
 | 
					      <re-col
 | 
				
			||||||
 | 
					        v-if="newFormInline.title === '新增'"
 | 
				
			||||||
        :value="12"
 | 
					        :value="12"
 | 
				
			||||||
        :xs="24"
 | 
					        :xs="24"
 | 
				
			||||||
        :sm="24"
 | 
					        :sm="24"
 | 
				
			||||||
        v-if="newFormInline.title === '新增'"
 | 
					 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <el-form-item label="用户状态">
 | 
					        <el-form-item label="用户状态">
 | 
				
			||||||
          <el-switch
 | 
					          <el-switch
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,7 @@ const newFormInline = ref(props.formInline);
 | 
				
			|||||||
      </re-col> -->
 | 
					      </re-col> -->
 | 
				
			||||||
      <re-col>
 | 
					      <re-col>
 | 
				
			||||||
        <el-form-item label="用户昵称" prop="nickname">
 | 
					        <el-form-item label="用户昵称" prop="nickname">
 | 
				
			||||||
          <el-input disabled v-model="newFormInline.nickname" />
 | 
					          <el-input v-model="newFormInline.nickname" disabled />
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
      </re-col>
 | 
					      </re-col>
 | 
				
			||||||
      <re-col>
 | 
					      <re-col>
 | 
				
			||||||
 | 
				
			|||||||
@ -148,8 +148,8 @@ const {
 | 
				
			|||||||
            </el-popconfirm>
 | 
					            </el-popconfirm>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
          <pure-table
 | 
					          <pure-table
 | 
				
			||||||
            row-key="id"
 | 
					 | 
				
			||||||
            ref="tableRef"
 | 
					            ref="tableRef"
 | 
				
			||||||
 | 
					            row-key="id"
 | 
				
			||||||
            adaptive
 | 
					            adaptive
 | 
				
			||||||
            align-whole="center"
 | 
					            align-whole="center"
 | 
				
			||||||
            table-layout="auto"
 | 
					            table-layout="auto"
 | 
				
			||||||
 | 
				
			|||||||
@ -101,9 +101,9 @@ defineExpose({ onTreeReset });
 | 
				
			|||||||
  >
 | 
					  >
 | 
				
			||||||
    <div class="flex items-center h-[34px]">
 | 
					    <div class="flex items-center h-[34px]">
 | 
				
			||||||
      <el-input
 | 
					      <el-input
 | 
				
			||||||
 | 
					        v-model="searchValue"
 | 
				
			||||||
        class="ml-2"
 | 
					        class="ml-2"
 | 
				
			||||||
        size="small"
 | 
					        size="small"
 | 
				
			||||||
        v-model="searchValue"
 | 
					 | 
				
			||||||
        placeholder="请输入部门名称"
 | 
					        placeholder="请输入部门名称"
 | 
				
			||||||
        clearable
 | 
					        clearable
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
 | 
				
			|||||||
@ -33,7 +33,7 @@ function onCropper({ base64, blob, info }) {
 | 
				
			|||||||
            @cropper="onCropper"
 | 
					            @cropper="onCropper"
 | 
				
			||||||
            @readied="showPopover = true"
 | 
					            @readied="showPopover = true"
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
          <p class="mt-1 text-center" v-show="showPopover">
 | 
					          <p v-show="showPopover" class="mt-1 text-center">
 | 
				
			||||||
            温馨提示:右键上方裁剪区可开启功能菜单
 | 
					            温馨提示:右键上方裁剪区可开启功能菜单
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ import { message } from "@/utils/message";
 | 
				
			|||||||
import croppingUpload from "../upload.vue";
 | 
					import croppingUpload from "../upload.vue";
 | 
				
			||||||
import { usePublicHooks } from "../../hooks";
 | 
					import { usePublicHooks } from "../../hooks";
 | 
				
			||||||
import { addDialog } from "@/components/ReDialog";
 | 
					import { addDialog } from "@/components/ReDialog";
 | 
				
			||||||
import { type PaginationProps } from "@pureadmin/table";
 | 
					import type { PaginationProps } from "@pureadmin/table";
 | 
				
			||||||
import type { FormItemProps, RoleFormItemProps } from "../utils/types";
 | 
					import type { FormItemProps, RoleFormItemProps } from "../utils/types";
 | 
				
			||||||
import { hideTextAtIndex, getKeyList, isAllEmpty } from "@pureadmin/utils";
 | 
					import { hideTextAtIndex, getKeyList, isAllEmpty } from "@pureadmin/utils";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user