import { appId, envs } from "./api"; import { encryption } from "./encryption"; import { setItem, getItem, StorageKeys, removeItem } from "../storage"; import { sm4Key } from "../network/api.js"; const tools = require("../../static/etcUtil/tools.js"); import SM4Util from '../util/sm4.js' import { agentId, channelId } from "@/utils/network/difference"; import { updateToken,updateTokenNew } from "@/utils/network/api"; import orderJump from "@/composables/order/orderJump"; const { getOrderList } = orderJump(); import { jump } from "@/datas/9901Jump.js"; 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 + '/ndev/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) } if (!start) { //判断code不为空 if (code) { options.data = encryption(code, Object.assign(Common, { ...options.data, 'appId': appId }), 2); } } console.log('code', code, options.data) //是否显示加载中 if (options.showLoading) { uni.showLoading({ title: '请稍后', mask: true }); } //参数返回 return new Promise((resolve, reject) => { options.success = (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); uni.reLaunch({ url: '/login/login', }) } } }); }else if (res.data.statusCode == 99999 && res.data.errorMsg=='客户端登录凭证为空') { console.log("11====",res.data.errorMsg) jump("17","") }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 if ((code == 'abaf0013caa24dafad12b0f571e8ee40' && res.data.statusCode == 704) || (code == '36' && res.data.statusCode == 200)) { // 从九州过来的无感登录 console.log(code == 6, res.data.statusCode == 704) uni.showModal({ title: '提示', content: res.data.errorMsg, confirmText: '去登录', showCancel: false, success: function(res) { if (res.confirm) { uni.navigateTo({ url: `/login/login`, }) } } }); } else { if (options.showLoading) { tools.hideLoadingAlert(); uni.hideToast() } console.log("请求失败返回参数", code, res) 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 { console.log("res===",res) let content = s4.decryptData_CBC(res, sm4Key) console.log('请求成功返回参数:', code, content.data) resolve(content.data) } } options.fail = (err) => { uni.hideLoading() console.log('请求错误', err) //处理请求错误 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); } }); }); } /* 刷新token */ function updateGetTokenNew() { 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 requestNew(updateTokenNew, options); const data = res; 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 requestNew(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), } // #ifdef MP-ALIPAY Common['orderSource'] = "ALI" // #endif // #ifdef MP-WEIXIN Common['orderSource'] = "WECHAT" // #endif // options.url = envs[process.env.NODE_ENV].baseUrl+'/prod' + code options.url = envs[process.env.NODE_ENV].baseUrl+'/ndev' + code //默认json数据格式提交` let contentType = 'application/json' //判断baseUri是否为空 if (options.baseUrlNew) { options.url = options.baseUrlNew } //根据type判断数据传输格式 if (options.type && options.type === 2) { contentType = 'application/json;charset=UTF-8' } //默认POST提交 options.method = options.method ? options.method : 'POST' //设置请求超时时间 options.timeout = 60000 console.log("getItem(StorageKeys.Token)",getItem(StorageKeys.Token)) options.header = { 'content-type': contentType, 'Access-Token': getItem(StorageKeys.Token) } if (!start) { //判断code不为空 if (code) { options.data =Object.assign(Common,{...options.data}); } } console.log('code', code, options.data) //是否显示加载中 if (options.showLoading) { uni.showLoading({ title: '请稍后', mask: true }); } //参数返回 return new Promise((resolve, reject) => { options.success = (res) => { // 请求返回后,隐藏loading(如果请求返回快的话,可能会没有loading) if (options.showLoading) { uni.hideLoading() } console.log("返回结果"+code,res) if (res.statusCode == 200 && res.data.code == 0) { resolve(res.data.data) } else { // 未知错误:登录凭证失效! if(res.data.code == 403003 && res.data.message=='未知错误:登录凭证失效!'){ uni.showModal({ title: '提示', content: res.data.message, confirmText: '去登录', showCancel: false, success: function(res) { if (res.confirm) { uni.navigateTo({ url: `/login/login`, }) } } }); }else if(res.data.code == 401002){ updateGetTokenNew().then((data) => { console.log("token刷新", data); requestNew(code, options, true) }) }else if(res.data.code == 403001 || res.data.code == 403004){ // 会详细列出具体字段的错误信息。 uni.showModal({ title: '提示', content: res.data.message, success: function(res) { if (res.confirm) { console.log('用户点击确定2'); } else if (res.cancel) { console.log('用户点击取消2'); } } }); }else{ uni.showModal({ title: '提示', content: res.data.message, success: function(res) { if (res.confirm) { console.log('用户点击确定2'); } else if (res.cancel) { console.log('用户点击取消2'); } } }); } reject(res.data.message) return } } options.fail = (err) => { uni.hideLoading() console.log('请求错误', err) //处理请求错误 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); } }); }); }