mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-04 07:27:41 +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