import { encryption } from "./encryption" import { getToken, getItem, StorageKeys } from '@/utils/storage' import { sm4Key, } from "../network/api.js"; import { SM4Util } from '../util/sm4.js' const s4 = new SM4Util() /** * 配置信息,针对不同的平台进行配置 */ export function request(code, options = {}) { // console.log('接口请求参数:', options) //公参 const Common = { // loginSource: '69af303ba2eb4608a099163f0d2a5dbd', loginSource: '431bfdc8b9c645e0b293b85d6ce1948n', orderSource: 'H5' } //Url 地址 // options.url = 'http://' + envs['development'].baseUrl + '/ifzt/api/interfaceMidGroundIn' // options.url = import.meta.env.VITE_APP_BASE_URL + '/api/interfaceMidGroundIn' options.url = import.meta.env.VITE_APP_BASE_URL + import.meta.env.VITE_APP_TYPE_URL + '/api/interfaceMidGroundIn' // options.url = 'https://' + 'skx.mynatapp.cc' + '/ifzt/api/interfaceMidGroundIn' //判断baseUri是否为空 if (options.baseUrl) { options.url = options.baseUrl } //默认json数据格式提交` let contentType = 'application/json;charset=UTF-8' //根据type判断数据传输格式 if (options.type && options.type === 2) { contentType = 'application/x-www-form-urlencoded ' } else if (options.type && options.type === 3) { contentType = 'multipart/form-data' } options.header = { 'content-type': 'application/json' } const token = getToken(); if (token) { options.header["Access-Token"] = token; } //默认POST提交 options.method = options.method ? options.method : 'POST' //设置请求超时时间 options.timeout = 10000 //判断code不为空 if (code) { let appId = '' if (import.meta.env.VITE_APP_TYPE === 'production') { appId = '52030131' } else { appId = 'admin001' } //是否显示加载中 if (!options.showLoading) { uni.showLoading({ title: options.showTitle ? options.showTitle : '加载中', mask: true }); } console.time() if (options.noCommon) { // 不携带公参 options.data = encryption(code, { ...options.data, 'appId': appId }, 2); } else { options.data = encryption(code, Object.assign(Common, { ...options.data, 'appId': appId }), 2); } console.timeEnd() } //参数返回 return new Promise((resolve, reject) => { options.success = (res) => { // 请求返回后,隐藏loading(如果请求返回快的话,可能会没有loading) // uni.hideLoading() if (res.data.statusCode !== 0) { if (!options.hideShowModal && res.data.statusCode !== options.statusCode) uni.showModal({ title: '提示', content: res.data.errorMsg, success: function(res) { if (res.confirm) {} else if (res.cancel) {} } }); } if (import.meta.env.VITE_APP_TYPE === 'production' && res.data.statusCode === 0) { // let cssObj = { // data: { // bizContent: "ePn4Q6MBw3gYi+IWhpvEUrV7iQg7cW/OtBGMWKUif9QWFJnOBKhxFY4jcRxRrpiyw9uiwGtZHD46Qoq2a1H6UhTrzz2RX8qwbuREi61si+mkIVFJBMTkZTiv6XraZ0j1TsIt8a7fB+eHri3HQisHEdPoPAFCHRmeOSTLh2ivpkcG3LzF0gut1An38vXCnMPQZo/5LThK2PZUwp/qRprde75T8k74p/ACS9YFWXr5RpEkEATqrkH0v0A8F4evxxwiwIvwfNJjrcCXWdARxwNVjThMxB4nkUKcL3R8SCAXcFQc+64YKxUKi82OOyhdOtkEZbOKo4QRpP6H9CCJ22CmwUPRr73oM9IngpVeYwUnh1YH/HC4WXIl90wGLDA8hh9bmIU6o+1BMb5vY8SWPj/GqGq96kRYd+5dnyJ+Vdnlm5nD4QXft/2E+GkfAN/kq8qu2LghR2RN1XmsI8el2jcmmpBRcMy2dZ1/vxjw0bqzIRpN4lFFN9bDU4wAL3xn/15vN8l1VZbQmRKpPtsaUkgqg35tHY0N11pWZrLgGhuRxSAQWccZ/ViVx6J64j3w4j3YUBT/FQFOZ/DySq2LA2sDwC1mB/BGyDiuM1PqywhfGW3mw5shGmz2CBRwGNjbumeI8gbSiqx0UTrcBXu5SFQQyndCGKdvJmXTWgj/K/qieNHUxzC95Cpy3BvJCnD8y7QKHXR/HLhKD9HU6FMaggE7Fw==" // } // } // const dataObjs = s4.decryptData_CBC(cssObj, sm4Key) // console.log(cssObj.data.bizContent, s4.decryptData_CBC(cssObj, sm4Key)) // console.log(JSON.parse(dataObjs.data.bizContent)) res = s4.decryptData_CBC(res, sm4Key) } //请求成功 resolve(res.data) } options.fail = (err) => { uni.hideLoading() console.log('请求错误', err) //处理请求错误 uni.showModal({ title: '提示', content: '请求错误,请检查网络环境', showCancel: false, success: (res) => { reject(err) } }); } options.complete = () => { uni.hideLoading() } uni.request(options) }); } // jsonp请求-用于获取公网地址 export function myJsonp(options) { /* 1.首先动态创建script标签 */ var script = document.createElement("script"); //1.1 把数据对象转换为查询字符串 // var qs = resolveData(options.data); // 1.2动态生成函数名 var jsonpName = 'ipCallback'; //1.3将当前文件名放到window里 window[jsonpName] = function(res) { //把结果回掉出去 options.success && options.success(res); //删除window中的函数名 delete window[jsonpName]; }; /* 2.给src设置url和参数 */ script.src = options.url; /* 3.添加到html */ document.querySelector("head").appendChild(script); /* 4.加载完毕后删除script标签 使用监听 */ script.onload = function() { document.querySelector("head").removeChild(script); }; } //请求 export function requestNew(code, options = {}, start = false) { const token = getToken(); //公参 const Common = { opId: getItem(StorageKeys.OpenId), openId: getItem(StorageKeys.OpenId), orderSource: 'H5', loginSource: '431bfdc8b9c645e0b293b85d6ce1948n', accessToken:token } options.url = import.meta.env.VITE_APP_BASE_URL + import.meta.env.VITE_APP_TYPE_URL + code // options.url = import.meta.env.VITE_APP_BASE_URL + code //默认json数据格式提交` let contentType = 'application/json' //判断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, } if (token) { options.header["Access-Token"] = 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.data.code === 0) { resolve(res.data) } 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); } }); }); }