diff --git a/.env b/.env index c4c1b8c..5ad279d 100644 --- a/.env +++ b/.env @@ -8,7 +8,7 @@ VITE_GLOB_APP_TITLE = JeecgBoot 企业级低代码平台 VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin # 单点登录服务端地址 -VITE_GLOBE_APP_CAS_BASE_URL=http://cas.test.com:8443/cas +VITE_GLOB_APP_CAS_BASE_URL=http://cas.test.com:8443/cas # 是否开启单点登录 VITE_GLOB_APP_OPEN_SSO = false diff --git a/.gitignore b/.gitignore index a4b670d..704fbb9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules .DS_Store +.github dist .npmrc .cache @@ -27,3 +28,4 @@ pnpm-debug.log* *.njsproj *.sln *.sw? +/os_del.cmd diff --git a/README.md b/README.md index 433ec76..be48efb 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ JEECG BOOT 低代码平台(Vue3前端) =============== -当前最新版本: 1.0.0(20220321) +当前最新版本: 1.1.0-beta(预计发布时间:20220516) ## 简介 JeecgBoot-Vue3采用 Vue3.0、Vite、 Ant-Design-Vue、TypeScript 等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。 是在 Vben-Admin 基础上研发的,适合于JeecgBoot的新版前端VUE3框架。 - + > 全新的VUE3技术栈,不只是追赶技术潮流,用了之后才能体会到Vue3的好处,的确比2更加适合大型项目。 @@ -37,7 +37,7 @@ JeecgBoot-Vue3采用 Vue3.0、Vite、 Ant-Design-Vue、TypeScript 等新技术 ## 安装与使用 - + - Get the project code ```bash @@ -224,6 +224,3 @@ yarn build - - - diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index 7bd23f6..9ddbf23 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -15,6 +15,8 @@ import { configThemePlugin } from './theme'; import { configImageminPlugin } from './imagemin'; import { configSvgIconsPlugin } from './svgSprite'; import { configHmrPlugin } from './hmr'; +import OptimizationPersist from 'vite-plugin-optimize-persist' +import PkgConfig from 'vite-plugin-package-config' export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { const { @@ -78,5 +80,9 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { vitePlugins.push(configPwaConfig(viteEnv)); } + //vite-plugin-theme【解决vite首次打开界面加载慢问题】 + vitePlugins.push(PkgConfig()); + vitePlugins.push(OptimizationPersist()); + return vitePlugins; } diff --git a/package.json b/package.json index 5aa6f6f..9d0fb78 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bootstrap": "yarn install", "serve": "npm run dev", "dev": "vite", - "build": "cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts", + "build": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && esno ./build/script/postBuild.ts", "build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts", "build:no-cache": "yarn clean:cache && npm run build", "report": "cross-env REPORT=true npm run build", @@ -35,11 +35,11 @@ }, "dependencies": { "@iconify/iconify": "^2.0.4", - "@fullcalendar/core": "^5.8.0", - "@fullcalendar/daygrid": "^5.8.0", - "@fullcalendar/interaction": "^5.8.0", - "@fullcalendar/timegrid": "^5.8.0", - "@fullcalendar/vue3": "^5.8.0", + "@fullcalendar/core": "^5.10.1", + "@fullcalendar/daygrid": "^5.10.1", + "@fullcalendar/interaction": "^5.10.1", + "@fullcalendar/timegrid": "^5.10.1", + "@fullcalendar/vue3": "^5.10.1", "@vueuse/core": "^6.6.2", "@zxcvbn-ts/core": "^1.0.0-beta.0", "ant-design-vue": "2.2.8", @@ -152,6 +152,8 @@ "vite-plugin-html": "^2.1.0", "vite-plugin-imagemin": "^0.4.6", "vite-plugin-mock": "^2.9.6", + "vite-plugin-optimize-persist": "^0.1.2", + "vite-plugin-package-config": "^0.1.1", "vite-plugin-purge-icons": "^0.7.0", "vite-plugin-pwa": "^0.11.3", "vite-plugin-style-import": "^1.2.1", @@ -178,5 +180,121 @@ "homepage": "https://github.com/jeecgboot/jeecgboot-vue3", "engines": { "node": "^12 || >=14" + }, + "vite": { + "optimizeDeps": { + "include": [ + "@ant-design/colors", + "@ant-design/icons-vue", + "@fullcalendar/core/vdom", + "@fullcalendar/daygrid", + "@fullcalendar/interaction", + "@fullcalendar/timegrid", + "@fullcalendar/vue3", + "@vueuse/core", + "@vueuse/shared", + "@zxcvbn-ts/core", + "ant-design-vue", + "axios", + "china-area-data", + "clipboard", + "codemirror", + "codemirror/addon/fold/brace-fold.js", + "codemirror/addon/fold/comment-fold.js", + "codemirror/addon/fold/foldcode.js", + "codemirror/addon/fold/foldgutter.js", + "codemirror/addon/fold/indent-fold.js", + "codemirror/addon/hint/anyword-hint.js", + "codemirror/addon/hint/show-hint.js", + "codemirror/addon/selection/active-line.js", + "codemirror/mode/clike/clike.js", + "codemirror/mode/css/css.js", + "codemirror/mode/javascript/javascript.js", + "codemirror/mode/markdown/markdown.js", + "codemirror/mode/python/python.js", + "codemirror/mode/r/r.js", + "codemirror/mode/shell/shell.js", + "codemirror/mode/sql/sql.js", + "codemirror/mode/swift/swift.js", + "codemirror/mode/vue/vue.js", + "codemirror/mode/xml/xml.js", + "cron-parser", + "cropperjs", + "crypto-js/aes", + "crypto-js/enc-base64", + "crypto-js/enc-utf8", + "crypto-js/md5", + "crypto-js/mode-ecb", + "crypto-js/pad-pkcs7", + "dom-align", + "echarts", + "echarts/charts", + "echarts/components", + "echarts/core", + "echarts/renderers", + "intro.js", + "lodash-es", + "md5", + "moment", + "nprogress", + "path-to-regexp", + "pinia", + "print-js", + "qiankun", + "qrcode", + "qs", + "resize-observer-polyfill", + "showdown", + "sortablejs", + "tinymce/icons/default/icons", + "tinymce/plugins/advlist", + "tinymce/plugins/anchor", + "tinymce/plugins/autolink", + "tinymce/plugins/autosave", + "tinymce/plugins/code", + "tinymce/plugins/codesample", + "tinymce/plugins/contextmenu", + "tinymce/plugins/directionality", + "tinymce/plugins/fullscreen", + "tinymce/plugins/hr", + "tinymce/plugins/image", + "tinymce/plugins/insertdatetime", + "tinymce/plugins/link", + "tinymce/plugins/lists", + "tinymce/plugins/media", + "tinymce/plugins/nonbreaking", + "tinymce/plugins/noneditable", + "tinymce/plugins/pagebreak", + "tinymce/plugins/paste", + "tinymce/plugins/preview", + "tinymce/plugins/print", + "tinymce/plugins/save", + "tinymce/plugins/searchreplace", + "tinymce/plugins/spellchecker", + "tinymce/plugins/tabfocus", + "tinymce/plugins/table", + "tinymce/plugins/template", + "tinymce/plugins/textcolor", + "tinymce/plugins/textpattern", + "tinymce/plugins/visualblocks", + "tinymce/plugins/visualchars", + "tinymce/plugins/wordcount", + "tinymce/themes/silver", + "tinymce/tinymce", + "vditor", + "vite-plugin-theme/es/client", + "vite-plugin-theme/es/colorUtils", + "vue", + "vue-i18n", + "vue-print-nb-jeecg/src/printarea", + "vue-router", + "vue-types", + "vue3-drag-test4", + "vxe-table", + "vxe-table-plugin-antd", + "xe-utils", + "xlsx" + ] + } } } diff --git a/prettier.config.js b/prettier.config.js index dbf81d8..4a88a0c 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,10 +1,10 @@ module.exports = { - printWidth: 100, + printWidth: 200, tabWidth: 2, useTabs: false, - semi: true, + semi: true, //语句末尾使用分号 vueIndentScriptAndStyle: true, - singleQuote: true, + singleQuote: true, // 使用单引号 quoteProps: 'as-needed', bracketSpacing: true, trailingComma: 'es5', diff --git a/src/api/sys/user.ts b/src/api/sys/user.ts index df2a450..2e0e5e3 100644 --- a/src/api/sys/user.ts +++ b/src/api/sys/user.ts @@ -3,8 +3,13 @@ import { LoginParams, LoginResultModel, GetUserInfoModel } from './model/userMod import { ErrorMessageMode } from '/#/axios'; import {useMessage} from "/@/hooks/web/useMessage"; +import {useUserStoreWithOut} from "/@/store/modules/user"; +import {setAuthCache} from "/@/utils/auth"; +import {TOKEN_KEY} from "/@/enums/cacheEnum"; +import {router} from "/@/router"; +import {PageEnum} from "/@/enums/pageEnum"; -const { createMessage, createErrorModal } = useMessage(); +const { createErrorModal } = useMessage(); enum Api { Login = '/sys/login', @@ -73,8 +78,18 @@ export function phoneLoginApi(params: LoginParams, mode: ErrorMessageMode = 'mod /** * @description: getUserInfo */ -export function getUserInfo() { - return defHttp.get({ url: Api.GetUserInfo }, { errorMessageMode: 'none' }); +export function getUserInfo() { + return defHttp.get({ url: Api.GetUserInfo }, { errorMessageMode: 'none' }).catch((e)=>{ + // update-begin--author:zyf---date:20220425---for:【VUEN-76】捕获接口超时异常,跳转到登录界面 + if (e && e.message.includes('timeout')) { + //接口不通时跳转到登录界面 + const userStore = useUserStoreWithOut(); + userStore.setToken(''); + setAuthCache(TOKEN_KEY, null); + router.push(PageEnum.BASE_LOGIN); + } + // update-end--author:zyf---date:20220425---for:【VUEN-76】捕获接口超时异常,跳转到登录界面 + }); } export function getPermCode() { diff --git a/src/components/Application/src/search/useMenuSearch.ts b/src/components/Application/src/search/useMenuSearch.ts index 9101b4a..d26a2ae 100644 --- a/src/components/Application/src/search/useMenuSearch.ts +++ b/src/components/Application/src/search/useMenuSearch.ts @@ -55,6 +55,10 @@ export function useMenuSearch(refs: Ref, scrollWrap: Ref, } const reg = createSearchReg(unref(keyword)); const filterMenu = filter(menuList, (item) => { + // 【issues/33】包含子菜单时,不添加到搜索队列 + if (Array.isArray(item.children)) { + return false + } return reg.test(item.name) && !item.hideMenu; }); searchResult.value = handlerSearchResult(filterMenu, reg); diff --git a/src/components/Dropdown/src/Dropdown.vue b/src/components/Dropdown/src/Dropdown.vue index 4c5fffe..f497080 100644 --- a/src/components/Dropdown/src/Dropdown.vue +++ b/src/components/Dropdown/src/Dropdown.vue @@ -1,15 +1,16 @@