diff --git a/.eslintignore b/.eslintignore index c4d771a..9858f3e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,4 +14,4 @@ dist .eslintrc.js prettier.config.js src/assets -tailwind.config.js \ No newline at end of file +tailwind.config.js diff --git a/.eslintrc.js b/.eslintrc.js index a1b32e3..3fab2db 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,28 +1,35 @@ module.exports = { env: { browser: true, - es2021: true, - node: true + node: true, + es6: true }, parser: 'vue-eslint-parser', extends: [ - 'eslint:recommended', - 'plugin:vue/vue3-essential', - 'plugin:@typescript-eslint/recommended', + 'plugin:vue/vue3-recommended', './.eslintrc-auto-import.json', - 'plugin:prettier/recommended' + 'plugin:@typescript-eslint/recommended', + "prettier", + 'plugin:prettier/recommended', ], parserOptions: { ecmaVersion: '2020', sourceType: 'module', + project: "./tsconfig.*?.json", parser: '@typescript-eslint/parser' }, - plugins: ['vue', '@typescript-eslint'], + plugins: ['vue', '@typescript-eslint', 'import', 'promise', 'node', 'prettier'], rules: { - 'vue/multi-word-component-names': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-explicit-any': 'off', + + // vue + 'vue/multi-word-component-names': 'off', + 'vue/valid-define-props': 'off', 'vue/no-v-model-argument': 'off', + 'prefer-rest-params': 'off', + // prettier + 'prettier/prettier': 'error', '@typescript-eslint/ban-types': [ 'error', { diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0b00890 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,20 @@ +{ + "printWidth": 150, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "bracketSameLine": false, + "trailingComma": "none", + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "arrowParens": "always", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "css", + "vueIndentScriptAndStyle": false, + "endOfLine": "auto" +} diff --git a/package.json b/package.json index 13e0f92..95cd2a1 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,10 @@ "license": "MIT", "scripts": { "dev": "vite serve --mode development", - "build:prod": "vite build --mode production &&vue-tsc --noEmit", + "build:prod": "vite build --mode production", + "build:dev": "vite build --mode development", "preview": "vite preview", - "lint": "eslint src/**/*.{ts,js,vue} --fix", + "lint:eslint": "eslint --fix --ext .ts,.js,.vue ./src ", "prepare": "husky install", "prettier": "prettier --write ." }, @@ -19,28 +20,28 @@ "dependencies": { "@element-plus/icons-vue": "2.1.0", "@vueup/vue-quill": "1.2.0", - "@vueuse/core": "9.5.0", + "@vueuse/core": "10.7.0", "animate.css": "4.1.1", "await-to-js": "^3.0.0", "axios": "^1.3.4", + "crypto-js": "^4.1.1", "echarts": "5.4.0", - "element-plus": "2.2.27", + "element-plus": "2.4.3", "file-saver": "2.0.5", "fuse.js": "6.6.2", "js-cookie": "3.0.1", "jsencrypt": "3.3.1", - "crypto-js": "^4.1.1", "nprogress": "0.2.0", "path-browserify": "1.0.1", "path-to-regexp": "6.2.0", - "pinia": "2.0.22", + "pinia": "2.1.7", "screenfull": "6.0.0", "vform3-builds": "3.0.8", - "vue": "3.2.45", + "vue": "3.3.11", "vue-cropper": "1.0.3", "vue-i18n": "9.2.2", - "vue-router": "4.1.4", - "vue-types": "^5.0.3" + "vue-router": "4.2.5", + "vue-types": "5.1.1" }, "devDependencies": { "@iconify/json": "^2.2.40", @@ -51,34 +52,38 @@ "@types/node": "18.14.2", "@types/nprogress": "0.2.0", "@types/path-browserify": "^1.0.0", - "@typescript-eslint/eslint-plugin": "5.56.0", - "@typescript-eslint/parser": "5.56.0", - "@unocss/preset-attributify": "^0.50.6", - "@unocss/preset-icons": "^0.50.6", - "@unocss/preset-uno": "^0.50.6", - "@vitejs/plugin-vue": "4.0.0", + "@typescript-eslint/eslint-plugin": "6.14.0", + "@typescript-eslint/parser": "6.14.0", + "@unocss/preset-attributify": "^0.58.0", + "@unocss/preset-icons": "^0.58.0", + "@unocss/preset-uno": "^0.58.0", "@vue/compiler-sfc": "3.2.45", + "@vitejs/plugin-vue": "4.5.2", "autoprefixer": "10.4.14", - "eslint": "8.36.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-prettier": "4.2.1", - "eslint-plugin-vue": "9.9.0", + "eslint": "8.55.0", + "eslint-config-prettier": "9.1.0", + "eslint-define-config": "2.0.0", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-import": "2.29.0", + "eslint-plugin-vue": "9.19.2", "fast-glob": "^3.2.11", "husky": "7.0.4", "postcss": "^8.4.21", - "prettier": "2.8.6", + "prettier": "3.1.1", "sass": "1.56.1", - "typescript": "4.9.5", - "unocss": "^0.50.6", - "unplugin-auto-import": "0.13.0", - "unplugin-icons": "0.15.1", - "unplugin-vue-components": "0.23.0", - "vite": "4.3.1", + "typescript": "5.2.2", + "unocss": "^0.58.0", + "unplugin-auto-import": "0.17.2", + "unplugin-icons": "0.18.1", + "unplugin-vue-components": "0.26.0", + "unplugin-vue-setup-extend-plus": "0.4.9", "vite-plugin-compression": "0.5.1", "vite-plugin-svg-icons": "2.0.1", - "unplugin-vue-setup-extend-plus": "0.4.9", "vitest": "^0.29.7", - "vue-eslint-parser": "9.1.0", - "vue-tsc": "0.35.0" + "vue-eslint-parser": "9.3.2", + "vue-tsc": "0.35.0", + "vite": "5.0.4" } } diff --git a/src/App.vue b/src/App.vue index 41ffdd4..0b058d7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,8 +5,8 @@ diff --git a/src/api/tool/gen/index.ts b/src/api/tool/gen/index.ts index b91df6a..efe079c 100644 --- a/src/api/tool/gen/index.ts +++ b/src/api/tool/gen/index.ts @@ -28,7 +28,7 @@ export const getGenTable = (tableId: string | number): AxiosPromise }; // 修改代码生成信息 -export const updateGenTable = (data: DbTableForm) => { +export const updateGenTable = (data: DbTableForm): AxiosPromise => { return request({ url: '/tool/gen', method: 'put', @@ -37,7 +37,7 @@ export const updateGenTable = (data: DbTableForm) => { }; // 导入表 -export const importTable = (data: { tables: string; dataName: string }) => { +export const importTable = (data: { tables: string; dataName: string }): AxiosPromise => { return request({ url: '/tool/gen/importTable', method: 'post', diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue index b96829a..57a30ac 100644 --- a/src/components/Breadcrumb/index.vue +++ b/src/components/Breadcrumb/index.vue @@ -2,8 +2,7 @@ - {{ - item.meta?.title }} + {{ item.meta?.title }} {{ item.meta?.title }} @@ -11,42 +10,42 @@ diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index be99ac0..67abaab 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -1,6 +1,7 @@ diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue index 489ac43..f9f5e62 100644 --- a/src/components/Hamburger/index.vue +++ b/src/components/Hamburger/index.vue @@ -1,5 +1,5 @@ diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue index 723ccdb..349c443 100644 --- a/src/components/ImagePreview/index.vue +++ b/src/components/ImagePreview/index.vue @@ -15,11 +15,11 @@ const props = defineProps({ src: propTypes.string.def(''), width: { type: [Number, String], - default: "" + default: '' }, height: { type: [Number, String], - default: "" + default: '' } }); @@ -27,7 +27,7 @@ const realSrc = computed(() => { if (!props.src) { return; } - let real_src = props.src.split(",")[0]; + let real_src = props.src.split(',')[0]; return real_src; }); @@ -35,21 +35,17 @@ const realSrcList = computed(() => { if (!props.src) { return; } - let real_src_list = props.src.split(","); + let real_src_list = props.src.split(','); let srcList: string[] = []; - real_src_list.forEach(item => { + real_src_list.forEach((item) => { return srcList.push(item); }); return srcList; }); -const realWidth = computed(() => - typeof props.width == "string" ? props.width : `${props.width}px` -); +const realWidth = computed(() => (typeof props.width == 'string' ? props.width : `${props.width}px`)); -const realHeight = computed(() => - typeof props.height == "string" ? props.height : `${props.height}px` -); +const realHeight = computed(() => (typeof props.height == 'string' ? props.height : `${props.height}px`)); diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue index a30a2f6..f5ae8e8 100644 --- a/src/components/LangSelect/index.vue +++ b/src/components/LangSelect/index.vue @@ -20,16 +20,15 @@ import { useAppStore } from '@/store/modules/app'; const appStore = useAppStore(); const { locale } = useI18n(); - const message: any = { zh_CN: '切换语言成功!', - en_US: 'Switch Language Successful!', -} + en_US: 'Switch Language Successful!' +}; const handleLanguageChange = (lang: string) => { locale.value = lang; appStore.changeLanguage(lang); ElMessage.success(message[lang] || '切换语言成功!'); -} +}; diff --git a/src/layout/components/notice/index.vue b/src/layout/components/notice/index.vue index ef4a6a9..e43b2b8 100644 --- a/src/layout/components/notice/index.vue +++ b/src/layout/components/notice/index.vue @@ -1,12 +1,12 @@