diff --git a/package.json b/package.json index 1c295de0..89477d4c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "animate.css": "^4.1.1", "axios": "^1.6.8", "benz-amr-recorder": "^1.1.5", - "bpmn-js-token-simulation": "^0.10.0", + "bpmn-js-token-simulation": "^0.36.0", "camunda-bpmn-moddle": "^7.0.1", "cropperjs": "^1.6.1", "crypto-js": "^4.2.0", @@ -47,7 +47,7 @@ "driver.js": "^1.3.1", "echarts": "^5.5.0", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.8.4", + "element-plus": "2.9.1", "fast-xml-parser": "^4.3.2", "highlight.js": "^11.9.0", "jsencrypt": "^3.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 226b5c23..50e9bf96 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ dependencies: specifier: ^2.1.0 version: 2.1.0(echarts@5.5.1) element-plus: - specifier: 2.8.4 - version: 2.8.4(vue@3.5.12) + specifier: 2.9.1 + version: 2.9.1(vue@3.5.12) fast-xml-parser: specifier: ^4.3.2 version: 4.5.0 @@ -2122,7 +2122,7 @@ packages: '@form-create/element-ui': 3.2.14(vue@3.5.12) '@form-create/utils': 3.2.14 codemirror: 6.65.7 - element-plus: 2.8.4(vue@3.5.12) + element-plus: 2.9.1(vue@3.5.12) vue: 3.5.12(typescript@5.3.3) vuedraggable: 4.1.0(vue@3.5.12) transitivePeerDependencies: @@ -5795,8 +5795,8 @@ packages: resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==, tarball: https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz} dev: true - /element-plus@2.8.4(vue@3.5.12): - resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==, tarball: https://registry.npmmirror.com/element-plus/-/element-plus-2.8.4.tgz} + /element-plus@2.9.1(vue@3.5.12): + resolution: {integrity: sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==, tarball: https://registry.npmmirror.com/element-plus/-/element-plus-2.9.1.tgz} peerDependencies: vue: ^3.2.0 dependencies: diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 33fddcab..8c69d9bc 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -22,11 +22,6 @@ export const register = (data: RegisterVO) => { return request.post({ url: '/system/auth/register', data }) } -// 刷新访问令牌 -export const refreshToken = () => { - return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() }) -} - // 使用租户名,获得租户编号 export const getTenantIdByName = (name: string) => { return request.get({ url: '/system/tenant/get-id-by-name?name=' + name }) @@ -76,12 +71,17 @@ export const socialAuthRedirect = (type: number, redirectUri: string) => { }) } // 获取验证图片以及 token -export const getCode = (data) => { +export const getCode = (data: any) => { debugger return request.postOriginal({ url: 'system/captcha/get', data }) } // 滑动或者点选验证 -export const reqCheck = (data) => { +export const reqCheck = (data: any) => { return request.postOriginal({ url: 'system/captcha/check', data }) } + +// 通过短信重置密码 +export const smsResetPassword = (data: any) => { + return request.post({ url: '/system/auth/sms-reset-password', data }) +} diff --git a/src/components/Echart/src/Echart.vue b/src/components/Echart/src/Echart.vue index fd3342dd..bf22b864 100644 --- a/src/components/Echart/src/Echart.vue +++ b/src/components/Echart/src/Echart.vue @@ -9,6 +9,10 @@ import { useAppStore } from '@/store/modules/app' import { isString } from '@/utils/is' import { useDesign } from '@/hooks/web/useDesign' +import 'echarts/lib/component/markPoint' +import 'echarts/lib/component/markLine' +import 'echarts/lib/component/markArea' + defineOptions({ name: 'EChart' }) const { getPrefixCls, variables } = useDesign() diff --git a/src/components/RouterSearch/index.vue b/src/components/RouterSearch/index.vue index ed2a08cc..42a41744 100644 --- a/src/components/RouterSearch/index.vue +++ b/src/components/RouterSearch/index.vue @@ -79,9 +79,14 @@ function remoteMethod(data) { function handleChange(path) { router.push({ path }) + hiddenSearch() hiddenTopSearch() } +function hiddenSearch() { + showSearch.value = false +} + function hiddenTopSearch() { showTopSearch.value = false } diff --git a/src/components/bpmnProcessDesigner/package/theme/process-designer.scss b/src/components/bpmnProcessDesigner/package/theme/process-designer.scss index b1ff0af3..bca0258c 100644 --- a/src/components/bpmnProcessDesigner/package/theme/process-designer.scss +++ b/src/components/bpmnProcessDesigner/package/theme/process-designer.scss @@ -1,6 +1,4 @@ @use 'bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css'; -@use 'bpmn-js-token-simulation/assets/css/font-awesome.min.css'; -@use 'bpmn-js-token-simulation/assets/css/normalize.css'; // 边框被 token-simulation 样式覆盖了 .djs-palette { @@ -97,12 +95,12 @@ box-sizing: border-box; } } - svg { - width: 100%; - height: 100%; - min-height: 100%; - overflow: hidden; - } + // svg { + // width: 100%; + // height: 100%; + // min-height: 100%; + // overflow: hidden; + // } } } diff --git a/src/directives/permission/hasPermi.ts b/src/directives/permission/hasPermi.ts index 931f44b3..02e2fbc7 100644 --- a/src/directives/permission/hasPermi.ts +++ b/src/directives/permission/hasPermi.ts @@ -5,18 +5,10 @@ const { t } = useI18n() // 国际化 export function hasPermi(app: App) { app.directive('hasPermi', (el, binding) => { - const { wsCache } = useCache() const { value } = binding - const all_permission = '*:*:*' - const userInfo = wsCache.get(CACHE_KEY.USER) - const permissions = userInfo?.permissions || [] if (value && value instanceof Array && value.length > 0) { - const permissionFlag = value - - const hasPermissions = permissions.some((permission: string) => { - return all_permission === permission || permissionFlag.includes(permission) - }) + const hasPermissions = hasPermission(value) if (!hasPermissions) { el.parentNode && el.parentNode.removeChild(el) @@ -26,3 +18,14 @@ export function hasPermi(app: App) { } }) } + +export const hasPermission = (permission: string[]) => { + const { wsCache } = useCache() + const all_permission = '*:*:*' + const userInfo = wsCache.get(CACHE_KEY.USER) + const permissions = userInfo?.permissions || [] + + return permissions.some((p: string) => { + return all_permission === p || permission.includes(p) + }) +} \ No newline at end of file diff --git a/src/layout/components/Footer/src/Footer.vue b/src/layout/components/Footer/src/Footer.vue index 62302fca..98ce7e56 100644 --- a/src/layout/components/Footer/src/Footer.vue +++ b/src/layout/components/Footer/src/Footer.vue @@ -12,6 +12,9 @@ const prefixCls = getPrefixCls('footer') const appStore = useAppStore() const title = computed(() => appStore.getTitle) + +// 添加当前年份计算属性 +const currentYear = computed(() => new Date().getFullYear()) diff --git a/src/locales/en.ts b/src/locales/en.ts index 6562c9b7..505cfd80 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -140,7 +140,10 @@ export default { btnQRCode: 'QR code sign in', qrcode: 'Scan the QR code to log in', btnRegister: 'Sign up', - SmsSendMsg: 'code has been sent' + SmsSendMsg: 'code has been sent', + resetPassword: "Reset Password", + resetPasswordSuccess: "Reset Password Success", + invalidTenantName:"Invalid Tenant Name" }, captcha: { verification: 'Please complete security verification', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index b9deb3f2..130d5652 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -141,7 +141,10 @@ export default { btnQRCode: '二维码登录', qrcode: '扫描二维码登录', btnRegister: '注册', - SmsSendMsg: '验证码已发送' + SmsSendMsg: '验证码已发送', + resetPassword: "重置密码", + resetPasswordSuccess: "重置密码成功", + invalidTenantName: "无效的租户名称" }, captcha: { verification: '请完成安全验证', diff --git a/src/utils/routerHelper.ts b/src/utils/routerHelper.ts index b65f93a0..f9f95c43 100644 --- a/src/utils/routerHelper.ts +++ b/src/utils/routerHelper.ts @@ -73,7 +73,7 @@ export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecord noCache: !route.keepAlive, alwaysShow: route.children && - route.children.length === 1 && + route.children.length > 0 && (route.alwaysShow !== undefined ? route.alwaysShow : true) } as any // 特殊逻辑:如果后端配置的 MenuDO.component 包含 ?,则表示需要传递参数 @@ -100,7 +100,6 @@ export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecord //处理顶级非目录路由 if (!route.children && route.parentId == 0 && route.component) { data.component = Layout - data.meta = {} data.name = toCamelCase(route.path, true) + 'Parent' data.redirect = '' meta.alwaysShow = true diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index ff6f068a..b2ff3809 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -59,6 +59,8 @@ + + @@ -73,7 +75,7 @@ import { useAppStore } from '@/store/modules/app' import { ThemeSwitch } from '@/layout/components/ThemeSwitch' import { LocaleDropdown } from '@/layout/components/LocaleDropdown' -import { LoginForm, MobileForm, QrCodeForm, RegisterForm, SSOLoginVue } from './components' +import { LoginForm, MobileForm, QrCodeForm, RegisterForm, SSOLoginVue, ForgetPasswordForm } from './components' defineOptions({ name: 'Login' }) diff --git a/src/views/Login/components/ForgetPasswordForm.vue b/src/views/Login/components/ForgetPasswordForm.vue new file mode 100644 index 00000000..0b6c56a7 --- /dev/null +++ b/src/views/Login/components/ForgetPasswordForm.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index 21ecd824..193f4781 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -59,7 +59,13 @@ - {{ t('login.forgetPassword') }} + + {{ t('login.forgetPassword') }} + diff --git a/src/views/Login/components/index.ts b/src/views/Login/components/index.ts index 204ad73d..7c42415c 100644 --- a/src/views/Login/components/index.ts +++ b/src/views/Login/components/index.ts @@ -4,5 +4,6 @@ import LoginFormTitle from './LoginFormTitle.vue' import RegisterForm from './RegisterForm.vue' import QrCodeForm from './QrCodeForm.vue' import SSOLoginVue from './SSOLogin.vue' +import ForgetPasswordForm from './ForgetPasswordForm.vue' -export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue } +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue, ForgetPasswordForm } diff --git a/src/views/infra/file/index.vue b/src/views/infra/file/index.vue index 3fcda6e8..e67ad51b 100644 --- a/src/views/infra/file/index.vue +++ b/src/views/infra/file/index.vue @@ -95,6 +95,9 @@ />