修改部分bug
parent
2ce90ba008
commit
ea60742d82
|
@ -1,31 +1,53 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="u-tabs-box">
|
<view class="u-tabs-box">
|
||||||
<u-tabs bg-color="#fff" :list="list" :is-scroll="false" :current="current" @change="change"
|
<u-tabs
|
||||||
:active-color="$lightColor"></u-tabs>
|
bg-color="#fff"
|
||||||
|
:list="list"
|
||||||
|
:is-scroll="false"
|
||||||
|
:current="current"
|
||||||
|
@change="change"
|
||||||
|
:active-color="$lightColor"
|
||||||
|
></u-tabs>
|
||||||
</view>
|
</view>
|
||||||
<div class="u-tabs-search">
|
<div class="u-tabs-search">
|
||||||
<u-search placeholder="请输入订单编号" @search="handleGetOrderList(current)" @clear="handleGetOrderList(current)"
|
<u-search
|
||||||
@custom="handleGetOrderList(current)" v-model="params.orderSn"></u-search>
|
placeholder="请输入订单编号"
|
||||||
|
@search="submitSearchOrderList(current)"
|
||||||
|
@clear="submitSearchOrderList(current)"
|
||||||
|
@custom="submitSearchOrderList(current)"
|
||||||
|
v-model="orderSn"
|
||||||
|
></u-search>
|
||||||
</div>
|
</div>
|
||||||
<scroll-view class="body-view" scroll-y @scrolltolower="renderDate">
|
<scroll-view class="body-view" scroll-y @scrolltolower="renderDate">
|
||||||
<view class="seller-view" v-for="(order, orderIndex) in orderList" :key="orderIndex">
|
<view
|
||||||
|
class="seller-view"
|
||||||
|
v-for="(order, orderIndex) in orderList"
|
||||||
|
:key="orderIndex"
|
||||||
|
>
|
||||||
<!-- 店铺名称 -->
|
<!-- 店铺名称 -->
|
||||||
<view class="seller-info u-flex u-row-between" v-if="current == 0">
|
<view class="seller-info u-flex u-row-between" v-if="current == 0">
|
||||||
<view class="seller-name">
|
<view class="seller-name">
|
||||||
<view class="name">{{ order.storeName }}</view>
|
<view class="name">{{ order.storeName }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="order-sn">订单编号:{{order.sn}}</view>
|
<view class="order-sn">订单编号:{{ order.sn }}</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 申请记录 选项卡 -->
|
<!-- 申请记录 选项卡 -->
|
||||||
<view class="seller-info u-flex u-row-between" v-if="current != 0">
|
<view class="seller-info u-flex u-row-between" v-if="current != 0">
|
||||||
<view class="order-sn">售后单号:{{ order.service_sn || order.sn }}</view>
|
<view class="order-sn"
|
||||||
|
>售后单号:{{ order.service_sn || order.sn }}</view
|
||||||
|
>
|
||||||
<view class="order-sn">{{ order.serviceType_text }}</view>
|
<view class="order-sn">{{ order.serviceType_text }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-for="(sku, goodsIndex) in order.orderItems" :key="goodsIndex">
|
<view v-for="(sku, goodsIndex) in order.orderItems" :key="goodsIndex">
|
||||||
<view class="goods-item-view" @click="onDetail(order,sku)">
|
<view class="goods-item-view" @click="onDetail(order, sku)">
|
||||||
<view class="goods-img">
|
<view class="goods-img">
|
||||||
<u-image border-radius="6" width="100%" height="100%" :src="sku.image"></u-image>
|
<u-image
|
||||||
|
border-radius="6"
|
||||||
|
width="100%"
|
||||||
|
height="100%"
|
||||||
|
:src="sku.image"
|
||||||
|
></u-image>
|
||||||
</view>
|
</view>
|
||||||
<view class="goods-info">
|
<view class="goods-info">
|
||||||
<view class="goods-title u-line-2">{{ sku.name }}</view>
|
<view class="goods-title u-line-2">{{ sku.name }}</view>
|
||||||
|
@ -41,77 +63,136 @@
|
||||||
<view class="btn-view u-flex u-row-between">
|
<view class="btn-view u-flex u-row-between">
|
||||||
<view class="description">
|
<view class="description">
|
||||||
<!-- 售后申请 -->
|
<!-- 售后申请 -->
|
||||||
<view v-if="
|
<view
|
||||||
current === 0 && order.groupAfterSaleStatus &&
|
v-if="
|
||||||
order.groupAfterSaleStatus.includes('ALREADY_APPLIED')
|
current === 0 &&
|
||||||
" class="cannot_apply">
|
order.groupAfterSaleStatus &&
|
||||||
|
order.groupAfterSaleStatus.includes('ALREADY_APPLIED')
|
||||||
|
"
|
||||||
|
class="cannot_apply"
|
||||||
|
>
|
||||||
<u-icon class="icon" name="info-circle-fill"></u-icon>
|
<u-icon class="icon" name="info-circle-fill"></u-icon>
|
||||||
该商品已申请售后服务
|
该商品已申请售后服务
|
||||||
</view>
|
</view>
|
||||||
<view class="cannot_apply"
|
<view
|
||||||
v-if="current === 0 && order.groupAfterSaleStatus && order.groupAfterSaleStatus.includes('EXPIRED') "
|
class="cannot_apply"
|
||||||
@click="tipsShow = true">
|
v-if="
|
||||||
|
current === 0 &&
|
||||||
|
order.groupAfterSaleStatus &&
|
||||||
|
order.groupAfterSaleStatus.includes('EXPIRED')
|
||||||
|
"
|
||||||
|
@click="tipsShow = true"
|
||||||
|
>
|
||||||
<u-icon class="icon" name="info-circle-fill"></u-icon>
|
<u-icon class="icon" name="info-circle-fill"></u-icon>
|
||||||
该商品无法申请售后
|
该商品无法申请售后
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<div v-if="current === 1 || current === 2">
|
<div v-if="current === 1 || current === 2">
|
||||||
<!-- 申请中 -->
|
<!-- 申请中 -->
|
||||||
<view class="cannot_apply" v-if="order.serviceType == 'RETURN_GOODS'">
|
<view
|
||||||
退货处理-{{ order.serviceStatus | serviceStatusList }}</view>
|
class="cannot_apply"
|
||||||
<view class="cannot_apply" v-if="order.serviceType == 'SUPPLY_AGAIN_GOODS'">
|
v-if="order.serviceType == 'RETURN_GOODS'"
|
||||||
补发商品-{{ order.serviceStatus | serviceStatusList }}</view>
|
>
|
||||||
<view class="cannot_apply" v-if="order.serviceType == 'RETURN_MONEY'">
|
退货处理-{{ order.serviceStatus | serviceStatusList }}</view
|
||||||
退款-{{ order.serviceStatus | serviceStatusList }}</view>
|
>
|
||||||
<view class="cannot_apply" v-if="order.serviceType == 'EXCHANGE_GOODS'">
|
<view
|
||||||
换货-{{ order.serviceStatus | serviceStatusList }}</view>
|
class="cannot_apply"
|
||||||
|
v-if="order.serviceType == 'SUPPLY_AGAIN_GOODS'"
|
||||||
|
>
|
||||||
|
补发商品-{{ order.serviceStatus | serviceStatusList }}</view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="cannot_apply"
|
||||||
|
v-if="order.serviceType == 'RETURN_MONEY'"
|
||||||
|
>
|
||||||
|
退款-{{ order.serviceStatus | serviceStatusList }}</view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="cannot_apply"
|
||||||
|
v-if="order.serviceType == 'EXCHANGE_GOODS'"
|
||||||
|
>
|
||||||
|
换货-{{ order.serviceStatus | serviceStatusList }}</view
|
||||||
|
>
|
||||||
<view class="cannot_apply" v-if="order.serviceType == 'CANCEL'">
|
<view class="cannot_apply" v-if="order.serviceType == 'CANCEL'">
|
||||||
取消订单-{{ order.serviceStatus | serviceStatusList }}</view>
|
取消订单-{{ order.serviceStatus | serviceStatusList }}</view
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 申请记录 -->
|
<!-- 申请记录 -->
|
||||||
</view>
|
</view>
|
||||||
<!-- 售后申请 -->
|
<!-- 售后申请 -->
|
||||||
<div v-if="current === 0 && sku.afterSaleStatus && (sku.afterSaleStatus.includes('NOT_APPLIED') || sku.afterSaleStatus.includes('PART_AFTER_SALE')) " @click="applyService(sku.sn, order, sku)" class="sale">
|
<div
|
||||||
<view class=" default-btn border" >
|
v-if="
|
||||||
申请售后
|
current === 0 &&
|
||||||
</view>
|
sku.afterSaleStatus &&
|
||||||
</div>
|
(sku.afterSaleStatus.includes('NOT_APPLIED') ||
|
||||||
|
sku.afterSaleStatus.includes('PART_AFTER_SALE'))
|
||||||
|
"
|
||||||
|
@click="applyService(sku.sn, order, sku)"
|
||||||
|
class="sale"
|
||||||
|
>
|
||||||
|
<view class="default-btn border"> 申请售后 </view>
|
||||||
|
</div>
|
||||||
<view class="after-line">
|
<view class="after-line">
|
||||||
|
|
||||||
<!-- 申请中 -->
|
<!-- 申请中 -->
|
||||||
<view class="default-btn border" v-if="
|
<view
|
||||||
|
class="default-btn border"
|
||||||
|
v-if="
|
||||||
current === 2 &&
|
current === 2 &&
|
||||||
order.serviceStatus &&
|
order.serviceStatus &&
|
||||||
order.serviceStatus == 'PASS' &&
|
order.serviceStatus == 'PASS' &&
|
||||||
order.serviceType != 'RETURN_MONEY'
|
order.serviceType != 'RETURN_MONEY'
|
||||||
" @click="onExpress(order, sku)">
|
"
|
||||||
|
@click="onExpress(order, sku)"
|
||||||
|
>
|
||||||
提交物流
|
提交物流
|
||||||
</view>
|
</view>
|
||||||
<view @click="close(order,sku)" v-if="current === 1" class="default-btn close">
|
<view
|
||||||
|
@click="close(order, sku)"
|
||||||
|
v-if="current === 1"
|
||||||
|
class="default-btn close"
|
||||||
|
>
|
||||||
取消售后
|
取消售后
|
||||||
</view>
|
</view>
|
||||||
<view @click="afterDetails(order, sku)" v-if="current === 1 || current === 2" class="default-btn border">
|
<view
|
||||||
|
@click="afterDetails(order, sku)"
|
||||||
|
v-if="current === 1 || current === 2"
|
||||||
|
class="default-btn border"
|
||||||
|
>
|
||||||
售后详情
|
售后详情
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="
|
<view
|
||||||
current === 0 && order.groupAfterSaleStatus &&
|
v-if="
|
||||||
|
current === 0 &&
|
||||||
|
order.groupAfterSaleStatus &&
|
||||||
order.groupAfterSaleStatus != 'ALREADY_APPLIED' &&
|
order.groupAfterSaleStatus != 'ALREADY_APPLIED' &&
|
||||||
order.orderItems.length >= 1
|
order.orderItems.length >= 1
|
||||||
" class="btn-view u-flex u-row-between">
|
"
|
||||||
|
class="btn-view u-flex u-row-between"
|
||||||
|
>
|
||||||
<!-- 多个商品显示订单总价格 -->
|
<!-- 多个商品显示订单总价格 -->
|
||||||
<view class="cannot_apply">
|
<view class="cannot_apply">
|
||||||
订单总金额:<span class="countMoney">¥{{ order.flowPrice | unitPrice }}</span>
|
订单总金额:<span class="countMoney"
|
||||||
|
>¥{{ order.flowPrice | unitPrice }}</span
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<u-loadmore bg-color="#f8f8f8" :status="status" />
|
<u-loadmore bg-color="#f8f8f8" :status="status" />
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
<u-modal show-cancel-button @confirm="closeService" v-model="cancelShow" content="确认取消售后"></u-modal>
|
<u-modal
|
||||||
<u-modal v-model="tipsShow" content="当订单未确认收货|已过售后服务有效期|已申请售后服务时,不能申请售后"></u-modal>
|
show-cancel-button
|
||||||
|
@confirm="closeService"
|
||||||
|
v-model="cancelShow"
|
||||||
|
content="确认取消售后"
|
||||||
|
></u-modal>
|
||||||
|
<u-modal
|
||||||
|
v-model="tipsShow"
|
||||||
|
content="当订单未确认收货|已过售后服务有效期|已申请售后服务时,不能申请售后"
|
||||||
|
></u-modal>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -148,7 +229,7 @@ export default {
|
||||||
pageNumber: 1,
|
pageNumber: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
sort: "createTime",
|
sort: "createTime",
|
||||||
flowPrice: 1,
|
flowPrice: 1,
|
||||||
order: "desc",
|
order: "desc",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -157,21 +238,27 @@ export default {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
},
|
},
|
||||||
status: "loadmore",
|
status: "loadmore",
|
||||||
|
orderSn: "", // 搜索订单sn
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
this.orderList = [];
|
this.orderList = [];
|
||||||
this.params.pageNumber = 1;
|
this.params.pageNumber = 1;
|
||||||
if (options.orderSn) this.params.orderSn = options.orderSn;
|
if (options.orderSn) this.params.orderSn = options.orderSn;
|
||||||
this.getOrderList(this.current);
|
this.searchOrderList(this.current);
|
||||||
},
|
},
|
||||||
onPullDownRefresh() {
|
onPullDownRefresh() {
|
||||||
this.change(this.current);
|
this.change(this.current);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleGetOrderList(current) {
|
/**
|
||||||
|
* 点击搜索执行搜索
|
||||||
|
*/
|
||||||
|
submitSearchOrderList(current) {
|
||||||
|
this.params.pageNumber = 1;
|
||||||
|
this.logParams.pageNumber = 1;
|
||||||
this.orderList = [];
|
this.orderList = [];
|
||||||
this.getOrderList(current);
|
this.searchOrderList(current);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 切换tab页时,初始化数据
|
* 切换tab页时,初始化数据
|
||||||
|
@ -184,8 +271,18 @@ export default {
|
||||||
};
|
};
|
||||||
this.orderList = [];
|
this.orderList = [];
|
||||||
//如果是2 则读取售后申请记录列表
|
//如果是2 则读取售后申请记录列表
|
||||||
|
this.searchOrderList(index);
|
||||||
|
uni.stopPullDownRefresh();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索初始化
|
||||||
|
* 根据当前tab传值的索引进行更改
|
||||||
|
*/
|
||||||
|
searchOrderList(index) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
this.getOrderList(index);
|
this.orderSn ? (this.params.orderSn = this.orderSn) : "";
|
||||||
|
this.getOrderList();
|
||||||
} else {
|
} else {
|
||||||
this.logParams = {
|
this.logParams = {
|
||||||
pageNumber: 1,
|
pageNumber: 1,
|
||||||
|
@ -196,16 +293,16 @@ export default {
|
||||||
if (index === 1) {
|
if (index === 1) {
|
||||||
this.logParams.serviceStatus = "APPLY";
|
this.logParams.serviceStatus = "APPLY";
|
||||||
}
|
}
|
||||||
|
this.orderSn ? (this.logParams.orderSn = this.orderSn) : "";
|
||||||
this.orderList = [];
|
this.orderList = [];
|
||||||
this.getAfterSaleLogList();
|
this.getAfterSaleLogList();
|
||||||
}
|
}
|
||||||
uni.stopPullDownRefresh();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取订单列表
|
* 获取订单列表
|
||||||
*/
|
*/
|
||||||
getOrderList(index) {
|
getOrderList() {
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: "加载中",
|
title: "加载中",
|
||||||
mask: true,
|
mask: true,
|
||||||
|
@ -245,7 +342,7 @@ export default {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.orderList = [];
|
this.orderList = [];
|
||||||
this.getOrderList(this.current);
|
this.searchOrderList(this.current);
|
||||||
|
|
||||||
uni.hideLoading();
|
uni.hideLoading();
|
||||||
},
|
},
|
||||||
|
|
375
utils/request.js
375
utils/request.js
|
@ -1,187 +1,188 @@
|
||||||
import Request from "@/lib/request/index.js";
|
import Request from "@/lib/request/index.js";
|
||||||
import { refreshTokenFn } from "@/api/login.js";
|
import { refreshTokenFn } from "@/api/login.js";
|
||||||
import storage from "@/utils/storage.js";
|
import storage from "@/utils/storage.js";
|
||||||
import { md5 } from "@/utils/md5.js";
|
import { md5 } from "@/utils/md5.js";
|
||||||
import Foundation from "@/utils/Foundation.js";
|
import Foundation from "@/utils/Foundation.js";
|
||||||
import api from "@/config/api.js";
|
import api from "@/config/api.js";
|
||||||
|
|
||||||
import uuid from "@/utils/uuid.modified.js";
|
import uuid from "@/utils/uuid.modified.js";
|
||||||
|
|
||||||
function cleanStorage() {
|
|
||||||
uni.showToast({
|
let isNavigateTo = false
|
||||||
title: "你的登录状态已过期,请重新登录",
|
|
||||||
icon: "none",
|
function cleanStorage() {
|
||||||
duration: 1500,
|
uni.showToast({
|
||||||
});
|
title: "你的登录状态已过期,请重新登录",
|
||||||
if (uni.showLoading()) {
|
icon: "none",
|
||||||
uni.hideLoading();
|
duration: 1500,
|
||||||
}
|
});
|
||||||
|
if (uni.showLoading()) {
|
||||||
storage.setHasLogin(false);
|
uni.hideLoading();
|
||||||
storage.setAccessToken("");
|
}
|
||||||
storage.setRefreshToken("");
|
|
||||||
console.log("清空token");
|
storage.setHasLogin(false);
|
||||||
storage.setUuid("");
|
storage.setAccessToken("");
|
||||||
storage.setUserInfo({});
|
storage.setRefreshToken("");
|
||||||
|
console.log("清空token");
|
||||||
|
storage.setUuid("");
|
||||||
|
storage.setUserInfo({});
|
||||||
// 防抖处理跳转
|
|
||||||
// #ifdef MP-WEIXIN
|
|
||||||
|
if(!isNavigateTo){
|
||||||
uni.navigateTo({
|
isNavigateTo= true
|
||||||
url: "/pages/passport/wechatMPLogin",
|
// 防抖处理跳转
|
||||||
});
|
// #ifdef MP-WEIXIN
|
||||||
|
uni.navigateTo({
|
||||||
// #endif
|
url: "/pages/passport/wechatMPLogin",
|
||||||
|
});
|
||||||
// #ifndef MP-WEIXIN
|
// #endif
|
||||||
|
// #ifndef MP-WEIXIN
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/pages/passport/login",
|
url: "/pages/passport/login",
|
||||||
});
|
});
|
||||||
|
// #endif
|
||||||
// #endif
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let http = new Request();
|
let http = new Request();
|
||||||
|
|
||||||
|
|
||||||
http.setConfig((config) => {
|
http.setConfig((config) => {
|
||||||
// 没有uuid创建
|
// 没有uuid创建
|
||||||
if (!storage.getUuid()) {
|
if (!storage.getUuid()) {
|
||||||
storage.setUuid(uuid.v1());
|
storage.setUuid(uuid.v1());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 设置全局配置 */
|
/* 设置全局配置 */
|
||||||
config.baseURL = api.buyer;
|
config.baseURL = api.buyer;
|
||||||
config.header = {
|
config.header = {
|
||||||
...config.header,
|
...config.header,
|
||||||
};
|
};
|
||||||
config.validateStatus = (statusCode) => {
|
config.validateStatus = (statusCode) => {
|
||||||
// 不论什么状态,统一在正确中处理
|
// 不论什么状态,统一在正确中处理
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
return config;
|
return config;
|
||||||
});
|
});
|
||||||
|
|
||||||
http.interceptors.request.use(
|
http.interceptors.request.use(
|
||||||
(config) => {
|
(config) => {
|
||||||
/* 请求之前拦截器。可以使用async await 做异步操作 */
|
/* 请求之前拦截器。可以使用async await 做异步操作 */
|
||||||
let accessToken = storage.getAccessToken();
|
let accessToken = storage.getAccessToken();
|
||||||
if (accessToken) {
|
if (accessToken) {
|
||||||
const nonce = Foundation.randomString(6);
|
const nonce = Foundation.randomString(6);
|
||||||
const timestamp = parseInt(new Date().getTime() / 1000);
|
const timestamp = parseInt(new Date().getTime() / 1000);
|
||||||
const sign = md5(nonce + timestamp + accessToken);
|
const sign = md5(nonce + timestamp + accessToken);
|
||||||
const _params = {
|
const _params = {
|
||||||
nonce,
|
nonce,
|
||||||
timestamp,
|
timestamp,
|
||||||
sign,
|
sign,
|
||||||
};
|
};
|
||||||
let params = config.params || {};
|
let params = config.params || {};
|
||||||
params = { ...params, ..._params };
|
params = { ...params, ..._params };
|
||||||
|
|
||||||
config.params = params;
|
config.params = params;
|
||||||
config.header.accessToken = accessToken;
|
config.header.accessToken = accessToken;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
config.header = {
|
config.header = {
|
||||||
...config.header,
|
...config.header,
|
||||||
uuid: storage.getUuid() || uuid.v1(),
|
uuid: storage.getUuid() || uuid.v1(),
|
||||||
};
|
};
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
(config) => {
|
(config) => {
|
||||||
return Promise.reject(config);
|
return Promise.reject(config);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// 是否正在刷新的标记
|
// 是否正在刷新的标记
|
||||||
let isRefreshing = false;
|
let isRefreshing = false;
|
||||||
//重试队列
|
//重试队列
|
||||||
let requests = [];
|
let requests = [];
|
||||||
// 必须使用异步函数,注意
|
// 必须使用异步函数,注意
|
||||||
http.interceptors.response.use(
|
http.interceptors.response.use(
|
||||||
async (response) => {
|
async (response) => {
|
||||||
/* 请求之后拦截器。可以使用async await 做异步操作 */
|
isNavigateTo = false
|
||||||
// token存在并且token过期
|
/* 请求之后拦截器。可以使用async await 做异步操作 */
|
||||||
if (isRefreshing && response.statusCode === 403) {
|
// token存在并且token过期
|
||||||
cleanStorage();
|
if (isRefreshing && response.statusCode === 403) {
|
||||||
isRefreshing = false;
|
cleanStorage();
|
||||||
}
|
isRefreshing = false;
|
||||||
|
}
|
||||||
let token = storage.getAccessToken();
|
|
||||||
if (
|
let token = storage.getAccessToken();
|
||||||
(token && response.statusCode === 403) ||
|
if (
|
||||||
response.data.status === 403
|
(token && response.statusCode === 403) ||
|
||||||
) {
|
response.data.status === 403
|
||||||
if (!isRefreshing) {
|
) {
|
||||||
isRefreshing = true;
|
if (!isRefreshing) {
|
||||||
//调用刷新token的接口
|
isRefreshing = true;
|
||||||
return refreshTokenFn(storage.getRefreshToken())
|
//调用刷新token的接口
|
||||||
.then((res) => {
|
return refreshTokenFn(storage.getRefreshToken())
|
||||||
let { accessToken, refreshToken } = res.data.result;
|
.then((res) => {
|
||||||
storage.setAccessToken(accessToken);
|
let { accessToken, refreshToken } = res.data.result;
|
||||||
storage.setRefreshToken(refreshToken);
|
storage.setAccessToken(accessToken);
|
||||||
|
storage.setRefreshToken(refreshToken);
|
||||||
response.header.accessToken = `${accessToken}`;
|
|
||||||
// token 刷新后将数组的方法重新执行
|
response.header.accessToken = `${accessToken}`;
|
||||||
requests.forEach((cb) => cb(accessToken));
|
// token 刷新后将数组的方法重新执行
|
||||||
requests = []; // 重新请求完清空
|
requests.forEach((cb) => cb(accessToken));
|
||||||
return http.request(response.config);
|
requests = []; // 重新请求完清空
|
||||||
})
|
return http.request(response.config);
|
||||||
.catch((err) => {
|
})
|
||||||
cleanStorage();
|
.catch((err) => {
|
||||||
return Promise.reject(err);
|
cleanStorage();
|
||||||
})
|
return Promise.reject(err);
|
||||||
.finally(() => {
|
})
|
||||||
isRefreshing = false;
|
.finally(() => {
|
||||||
});
|
isRefreshing = false;
|
||||||
} else {
|
});
|
||||||
// 返回未执行 resolve 的 Promise
|
} else {
|
||||||
return new Promise((resolve) => {
|
// 返回未执行 resolve 的 Promise
|
||||||
// 用函数形式将 resolve 存入,等待刷新后再执行
|
return new Promise((resolve) => {
|
||||||
requests.push((token) => {
|
// 用函数形式将 resolve 存入,等待刷新后再执行
|
||||||
response.header.accessToken = `${token}`;
|
requests.push((token) => {
|
||||||
resolve(http.request(response.config));
|
response.header.accessToken = `${token}`;
|
||||||
});
|
resolve(http.request(response.config));
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
|
}
|
||||||
// 如果当前返回没登录
|
|
||||||
} else if (
|
// 如果当前返回没登录
|
||||||
(!token && response.statusCode === 403) ||
|
} else if (
|
||||||
response.data.code === 403
|
(!token && response.statusCode === 403) ||
|
||||||
) {
|
response.data.code === 403
|
||||||
cleanStorage();
|
) {
|
||||||
|
cleanStorage();
|
||||||
// 如果当前状态码为正常但是success为不正常时
|
|
||||||
} else if (
|
// 如果当前状态码为正常但是success为不正常时
|
||||||
(response.statusCode == 200 && !response.data.success) ||
|
} else if (
|
||||||
response.statusCode == 400
|
(response.statusCode == 200 && !response.data.success) ||
|
||||||
) {
|
response.statusCode == 400
|
||||||
if (response.data.message) {
|
) {
|
||||||
uni.showToast({
|
if (response.data.message) {
|
||||||
title: response.data.message,
|
uni.showToast({
|
||||||
icon: "none",
|
title: response.data.message,
|
||||||
duration: 1500,
|
icon: "none",
|
||||||
});
|
duration: 1500,
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
return response;
|
}
|
||||||
},
|
return response;
|
||||||
(error) => {
|
},
|
||||||
return error;
|
(error) => {
|
||||||
}
|
return error;
|
||||||
);
|
}
|
||||||
|
);
|
||||||
export { http };
|
|
||||||
|
export { http };
|
||||||
export const Method = {
|
|
||||||
GET: "GET",
|
export const Method = {
|
||||||
POST: "POST",
|
GET: "GET",
|
||||||
PUT: "PUT",
|
POST: "POST",
|
||||||
DELETE: "DELETE",
|
PUT: "PUT",
|
||||||
};
|
DELETE: "DELETE",
|
||||||
|
};
|
||||||
|
|
|
@ -92,11 +92,11 @@ export default {
|
||||||
removeRefreshToken() {
|
removeRefreshToken() {
|
||||||
uni.removeStorageSync(REFRESH_TOKEN);
|
uni.removeStorageSync(REFRESH_TOKEN);
|
||||||
},
|
},
|
||||||
// 写入刷新token
|
|
||||||
setAfterSaleData(val) {
|
setAfterSaleData(val) {
|
||||||
uni.setStorageSync(AFTERSALE_DATA, val);
|
uni.setStorageSync(AFTERSALE_DATA, val);
|
||||||
},
|
},
|
||||||
// 获取刷新token
|
|
||||||
getAfterSaleData() {
|
getAfterSaleData() {
|
||||||
return uni.getStorageSync(AFTERSALE_DATA);
|
return uni.getStorageSync(AFTERSALE_DATA);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue