You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

409 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import config from "../config.js"
import common from "./common.js"
// #ifdef H5
// import wxjssdk from "components/hzjc/utils/auth/wxjssdk.js"
// #endif
// #ifdef MP-WEIXIN
// import mpWeixin from "@/components/hzjc/utils/auth/mpWeixin.js"
// #endif
let request = {}
request.requestUrl = config.isTest ? config.testHost + config.testEntry : config.host + config.entry
request.user_agent = common.userAgent()
/**
* post请求
* @param {string} url 请求地址
* @param {object} data 请求参数
* 2020-08-13
*/
request.post = function(url, data = {}) {
//获取uid
let uid
if (this.user_agent == 'h5' || this.user_agent == 'weixin') {
uid = uni.getStorageSync('uid') ? uni.getStorageSync('uid') : 2
} else {
uid = config.uid
}
return new Promise((resolve, reject) => {
uni.request({
url: this.requestUrl + url,
data: data,
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded',
'access-token': uni.getStorageSync('access_token'),
'code-agent': this.user_agent,
'uid': uid
},
dataType: 'json',
success: res => {
resolve(res.data)
},
fail: res => {
reject(res)
}
})
})
}
/**
* 获取数据
* @param {string} url 请求地址
* @param {object} data 请求参数
* @param {object} initial 其他参数
* @param {boolean} initial.loading false--不显示加载中 true--显示加载中
* @param {boolean} initial.showErrMsg false--不显示错误文案 true--显示错误文案
* 2020-08-13
*/
request.getData = function(url, data = {}, initial = {}) {
let that = this
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.showLoading({
title: '加载中',
mask: true
})
}
// 没有定义showErrMsg参数时默认为true
if(!initial.hasOwnProperty('showErrMsg')){
initial.showErrMsg = true
}
return new Promise((resolve, reject) => {
this.post(url, data).then(res => {
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.hideLoading()
}
if (res.code === 0) {
resolve(res)
} else {
if (initial.showErrMsg) {
if (!res.msg) res.msg = '未知错误'
common.alert(res.msg).then(() => {
resolve(res)
})
} else {
resolve(res)
}
}
}).catch(res => {
common.alert('网络异常').then(() => {
reject(res)
});
})
});
}
//没有用
request.getDataNoMessage = function(url, initial = {}) {
return new Promise((resolve, reject) => {
let that = this;
if (initial.hasOwnProperty('loading') && initial.loading === 1) {
uni.showLoading({
title: '加载中',
mask: true
})
}
if (!initial.hasOwnProperty('data')) {
initial.data = {};
}
initial.data.user_id = uni.getStorageSync('user_id') || '';
// #ifdef APP-PLUS
initial.data.uuid = uni.getStorageSync('uuid');
// #endif
this.post(url, initial.data).then(res => {
if (initial.hasOwnProperty('loading') && initial.loading === 1) {
uni.hideLoading();
}
resolve(res);
}).catch(res => {
uni.showModal({
title: '',
content: '网络出错,请稍后重试',
showCancel: false,
cancelText: '',
confirmText: '确定',
success: res => {},
fail: () => {},
complete: () => {}
});
reject(res);
})
});
}
/**
* 加载下一页 first_page=1时自动清空列表加载第1页 first_page!=1时加载下一页
* 2022-08-08
*/
request.getList = function(url, data = {}, initial = {}) {
return new Promise((resolve, reject) => {
if (initial.that.load_status == 'loading' || (initial.that.load_status == 'finished' && initial
.first_page != 1)) {
return false; //正在加载中或者已经加载完成不触发加载事件
}
initial.that.load_status = 'loading' //切换jc-list组件状态
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.showLoading({
title: '加载中',
mask: true
})
}
//判断当前加载页数
let loading_page;
if (initial.first_page != 1) {
loading_page = initial.that.page || 0;
loading_page = initial.that.page + 1;
} else {
loading_page = 1;
initial.that.list = [];
}
data.page = loading_page;
this.post(url, data).then(res => {
initial.that.load_status = '' //切换jc-list组件状态
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.hideLoading();
}
if (res.code == 0) {
let data_list = res.data.list; //返回数据里面的列表数据
if (!data_list.total) {
initial.that.load_status = 'nodata';
} else if (data_list.current_page >= data_list.last_page) {
initial.that.load_status = 'finished';
}
if (data_list.data.length) {
let list = initial.that.list;
list = list.concat(data_list.data);
initial.that.list = list;
initial.that.page = data.page;
}
resolve(res);
} else {
initial.that.load_status = 'hasError';
}
}).catch(res => {
reject(res)
});
})
}
/**
* 加载上一页通过最上方的ID加载上一页数据
* {param} string url 请求连接
* {param} object data 请求时携带请求参数
* {param} object initial 其他附件参数
* that: this
* first_page: 1--加载第一页,自动清空列表 0--加载上一页,不清空列表
* loading : true--显示加载蒙层fasle--不显示加载蒙层
* 2022-08-08
*/
request.getUpList = function(url, data = {}, initial = {}) {
return new Promise((resolve, reject) => {
// 正在加载中或者已经加载完成不触发加载事件
if (initial.that.load_status == 'loading' || (initial.that.load_status == 'finished' && initial
.first_page != 1)) {
return false
}
// 切换jc-list组件状态
initial.that.load_status = 'loading'
// 显示加载浮层时加载过程中显示蒙层
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.showLoading({
title: '加载中',
mask: true
})
}
this.post(url, data).then(res => {
// 切换jc-list组件状态
initial.that.load_status = ''
// 显示加载浮层时加载完成隐藏蒙层
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.hideLoading();
}
// 正常获得数据
if (res.code == 0) {
// 返回数据
let data_list = res.data.up_list
// 再上面没有数据了
if (data_list.last_page <= 1) {
initial.that.load_status = 'finished'
}
// 追加列表数据
if (data_list.data.length) {
// 读取现有列表数据
let up_list = initial.that.up_list
// 向上追加数据
up_list = data_list.data.concat(up_list)
// 赋值给页面变量up_list
initial.that.up_list = up_list
}
resolve(res)
// 没有获得数据
} else {
initial.that.load_status = 'hasError'
}
}).catch(res => {
reject(res)
})
})
}
/**
* 通过last_id加载下一页一般用于订单删除不刷新页面
* @param string url 请求接口地址
* @param object data 请求数据
* @param object initial 请求的其他数据
* that: this
* first_page: 1--加载第一页,自动清空列表 0--加载上一页,不清空列表
* loading : true--显示加载蒙层fasle--不显示加载蒙层
* @date 2022-04-29
*/
request.getListByLastId = function(url, data = {}, initial = {}) {
return new Promise((resolve, reject) => {
// console.log(initial.that.load_status)
// console.log(initial.first_page)
if (initial.first_page == 1) {
initial.that.lastId = ''
}
// 正在加载中或者已经加载完成不触发加载事件
if (initial.that.load_status == 'loading' || (initial.that.load_status == 'finished' && initial
.first_page != 1)) {
return false
}
// 切换jc-list组件状态为加载中
initial.that.load_status = 'loading'
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.showLoading({
title: '加载中',
mask: true
})
}
// 判断当前加载页数
if (initial.first_page == 1) {
initial.that.list = []
}
// 列表最后一条数据ID
data.last_id = initial.that.lastId
this.post(url, data).then(res => {
// 切换jc-list组件状态
initial.that.load_status = ''
if (initial.hasOwnProperty('loading') && initial.loading) {
uni.hideLoading()
}
if (res.code == 0) {
let data_list = res.data.list //返回数据里面的列表数据
if (initial.first_page == 1 && !data_list.length) {
initial.that.load_status = 'nodata'
} else if (initial.first_page != 1 && !data_list.length) {
initial.that.load_status = 'finished'
}
if (data_list.length) {
let list = initial.that.list
list = list.concat(data_list)
initial.that.list = list
// 最后一条数据ID
initial.that.lastId = list[list.length - 1].id
}
resolve(res);
} else {
initial.that.load_status = 'hasError';
}
}).catch(res => {
reject(res)
});
})
}
/**
* 校验token
* 2022-04-29
*/
request.token = function() {
return new Promise((resolve, reject) => {
let unexpected = false
// #ifdef APP-PLUS
if (!uni.getStorageSync('access_token') && uni.getStorageSync('device_id')) {
unexpected = true
}
// #endif
// #ifdef MP-WEIXIN|MP-QQ|MP-ALIPAY
if (!uni.getStorageSync('access_token') && uni.getStorageSync('openid')) {
unexpected = true
}
// #endif
// #ifdef H5
if (common.userAgent() == 'weixin') { //微信浏览器,一般用于微信公众号
if (!uni.getStorageSync('access_token') && uni.getStorageSync('openid')) {
unexpected = true
}
}
// #endif
if (unexpected || (uni.getStorageSync('access_token') && uni.getStorageSync(
'access_token_expire_time') < common
.curTimestamp())) { //access_token意外丢失 | access_token已过期清空缓存和openid拉取新的token
uni.removeStorageSync('access_token')
uni.removeStorageSync('access_token_expire_time')
uni.removeStorageSync('user_id')
// #ifdef APP-PLUS
uni.removeStorageSync('device_id')
// #endif
// #ifdef MP-WEIXIN|MP-QQ|MP-ALIPAY
uni.removeStorageSync('openid')
// #endif
// #ifdef H5
if (common.userAgent() == 'weixin') { //微信浏览器,一般用于微信公众号
uni.removeStorageSync('openid')
}
// #endif
resolve('')
} else if (uni.getStorageSync('access_token') && uni.getStorageSync('access_token_expire_time') -
common.curTimestamp() <= 86400) { //临近24小时过期去申请新的token
request.getData('base/token/api/Token/signNewToken').then((res) => {
uni.setStorageSync('access_token', res.data.access_token)
uni.setStorageSync('access_token_expire_time', res.data.access_token_expire_time)
resolve(res)
}).catch(res => {
reject(res)
})
} else {
resolve('')
}
})
}
export default request;