Browse Source

feat: 刷新token重新运行api

test2
xuesinan 4 years ago
parent
commit
02fb4bf5e3
  1. 3
      CHANGELOG.md
  2. 6
      apis/tall.js
  3. 33
      components/Upload/Upload.vue
  4. 9
      pages.json
  5. 54
      pages/business/business.vue
  6. 2
      pages/guide/adv.vue
  7. 2
      pages/index/index.vue
  8. 2
      store/index.js
  9. 68
      utils/request.js

3
CHANGELOG.md

@ -1,4 +1,4 @@
# 1.0.0 (2022-01-18)
# 1.0.0 (2022-01-19)
### 🌟 新功能
范围|描述|commitId
@ -26,6 +26,7 @@
- | 项目操作面板 | [3beb05e](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3beb05e)
- | 项目列表 | [a52e6d5](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/a52e6d5)
- | 项目列表新 | [88cf48d](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/88cf48d)
- | 引导页、广告页 | [4aa76ff](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/4aa76ff)
- | 账户名密码登录 | [ebf456e](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/ebf456e)
- | 主体颜色 | [bb5c0e3](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/bb5c0e3)
- | 注册、用户协议 | [68e9189](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/68e9189)

6
apis/tall.js

@ -12,11 +12,11 @@ export function setupTall(app) {
// 注册
// uni.$u.api.signup = params => uni.$u.http.post(`${tall}/users/signup`, params);
// 获取图片验证码
uni.$u.api.getImageCode = () => uni.$u.get(`${tall}/users/code`);
uni.$u.api.getImageCode = () => uni.$u.http.get(`${tall}/users/code`);
// 获取短信验证码
uni.$u.api.getSmsCode = params => uni.$u.get(`${tall}/users/smscode`, params);
uni.$u.api.getSmsCode = params => uni.$u.http.get(`${tall}/users/smscode`, params);
// 根据refreshToken重新获取token
uni.$u.api.getNewToken = refreshToken => uni.$u.get(`${tall}/users/refreshToken`, { refreshToken });
uni.$u.api.getNewToken = refreshToken => uni.$u.http.get(`${tall}/users/refreshToken`, { refreshToken });
// 根据userId获取token
uni.$u.api.getToken = userId => uni.$u.get(`${tall}/users/userId`, { userId });
// 绑定手机号

33
components/Upload/Upload.vue

@ -16,21 +16,24 @@ const userId = computed(() => store.getters['user/userId']);
// wbs
const handleUpload = async cur => {
try {
const res = await uni.$u.api.import();
// WBS
//
emit('success');
const { apiUrl } = Config;
const defaultwbs = `${apiUrl}/defaultwbs`;
res.url && (defaultwbs = res.url);
setTimeout(() => {
uni.navigateTo({ url: `/pages/project/project?u=${userId.value}&p=${res.id}&pname=${res.pname}&url=${res.url}` });
}, 2000);
} catch (error) {
console.error('error: ', error);
emit('error', error);
}
uni.navigateTo({
url: '/pages/business/business'
})
// try {
// const res = await uni.$u.api.import();
// // WBS
// //
// emit('success');
// const { apiUrl } = Config;
// const defaultwbs = `${apiUrl}/defaultwbs`;
// res.url && (defaultwbs = res.url);
// setTimeout(() => {
// uni.navigateTo({ url: `/pages/project/project?u=${userId.value}&p=${res.id}&pname=${res.pname}&url=${res.url}` });
// }, 2000);
// } catch (error) {
// console.error('error: ', error);
// emit('error', error);
// }
};
</script>

9
pages.json

@ -1,7 +1,7 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/init/init",
"path": "pages/guide/adv",
"style": {
"navigationBarText": "TALL",
"navigationStyle": "custom"
@ -20,6 +20,13 @@
"navigationBarText": "TALL",
"navigationStyle": "custom"
}
},
{
"path": "pages/business/business",
"style": {
"navigationBarText": "业务列表",
"navigationStyle": "custom"
}
},
{
"path": "pages/project/project",

54
pages/business/business.vue

@ -0,0 +1,54 @@
<template>
<view class="business-box">
<view class="business-wrap" v-for="(item, index) in 15" :key="index" @click="toUpload">
<view class="name">业务{{item}}</view>
<view class="desc">业务{{item}}</view>
</view>
</view>
</template>
<script setup>
async function toUpload() {
try {
const res = await uni.$u.api.import();
// WBS
//
// emit('success');
uni.$ui.showToast('导入成功,即将打开新项目', 3000);
const { apiUrl } = Config;
const defaultwbs = `${apiUrl}/defaultwbs`;
res.url && (defaultwbs = res.url);
setTimeout(() => {
uni.navigateTo({
url: `/pages/project/project?u=${userId.value}&p=${res.id}&pname=${res.pname}&url=${res.url}`
});
}, 2000);
} catch (error) {
console.error('error: ', error);
// emit('error', error);
uni.$ui.showToast('导入失败', 6000);
}
}
</script>
<style lang="scss" scoped>
.business-box {
padding: 0 16px;
}
.business-wrap {
padding: 10px 20px;
border-bottom: 1px solid #eeeeee;
width: 100%;
box-sizing: border-box;
.name {
line-height: 36px;
}
.desc {
font-size: 12px;
color: #999;
}
}
</style>

2
pages/init/init.vue → pages/guide/adv.vue

@ -1,5 +1,5 @@
<template>
启动
广告
</template>
<script setup>

2
pages/index/index.vue

@ -15,7 +15,7 @@
ref="calendar"
@handleFindPoint="handleFindPoint"
/>
<!-- 上传 导入wbs -->
<Upload @success="onUploadSuccess" @error="onUploadError" />
</view>

2
store/index.js

@ -11,7 +11,7 @@ const state = {
networkConnected: true, // 网络是否连接
forceUseStorage: true, // 强制启用storage
systemInfo: null, // 系统设备信息
count: 2, // 后台出错,多次返回错误的token信息导致的死循环,用count来阻止死循环
count: 3, // 后台出错,多次返回错误的token信息导致的死循环,用count来阻止死循环
};
const getters = {

68
utils/request.js

@ -42,23 +42,18 @@ export function setupHttp(app) {
// 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到
// 如果配置了originalData为true,请留意这里的返回值
if (res.code === 200) {
if (res.tokenObj.token) {
storage.setStorageSync('anyringToken', res.tokenObj.token || '');
if (res.tokenObj && res.tokenObj.token) {
store.commit('user/setToken', res.tokenObj.token);
storage.setStorageSync('anyringToken', res.tokenObj.token || '');
storage.setStorageSync('refreshToken', res.tokenObj.refreshToken || '');
store.commit('user/setToken', res.tokenObj.token);
}
return res.data;
} else if (res.code === 400) { // deviceId为空
ui.showToast(res.msg);
return false;
} else if (res.code === 49) { // token过期
store.commit('setCount', store.state.count - 1);
let refreshToken = storage.getStorageSync('refreshToken');
await store.dispatch('user/getTokenByRefreshToken', refreshToken);
return false;
return 49;
} else if (res.code === 401) { // refreshToken过期
// 假设201为token失效,这里跳转登录
// ui.showToast('验证失败,请重新登录');
@ -82,14 +77,63 @@ export function setupHttp(app) {
}
};
app.config.globalProperties.$u.post = (url, param = {}, header = {}) => {
return app.config.globalProperties.$u.http.request({
app.config.globalProperties.$u.post = async (url, param = {}, header = {}) => {
let res = await app.config.globalProperties.$u.http.request({
url,
method: 'POST',
header,
data: {
param
},
});
});
if (res === 49) {
const refreshToken = storage.getStorageSync('refreshToken');
await store.dispatch('user/getTokenByRefreshToken', refreshToken);
res = await app.config.globalProperties.$u.http.request({
url,
method: 'POST',
header,
data: {
param
},
});
if (res.code === 200) {
store.commit('setCount', 3);
}
return res;
}
return res;
};
app.config.globalProperties.$u.get = async (url, param = {}, header = {}) => {
let res = await app.config.globalProperties.$u.http.request({
url,
method: 'POST',
header,
data: {
param
},
});
if (res === 49) {
const refreshToken = storage.getStorageSync('refreshToken');
await store.dispatch('user/getTokenByRefreshToken', refreshToken);
res = await app.config.globalProperties.$u.http.request({
url,
method: 'POST',
header,
data: {
param
},
});
if (res.code === 200) {
store.commit('setCount', 3);
}
return res;
}
return res;
};
}

Loading…
Cancel
Save