From 873ecb949b4df1d93989d95f30311a3a20d637dd Mon Sep 17 00:00:00 2001 From: aihe <961836564@qq.com> Date: Wed, 28 Feb 2024 17:40:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E8=AF=95=E3=80=81?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0=E3=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=8A=B6=E6=80=81=E7=BC=93=E5=AD=98=20?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 8 +++- common/api/index.js | 7 +++ common/{api.js => api/url.js} | 1 + common/api/user.js | 10 +++++ common/request.js | 13 +++--- common/untool.js | 5 +++ common/upload.js | 4 +- pages/login/login.vue | 14 ++++-- pages/tabBar/home/home.vue | 14 ++++-- pages/tabBar/mine/mine.vue | 18 ++++++-- session/index.js | 6 +-- store/actionKey.js | 5 +++ store/index.js | 4 +- store/modules/user.js | 83 +++++++++++++++++++++++++++++++++++ 14 files changed, 167 insertions(+), 25 deletions(-) create mode 100644 common/api/index.js rename common/{api.js => api/url.js} (99%) create mode 100644 common/api/user.js create mode 100644 store/actionKey.js create mode 100644 store/modules/user.js diff --git a/App.vue b/App.vue index d932c05..2c0b3c2 100644 --- a/App.vue +++ b/App.vue @@ -6,12 +6,18 @@ version } from './package.json' import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update'; - + import { getSessionXToken } from "@/session" + import { USERKEY } from "@/store/actionKey" + export default { globalData: { }, onLaunch: function() { + const xToken = getSessionXToken() + // 登录认证 + this.$store.dispatch(USERKEY.GETUSERINFO) + // #ifdef H5 console.log( `%c hello uniapp %c v${version} `, diff --git a/common/api/index.js b/common/api/index.js new file mode 100644 index 0000000..0f42eb5 --- /dev/null +++ b/common/api/index.js @@ -0,0 +1,7 @@ +import apiUrls, { host } from "./url" +export * from "./user" + +export { + apiUrls, + host +} \ No newline at end of file diff --git a/common/api.js b/common/api/url.js similarity index 99% rename from common/api.js rename to common/api/url.js index f71beb6..e82b2bc 100644 --- a/common/api.js +++ b/common/api/url.js @@ -5,3 +5,4 @@ export default { loginByApp: `/loginByApp`, getInfoByApp: `/getInfoByApp` } + diff --git a/common/api/user.js b/common/api/user.js new file mode 100644 index 0000000..964a8b4 --- /dev/null +++ b/common/api/user.js @@ -0,0 +1,10 @@ +import { corePost } from '@/common/request' +import url from "./url" + +export const loginByApp = (data = {})=> { + return corePost(url.loginByApp, data) +} + +export const getInfoByApp = (data = {})=> { + return corePost(url.getInfoByApp, data, {}, 'GET') +} \ No newline at end of file diff --git a/common/request.js b/common/request.js index 63dcd88..95f08d4 100644 --- a/common/request.js +++ b/common/request.js @@ -7,9 +7,10 @@ import { import { host } from "./api" -const corePostBase = (url, reqParams, options = {}) => { - - const xToken = "" +import { getSessionXToken } from "@/session" +const corePostBase = (url, reqParams, options = {}, methodType = "POST") => { + const xToken = getSessionXToken() + return new Promise((resolve, reject) => { uni.request({ url: `${host}${url}`, @@ -18,7 +19,7 @@ const corePostBase = (url, reqParams, options = {}) => { "X-Token": xToken, ...options }, - method: 'POST', + method: methodType, success: (res) => { resolve(res) }, @@ -31,14 +32,14 @@ const corePostBase = (url, reqParams, options = {}) => { const BaseParam = {} // 请求处理 -let corePost = function(url, params = {}, options = {}) { +let corePost = function(url, params = {}, options = {}, methodType) { // 统一把emo转unicode // emoUnicode(params) const reqParams = { ...BaseParam, ...params, } - return dealRequest(corePostBase(url, reqParams, options)).then(res => { + return dealRequest(corePostBase(url, reqParams, options, methodType)).then(res => { // 解析unicode // emoUnicode(res, 2) return res diff --git a/common/untool.js b/common/untool.js index e842817..56389a2 100644 --- a/common/untool.js +++ b/common/untool.js @@ -62,6 +62,10 @@ const showLoading = ()=> { }); } +const hideLoading = ()=> { + uni.hideLoading(); +} + const scanCode = ()=> { return new Promise((resolve, reject)=> { uni.scanCode({ @@ -106,6 +110,7 @@ export { setClipboardData, confirmModal, showLoading, + hideLoading, showToast, scanCode, makePhoneCall, diff --git a/common/upload.js b/common/upload.js index b388ac2..2319c87 100644 --- a/common/upload.js +++ b/common/upload.js @@ -1,5 +1,5 @@ import { handleResponse } from './manageServer.js' -import apiConfig from './api.js' //接口配置 +import { apiUrls } from './api' //接口配置 import { showToast } from "./untool" @@ -33,7 +33,7 @@ const chooseFile = function (action = 'chooseImage', opt = {}) { const doRequest = function (file) { return new Promise((resolve, reject) => { uni.uploadFile({ - url: `${apiConfig.uploadFile}`, + url: `${apiUrls.uploadFile}`, fileType: 'image', // TODO filePath: file, name: 'file', diff --git a/pages/login/login.vue b/pages/login/login.vue index 9cd45d2..8ab3909 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -42,7 +42,9 @@ diff --git a/session/index.js b/session/index.js index 8e440f3..af54f12 100644 --- a/session/index.js +++ b/session/index.js @@ -5,13 +5,13 @@ export const setSessionXToken = (val = '')=> { } export const getSessionXToken = ()=> { - uni.getStorageSync(XTOKEN_KEY) + return uni.getStorageSync(XTOKEN_KEY) || '' } export const setSessionUserInfo = (val = {})=> { uni.setStorageSync(USERINFO_KEY, val) } -export const getSessionXToken = ()=> { - uni.getStorageSync(USERINFO_KEY,) +export const getSessionUserInfo = ()=> { + return uni.getStorageSync(USERINFO_KEY) || {} } \ No newline at end of file diff --git a/store/actionKey.js b/store/actionKey.js new file mode 100644 index 0000000..9178910 --- /dev/null +++ b/store/actionKey.js @@ -0,0 +1,5 @@ +export const USERKEY = { + LOGIN: "LOGIN", + GETUSERINFO: "GETUSERINFO", + LOGOUT: "LOGOUT", +} \ No newline at end of file diff --git a/store/index.js b/store/index.js index 39f4741..5c2551f 100644 --- a/store/index.js +++ b/store/index.js @@ -74,8 +74,8 @@ const store = createStore({ } }, getters: { - currentColor(state) { - return state.colorList[state.colorIndex] + userInfo: (state)=> { + return state.user?.info || {} } }, actions: { diff --git a/store/modules/user.js b/store/modules/user.js new file mode 100644 index 0000000..4fb353c --- /dev/null +++ b/store/modules/user.js @@ -0,0 +1,83 @@ +import { USERKEY } from "../actionKey" +import { + setSessionXToken, + getSessionXToken, + setSessionUserInfo, + getSessionUserInfo +} from "@/session" +import { loginByApp, getInfoByApp } from "@/common/api" +import { goto } from "@/common/untool" + +export default { + state: { + info: getSessionUserInfo(), + token: getSessionXToken(), + }, + mutations: { + [USERKEY.LOGIN](state, provider) { + const { + token, + info + } = provider + state.token = provider + }, + [USERKEY.GETUSERINFO](state, provider) { + state.info = provider + }, + [USERKEY.LOGOUT](state) { + state.token = ''; + state.info = {} + }, + }, + getters: { + // packInfo(state) { + // return state.user + // } + }, + actions: { + async [USERKEY.LOGIN]({ + dispatch, + commit, + state, + rootState + }, options) { + let token = state.token + const resLgn = await loginByApp(options) + token = resLgn.token + setSessionXToken(token) + + commit(USERKEY.LOGIN, token) + }, + async [USERKEY.LOGOUT]({ + dispatch, + commit, + state, + rootState + }, options) { + setSessionUserInfo({}) + setSessionXToken('') + + commit(USERKEY.LOGOUT) + }, + async [USERKEY.GETUSERINFO]({ + dispatch, + commit, + state, + rootState + }, options) { + if(!state.token) { + goto("login/login", 1) + throw new Error('缺少token') + } + + const resInfo = await getInfoByApp() + const info = { + ...resInfo.user, + roles: resInfo.user, + permissions: resInfo.permissions + } + commit(USERKEY.GETUSERINFO, info) + }, + + } +} \ No newline at end of file