import config from '../config/common' // 配置文件 import handle401 from './handle401' // import MD5 from 'md5' export default { domain() { // return config.uni_app_web_api_url.replace('api', '') return config.uni_app_web_local_api_url.replace('api', '') }, getRequestHeaders(url, type = 'post', isIgnoreTenant) { const auth = 'Bearer ' + uni.getStorageSync('accessToken') // const user = uni.getStorageSync('loginUserVerify') // const RootOrgId = uni.getStorageSync('RootOrgId') const appInfoData = uni.getStorageSync('appInfo') const tenant = uni.getStorageSync('Tenant') || '' const userId = uni.getStorageSync('Userid')||'' // const userId = appInfoData?.User?.ID || '' const userName = appInfoData?.User?.NAME || '' const orgId= uni.getStorageSync('orgId')||'' // const orgId = appInfoData?.User?.ORG_ID || '' const dataRule = appInfoData?.DataRule ? appInfoData?.DataRule.join(',') : '' const departmentId = appInfoData?.User?.DEPARTMENT_ID || '' const mineType = appInfoData?.User?.MineType || '' const headers = { 'Content-Type': type === 'post' ? 'application/json' : 'application/x-www-form-urlencoded', Authorization: auth, // Tenant: tenant, userid: userId, // username: userName, // username不能使用中文放在header departmentId, MineType: mineType, orgId, DataRule: dataRule, RequestType: '2' } // 非 OP 路径接口,header 需要添加 Tenant // const Tenant = uni.getStorageSync('Tenant') // url.indexOf('OP') != 0 && !isIgnoreTenant && (headers.Tenant = Tenant) const Tenant = uni.getStorageSync('Tenant') || '' if (url.indexOf('PF/Login/Login') !== -1) { // Login接口使用最新的Tenant、Orgid、userid、Username值 const latestTenant = uni.getStorageSync('Tenant') || '' const latestOrgid = uni.getStorageSync('orgId') const latestUserid = uni.getStorageSync('Userid') const latestUsername = uni.getStorageSync('Username') if (latestTenant) { headers.Tenant = latestTenant } if (latestOrgid) { // 覆盖原有的orgId字段,使用最新值 headers.orgId = latestOrgid } if (latestUserid) { // 覆盖原有的userid字段,使用最新值 headers.userid = latestUserid } // if (latestUsername) { // // 覆盖原有的username字段,使用最新值 // headers.username = latestUsername // } } else if (url.indexOf('OP') != 0 && !isIgnoreTenant) { headers.Tenant = Tenant } return headers }, send(options = {}, onlyData, isShowLoading) { const u = config.serviceHost(options.url) // loading加载 if (isShowLoading) { uni.showLoading({ title: '加载中', mask: true }) } // options.url = config.uni_app_web_api_url + '' + options.url options.url = u // 请求方式 options.method = options.method || 'GET' // TODO: // let users = uni.getStorage("users"); // if(users != null){ // options.header = { "Auth-Token" : users.token }; // } // options.header = options.header // 发起Promise请求 return new Promise((resolve, reject) => { uni.request(options).then(async (res, err) => { uni.hideLoading() let { errMsg, data, statusCode } = res // 登陆过期 if (statusCode === 401) { const refreshData = await handle401(options) errMsg = refreshData.errMsg data = refreshData.data statusCode = refreshData.statusCode } if (statusCode !== 200) { if (statusCode === 400) { uni.removeStorageSync('accessToken') uni.removeStorageSync('refreshToken') let pages = getCurrentPages() if (pages.length > 0) { let prevPage = pages[pages.length - 1] if (prevPage.route !== 'pages/login/index') { uni.navigateTo({ url: '/pages/login/index' }) } else { uni.showModal({ title: "400:没有访问权限", showCancel: false, content: data.error_description }) } } } else { uni.showToast({ title: '请求错误: ' + statusCode, icon: 'error' }) } return } if (errMsg !== 'request:ok') { reject(errMsg) } else { uni.hideLoading() // 相应拦截、根据后端的状态码来写,可以自行判断和封装 if (!data.IsSuccessful && onlyData) { // wyw api 调用错误提示 需要用户确认 再消失 uni.showModal({ title: '错误提示', content: data.ErrorMessage, showCancel: false, }) reject(data.ErrorMessage) } else { resolve(data) } } }) }) }, upload(url = '', filePath) { // return this.send({ // url: url, // data: data, // header: this.getRequestHeaders(url, 'post') // }, onlyData) const appInfoData = uni.getStorageSync('appInfo') const tenant = uni.getStorageSync('Tenant') || '' const userId = appInfoData?.User?.ID || '' const orgId = appInfoData?.User?.ORG_ID || '' return new Promise((resolve, reject) => { uni.showLoading() uni.uploadFile({ url: url, filePath: filePath[0], name: 'file', formData: { OrgId: orgId, userID: userId }, header: { Tenant: tenant, userid: userId }, success: (res) => { if (res.statusCode === 200) { uni.hideLoading() const uploadResult = JSON.parse(res.data) uploadResult.isOnline = true resolve(uploadResult) if (uploadResult.IsSuccessful) { uploadResult.Data.isOnline = true resolve(uploadResult.Data) } else { reject(uploadResult.ErrorMessage) } } }, fail: (err) => { console.log(err) } }) }) }, get(url = '', data = {}, onlyData = true) { return this.send({ url: url, data: data, header: this.getRequestHeaders(url, 'get') }, onlyData) }, post(url = '', data = {}, onlyData = true, isShowLoading = true) { const DataRule = uni.getStorageSync('DataRule') const dataStr = JSON.stringify(Object.assign({}, data, { DataRule })) // const requestKey = url + '_' + MD5(dataStr) + '_requestKey' // TODO: 节流 // const loaded = uni.getStorageSync(requestKey) // if (loaded) return null // uni.setStorageSync(requestKey, true) return this.send({ url: url, data: data, header: this.getRequestHeaders(url, 'post'), method: 'POST' }, onlyData, isShowLoading) }, // 处理缓存数据 processCachedData(url) { try { //数据处理 var riskUpInfo = uni.getStorageSync('riskUpInfo') || []; if (riskUpInfo.length === 0) return; var thisRiskUp = riskUpInfo.filter(e => e.RISK_AREA_ID && e.RISK_AREA_ID.length > 0) var maxLength = thisRiskUp.length if (maxLength === 0) return; // 3个一组 往服务端传 var listOperate = [] const appInfoData = uni.getStorageSync('appInfo') const tenant = uni.getStorageSync('Tenant') || '' const userId = appInfoData?.User?.ID || '' const orgId = appInfoData?.User?.ORG_ID || '' const auth = 'Bearer ' + uni.getStorageSync('accessToken') thisRiskUp.forEach((e, index) => { e.USER_ID = userId e.ORG_ID = orgId e.OrgId = orgId e.RiskContentState = 15 uni.uploadFile({ url: url, filePath: e.filePath, name: 'file', data: e, formData: e, header: { Tenant: tenant, userid: userId, Authorization: auth, RequestType: '2' }, success: (res) => { if (res.statusCode == 200) { var data = JSON.parse(res.data) if (data.Data.imgFileID && data.Data.imgFileID.length > 0) { //缓存删除 var riskUpInfo = uni.getStorageSync('riskUpInfo') var riskUpInfoResult = riskUpInfo.filter(e => e.imgFileID != data.Data.imgFileID) if (riskUpInfoResult == null || riskUpInfoResult.length == 0) { uni.removeStorageSync('riskUpInfo'); } else uni.setStorageSync('riskUpInfo', riskUpInfoResult); } } }, fail: (err) => { console.log(err) } }) }) } catch (e) { //TODO handle the exception } }, }