import { appId, envs } from "./api"; import { encryption } from "./encryption"; import { setItem, getItem, StorageKeys, removeItem } from "../storage"; import { sm4Key } from "../network/api.js"; import SM4Util from '../util/sm4.js' import { agentId, channelId } from "@/utils/network/difference"; import { updateToken } from "@/utils/network/api"; import orderJump from "@/composables/order/orderJump"; const { getOrderList } = orderJump(); const s4 = new SM4Util() /* 刷新token */ function updateGetToken() { const options = { type: 2, data: { openId: getItem("openId"), accessToken: getItem(StorageKeys.Token) }, method: "POST", showLoading: false, }; //刷新token return new Promise(async (resolve, reject) => { const res = await request(updateToken, options); const data = JSON.parse(res.bizContent); console.log("data", data) setItem('accessToken', data.accessToken); setItem(StorageKeys.Token, data.accessToken); setItem('openId', data.openId); resolve(data); }).catch((error) => { reject(error); }); } //请求 export function request(code, options = {}, start = false) { //公参 const Common = { agentId: agentId, channelId: channelId, channelType: "1", staffId: "54623263cb4d4a289dccbc983b22a4af", terminalId: "999999999999", loginSource: getItem("loginSource"), rbacSource: 'MINI_PROGRAM', accessToken: getItem(StorageKeys.Token), openId: getItem(StorageKeys.OpenId), opId: getItem(StorageKeys.OpenId), } options.url = envs[process.env.NODE_ENV].baseUrl + '/api/interfaceMidGroundIn' // options.url = envs[process.env.NODE_ENV].baseUrl + '/dev/api/interfaceMidGroundIn' //默认json数据格式提交` let contentType = 'application/x-www-form-urlencoded' //判断baseUri是否为空 if (options.baseUrl) { options.url = options.baseUrl } //根据type判断数据传输格式 if (options.type && options.type === 2) { contentType = 'application/json;charset=UTF-8' } //默认POST提交 options.method = options.method ? options.method : 'POST' //设置请求超时时间 options.timeout = 60000 options.header = { 'content-type': contentType, 'Access-Token': getItem(StorageKeys.Token) } console.log('code', code, options.data) if (!start) { //判断code不为空 if (code) { options.data = encryption(code, Object.assign(Common, { ...options.data, 'appId': appId }), 2); } } //是否显示加载中 if (options.showLoading) { uni.showLoading({ title: '请稍后', mask: true }); } //参数返回 return new Promise((resolve, reject) => { options.success = (res) => { console.log('请求成功返回参数:', code, res) // 请求返回后,隐藏loading(如果请求返回快的话,可能会没有loading) if (options.showLoading) { uni.hideLoading() } if (res.data.statusCode !== 0) { if (res.data.statusCode == 600) { resolve(res.data) } else if (res.data.statusCode == 401) { uni.showModal({ title: '提示', content: res.data.errorMsg, confirmText: '去登录', showCancel: false, success: function(res) { if (res.confirm) { removeItem(StorageKeys.Token); removeItem(StorageKeys.OpenId); removeItem(StorageKeys.QYorder); uni.reLaunch({ url: '/login/login', }) } } }); } else if (res.data.statusCode == 99999) { if (!start) { updateGetToken().then((data) => { console.log("token刷新", data); request(code, options, true) }) } else { uni.showModal({ title: '提示', content: res.data.errorMsg, success: function(res) { if (res.confirm) { console.log('用户点击确定1'); } else if (res.cancel) { console.log('用户点击取消1'); } } }); } } else if (res.data.statusCode == 7041) { let orderId = res.data.errorMsg uni.showModal({ title: '提示', content: "继续申办", // cancelText: '解除车牌', //前往解除车牌占用 success: function(res) { if (res.confirm) { console.log('继续申办2', orderId); getOrderList(orderId) } else if (res.cancel) { } } }); } else if (res.data.statusCode == 7042) { uni.showModal({ title: '提示', content: res.data.errorMsg, confirmText: "去激活", success: function(res) { if (res.confirm) { uni.redirectTo({ url: "/subpackage/personal-center/install-activation-order" }) } else if (res.cancel) { } } }); } else if (res.data.statusCode == 7043) { uni.showModal({ title: '提示', content: res.data.errorMsg, success: function(res) { if (res.confirm) { uni.redirectTo({ url: "/subpackage/after-sale/onlineService" }) } else if (res.cancel) { } } }); } else { // 当前车辆已存在订单,无法再次创建订单 if (code == 6 && res.data.statusCode == 704) { console.log(code == 6, res.data.statusCode == 704) uni.showModal({ title: '提示', content: res.data.errorMsg, cancelText: '解除车牌', //前往解除车牌占用 success: function(res) { if (res.confirm) { console.log('用户点击确定2'); } else if (res.cancel) { uni.redirectTo({ url: "/subpackage/after-sale/rescind-carId/rescind-carId-select" }) } } }); } else { uni.showModal({ title: '提示', content: res.data.errorMsg, success: function(res) { if (res.confirm) { console.log('用户点击确定2'); } else if (res.cancel) { console.log('用户点击取消2'); } } }); } } reject(res.data.errorMsg) return } else { let content = s4.decryptData_CBC(res, sm4Key) console.log('请求成功返回参数:', code, content) resolve(content.data) } } options.fail = (err) => { // console.log('请求失败返回参数:', res) uni.hideLoading() console.log('请求错误', err) // if (err == 'openId无效,请核实传参!') { // setItem(StorageKeys.OpenId, openId); // } //处理请求错误 reject(err) } uni.getNetworkType({ success: function(res) { if (res.networkType == 'none') { uni.showModal({ title: '提示', content: "网络异常", success: function(res) { if (res.confirm) { console.log('用户点击确定'); } else if (res.cancel) { console.log('用户点击取消'); } } }); } else { uni.request(options) } console.log("res.networkType", res.networkType); } }); }); }