diff --git a/.eslintrc.js b/.eslintrc.js index 04949ce7..bb13e17e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,6 +8,11 @@ module.exports = { 'max-len': ['error', { code: 140, tabWidth: 2, ignoreComments: true }], '@typescript-eslint/no-floating-promises': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + 'prefer-promise-reject-errors': 'off', 'no-case-declarations': 'off', 'no-console': 'off', 'n/prefer-global/process': 'off', diff --git a/.vscode/settings.json b/.vscode/settings.json index ec278ee9..c427feaa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -76,6 +76,30 @@ "jsonc", "yaml" ], + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[less]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, "[vue]": { "editor.codeActionsOnSave": { "source.fixAll.eslint": true, @@ -92,7 +116,9 @@ "i18n-ally.displayLanguage": "zh-CN", "i18n-ally.enabledFrameworks": ["vue", "react"], "cSpell.words": [ + "antfu", "vben", + "unref", "unocss", "tailwind", "browserslist", diff --git a/build/generate/icon/index.ts b/build/generate/icon/index.ts index 5e160fb3..8d7ced56 100644 --- a/build/generate/icon/index.ts +++ b/build/generate/icon/index.ts @@ -53,7 +53,7 @@ async function generateIcon() { const isLocal = useType === 'local' const icons = Object.keys(data.icons).map(item => `${isLocal ? `${prefix}:` : ''}${item}`) - await fs.writeFileSync( + fs.writeFileSync( path.join(output, 'icons.data.ts'), `export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`, ) diff --git a/build/script/buildConf.ts b/build/script/buildConf.ts index 8d4e331f..c971d846 100644 --- a/build/script/buildConf.ts +++ b/build/script/buildConf.ts @@ -36,7 +36,7 @@ function createConfig(params: CreateConfigParams) { console.log(`${colors.cyan(`✨ [${pkg.name}]`)} - configuration file is build successfully:`) console.log(`${colors.gray(`${OUTPUT_DIR}/${colors.green(configFileName)}`)}\n`) } - catch (error) { + catch (error: any) { console.log(colors.red(`configuration file configuration file failed to package:\n${error}`)) } } diff --git a/build/script/postBuild.ts b/build/script/postBuild.ts index 5d3a7146..6f16456b 100644 --- a/build/script/postBuild.ts +++ b/build/script/postBuild.ts @@ -5,7 +5,7 @@ import colors from 'picocolors' import pkg from '../../package.json' import { runBuildConfig } from './buildConf' -export async function runBuild() { +export function runBuild() { try { const argvList = process.argv.splice(2) @@ -15,7 +15,7 @@ export async function runBuild() { console.log(`✨ ${colors.cyan(`[${pkg.name}]`)}` + ' - build successfully!') } - catch (error) { + catch (error: any) { console.log(colors.red(`vite build error:\n${error}`)) process.exit(1) } diff --git a/build/utils.ts b/build/utils.ts index 67276d54..ba7768c1 100644 --- a/build/utils.ts +++ b/build/utils.ts @@ -51,7 +51,7 @@ export function wrapperEnv(envConf: Recordable): ViteEnv { */ function getConfFiles() { const script = process.env.npm_lifecycle_script - const reg = new RegExp('--mode ([a-z_\\d]+)') + const reg = /--mode ([a-z_\d]+)/ const result = reg.exec(script as string) as any if (result) { const mode = result[1] as string diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index 9a20c6ae..6f68764f 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -14,7 +14,7 @@ import { configVisualizerConfig } from './visualizer' import { configThemePlugin } from './theme' import { configSvgIconsPlugin } from './svgSprite' -export async function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { +export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { const { VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv const vitePlugins: PluginOption[] = [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 211ba680..84f7961d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,7 +134,7 @@ devDependencies: specifier: ^4.17.8 version: 4.17.8 '@types/node': - specifier: ^20.4.5 + specifier: ^20.4.0 version: 20.4.5 '@types/nprogress': specifier: ^0.2.0 @@ -229,18 +229,12 @@ devDependencies: stylelint-config-recommended: specifier: ^13.0.0 version: 13.0.0(stylelint@15.10.2) - stylelint-config-recommended-scss: - specifier: ^12.0.0 - version: 12.0.0(postcss@8.4.27)(stylelint@15.10.2) stylelint-config-recommended-vue: specifier: ^1.5.0 version: 1.5.0(postcss-html@1.5.0)(stylelint@15.10.2) stylelint-config-standard: specifier: ^34.0.0 version: 34.0.0(stylelint@15.10.2) - stylelint-config-standard-scss: - specifier: ^10.0.0 - version: 10.0.0(postcss@8.4.27)(stylelint@15.10.2) stylelint-order: specifier: ^6.0.3 version: 6.0.3(stylelint@15.10.2) @@ -7614,10 +7608,6 @@ packages: postcss: 8.4.27 dev: true - /postcss-media-query-parser@0.2.3: - resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - dev: true - /postcss-prefix-selector@1.16.0(postcss@5.2.18): resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} peerDependencies: @@ -7639,15 +7629,6 @@ packages: postcss: 8.4.27 dev: true - /postcss-scss@4.0.6(postcss@8.4.27): - resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.19 - dependencies: - postcss: 8.4.27 - dev: true - /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} @@ -8641,22 +8622,6 @@ packages: stylelint-order: 6.0.3(stylelint@15.10.2) dev: true - /stylelint-config-recommended-scss@12.0.0(postcss@8.4.27)(stylelint@15.10.2): - resolution: {integrity: sha512-5Bb2mlGy6WLa30oNeKpZvavv2lowJUsUJO25+OA68GFTemlwd1zbFsL7q0bReKipOSU3sG47hKneZ6Nd+ctrFA==} - peerDependencies: - postcss: ^8.3.3 - stylelint: ^15.5.0 - peerDependenciesMeta: - postcss: - optional: true - dependencies: - postcss: 8.4.27 - postcss-scss: 4.0.6(postcss@8.4.27) - stylelint: 15.10.2 - stylelint-config-recommended: 12.0.0(stylelint@15.10.2) - stylelint-scss: 5.0.1(stylelint@15.10.2) - dev: true - /stylelint-config-recommended-vue@1.5.0(postcss-html@1.5.0)(stylelint@15.10.2): resolution: {integrity: sha512-65TAK/clUqkNtkZLcuytoxU0URQYlml+30Nhop7sRkCZ/mtWdXt7T+spPSB3KMKlb+82aEVJ4OrcstyDBdbosg==} engines: {node: ^12 || >=14} @@ -8671,14 +8636,6 @@ packages: stylelint-config-recommended: 13.0.0(stylelint@15.10.2) dev: true - /stylelint-config-recommended@12.0.0(stylelint@15.10.2): - resolution: {integrity: sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==} - peerDependencies: - stylelint: ^15.5.0 - dependencies: - stylelint: 15.10.2 - dev: true - /stylelint-config-recommended@13.0.0(stylelint@15.10.2): resolution: {integrity: sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==} engines: {node: ^14.13.1 || >=16.0.0} @@ -8688,30 +8645,6 @@ packages: stylelint: 15.10.2 dev: true - /stylelint-config-standard-scss@10.0.0(postcss@8.4.27)(stylelint@15.10.2): - resolution: {integrity: sha512-bChBEo1p3xUVWh/wenJI+josoMk21f2yuLDGzGjmKYcALfl2u3DFltY+n4UHswYiXghqXaA8mRh+bFy/q1hQlg==} - peerDependencies: - postcss: ^8.3.3 - stylelint: ^15.5.0 - peerDependenciesMeta: - postcss: - optional: true - dependencies: - postcss: 8.4.27 - stylelint: 15.10.2 - stylelint-config-recommended-scss: 12.0.0(postcss@8.4.27)(stylelint@15.10.2) - stylelint-config-standard: 33.0.0(stylelint@15.10.2) - dev: true - - /stylelint-config-standard@33.0.0(stylelint@15.10.2): - resolution: {integrity: sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==} - peerDependencies: - stylelint: ^15.5.0 - dependencies: - stylelint: 15.10.2 - stylelint-config-recommended: 12.0.0(stylelint@15.10.2) - dev: true - /stylelint-config-standard@34.0.0(stylelint@15.10.2): resolution: {integrity: sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==} engines: {node: ^14.13.1 || >=16.0.0} @@ -8744,18 +8677,6 @@ packages: stylelint: 15.10.2 dev: true - /stylelint-scss@5.0.1(stylelint@15.10.2): - resolution: {integrity: sha512-n87iCRZrr2J7//I/QFsDXxFLnHKw633U4qvWZ+mOW6KDAp/HLj06H+6+f9zOuTYy+MdGdTuCSDROCpQIhw5fvQ==} - peerDependencies: - stylelint: ^14.5.1 || ^15.0.0 - dependencies: - postcss-media-query-parser: 0.2.3 - postcss-resolve-nested-selector: 0.1.1 - postcss-selector-parser: 6.0.13 - postcss-value-parser: 4.2.0 - stylelint: 15.10.2 - dev: true - /stylelint@15.10.2: resolution: {integrity: sha512-UxqSb3hB74g4DTO45QhUHkJMjKKU//lNUAOWyvPBVPZbCknJ5HjOWWZo+UDuhHa9FLeVdHBZXxu43eXkjyIPWg==} engines: {node: ^14.13.1 || >=16.0.0} diff --git a/src/api/base/login.ts b/src/api/base/login.ts index ac71037e..89af7840 100644 --- a/src/api/base/login.ts +++ b/src/api/base/login.ts @@ -14,7 +14,8 @@ enum Api { // 刷新访问令牌 export function refreshToken() { - return defHttp.post({ url: Api.RefreshToken + getRefreshToken() }) + const refreshToken = getRefreshToken() + return defHttp.post({ url: Api.RefreshToken + refreshToken }) } // 使用租户名,获得租户编号 diff --git a/src/api/base/profile.ts b/src/api/base/profile.ts index 5fbfce1d..005b5961 100644 --- a/src/api/base/profile.ts +++ b/src/api/base/profile.ts @@ -91,7 +91,6 @@ export function uploadAvatarApi(data) { url: Api.uploadAvatarApi, headers: { 'Content-type': ContentTypeEnum.FORM_DATA, - // @ts-expect-error 'ignoreCancelToken': true, }, data, diff --git a/src/api/system/operatelog/index.ts b/src/api/system/operatelog/index.ts index d06eb4f9..edbd9444 100644 --- a/src/api/system/operatelog/index.ts +++ b/src/api/system/operatelog/index.ts @@ -9,7 +9,7 @@ export interface OperateLogVO { name: string type: number content: string - exts: Map + exts: Map defHttpMethod: string defHttpUrl: string userIp: string diff --git a/src/components/CronTab/src/tabs/useTabMixin.ts b/src/components/CronTab/src/tabs/useTabMixin.ts index 5b391685..26762653 100644 --- a/src/components/CronTab/src/tabs/useTabMixin.ts +++ b/src/components/CronTab/src/tabs/useTabMixin.ts @@ -137,13 +137,13 @@ export function useTabSetup(props, context, options) { else if (value.includes('W')) { type.value = TypeEnum.work const values = value.split('W') - if (!values[0] && !isNaN(values[0])) + if (!values[0] && !Number.isNaN(values[0])) valueWork.value = Number.parseInt(values[0]) } else if (value.includes('L')) { type.value = TypeEnum.last } - else if (value.includes(',') || !isNaN(value)) { + else if (value.includes(',') || !Number.isNaN(value)) { type.value = TypeEnum.specify valueList.value = value.split(',').map(item => Number.parseInt(item)) } diff --git a/src/components/CronTab/src/validator.ts b/src/components/CronTab/src/validator.ts index 7548a703..02c72b6e 100644 --- a/src/components/CronTab/src/validator.ts +++ b/src/components/CronTab/src/validator.ts @@ -25,7 +25,7 @@ const cronRule: ValidatorRule = { yearValues = [year] // 判断是否都是数字 - const checkYear = yearValues.some(item => isNaN(Number(item))) + const checkYear = yearValues.some(item => Number.isNaN(Number(item))) if (checkYear) return Promise.reject(`Cron表达式参数[年]错误:${year}`) } @@ -39,7 +39,7 @@ const cronRule: ValidatorRule = { iter.next() return Promise.resolve() } - catch (e) { + catch (e: any) { return Promise.reject(`Cron表达式错误:${e}`) } }, diff --git a/src/components/Drawer/src/typing.ts b/src/components/Drawer/src/typing.ts index 2ae0546e..2afd1501 100644 --- a/src/components/Drawer/src/typing.ts +++ b/src/components/Drawer/src/typing.ts @@ -52,13 +52,13 @@ export interface DrawerFooterProps { * The ok button props, follow jsx rules * @type object */ - okButtonProps: { props: ButtonProps; on: {} } + okButtonProps: { props: ButtonProps; on: object } /** * The cancel button props, follow jsx rules * @type object */ - cancelButtonProps: { props: ButtonProps; on: {} } + cancelButtonProps: { props: ButtonProps; on: object } /** * Whether to apply loading visual effect for OK button or not * @default false diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index 5c9b78bb..520b6d14 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -51,7 +51,6 @@ const { prefixCls } = useDesign('basic-form') // Get the basic configuration of the form const getProps = computed((): FormProps => { - // @ts-expect-error return { ...props, ...unref(propsRef) } as FormProps }) @@ -214,7 +213,7 @@ function handleEnterPress(e: KeyboardEvent) { return if (e.key === 'Enter' && e.target && e.target instanceof HTMLElement) { const target: HTMLElement = e.target as HTMLElement - if (target && target.tagName && target.tagName.toUpperCase() == 'INPUT') + if (target && target.tagName && target.tagName.toUpperCase() === 'INPUT') handleSubmit() } } diff --git a/src/components/Form/src/components/ApiTransfer.vue b/src/components/Form/src/components/ApiTransfer.vue index 8bc6718f..2706e724 100644 --- a/src/components/Form/src/components/ApiTransfer.vue +++ b/src/components/Form/src/components/ApiTransfer.vue @@ -107,8 +107,6 @@ async function fetch() { catch (error) { console.warn(error) } - finally { - } } function emitChange() { emit('options-change', unref(getdataSource)) diff --git a/src/components/Form/src/components/FileUpload.vue b/src/components/Form/src/components/FileUpload.vue index a770a96c..208c8b63 100644 --- a/src/components/Form/src/components/FileUpload.vue +++ b/src/components/Form/src/components/FileUpload.vue @@ -95,7 +95,7 @@ watch( // 解析数据库存储的逗号分割 function parsePathsValue(paths) { - if (!paths || paths.length == 0) { + if (!paths || paths.length === 0) { fileList.value = [] return } @@ -114,7 +114,7 @@ function parsePathsValue(paths) { // 解析数组值 function parseArrayValue(array) { - if (!array || array.length == 0) { + if (!array || array.length === 0) { fileList.value = [] return } @@ -225,7 +225,7 @@ function onFileChange(info) { function handlePathChange() { const uploadFiles = fileList.value let path = '' - if (!uploadFiles || uploadFiles.length == 0) + if (!uploadFiles || uploadFiles.length === 0) path = '' const pathList: string[] = [] @@ -255,12 +255,12 @@ function emitValue(value) { } function uidGenerator() { - return `-${Number.parseInt(Math.random() * 10000 + 1, 10)}` + return `-${Number.parseInt((Math.random() * 10000 + 1, 10).toString())}` } function getFileName(path) { if (path.lastIndexOf('\\') >= 0) { - const reg = new RegExp('\\\\', 'g') + const reg = /\\/g path = path.replace(reg, '/') } return path.substring(path.lastIndexOf('/') + 1) diff --git a/src/components/Form/src/components/FormItem.vue b/src/components/Form/src/components/FormItem.vue index 3cb203f4..3901f9a9 100644 --- a/src/components/Form/src/components/FormItem.vue +++ b/src/components/Form/src/components/FormItem.vue @@ -227,6 +227,16 @@ export default defineComponent({ const eventKey = `on${upperFirst(changeEvent)}` + const { autoSetPlaceHolder, size } = props.formProps + + const propsData: Recordable = { + allowClear: true, + getPopupContainer: (trigger: Element) => trigger.parentNode, + size, + ...unref(getComponentsProps), + disabled: unref(getDisable), + } + const on = { [eventKey]: (...args: Nullable[]) => { const [e] = args @@ -240,15 +250,6 @@ export default defineComponent({ } const Comp = componentMap.get(component) as ReturnType - const { autoSetPlaceHolder, size } = props.formProps - const propsData: Recordable = { - allowClear: true, - getPopupContainer: (trigger: Element) => trigger.parentNode, - size, - ...unref(getComponentsProps), - disabled: unref(getDisable), - } - const isCreatePlaceholder = !propsData.disabled && autoSetPlaceHolder // RangePicker place is an array if (isCreatePlaceholder && component !== 'RangePicker' && component) diff --git a/src/components/Form/src/components/UploadItemActions.vue b/src/components/Form/src/components/UploadItemActions.vue index 75087a35..e79293f7 100644 --- a/src/components/Form/src/components/UploadItemActions.vue +++ b/src/components/Form/src/components/UploadItemActions.vue @@ -36,7 +36,7 @@ function onMoveBack() { createMessage.warn(`移动失败:${index}`) return } - if (index == unref(list).length - 1) { + if (index === unref(list).length - 1) { doSwap(index, 0) return } diff --git a/src/components/Form/src/hooks/useForm.ts b/src/components/Form/src/hooks/useForm.ts index 96d0c910..85ad707c 100644 --- a/src/components/Form/src/hooks/useForm.ts +++ b/src/components/Form/src/hooks/useForm.ts @@ -73,9 +73,8 @@ export function useForm(props?: Props): UseFormReturnType { }, resetFields: async () => { - getForm().then(async (form) => { - await form.resetFields() - }) + const form = await getForm() + await form.resetFields() }, removeSchemaByField: async (field: string | string[]) => { diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 07fcb785..234cb12c 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -171,7 +171,7 @@ export function useFormEvents({ fieldList = [fields] for (const field of fieldList) - _removeSchemaByFeild(field, schemaList) + _removeSchemaByField(field, schemaList) schemaRef.value = schemaList } @@ -179,7 +179,7 @@ export function useFormEvents({ /** * @description: Delete based on field name */ - function _removeSchemaByFeild(field: string, schemaList: FormSchema[]): void { + function _removeSchemaByField(field: string, schemaList: FormSchema[]): void { if (isString(field)) { const index = schemaList.findIndex(schema => schema.field === field) if (index !== -1) { diff --git a/src/components/FormDesign/src/components/VFormCreate/index.vue b/src/components/FormDesign/src/components/VFormCreate/index.vue index e5f0632d..808a69c5 100644 --- a/src/components/FormDesign/src/components/VFormCreate/index.vue +++ b/src/components/FormDesign/src/components/VFormCreate/index.vue @@ -35,7 +35,7 @@ export default defineComponent({ }, emits: ['submit', 'change', 'update:fApi', 'update:formModel'], setup(props, context) { - const wrapperComp = props.formConfig.layout == 'vertical' ? Col : Row + const wrapperComp = props.formConfig.layout === 'vertical' ? Col : Row const { emit } = context const eFormModel = ref(null) diff --git a/src/components/FormDesign/src/components/VFormDesign/components/ComponentProps.vue b/src/components/FormDesign/src/components/VFormDesign/components/ComponentProps.vue index 6528b64e..569621d0 100644 --- a/src/components/FormDesign/src/components/VFormDesign/components/ComponentProps.vue +++ b/src/components/FormDesign/src/components/VFormDesign/components/ComponentProps.vue @@ -114,14 +114,14 @@ export default defineComponent({ // 控制性的选项 const controlOptions = computed(() => { return allOptions.value.filter((item) => { - return item.category == 'control' + return item.category === 'control' }) }) // 非控制性选择 const inputOptions = computed(() => { return allOptions.value.filter((item) => { - return item.category == 'input' + return item.category === 'input' }) }) diff --git a/src/components/FormDesign/src/components/VFormDesign/components/FormProps.vue b/src/components/FormDesign/src/components/VFormDesign/components/FormProps.vue index 05d0eb8c..decf45ad 100644 --- a/src/components/FormDesign/src/components/VFormDesign/components/FormProps.vue +++ b/src/components/FormDesign/src/components/VFormDesign/components/FormProps.vue @@ -109,7 +109,7 @@ export default defineComponent({ - + label后面显示冒号 diff --git a/src/components/FormDesign/src/components/VFormDesign/components/ImportJsonModal.vue b/src/components/FormDesign/src/components/VFormDesign/components/ImportJsonModal.vue index d946ef5d..64a53e70 100644 --- a/src/components/FormDesign/src/components/VFormDesign/components/ImportJsonModal.vue +++ b/src/components/FormDesign/src/components/VFormDesign/components/ImportJsonModal.vue @@ -2,7 +2,7 @@ * @Description: 导入JSON模板 -->