diff --git a/.vscode/extensions.json b/.vscode/extensions.json index d1530933..5d7e57f3 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,15 +1,19 @@ { "recommendations": [ - "voorjaar.windicss-intellisense", + "christian-kohler.path-intellisense", "vscode-icons-team.vscode-icons", "davidanson.vscode-markdownlint", "stylelint.vscode-stylelint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", - "vue.volar", + "mrmlnc.vscode-less", "lokalise.i18n-ally", + "redhat.vscode-yaml", + "csstools.postcss", "mikestead.dotenv", "eamodio.gitlens", - "antfu.iconify" + "antfu.iconify", + "antfu.unocss", + "Vue.volar" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 469e4017..3a9abed7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -102,14 +102,12 @@ "i18n-ally.displayLanguage": "zh-CN", "i18n-ally.enabledFrameworks": ["vue", "react"], "cSpell.words": [ - "vben", - "windicss", - "tailwind", + "xingyu", + "yudao", + "unocss", "browserslist", - "tailwindcss", "esnext", - "antv", - "tinymce", + "unplugin", "qrcode", "sider", "pinia", @@ -123,8 +121,9 @@ "codemirror", "iconify", "commitlint", - "vditor", + "videojs", "echarts", + "wangeditor", "cropperjs", "logicflow", "vueuse", @@ -132,8 +131,7 @@ "lintstagedrc", "brotli", "sider", - "pnpm", - "antd" + "pnpm" ], "vetur.format.scriptInitialIndent": true, "vetur.format.styleInitialIndent": true, diff --git a/README.md b/README.md index dc69a06d..eb93ac38 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ * 改换 saas,自动引入等功能 * 使用 Element Plus 免费开源的中后台模版,具备如下特性: -![首页](preview/home.png) +![首页](public/home.png) * **最新技术栈**:使用 Vue3、Vite4 等前端前沿技术开发 * **TypeScript**: 应用程序级 JavaScript 的语言 @@ -39,15 +39,15 @@ | 框架 | 说明 | 版本 | |----------------------------------------------------------------------|------------------|--------| | [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.4 | -| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.9 | -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.7 | -| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.0.4 | -| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.4 | -| [vueuse](https://vueuse.org/) | 常用工具集 | 10.2.0 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.4.7 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.8 | +| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.1.6 | +| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.6 | +| [vueuse](https://vueuse.org/) | 常用工具集 | 10.2.1 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | -| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.1 | -| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | -| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.0 | +| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.4 | +| [unocss](https://uno.antfu.me/) | 原子 css | 0.54.0 | +| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.1 | | [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.23 | ## 开发工具 @@ -56,14 +56,14 @@ | 插件名 | 功能 | |-------------------------------|--------------------------| -| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 | +| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 | | Vue Language Features (Volar) | Vue3.0 语法支持 | -| WindiCSS IntelliSense | 自动完成、语法突出显示、代码折叠和构建等高级功能 | -| Iconify IntelliSense | Iconify 预览和搜索 | -| i18n Ally | 国际化智能提示 | +| unocss | unocss for vscode | +| Iconify IntelliSense | Iconify 预览和搜索 | +| i18n Ally | 国际化智能提示 | | Stylelint | Css 格式化 | -| Prettier | 代码格式化 | -| ESLint | 脚本代码检查 | +| Prettier | 代码格式化 | +| ESLint | 脚本代码检查 | | DotENV | env 文件高亮 | ## 内置功能 diff --git a/build/vite/index.ts b/build/vite/index.ts index d5b6a4ac..02067107 100644 --- a/build/vite/index.ts +++ b/build/vite/index.ts @@ -1,7 +1,6 @@ import { resolve } from 'path' import Vue from '@vitejs/plugin-vue' import VueJsx from '@vitejs/plugin-vue-jsx' -import WindiCSS from 'vite-plugin-windicss' import progress from 'vite-plugin-progress' import EslintPlugin from 'vite-plugin-eslint' import PurgeIcons from 'vite-plugin-purge-icons' @@ -15,6 +14,7 @@ import viteCompression from 'vite-plugin-compression' import topLevelAwait from 'vite-plugin-top-level-await' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import UnoCSS from 'unocss/vite' export function createVitePlugins() { const root = process.cwd() @@ -27,7 +27,7 @@ export function createVitePlugins() { return [ Vue(), VueJsx(), - WindiCSS(), + UnoCSS(), progress(), PurgeIcons(), ElementPlus({}), diff --git a/build/vite/optimize.ts b/build/vite/optimize.ts index 1ee3d280..d34e1b37 100644 --- a/build/vite/optimize.ts +++ b/build/vite/optimize.ts @@ -8,7 +8,7 @@ const include = [ 'pinia', 'dayjs', 'qrcode', - 'windicss', + 'unocss', 'vue-router', 'vue-types', 'vue-i18n', diff --git a/package.json b/package.json index c37df50c..e6be32f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yudao-ui-admin-vue3", - "version": "1.7.3-snapshot", + "version": "1.8.0-snapshot", "description": "基于vue3、vite4、element-plus、typesScript", "author": "xingyu", "private": false, @@ -32,12 +32,12 @@ "@element-plus/icons-vue": "^2.1.0", "@form-create/designer": "^3.1.0", "@form-create/element-ui": "^3.1.17", - "@iconify/iconify": "^3.1.0", + "@iconify/iconify": "^3.1.1", "@videojs-player/vue": "^1.0.0", - "@vueuse/core": "^10.2.0", + "@vueuse/core": "^10.2.1", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.10", - "@zxcvbn-ts/core": "^3.0.2", + "@zxcvbn-ts/core": "^3.0.3", "animate.css": "^4.1.1", "axios": "^1.4.0", "benz-amr-recorder": "^1.1.5", @@ -45,79 +45,82 @@ "camunda-bpmn-moddle": "^7.0.1", "cropperjs": "^1.5.13", "crypto-js": "^4.1.1", - "dayjs": "^1.11.8", + "dayjs": "^1.11.9", "diagram-js": "^11.6.0", - "echarts": "^5.4.2", + "echarts": "^5.4.3", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.3.7", - "fast-xml-parser": "^4.2.4", + "element-plus": "2.3.8", + "fast-xml-parser": "^4.2.6", "highlight.js": "^11.8.0", "intro.js": "^7.0.1", "jsencrypt": "^3.3.2", "lodash-es": "^4.17.21", "min-dash": "^4.1.1", - "mitt": "^3.0.0", + "mitt": "^3.0.1", "nprogress": "^0.2.0", - "pinia": "^2.1.4", + "pinia": "^2.1.6", "qrcode": "^1.5.3", "qs": "^6.11.2", "steady-xml": "^0.1.0", "url": "^0.11.1", - "video.js": "^8.3.0", + "video.js": "^7.21.5", "vue": "3.3.4", "vue-dompurify-html": "^4.1.4", "vue-i18n": "9.2.2", - "vue-router": "^4.2.2", - "vue-types": "^5.0.4", + "vue-router": "^4.2.4", + "vue-types": "^5.1.1", "vuedraggable": "^4.1.0", "web-storage-cache": "^1.1.1", "xml-js": "^1.6.11" }, "devDependencies": { - "@commitlint/cli": "^17.6.5", - "@commitlint/config-conventional": "^17.6.5", - "@iconify/json": "^2.2.80", - "@intlify/unplugin-vue-i18n": "^0.11.0", + "@commitlint/cli": "^17.6.7", + "@commitlint/config-conventional": "^17.6.7", + "@iconify/json": "^2.2.95", + "@intlify/unplugin-vue-i18n": "^0.12.2", "@purge-icons/generated": "^0.9.0", "@types/intro.js": "^5.1.1", - "@types/lodash-es": "^4.17.7", - "@types/node": "^20.3.1", + "@types/lodash-es": "^4.17.8", + "@types/node": "^20.4.0", "@types/nprogress": "^0.2.0", - "@types/qrcode": "^1.5.0", + "@types/qrcode": "^1.5.1", "@types/qs": "^6.9.7", - "@typescript-eslint/eslint-plugin": "^5.59.11", - "@typescript-eslint/parser": "^5.59.11", - "@vitejs/plugin-legacy": "^4.0.4", + "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/parser": "^6.2.0", + "@unocss/transformer-variant-group": "^0.51.4", + "@vitejs/plugin-legacy": "^4.1.1", "@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue-jsx": "^3.0.1", + "@vue-macros/volar": "^0.12.3", "autoprefixer": "^10.4.14", "bpmn-js": "^8.9.0", "bpmn-js-properties-panel": "^0.46.0", - "consola": "^3.1.0", - "eslint": "^8.43.0", - "eslint-config-prettier": "^8.8.0", + "consola": "^3.2.3", + "eslint": "^8.46.0", + "eslint-config-prettier": "^8.9.0", "eslint-define-config": "^1.21.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.15.0", - "lint-staged": "^13.2.2", - "postcss": "^8.4.24", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-vue": "^9.15.1", + "lint-staged": "^13.2.3", + "postcss": "^8.4.27", "postcss-html": "^1.5.0", "postcss-scss": "^4.0.6", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "rimraf": "^5.0.1", - "rollup": "^3.25.1", - "sass": "^1.63.5", - "stylelint": "^15.8.0", - "stylelint-config-recommended": "^12.0.0", - "stylelint-config-recommended-vue": "^1.4.0", - "stylelint-config-standard": "^33.0.0", + "rollup": "^3.27.0", + "sass": "^1.64.1", + "stylelint": "^15.10.2", + "stylelint-config-recommended": "^13.0.0", + "stylelint-config-recommended-vue": "^1.5.0", + "stylelint-config-standard": "^34.0.0", "stylelint-order": "^6.0.3", - "terser": "^5.18.1", - "typescript": "5.0.4", - "unplugin-auto-import": "^0.16.4", - "unplugin-element-plus": "^0.7.1", + "terser": "^5.19.2", + "typescript": "5.1.6", + "unocss": "^0.54.0", + "unplugin-auto-import": "^0.16.6", + "unplugin-element-plus": "^0.7.2", "unplugin-vue-components": "^0.25.1", - "vite": "4.3.9", + "vite": "4.4.7", "vite-plugin-compression": "^0.5.1", "vite-plugin-ejs": "^1.6.4", "vite-plugin-eslint": "^1.8.1", @@ -125,9 +128,7 @@ "vite-plugin-purge-icons": "^0.9.2", "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-top-level-await": "^1.3.1", - "vite-plugin-windicss": "^1.9.0", - "vue-tsc": "^1.8.1", - "windicss": "^3.5.6" + "vue-tsc": "^1.8.8" }, "license": "MIT", "repository": { diff --git a/preview/home.png b/public/home.png old mode 100755 new mode 100644 similarity index 100% rename from preview/home.png rename to public/home.png diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 536f6a66..b65a90cf 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -37,11 +37,6 @@ export const getInfo = () => { return request.get({ url: '/system/auth/get-permission-info' }) } -// 路由 -export const getAsyncRoutes = () => { - return request.get({ url: '/system/auth/list-menus' }) -} - //获取登录验证码 export const sendSmsCode = (data: SmsCodeVO) => { return request.post({ url: '/system/auth/send-sms-code', data }) diff --git a/src/api/mall/promotion/combination/combinationactivity.ts b/src/api/mall/promotion/combination/combinationactivity.ts index 1e211c86..71d5d2a4 100644 --- a/src/api/mall/promotion/combination/combinationactivity.ts +++ b/src/api/mall/promotion/combination/combinationactivity.ts @@ -1,6 +1,8 @@ import request from '@/config/axios' import { Sku, Spu } from '@/api/mall/product/spu' +// TODO @puhui999: combinationActivity.ts + export interface CombinationActivityVO { id?: number name?: string diff --git a/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/src/components/ContentDetailWrap/src/ContentDetailWrap.vue index 298202b1..a9eacc01 100644 --- a/src/components/ContentDetailWrap/src/ContentDetailWrap.vue +++ b/src/components/ContentDetailWrap/src/ContentDetailWrap.vue @@ -28,7 +28,7 @@ onMounted(() => {
diff --git a/src/components/Cropper/src/CopperModal.vue b/src/components/Cropper/src/CopperModal.vue index 12151813..27052b8a 100644 --- a/src/components/Cropper/src/CopperModal.vue +++ b/src/components/Cropper/src/CopperModal.vue @@ -222,7 +222,9 @@ $prefix-cls: #{$namespace}-cropper-am; transparent 75%, rgb(0 0 0 / 25%) 0 ); - background-position: 0 0, 12px 12px; + background-position: + 0 0, + 12px 12px; background-size: 24px 24px; } diff --git a/src/components/Descriptions/src/Descriptions.vue b/src/components/Descriptions/src/Descriptions.vue index 0baa396c..06e1096a 100644 --- a/src/components/Descriptions/src/Descriptions.vue +++ b/src/components/Descriptions/src/Descriptions.vue @@ -71,14 +71,14 @@ const toggleClick = () => {
diff --git a/src/components/Dialog/src/Dialog.vue b/src/components/Dialog/src/Dialog.vue index c1114d36..5fd298bb 100644 --- a/src/components/Dialog/src/Dialog.vue +++ b/src/components/Dialog/src/Dialog.vue @@ -99,13 +99,19 @@ const dialogStyle = computed(() => { diff --git a/src/components/Editor/src/Editor.vue b/src/components/Editor/src/Editor.vue index 3b2013d1..d972552d 100644 --- a/src/components/Editor/src/Editor.vue +++ b/src/components/Editor/src/Editor.vue @@ -164,7 +164,6 @@ const handleChange = (editor: IDomEditor) => { // 组件销毁时,及时销毁编辑器 onBeforeUnmount(() => { const editor = unref(editorRef.value) - if (editor === null) return // 销毁,并移除 editor editor?.destroy() @@ -181,12 +180,12 @@ defineExpose({