From 81596b568a718ef22a9dccb8f779c0ae478b0ee8 Mon Sep 17 00:00:00 2001 From: Qiksy Date: Wed, 9 Oct 2024 15:42:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E8=B4=A6=E5=8F=B7=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E7=99=BB=E5=BD=95=E3=80=81=E5=8F=8Ctoken=E5=88=B7?= =?UTF-8?q?=E6=96=B0=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=85=B6=E4=BB=96=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E5=9F=BA=E7=A1=80=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- env/.env | 20 ++- package.json | 1 + pages.config.ts | 40 +++-- pnpm-lock.yaml | 10 ++ src/App.vue | 4 + src/components/fg-tabbar/fg-tabbar.vue | 2 +- src/interceptors/request.ts | 27 +++- src/interceptors/route.ts | 66 ++++++-- src/manifest.json | 4 +- src/pages.json | 63 ++++++-- src/pages/about/about.vue | 37 ----- src/pages/about/components/request.vue | 56 ------- src/pages/about/components/upload.vue | 30 ---- src/pages/colab/index.vue | 22 +++ .../contacts/components/ContactsItem.vue | 41 +++++ src/pages/contacts/index.vue | 113 ++++++++++++++ src/pages/contacts/mock.js | 70 +++++++++ src/pages/index/index.vue | 57 ------- src/pages/login/components/LoginForm.vue | 146 ++++++++++++++++++ src/pages/login/index.vue | 73 +++++++++ src/pages/message/components/MessageItem.vue | 45 ++++++ src/pages/message/index.vue | 40 +++++ src/pages/message/mock.js | 92 +++++++++++ src/pages/my/index.vue | 112 +++++++++++++- src/pages/work/components/AppItems.vue | 38 +++++ src/pages/work/index.vue | 48 ++++++ src/service/login/LoginAPI.ts | 21 +++ src/static/images/avatar1.jpg | Bin 0 -> 7402 bytes src/static/images/avatar2.jpg | Bin 0 -> 4688 bytes src/static/images/avatar3.jpg | Bin 0 -> 6956 bytes src/static/images/avatar4.jpg | Bin 0 -> 6644 bytes src/static/images/avatar5.jpg | Bin 0 -> 7029 bytes src/static/images/contacts.png | Bin 0 -> 3518 bytes src/static/images/empty.png | Bin 0 -> 19961 bytes src/static/images/login-bg.png | Bin 0 -> 70194 bytes src/store/user.ts | 69 +++++++-- src/style/index.scss | 4 + src/types/system.d.ts | 20 +++ src/types/uni-pages.d.ts | 9 +- src/utils/auth.ts | 37 +++++ src/utils/common.ts | 28 ++++ src/utils/errorCode.ts | 7 + src/utils/http.ts | 138 ++++++++++++++--- src/utils/index.ts | 8 +- 44 files changed, 1321 insertions(+), 277 deletions(-) delete mode 100644 src/pages/about/about.vue delete mode 100644 src/pages/about/components/request.vue delete mode 100644 src/pages/about/components/upload.vue create mode 100644 src/pages/colab/index.vue create mode 100644 src/pages/contacts/components/ContactsItem.vue create mode 100644 src/pages/contacts/index.vue create mode 100644 src/pages/contacts/mock.js delete mode 100644 src/pages/index/index.vue create mode 100644 src/pages/login/components/LoginForm.vue create mode 100644 src/pages/login/index.vue create mode 100644 src/pages/message/components/MessageItem.vue create mode 100644 src/pages/message/index.vue create mode 100644 src/pages/message/mock.js create mode 100644 src/pages/work/components/AppItems.vue create mode 100644 src/pages/work/index.vue create mode 100644 src/service/login/LoginAPI.ts create mode 100644 src/static/images/avatar1.jpg create mode 100644 src/static/images/avatar2.jpg create mode 100644 src/static/images/avatar3.jpg create mode 100644 src/static/images/avatar4.jpg create mode 100644 src/static/images/avatar5.jpg create mode 100644 src/static/images/contacts.png create mode 100644 src/static/images/empty.png create mode 100644 src/static/images/login-bg.png create mode 100644 src/types/system.d.ts create mode 100644 src/utils/auth.ts create mode 100644 src/utils/common.ts create mode 100644 src/utils/errorCode.ts diff --git a/env/.env b/env/.env index 03c7ecf..eb594ff 100644 --- a/env/.env +++ b/env/.env @@ -1,15 +1,25 @@ -VITE_APP_TITLE = 'unibest' +VITE_APP_TITLE = 'ruoyi-vue-pro' VITE_APP_PORT = 9000 VITE_UNI_APPID = 'H57F2ACE4' -VITE_WX_APPID = 'wxa2abb91f64032a2b' +VITE_WX_APPID = 'wx90bcb2127c1d8720' # h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base VITE_APP_PUBLIC_BASE=/unibest/ -VITE_SERVER_BASEURL = 'https://ukw0y1.laf.run' -VITE_UPLOAD_BASEURL = 'https://ukw0y1.laf.run/upload' +VITE_SERVER_BASEURL = 'http://localhost:48080/admin-api' +VITE_UPLOAD_BASEURL = 'http://localhost:48080/upload' # h5是否需要配置代理 VITE_APP_PROXY=false -VITE_APP_PROXY_PREFIX = '/api' +VITE_APP_PROXY_PREFIX = '/admin-api' + + +# 租户开关 +VITE_APP_TENANT_ENABLE=true +# 验证码的开关 +VITE_APP_CAPTCHA_ENABLE=true +# 默认账户密码 +VITE_APP_DEFAULT_LOGIN_TENANT = 芋道源码 +VITE_APP_DEFAULT_LOGIN_USERNAME = admin +VITE_APP_DEFAULT_LOGIN_PASSWORD = admin123 \ No newline at end of file diff --git a/package.json b/package.json index 7d8b8da..04106a1 100644 --- a/package.json +++ b/package.json @@ -107,6 +107,7 @@ "@esbuild/darwin-arm64": "0.20.2", "@esbuild/darwin-x64": "0.20.2", "@iconify-json/carbon": "^1.1.35", + "@iconify-json/ic": "^1.2.1", "@rollup/rollup-darwin-x64": "^4.18.0", "@types/node": "^20.14.2", "@types/wechat-miniprogram": "^3.4.7", diff --git a/pages.config.ts b/pages.config.ts index c84a271..bd75c40 100644 --- a/pages.config.ts +++ b/pages.config.ts @@ -30,28 +30,34 @@ export default defineUniPages({ list: [ // 注意tabbar路由需要使用 layout:tabbar 布局 { - pagePath: 'pages/index/index', - text: '首页', - icon: 'home', - iconType: 'wot', - }, - { - pagePath: 'pages/about/about', - text: '关于', - icon: 'i-carbon-code', + pagePath: 'pages/message/index', + text: '消息', + icon: 'i-ic-outline-message', + iconType: 'unocss', + }, + { + pagePath: 'pages/colab/index', + text: '协作', + icon: 'i-ic-outline-handshake', + iconType: 'unocss', + }, + { + pagePath: 'pages/work/index', + text: '工作台', + icon: 'i-ic-baseline-apps', + iconType: 'unocss', + }, + { + pagePath: 'pages/contacts/index', + text: '通讯录', + icon: 'i-ic-baseline-contact-page', iconType: 'unocss', }, - // { - // pagePath: 'pages/my/index', - // text: '我的', - // icon: '/static/logo.svg', - // iconType: 'local', - // }, { pagePath: 'pages/my/index', text: '我的', - icon: 'iconfont icon-my', - iconType: 'iconfont', + icon: 'i-ic-baseline-person', + iconType: 'unocss', }, ], }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b40ecd..576f4d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,9 @@ importers: '@iconify-json/carbon': specifier: ^1.1.35 version: 1.1.35 + '@iconify-json/ic': + specifier: ^1.2.1 + version: 1.2.1 '@rollup/rollup-darwin-x64': specifier: ^4.18.0 version: 4.18.0 @@ -1185,6 +1188,9 @@ packages: '@iconify-json/carbon@1.1.35': resolution: {integrity: sha512-zKqioWceqFRiLJvxpjcCpVP3j2YcokYshlbwSAHBhOih5XNUymUS3hm1kpV4KljMI1xWH96UcozHaaf6x4YzdA==} + '@iconify-json/ic@1.2.1': + resolution: {integrity: sha512-UjL/bjJP/T5EV881+hTzcfTKVo0KEUjhnMiJcLtPzNgPtU2KZZmRx8BSKKR61H4CN/5FTEbyawGyG0aEt3SwGQ==} + '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -6887,6 +6893,10 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify-json/ic@1.2.1': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/types@2.0.0': {} '@iconify/utils@2.1.24': diff --git a/src/App.vue b/src/App.vue index d0dface..21c41bb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,6 +13,10 @@ onHide(() => { diff --git a/src/pages/about/components/request.vue b/src/pages/about/components/request.vue deleted file mode 100644 index 89a656d..0000000 --- a/src/pages/about/components/request.vue +++ /dev/null @@ -1,56 +0,0 @@ - -{ - layout: 'demo', - style: { - navigationBarTitleText: '请求', - }, -} - - - - - diff --git a/src/pages/about/components/upload.vue b/src/pages/about/components/upload.vue deleted file mode 100644 index 07f81f5..0000000 --- a/src/pages/about/components/upload.vue +++ /dev/null @@ -1,30 +0,0 @@ - -{ - layout: 'default', - style: { - navigationBarTitleText: '上传-状态一体化', - }, -} - - - - - - - diff --git a/src/pages/colab/index.vue b/src/pages/colab/index.vue new file mode 100644 index 0000000..9437be7 --- /dev/null +++ b/src/pages/colab/index.vue @@ -0,0 +1,22 @@ + +{ + layout: 'tabbar', + style: { + navigationBarTitleText: '协作', + }, +} + + + + + + + diff --git a/src/pages/contacts/components/ContactsItem.vue b/src/pages/contacts/components/ContactsItem.vue new file mode 100644 index 0000000..a4246a9 --- /dev/null +++ b/src/pages/contacts/components/ContactsItem.vue @@ -0,0 +1,41 @@ + + + + + + diff --git a/src/pages/contacts/index.vue b/src/pages/contacts/index.vue new file mode 100644 index 0000000..7e5fe60 --- /dev/null +++ b/src/pages/contacts/index.vue @@ -0,0 +1,113 @@ + +{ + layout: 'tabbar', + style: { + navigationStyle: 'custom', + navigationBarTitleText: '通讯录', + }, +} + + + + + + + diff --git a/src/pages/contacts/mock.js b/src/pages/contacts/mock.js new file mode 100644 index 0000000..1896f17 --- /dev/null +++ b/src/pages/contacts/mock.js @@ -0,0 +1,70 @@ +export default [ + { + id: 1, + name: '芋道集团', + isLeaf: false, + children: [ + { + id: 11, + parentId: 1, + name: 'IT中心', + isLeaf: false, + children: [ + { + id: 111, + parentId: 11, + name: '马青楷', + post: 'CTO', + avatar: '/static/images/avatar3.jpg', + isLeaf: true, + }, + { + id: 112, + parentId: 11, + name: '王伟', + post: '前端开发', + avatar: '/static/images/avatar2.jpg', + isLeaf: true, + }, + { + id: 113, + parentId: 11, + name: '王博', + post: '技术主管', + avatar: '/static/images/avatar1.jpg', + isLeaf: true, + }, + ], + }, + { + id: 12, + parentId: 1, + name: '行政部门', + isLeaf: true, + }, + ], + }, + { + id: 2, + name: '中软集团', + isLeaf: false, + children: [ + { + id: 21, + parentId: 2, + name: '中软IT', + isLeaf: false, + children: [ + { + id: 211, + parentId: 21, + name: '马青楷', + post: 'CTO', + isLeaf: true, + avatar: '/static/images/avatar3.jpg', + }, + ], + }, + ], + }, +] diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue deleted file mode 100644 index 893ed8f..0000000 --- a/src/pages/index/index.vue +++ /dev/null @@ -1,57 +0,0 @@ - - -{ - layout: 'tabbar', - style: { - navigationStyle: 'custom', - navigationBarTitleText: '首页', - }, -} - - - - - - diff --git a/src/pages/login/components/LoginForm.vue b/src/pages/login/components/LoginForm.vue new file mode 100644 index 0000000..50b115c --- /dev/null +++ b/src/pages/login/components/LoginForm.vue @@ -0,0 +1,146 @@ + + + + diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue new file mode 100644 index 0000000..fd4deba --- /dev/null +++ b/src/pages/login/index.vue @@ -0,0 +1,73 @@ + +{ + style: { + navigationBarTitleText: '登录页面', + }, +} + + + + + + + diff --git a/src/pages/message/components/MessageItem.vue b/src/pages/message/components/MessageItem.vue new file mode 100644 index 0000000..a1ad1fe --- /dev/null +++ b/src/pages/message/components/MessageItem.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/src/pages/message/index.vue b/src/pages/message/index.vue new file mode 100644 index 0000000..edc77e5 --- /dev/null +++ b/src/pages/message/index.vue @@ -0,0 +1,40 @@ + +{ + layout: 'tabbar', + style: { + navigationBarTitleText: '消息', + }, +} + + + + + + + diff --git a/src/pages/message/mock.js b/src/pages/message/mock.js new file mode 100644 index 0000000..6589646 --- /dev/null +++ b/src/pages/message/mock.js @@ -0,0 +1,92 @@ +export default [ + { + title: 'IT中心工作群', + content: '今天下午2点到5点,开部门会议,请各位提前准备好汇报材料。', + time: '昨天 15:30', + avatar: '/static/images/avatar1.jpg', + }, + { + title: '产品设计讨论组', + content: '关于新功能的设计稿,大家有什么建议可以在群里提出来。', + time: '昨天 18:45', + avatar: '/static/images/avatar2.jpg', + }, + { + title: '前端开发小组', + content: '明天开始进行项目代码review,请各位准备好自己的代码。', + time: '今天 09:00', + avatar: '/static/images/avatar3.jpg', + }, + { + title: '公司年会筹备组', + content: '年会节目征集开始了,欢迎大家积极报名参加!', + time: '今天 10:20', + avatar: '/static/images/avatar4.jpg', + }, + { + title: '技术分享会', + content: '本周五下午的技术分享会主题是“Vue 3的新特性”,不要错过哦。', + time: '今天 14:30', + avatar: '/static/images/avatar5.jpg', + }, + { + title: 'IT中心工作群', + content: '今天下午2点到5点,开部门会议,请各位提前准备好汇报材料。', + time: '昨天 15:30', + avatar: '/static/images/avatar1.jpg', + }, + { + title: '产品设计讨论组', + content: '关于新功能的设计稿,大家有什么建议可以在群里提出来。', + time: '昨天 18:45', + avatar: '/static/images/avatar2.jpg', + }, + { + title: '前端开发小组', + content: '明天开始进行项目代码review,请各位准备好自己的代码。', + time: '今天 09:00', + avatar: '/static/images/avatar3.jpg', + }, + { + title: '公司年会筹备组', + content: '年会节目征集开始了,欢迎大家积极报名参加!', + time: '今天 10:20', + avatar: '/static/images/avatar4.jpg', + }, + { + title: '技术分享会', + content: '本周五下午的技术分享会主题是“Vue 3的新特性”,不要错过哦。', + time: '今天 14:30', + avatar: '/static/images/avatar5.jpg', + }, + { + title: 'IT中心工作群', + content: '今天下午2点到5点,开部门会议,请各位提前准备好汇报材料。', + time: '昨天 15:30', + avatar: '/static/images/avatar2.jpg', + }, + { + title: '产品设计讨论组', + content: '关于新功能的设计稿,大家有什么建议可以在群里提出来。', + time: '昨天 18:45', + avatar: '/static/images/avatar1.jpg', + }, + { + title: '前端开发小组', + content: '明天开始进行项目代码review,请各位准备好自己的代码。', + time: '今天 09:00', + avatar: '/static/images/avatar3.jpg', + }, + { + title: '公司年会筹备组', + content: '年会节目征集开始了,欢迎大家积极报名参加!', + time: '今天 10:20', + avatar: '/static/images/avatar2.jpg', + }, + { + title: '技术分享会', + content: '本周五下午的技术分享会主题是“Vue 3的新特性”,不要错过哦。', + time: '今天 14:30', + avatar: '/static/images/avatar4.jpg', + }, +] diff --git a/src/pages/my/index.vue b/src/pages/my/index.vue index 169627b..19cb4d1 100644 --- a/src/pages/my/index.vue +++ b/src/pages/my/index.vue @@ -8,11 +8,121 @@ diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue new file mode 100644 index 0000000..47e7ae9 --- /dev/null +++ b/src/pages/work/index.vue @@ -0,0 +1,48 @@ + +{ + layout: 'tabbar', + style: { + navigationBarTitleText: '工作台', + }, +} + + + + + + + diff --git a/src/service/login/LoginAPI.ts b/src/service/login/LoginAPI.ts new file mode 100644 index 0000000..4b844b6 --- /dev/null +++ b/src/service/login/LoginAPI.ts @@ -0,0 +1,21 @@ +import { http, httpGet, httpPost } from '@/utils/http' + +export const login = (data) => { + return http({ + url: '/system/auth/login', + method: 'POST', + data, + }) +} + +export const loginOut = () => { + return httpPost('/system/auth/logout') +} + +export const getInfo = (): Promise => { + return httpGet('/system/auth/get-permission-info') +} + +export const getTenantIdByName = (name: string) => { + return httpGet('/system/tenant/get-id-by-name', { name }) +} diff --git a/src/static/images/avatar1.jpg b/src/static/images/avatar1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d0c8ad3e1b782f85a8d73076e7597c1caa2909b GIT binary patch literal 7402 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 G-~R_lj*Kh- literal 0 HcmV?d00001 diff --git a/src/static/images/avatar2.jpg b/src/static/images/avatar2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62ccbbfff52630c04264de973b8abecfc7494d64 GIT binary patch literal 4688 zcmbW4cT^Nh_Q$KcCo?ci0LctFNzNbwl7r+Rh@@eJAv;7d5FVm}iXtLGMG;X%;TZ^G zKoCWOAWBdKAId{i4Db|DQQ02ZRo|Yo`}>`}f7E>H*1cV~zg2zCoy7->PswW>tgM3E zJX~!ZoNWLE0YJ8Q=ETOqf&j$CCUQOORx#K3`7`mo00u;W1KI$DuoB`|d)j&d)EsQA zmSA%H#!fcxt9ZcOG+|No1qtaxrB0FWCRtsBNpV4<9ia&$^!JkLLaG9xsK z$1sM+T(m%xMR**(#LK_OEU^WT!(w8?&=_9L@nJDxJZ?vMM{*JyWyBffoMa9=1?2&h z<)f2gI4FNanGwSdNdN#t=J^xZtO%5~P$qM|JgiV&0RVv<{tJix!inruv`zr5;^H@Q zIpGnBOl6h|Q`^|sh-uGGiDoAzs=I}-qC&V~Oslw<_>kC*04%*TFALCk+A>j*4YZ97 z4AgZrQ2Bq@e_i|$_1}Sawo4K3+`pe0B;51U_cQmWFRlUrqd8QYy+3`SB>*&T13+Zt zr%(PU0F-P18v1^DA7S2oiAYS0H__BgNlDS*uvr>BL4Vl)8So?WKf^EkY4G;@p&iqj zy*?x>0|@pp0P?yAVCZ}R2{?kTKtImSndk#} zU!Je@)Y8328D0NA{%wHs(J7q331{-$RvunVRuVUv$LKe~8?b-`D1ZS(ffSGf%0M0H z07GC3EPxGg1g^jf_<=yc0udkva6t;#3^G9u$OC)90ZeO40%9)P%sn@#X?EYX6QF4 z4=R94p<_@rbPl=%wL+axKlBiK0=;!wk>)>#B1DpnD z!+YRjxB@-{H^8lMH#`WB!_)8_0uVk#7?DBL5hKJ3aYg)*^#~W)isT|iNCi@hG$S3z zePkSYg?z%`FmwzPqmD7f*kimgEX)SXR?IF;DdrTW0n?7Tk9mTb!F<0}h81#wpaP&EfHQ zQM?-74DX5$!6)K#@Fn;&_!j&<{3QM(fsY_f&>`3o{0XsyEJ6|CG~pWI9$|{GKole@ z5KV}##4zGUVm`5w*i7srP7)VLRFV?OjO0a%BxRC{NwuV#q*2m4K0ZEKK4U(2J`P_7 zUoqeBe7E_Y@O>iF$f{&3asWAryoY>}e4YG|{EnZWUy2)-iX|nGl13?_T%hz(UI`Kf6$PyXLj<=9mI+=G92T6T z(y7{1S85D(7xgr?llq*7rzz5GXkoN$+Hu+q+5{b;%h9dqEc$QsO8QOuBm>7#VmL4& z8F`Gej9$i!5KTx=$VVtus7&ap(6}%ntSIat94(wLd|r4+`13N!WtPj>%XTiSU3PET zyok7ng$P?DSENp4P~@{HQ`AN@N_3xSqv)6zMod-AT`WcHh}ccBSKrYc*zpU8YLugrq1lB~CEmTaBum>fyYNN&AcpY25KC&!)pD@vCEB@$1bl}KCDhww^UD7uTg)ZA*|u7k)_e7 z@kUc#(_eF+W{2iCEq$$MtxBy&+B9uP?JVtP?Z0$XbyzxOIs>}=y0*IMx=p&XdTM%X zy(4-L^y&Jm^|$M{>3=maG~gQ48oV%+Hw-pBWH@ZZFmf~6WpvvZYrM)h-S~>}Cldpc zM3eI-Z%x%rqfAemK3}1mnG1CYJrp{_vSJ-%O@~>86^6ZFo3RVnQ|ryv z7p#9CZWg{j{6&O$L{Y>mjuoerGaG3iSspnbV-yHj^($4Ta3Y+`{(R z=@pe9BppmTI9}{r+*Bf8vbW?*X+-H@*{ZU-LlTE}9-2QKcKF^AizBt=lI3~jpO12m zJ~(D~tf4}&qUbp8c=GXQl|GdnCyY*1SBX{SRee1fdvg4g$Eo&e!|LkO5~uTP;F_eG z7iR*_+&yc3wy9RV_E?>8UEc5D_oUxno(n!Vbl&NF+XbTwwHFmG9;&C;=QcnM8yjXC zBO1q>{F?eNIbLdOHf^rIta16|6`3n#SB0+TUn5=1zP8ws)-rcJ{`#xd@Yad8pteUh z*4!9qcW>{#>2&koBLPvU%O|1ul2t5{aXVL1KoozgZ)F^Ll1@nhQ}X-J$U{w`r+(I^2oxYj8W`p z?wH_M(PN3n6@RGwQ8#Wde)WmQ!=G^8Ue~9_8 zFrWKT^y8^dMxQ!9`+lBUNcn>QQv6lrYx6g!Z=;Jbi;IhIfQ)5WTqqlaS)jcDgaAPV zMsU2o;9s`*2xJ5Jhao5-7<5E1SPajwIP7=B;qZ6@9*-juNhBhX{C9&81i@mkL>!LD zPa=}|DFUcbDBpwr`9ofs{XOr;Y_Sbc324XThCoyRQz3*3Ew-cm2d^^Z*R}^Hkg!Au zhsU5z2k(ElVmUSpC@B z%FHsXOFh+7SXrJ@t2e#x^>%v=y@jN=uEi?VTDzwoOHTVrBIj3pIW#OS(CEyK4_Kcz z*l9s{eD&#BdC$Kj`!CK_l?~wt6yp=9qiN^wGf+(~0eI{>y6WHA;#mFLSvAs!8P?2IdkE zz9g__@8nF$e>FHa7;fF2J9dn3a7la^XAT^ewB{kbei1Aw2ca|H;#sr$mn)_RHV&V9 zSLZ$zc)a(j-Ql!+lR2rxa_y(49KZ6JliH3wulFT3GrCF(>0$&QtmBPjeHjyjS-h=( z!Fjog<%GT~o_k*TDm13&?$O`R|g=FG9}>oayI)JvlA8`H2mT_R`Ay{g@is zfsiZw)jb{;Oy%vBzzAvQZLgZ3F8>J||Gh=CW0#}X26cL{9M?F+NsdOEPNX+wZ0L!0 z2|ZBqkn53}!Gt<6wQg@izd1h0vRlK@u;gQ1~E!%8z%?Cz2Hsji#srVhP9hr+gv@JdB zFGrvDs^)pAr-u0?ZuA{9T^IFn_UKYk1ePx&50D@|ShMinPIOBeFb?4R?~+c~oJok6#DJyzCPX*47_|1{y0 zf$J-^+_{+SYV|MGcBid4quTREUgTe)<0Q zLOPwa$eXqF+*NBG^Bt}~u|6`^G+?^?Ql57$Yv-y`k1NON+hc5+Zmn7CA@10Umy#1h zrJh{j%3kN39&a?QX0L*ml6EXtfACh_)#OAHL#;*it8WW-OU+#17oiVzgPUf2M_Rn! pwgyFJs-Jo*6Wx3O7OcH-!2f{US(l4l9%-2!+myOe_jD~j{0G9zJc9rL literal 0 HcmV?d00001 diff --git a/src/static/images/avatar3.jpg b/src/static/images/avatar3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..898248de808b18bdd0b2b24038e85ae7aaf2e92c GIT binary patch literal 6956 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 QG8geK$cx9n_vFog0L;jnWdHyG literal 0 HcmV?d00001 diff --git a/src/static/images/avatar4.jpg b/src/static/images/avatar4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23d5047917adfa107ca98b55bb4b50321a81e776 GIT binary patch literal 6644 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 VIV7&}QfghfW1Z8eOTyl({{Ygr6;}WN literal 0 HcmV?d00001 diff --git a/src/static/images/avatar5.jpg b/src/static/images/avatar5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..673ffda08c8978e79ece187771def76bbb61575d GIT binary patch literal 7029 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 P|F&%`F&33(gsA@jxTpo! literal 0 HcmV?d00001 diff --git a/src/static/images/login-bg.png b/src/static/images/login-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c749afde6642b94f47e6760d83a0112f4044fdef GIT binary patch literal 70194 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 literal 0 HcmV?d00001 diff --git a/src/store/user.ts b/src/store/user.ts index 82bd873..0c6e902 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -1,35 +1,74 @@ import { defineStore } from 'pinia' import { ref } from 'vue' +import { getAccessToken, removeToken } from '@/utils/auth' +import { getInfo, loginOut } from '@/service/login/LoginAPI' -const initState = { nickname: '', avatar: '' } +const initState = { + permissions: [], + roles: [], + isSetUser: false, + user: { + id: 0, + avatar: '', + nickname: '', + deptId: 0, + }, +} export const useUserStore = defineStore( 'user', () => { - const userInfo = ref({ ...initState }) + // state - const setUserInfo = (val: IUserInfo) => { - userInfo.value = val + const userInfo = ref({ ...initState }) + + // actions methods + const setUserInfoAction = async () => { + if (!getAccessToken()) { + // 获取不到accessToken,直接返回 + resetState() + return + } + + const data = await getInfo() + userInfo.value = { + ...data, + isSetUser: true, + } } - const clearUserInfo = () => { - userInfo.value = { ...initState } + const setUserAvatarAction = async (avatar: string) => { + userInfo.value.user.avatar = avatar } - // 一般没有reset需求,不需要的可以删除 - const reset = () => { - userInfo.value = { ...initState } - } - const isLogined = computed(() => !!userInfo.value.token) + const setUserNicknameAction = async (nickname: string) => { + userInfo.value.user.nickname = nickname + } + + const LogOut = async () => { + await loginOut() + removeToken() + resetState() + } + + const resetState = () => { + console.log('initState', initState) + userInfo.value = initState + console.log('重置userInfo', userInfo.value) + } + + // 暴露到外面的方法 return { userInfo, - setUserInfo, - clearUserInfo, - isLogined, - reset, + setUserInfoAction, + setUserAvatarAction, + setUserNicknameAction, + LogOut, + resetState, } }, { + // 持久化 persist: true, }, ) diff --git a/src/style/index.scss b/src/style/index.scss index 86184d9..4a9f82c 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -15,4 +15,8 @@ page { // 修改按钮背景色 // --wot-button-primary-bg-color: green; + + // + --wot-search-light-bg: #f2f3f7; + --wot-search-input-radius: 5px; } diff --git a/src/types/system.d.ts b/src/types/system.d.ts new file mode 100644 index 0000000..403f1f6 --- /dev/null +++ b/src/types/system.d.ts @@ -0,0 +1,20 @@ +type UserVO = { + id: number + avatar: string + nickname: string + deptId: number +} + +type UserInfoVO = { + // USER 缓存 + permissions: string[] + roles: string[] + isSetUser: boolean + user: UserVO +} + +declare namespace JSX { + interface IntrinsicElements { + block: any // 或者更具体的类型定义 + } +} diff --git a/src/types/uni-pages.d.ts b/src/types/uni-pages.d.ts index f73e4a9..b2589ec 100644 --- a/src/types/uni-pages.d.ts +++ b/src/types/uni-pages.d.ts @@ -4,14 +4,17 @@ // Generated by vite-plugin-uni-pages interface NavigateToOptions { - url: "/pages/index/index" | - "/pages/about/about" | + url: "/pages/work/index" | + "/pages/colab/index" | + "/pages/contacts/index" | + "/pages/login/index" | + "/pages/message/index" | "/pages/my/index"; } interface RedirectToOptions extends NavigateToOptions {} interface SwitchTabOptions { - url: "/pages/index/index" | "/pages/about/about" | "/pages/my/index" + url: "/pages/message/index" | "/pages/colab/index" | "/pages/work/index" | "/pages/contacts/index" | "/pages/my/index" } type ReLaunchOptions = NavigateToOptions | SwitchTabOptions; diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..9799614 --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,37 @@ +const AccessTokenKey = 'ACCESS_TOKEN' +const RefreshTokenKey = 'REFRESH_TOKEN' +const TenantIdKey = 'tenantId' + +// ========== Token 相关 ========== + +// 获取 Token +export function getAccessToken() { + return uni.getStorageSync(AccessTokenKey) +} + +// 获取 RefreshToken +export function getRefreshToken() { + return uni.getStorageSync(RefreshTokenKey) +} + +// 设置 Token +export function setToken(token) { + uni.setStorageSync(AccessTokenKey, token.accessToken) + uni.setStorageSync(RefreshTokenKey, token.refreshToken) +} + +// 移除 Token +export function removeToken() { + uni.removeStorageSync(AccessTokenKey) + uni.removeStorageSync(RefreshTokenKey) +} + +// ========== 租户相关 ========== + +export const getTenantId = () => { + return uni.getStorageSync(TenantIdKey) +} + +export const setTenantId = (username: string) => { + uni.setStorageSync(TenantIdKey, username) +} diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..998061e --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,28 @@ +/** + * 显示模态弹窗 + * @param content 提示的标题 + */ +export function showConfirm(content: string) { + return new Promise((resolve, reject) => { + uni.showModal({ + title: '提示', + content, + cancelText: '取消', + confirmText: '确定', + success: function (res) { + resolve(res) + }, + }) + }) +} + +/** + * 显示消息提示框 + * @param content 提示的标题 + */ +export function toast(content: string) { + uni.showToast({ + title: content, + icon: 'none', + }) +} diff --git a/src/utils/errorCode.ts b/src/utils/errorCode.ts new file mode 100644 index 0000000..abb3409 --- /dev/null +++ b/src/utils/errorCode.ts @@ -0,0 +1,7 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + '500': '服务器错误', + default: '系统未知错误,请反馈给管理员', +} diff --git a/src/utils/http.ts b/src/utils/http.ts index 4e3f38c..edc41c4 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -1,8 +1,28 @@ import { CustomRequestOptions } from '@/interceptors/request' +import { useUserStore } from '@/store' +import { getAccessToken, getRefreshToken, setToken } from '@/utils/auth' +import { showConfirm, toast } from '@/utils/common' +import { getEvnBaseUrl } from '@/utils' +import errorCode from './errorCode' + +/* + 双token刷新说明 + 1. token和tenantId都是在拦截器中赋值 + 2. 后端并不直接更改http statusCode,而是返回一个重新包装后的对象, + 所以不能使用失败回调函数就行判断token是否过期需要重新获取 + 3. 应该在success中,解析res,如果code是401,则说明token过期,需要重新获取 +*/ + +// 是否正在刷新中 +let isRefreshToken = false +// 请求的方法栈 +let requestList = [] +// 请求基准地址 +const baseUrl = getEvnBaseUrl() export const http = (options: CustomRequestOptions) => { // 1. 返回 Promise 对象 - return new Promise>((resolve, reject) => { + return new Promise((resolve, reject) => { uni.request({ ...options, dataType: 'json', @@ -10,25 +30,97 @@ export const http = (options: CustomRequestOptions) => { responseType: 'json', // #endif // 响应成功 - success(res) { - // 状态码 2xx,参考 axios 的设计 - if (res.statusCode >= 200 && res.statusCode < 300) { - // 2.1 提取核心数据 res.data - resolve(res.data as IResData) - } else if (res.statusCode === 401) { - // 401错误 -> 清理用户信息,跳转到登录页 - // userStore.clearUserInfo() - // uni.navigateTo({ url: '/pages/login/login' }) - reject(res) - } else { - // 其他错误 -> 根据后端错误信息轻提示 - !options.hideErrorToast && - uni.showToast({ - icon: 'none', - title: (res.data as IResData).msg || '请求错误', + async success(res) { + const resp = res.data as IResData + const { data, code, msg } = resp + + if (code === 401) { + // 未授权 + const userStore = useUserStore() + + if (!isRefreshToken) { + // 设置为正在刷新 + isRefreshToken = true + + // 1. 如果获取不到刷新令牌,则只能执行登出操作 + if (!getRefreshToken()) { + showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then( + (res: any) => { + if (res.confirm) { + // 清除缓存起来的用户信息 + userStore.LogOut().then((res) => { + uni.reLaunch({ url: '/pages/login/index' }) + }) + } + }, + ) + } + + // 2. 刷新accesstoken + try { + const refreshTokenRes: any = await refreshToken() + if (refreshTokenRes.data.code !== 0) { + // 如果获取不到refresh token,就直接跳转到登录页面 + showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then( + (res: any) => { + if (res.confirm) { + // 清除缓存起来的用户信息 + userStore.LogOut().then((res) => { + uni.reLaunch({ url: '/pages/login/index' }) + }) + } + }, + ) + const rejMsg = '无效的会话,或者会话已过期,请重新登录。' + reject(rejMsg) + } + + // 2.1 刷新成功,则回放队列的请求 + 当前请求 + setToken(refreshTokenRes.data.data) + options.header.Authorization = 'Bearer ' + getAccessToken() + // 将所有的请求方法都进行调用 + requestList.forEach((cb) => { + cb() + }) + // 调用之后就清空 + requestList = [] + + // 到达这里,属于是请求已经失败了,需要重新请求的 + // 所以这里是一个递归调用 + resolve(http(options)) + } catch (e) { + // 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。 + // 2.2 刷新失败,只回放队列的请求 + requestList.forEach((cb) => { + cb() + }) + const rejMsg = '无效的会话,或者会话已过期,请重新登录。' + reject(rejMsg) + } finally { + requestList = [] + isRefreshToken = false + } + } else { + // 添加到队列,等待刷新获取到新的令牌 + return new Promise((resolve) => { + requestList.push(() => { + options.header.Authorization = 'Bearer ' + getAccessToken() + resolve(http(options)) + }) }) - reject(res) + } + } else if (code === 500) { + // 服务器错误 + toast(msg) + reject(errorCode['500']) + } else if (code !== 0) { + // 其他的错误 + // ps:ruoyi-vue-pro 的success 的code,默认是0而不是200 + toast(msg) + reject(code) } + + resolve(data) }, // 响应失败 fail(err) { @@ -78,3 +170,13 @@ export const httpPost = ( http.get = httpGet http.post = httpPost + +const refreshToken = async () => { + return await uni.request({ + method: 'POST', + url: baseUrl + '/system/auth/refresh-token?refreshToken=' + getRefreshToken(), + header: { + 'tenant-id': 1, + }, + }) +} diff --git a/src/utils/index.ts b/src/utils/index.ts index 70131bf..853a739 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -131,16 +131,16 @@ export const getEvnBaseUrl = () => { const { miniProgram: { envVersion }, } = uni.getAccountInfoSync() - + // 开发、体验、正式版 三种不同的小程序都可以配置不同的后端url switch (envVersion) { case 'develop': - baseUrl = 'https://ukw0y1.laf.run' + baseUrl = 'http://localhost:48080/admin-api' break case 'trial': - baseUrl = 'https://ukw0y1.laf.run' + baseUrl = 'http://localhost:48080/admin-api' break case 'release': - baseUrl = 'https://ukw0y1.laf.run' + baseUrl = 'http://localhost:48080/admin-api' break } } From b5ab025fc2bf1f0b7ee9b9ba37074ea38bf37ed6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 14 Oct 2024 20:16:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?code=20review=EF=BC=9A=E5=8F=8C=20token=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- env/.env | 2 +- src/interceptors/route.ts | 12 ++++++------ src/manifest.json | 2 +- src/pages/colab/index.vue | 1 + src/pages/contacts/components/ContactsItem.vue | 4 ++-- src/pages/contacts/index.vue | 1 + src/pages/login/components/LoginForm.vue | 4 ++-- src/pages/login/index.vue | 1 + src/pages/message/components/MessageItem.vue | 1 - src/pages/message/index.vue | 1 + src/pages/work/components/AppItems.vue | 1 - src/pages/work/index.vue | 1 + src/types/system.d.ts | 2 +- src/utils/common.ts | 2 ++ src/utils/http.ts | 11 +++++------ src/utils/index.ts | 2 +- 16 files changed, 26 insertions(+), 22 deletions(-) diff --git a/env/.env b/env/.env index eb594ff..1cfc505 100644 --- a/env/.env +++ b/env/.env @@ -1,4 +1,4 @@ -VITE_APP_TITLE = 'ruoyi-vue-pro' +VITE_APP_TITLE = '芋道管理系统' VITE_APP_PORT = 9000 VITE_UNI_APPID = 'H57F2ACE4' diff --git a/src/interceptors/route.ts b/src/interceptors/route.ts index 016d9fc..252855b 100644 --- a/src/interceptors/route.ts +++ b/src/interceptors/route.ts @@ -6,11 +6,11 @@ * * update 2024-10-09 * 登录之后,会进行页面跳转。在完成页面跳转之前,就需要获取到用户信息 - * 并设置到userStore中。 - * + * 并设置到 userStore 中。 + * * 如何设置当前页面需要校验登录状态? - * 在router块中设置 - * + * 在 router 块中设置 + * * { layout: 'tabbar', @@ -60,10 +60,10 @@ const navigateToInterceptor = { return option } - // 下面的逻辑跟PC端差不多 + // 下面的逻辑跟 PC 端差不多 if (getAccessToken()) { if (path === '/pages/login/index') { - // 这里写死,避免在login页面中设置了needLogin,导致死循环 + // 这里写死,避免在 login 页面中设置了 needLogin,导致死循环 return option } else { // todo 获取字典数据并保存到本地 diff --git a/src/manifest.json b/src/manifest.json index 3a9762f..f7fbc9e 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,5 +1,5 @@ { - "name": "ruoyi-vue-pro", + "name": "芋道管理系统", "appid": "H57F2ACE4", "description": "", "versionName": "1.0.0", diff --git a/src/pages/colab/index.vue b/src/pages/colab/index.vue index 9437be7..5645a48 100644 --- a/src/pages/colab/index.vue +++ b/src/pages/colab/index.vue @@ -1,3 +1,4 @@ + { layout: 'tabbar', diff --git a/src/pages/contacts/components/ContactsItem.vue b/src/pages/contacts/components/ContactsItem.vue index a4246a9..d5d539a 100644 --- a/src/pages/contacts/components/ContactsItem.vue +++ b/src/pages/contacts/components/ContactsItem.vue @@ -1,4 +1,4 @@ - +