接口调试、全局请求参数、数据状态缓存 处理
This commit is contained in:
parent
32bf71d7fe
commit
873ecb949b
8
App.vue
8
App.vue
@ -6,12 +6,18 @@
|
|||||||
version
|
version
|
||||||
} from './package.json'
|
} from './package.json'
|
||||||
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
|
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
|
||||||
|
import { getSessionXToken } from "@/session"
|
||||||
|
import { USERKEY } from "@/store/actionKey"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
globalData: {
|
globalData: {
|
||||||
|
|
||||||
},
|
},
|
||||||
onLaunch: function() {
|
onLaunch: function() {
|
||||||
|
const xToken = getSessionXToken()
|
||||||
|
// 登录认证
|
||||||
|
this.$store.dispatch(USERKEY.GETUSERINFO)
|
||||||
|
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
console.log(
|
console.log(
|
||||||
`%c hello uniapp %c v${version} `,
|
`%c hello uniapp %c v${version} `,
|
||||||
|
|||||||
7
common/api/index.js
Normal file
7
common/api/index.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import apiUrls, { host } from "./url"
|
||||||
|
export * from "./user"
|
||||||
|
|
||||||
|
export {
|
||||||
|
apiUrls,
|
||||||
|
host
|
||||||
|
}
|
||||||
@ -5,3 +5,4 @@ export default {
|
|||||||
loginByApp: `/loginByApp`,
|
loginByApp: `/loginByApp`,
|
||||||
getInfoByApp: `/getInfoByApp`
|
getInfoByApp: `/getInfoByApp`
|
||||||
}
|
}
|
||||||
|
|
||||||
10
common/api/user.js
Normal file
10
common/api/user.js
Normal file
@ -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')
|
||||||
|
}
|
||||||
@ -7,9 +7,10 @@ import {
|
|||||||
import {
|
import {
|
||||||
host
|
host
|
||||||
} from "./api"
|
} from "./api"
|
||||||
const corePostBase = (url, reqParams, options = {}) => {
|
import { getSessionXToken } from "@/session"
|
||||||
|
const corePostBase = (url, reqParams, options = {}, methodType = "POST") => {
|
||||||
const xToken = ""
|
const xToken = getSessionXToken()
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
uni.request({
|
uni.request({
|
||||||
url: `${host}${url}`,
|
url: `${host}${url}`,
|
||||||
@ -18,7 +19,7 @@ const corePostBase = (url, reqParams, options = {}) => {
|
|||||||
"X-Token": xToken,
|
"X-Token": xToken,
|
||||||
...options
|
...options
|
||||||
},
|
},
|
||||||
method: 'POST',
|
method: methodType,
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
resolve(res)
|
resolve(res)
|
||||||
},
|
},
|
||||||
@ -31,14 +32,14 @@ const corePostBase = (url, reqParams, options = {}) => {
|
|||||||
|
|
||||||
const BaseParam = {}
|
const BaseParam = {}
|
||||||
// 请求处理
|
// 请求处理
|
||||||
let corePost = function(url, params = {}, options = {}) {
|
let corePost = function(url, params = {}, options = {}, methodType) {
|
||||||
// 统一把emo转unicode
|
// 统一把emo转unicode
|
||||||
// emoUnicode(params)
|
// emoUnicode(params)
|
||||||
const reqParams = {
|
const reqParams = {
|
||||||
...BaseParam,
|
...BaseParam,
|
||||||
...params,
|
...params,
|
||||||
}
|
}
|
||||||
return dealRequest(corePostBase(url, reqParams, options)).then(res => {
|
return dealRequest(corePostBase(url, reqParams, options, methodType)).then(res => {
|
||||||
// 解析unicode
|
// 解析unicode
|
||||||
// emoUnicode(res, 2)
|
// emoUnicode(res, 2)
|
||||||
return res
|
return res
|
||||||
|
|||||||
@ -62,6 +62,10 @@ const showLoading = ()=> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const hideLoading = ()=> {
|
||||||
|
uni.hideLoading();
|
||||||
|
}
|
||||||
|
|
||||||
const scanCode = ()=> {
|
const scanCode = ()=> {
|
||||||
return new Promise((resolve, reject)=> {
|
return new Promise((resolve, reject)=> {
|
||||||
uni.scanCode({
|
uni.scanCode({
|
||||||
@ -106,6 +110,7 @@ export {
|
|||||||
setClipboardData,
|
setClipboardData,
|
||||||
confirmModal,
|
confirmModal,
|
||||||
showLoading,
|
showLoading,
|
||||||
|
hideLoading,
|
||||||
showToast,
|
showToast,
|
||||||
scanCode,
|
scanCode,
|
||||||
makePhoneCall,
|
makePhoneCall,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { handleResponse } from './manageServer.js'
|
import { handleResponse } from './manageServer.js'
|
||||||
import apiConfig from './api.js' //接口配置
|
import { apiUrls } from './api' //接口配置
|
||||||
import { showToast } from "./untool"
|
import { showToast } from "./untool"
|
||||||
|
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ const chooseFile = function (action = 'chooseImage', opt = {}) {
|
|||||||
const doRequest = function (file) {
|
const doRequest = function (file) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
url: `${apiConfig.uploadFile}`,
|
url: `${apiUrls.uploadFile}`,
|
||||||
fileType: 'image', // TODO
|
fileType: 'image', // TODO
|
||||||
filePath: file,
|
filePath: file,
|
||||||
name: 'file',
|
name: 'file',
|
||||||
|
|||||||
@ -42,7 +42,9 @@
|
|||||||
<script>
|
<script>
|
||||||
import getCdnUrl from "@/common/getCdnUrl"
|
import getCdnUrl from "@/common/getCdnUrl"
|
||||||
import { corePost } from "@/common/request"
|
import { corePost } from "@/common/request"
|
||||||
import apiUrl from "@/common/api"
|
import { USERKEY } from "@/store/actionKey"
|
||||||
|
import { goto, showLoading, hideLoading } from "@/common/untool"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
},
|
},
|
||||||
@ -66,10 +68,14 @@
|
|||||||
const { remberPassport, submitParams } = this
|
const { remberPassport, submitParams } = this
|
||||||
if(remberPassport[0]) {
|
if(remberPassport[0]) {
|
||||||
}
|
}
|
||||||
const res1 = await corePost(apiUrl.loginByApp, submitParams)
|
showLoading()
|
||||||
if(res1.token) {
|
try{
|
||||||
const res2 = await corePost(apiUrl.getInfoByApp, {})
|
await this.$store.dispatch(USERKEY.LOGIN, submitParams)
|
||||||
|
await this.$store.dispatch(USERKEY.GETUSERINFO)
|
||||||
|
goto("tabBar/home/home")
|
||||||
|
}catch(e){
|
||||||
}
|
}
|
||||||
|
hideLoading()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
<view class="com-jianju" style="margin-top: 10rpx;">
|
<view class="com-jianju" style="margin-top: 10rpx;">
|
||||||
<u-row align="center" >
|
<u-row align="center" >
|
||||||
<u-col @click="goto(`login/login`)" span="11">
|
<u-col @click="goto(`tabBar/mine/mine`)" span="11">
|
||||||
<u-row>
|
<u-row>
|
||||||
<u-avatar size="66"></u-avatar>
|
<u-avatar size="66"></u-avatar>
|
||||||
<u-text margin="0 0 0 16rpx" text="快递专员01" color="#fff" size="24"></u-text>
|
<u-text margin="0 0 0 16rpx" :text="userInfo.nickName" color="#fff" size="24"></u-text>
|
||||||
</u-row>
|
</u-row>
|
||||||
</u-col>
|
</u-col>
|
||||||
<u-col span="1" align="end">
|
<u-col span="1" align="end">
|
||||||
<image style="height: 36rpx;width: 44rpx;" :src="getCdnUrl(`home/saoma.png`)"/>
|
<image style="height: 36rpx;width: 44rpx;" :src="userInfo.avatar"/>
|
||||||
</u-col>
|
</u-col>
|
||||||
</u-row>
|
</u-row>
|
||||||
</view>
|
</view>
|
||||||
@ -94,6 +94,11 @@
|
|||||||
import getCdnUrl from "@/common/getCdnUrl"
|
import getCdnUrl from "@/common/getCdnUrl"
|
||||||
import { goto } from "@/common/untool"
|
import { goto } from "@/common/untool"
|
||||||
export default {
|
export default {
|
||||||
|
computed: {
|
||||||
|
userInfo() {
|
||||||
|
return this.$store.getters.userInfo
|
||||||
|
}
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
// hasLeftWin: {
|
// hasLeftWin: {
|
||||||
// type: Boolean
|
// type: Boolean
|
||||||
@ -132,6 +137,9 @@
|
|||||||
// title: '',
|
// title: '',
|
||||||
// path: 'TODO'
|
// path: 'TODO'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getCdnUrl,
|
getCdnUrl,
|
||||||
|
|||||||
@ -12,15 +12,15 @@
|
|||||||
<u-row align="center" justify="between">
|
<u-row align="center" justify="between">
|
||||||
<view>
|
<view>
|
||||||
<u-row>
|
<u-row>
|
||||||
<u-avatar size="120"></u-avatar>
|
<u-avatar size="120" :src="userInfo.avatar"></u-avatar>
|
||||||
<view class="pl-30">
|
<view class="pl-30">
|
||||||
<u-row>
|
<u-row>
|
||||||
<u-text text="张三" color="#fff" size="32" bold="true"></u-text>
|
<u-text :text="userInfo.nickName" color="#fff" size="32" bold="true"></u-text>
|
||||||
<view class="ml-20 clr-wht font-24 pos-rlt" style="padding: 8rpx 12rpx;">南京网点
|
<view class="ml-20 clr-wht font-24 pos-rlt" style="padding: 8rpx 12rpx;">南京网点
|
||||||
<view class="pos-abt-all" style="z-index: 0;background: #FFFFFF;opacity: 0.2;border-radius: 20rpx;"></view>
|
<view class="pos-abt-all" style="z-index: 0;background: #FFFFFF;opacity: 0.2;border-radius: 20rpx;"></view>
|
||||||
</view>
|
</view>
|
||||||
</u-row>
|
</u-row>
|
||||||
<view class="mt-20 clr-wht font-24">13712345678</view>
|
<view class="mt-20 clr-wht font-24">{{userInfo.phonenumber}}</view>
|
||||||
</view>
|
</view>
|
||||||
</u-row>
|
</u-row>
|
||||||
</view>
|
</view>
|
||||||
@ -107,7 +107,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="pt-40 pb-40">
|
<view class="pt-40 pb-40">
|
||||||
<u-button @click="goto(`login/login`)" type="primary" size="large" shape="circle"
|
<u-button @click="handleUnlogin" type="primary" size="large" shape="circle"
|
||||||
custom-style="height:86rpx;font-size: 32rpx;border-radius: 20rpx;"
|
custom-style="height:86rpx;font-size: 32rpx;border-radius: 20rpx;"
|
||||||
>退出登录</u-button>
|
>退出登录</u-button>
|
||||||
</view>
|
</view>
|
||||||
@ -119,7 +119,13 @@
|
|||||||
<script>
|
<script>
|
||||||
import getCdnUrl from "@/common/getCdnUrl"
|
import getCdnUrl from "@/common/getCdnUrl"
|
||||||
import { goto } from "@/common/untool"
|
import { goto } from "@/common/untool"
|
||||||
|
import { USERKEY } from "@/store/actionKey"
|
||||||
export default {
|
export default {
|
||||||
|
computed: {
|
||||||
|
userInfo() {
|
||||||
|
return this.$store.getters.userInfo
|
||||||
|
}
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
// hasLeftWin: {
|
// hasLeftWin: {
|
||||||
// type: Boolean
|
// type: Boolean
|
||||||
@ -146,6 +152,10 @@
|
|||||||
methods: {
|
methods: {
|
||||||
getCdnUrl,
|
getCdnUrl,
|
||||||
goto,
|
goto,
|
||||||
|
async handleUnlogin() {
|
||||||
|
await this.$store.dispatch(USERKEY.LOGOUT)
|
||||||
|
goto(`login/login`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -5,13 +5,13 @@ export const setSessionXToken = (val = '')=> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getSessionXToken = ()=> {
|
export const getSessionXToken = ()=> {
|
||||||
uni.getStorageSync(XTOKEN_KEY)
|
return uni.getStorageSync(XTOKEN_KEY) || ''
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setSessionUserInfo = (val = {})=> {
|
export const setSessionUserInfo = (val = {})=> {
|
||||||
uni.setStorageSync(USERINFO_KEY, val)
|
uni.setStorageSync(USERINFO_KEY, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getSessionXToken = ()=> {
|
export const getSessionUserInfo = ()=> {
|
||||||
uni.getStorageSync(USERINFO_KEY,)
|
return uni.getStorageSync(USERINFO_KEY) || {}
|
||||||
}
|
}
|
||||||
5
store/actionKey.js
Normal file
5
store/actionKey.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export const USERKEY = {
|
||||||
|
LOGIN: "LOGIN",
|
||||||
|
GETUSERINFO: "GETUSERINFO",
|
||||||
|
LOGOUT: "LOGOUT",
|
||||||
|
}
|
||||||
@ -74,8 +74,8 @@ const store = createStore({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
currentColor(state) {
|
userInfo: (state)=> {
|
||||||
return state.colorList[state.colorIndex]
|
return state.user?.info || {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
|||||||
83
store/modules/user.js
Normal file
83
store/modules/user.js
Normal file
@ -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)
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user