diff --git a/package.json b/package.json index 9061d69..a1ca637 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "axios": "^1.6.8", "dayjs": "^1.11.11", "echarts": "^5.5.1", + "el-table-infinite-scroll": "3", "element-plus": "^2.7.2", "nprogress": "^0.2.0", "path-browserify": "^1.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f388d2c..8b63a31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: echarts: specifier: ^5.5.1 version: 5.5.1 + el-table-infinite-scroll: + specifier: '3' + version: 3.0.6(typescript@5.4.5) element-plus: specifier: ^2.7.2 version: 2.7.2(vue@3.4.27(typescript@5.4.5)) @@ -1198,6 +1201,9 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -1397,6 +1403,9 @@ packages: echarts@5.5.1: resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} + el-table-infinite-scroll@3.0.6: + resolution: {integrity: sha512-rdrEBcSMYpkD0s0jl28KcGZpiIbWzVR2OAf7hBB+c+c08G89jb9d6rOn+y2DuhE1iI1C0pEOlC5/lrP3QceOXg==} + electron-to-chromium@1.4.763: resolution: {integrity: sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ==} @@ -4629,6 +4638,8 @@ snapshots: copy-descriptor@0.1.1: {} + core-js@3.39.0: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -4838,6 +4849,15 @@ snapshots: tslib: 2.3.0 zrender: 5.6.0 + el-table-infinite-scroll@3.0.6(typescript@5.4.5): + dependencies: + core-js: 3.39.0 + element-plus: 2.7.2(vue@3.4.27(typescript@5.4.5)) + vue: 3.4.27(typescript@5.4.5) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript + electron-to-chromium@1.4.763: {} element-plus@2.7.2(vue@3.4.27(typescript@5.4.5)): diff --git a/src/api/System/user.ts b/src/api/System/user.ts index 987dac8..d47182f 100644 --- a/src/api/System/user.ts +++ b/src/api/System/user.ts @@ -1,4 +1,10 @@ -import { loginDataType, userInfoRepType, userPasswordType, userType } from '@/types/user'; +import { + loginDataType, + userInfoRepType, + userInfoType, + userPasswordType, + userType, +} from '@/types/user'; import http from '@/utils/request'; // api接口 @@ -6,6 +12,7 @@ const api = { login: '/admin/user/login', // 用户登录接口 userPassword: '/admin/user/password', // 用户修改密码 userGet: '/admin/user/get', // 用户详情 + userInfo: '/admin/user/info', // 用户信息 }; /** @@ -38,3 +45,11 @@ export function postUserPasswordAPI(data: userPasswordType) { export function getUserGetAPI(data: { id: number | string }) { return http.postParams(api.userGet, data); } + +/** + * 用户信息 + * @return 返回请求用户信息接口的结果 + */ +export function getUserInfoAPI() { + return http.postParams(api.userInfo); +} diff --git a/src/assets/icons/Add.svg b/src/assets/icons/Add.svg new file mode 100644 index 0000000..38d10b6 --- /dev/null +++ b/src/assets/icons/Add.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/BoatList.svg b/src/assets/icons/BoatList.svg new file mode 100644 index 0000000..0e897d0 --- /dev/null +++ b/src/assets/icons/BoatList.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/Export.svg b/src/assets/icons/Export.svg new file mode 100644 index 0000000..6ac932f --- /dev/null +++ b/src/assets/icons/Export.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/return.svg b/src/assets/icons/return.svg new file mode 100644 index 0000000..8f95500 --- /dev/null +++ b/src/assets/icons/return.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/user.svg b/src/assets/icons/user.svg index 0ba0716..1b959cd 100644 --- a/src/assets/icons/user.svg +++ b/src/assets/icons/user.svg @@ -1 +1,6 @@ - \ No newline at end of file + + + + + + diff --git a/src/assets/images/ad.png b/src/assets/images/ad.png new file mode 100644 index 0000000..17f58f4 Binary files /dev/null and b/src/assets/images/ad.png differ diff --git a/src/assets/images/erCode.svg b/src/assets/images/erCode.svg new file mode 100644 index 0000000..d577d21 --- /dev/null +++ b/src/assets/images/erCode.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/layouts/Header/index.vue b/src/layouts/Header/index.vue index ee120b3..fba16dd 100644 --- a/src/layouts/Header/index.vue +++ b/src/layouts/Header/index.vue @@ -17,18 +17,12 @@ {{ item.title }} - diff --git a/src/plugins/element.ts b/src/plugins/element.ts index 5f25488..6fd9ca1 100644 --- a/src/plugins/element.ts +++ b/src/plugins/element.ts @@ -1,4 +1,5 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'; // 统一导入el-icon图标 +import ElTableInfiniteScroll from 'el-table-infinite-scroll'; import ElementPlus from 'element-plus'; import { App } from 'vue'; import 'element-plus/dist/index.css'; @@ -9,6 +10,7 @@ import 'element-plus/theme-chalk/dark/css-vars.css'; // 暗黑主题 */ export default (app: App) => { app.use(ElementPlus); + app.use(ElTableInfiniteScroll); // 统一注册el-icon图标 for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component); diff --git a/src/router/index.ts b/src/router/index.ts index afd7f6f..84065c1 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -75,6 +75,12 @@ export const constantRoutes: Array = [ component: () => import('@/views/Help/index.vue'), meta: { title: '帮助' }, }, + { + path: '/user', + name: 'UserCenter', + component: () => import('@/views/User/index.vue'), + meta: { title: '用户' }, + }, { path: '/boat', name: 'BoatInfo', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 90b5520..c979d3c 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -1,15 +1,11 @@ import { defineStore } from 'pinia'; -import { postLoginAPI } from '@/api/System/user'; +import { getUserInfoAPI, postLoginAPI } from '@/api/System/user'; import { router } from '@/router'; -import { menuListType } from '@/types/menu'; -import { roleResultType } from '@/types/role'; import { loginDataType, userInfoType } from '@/types/user'; interface userStateType { token: string; userInfo: userInfoType | {}; - roles: roleResultType[]; - menus: menuListType[]; routeName: string; } @@ -21,8 +17,6 @@ export const useUserStore = defineStore({ state: (): userStateType => ({ token: '', // 登录token userInfo: {}, // 用户信息 - roles: [], // 权限角色 - menus: [], // 菜单 routeName: '', // 当前页面的 router name,用来做按钮权限筛选 }), @@ -33,6 +27,11 @@ export const useUserStore = defineStore({ this.token = value; }, + // 设置用户信息 + setUserInfo(value: userInfoType | {}) { + this.userInfo = value; + }, + /** * 用户登录 */ @@ -42,6 +41,8 @@ export const useUserStore = defineStore({ try { const { data } = await postLoginAPI({ username: username.trim(), password: password }); this.setToken(data.accessToken); // 保存用户token + const { data: userInfoData } = await getUserInfoAPI(); + this.setUserInfo(userInfoData); resolve(); } catch (error) { reject(error); diff --git a/src/types/user.ts b/src/types/user.ts index a9a8555..48a37f5 100644 --- a/src/types/user.ts +++ b/src/types/user.ts @@ -23,15 +23,22 @@ export interface userInfoRepType { * 用户信息类型 */ export interface userInfoType { - password: string; - id: number; + id: string; + nickname: string; username: string; - phone: string; - email: string; - userType: number; - status: number; - createtime: string; - updatetime: string; + tenantId: string; + auths: any[]; + avatar: string; + deptId: string; + dataScopes: any[]; + pkgs: any[]; + token: string; + mini: boolean; + openId: string; + enterpriseId: string | number; + enterpriseName: string; + wharfId: string; + wharfName: string | number; } /** diff --git a/src/views/ApiManage/components/ApiDialog.vue b/src/views/ApiManage/components/ApiDialog.vue index 13b0ec0..49087b6 100644 --- a/src/views/ApiManage/components/ApiDialog.vue +++ b/src/views/ApiManage/components/ApiDialog.vue @@ -1,33 +1,26 @@ diff --git a/src/views/ApiManage/components/ApiTable.vue b/src/views/ApiManage/components/ApiTable.vue index 21f9c8c..a7e0f0a 100644 --- a/src/views/ApiManage/components/ApiTable.vue +++ b/src/views/ApiManage/components/ApiTable.vue @@ -2,6 +2,7 @@