import Config from './config.js' import Util from './util.js' import siteConfig from './siteConfig.js'; // 获取应用类型和名称的函数 function getAppInfo() { let app_type, app_type_name; // #ifdef H5 app_type = 'h5'; app_type_name = 'H5'; // #endif // #ifdef MP-WEIXIN app_type = 'weapp'; app_type_name = '微信小程序'; // #endif // #ifdef APP-PLUS app_type = '1'; app_type_name = 'PDA小程序版'; // #endif return { app_type, app_type_name }; } // 检查配置是否存在 function checkConfig(configUrl, message) { if (!configUrl) { uni.showToast({ title: message, 'icon': 'none', duration: 10000 }); return false; } return true; } // 处理请求错误 function handleRequestError(res, configUrl) { uni.hideLoading(); if (res.errMsg && res.errMsg == 'request:fail url not in domain list') { uni.showToast({ title: configUrl + '不在request 合法域名列表中', 'icon': 'none', duration: 10000 }); } else if ((res.errMsg && res.errMsg != "request:ok") || (res.statusCode && [200, 500].indexOf(res.statusCode) == -1)) { uni.showToast({ title: configUrl + '请求失败', 'icon': 'none', duration: 10000 }); } } // 处理401状态码 function handle401(role) { switch (role) { case 'dealer': uni.removeStorageSync('token'); uni.removeStorageSync('dealer_info'); uni.redirectTo({ url: "/agentSystem/pages/login" }); break; case 'api': uni.removeStorageSync('lrusertoken'); break; case 'pda': uni.removeStorageSync('pdatoken'); uni.reLaunch({ url: "/PDA/pages/login" }); break; case 'salesman': uni.removeStorageSync('lrsalesmantoken'); uni.reLaunch({ url: "/brandSystem/pages/login" }); break; case 'engineer': uni.removeStorageSync('lrengineertoken'); uni.reLaunch({ url: "/pages/staff/login" }); break; } } // 检查网络 function checkNetwork() { uni.getNetworkType({ success: (res)=> { const networkType = res.networkType; if (networkType === 'none') { console.log('当前无网络连接'); uni.showToast({ title: '无网络连接,请检查网络设置', icon: 'none', duration: 2000 }); return false } else { // console.log(`当前网络类型: ${networkType}`); return true } }, fail: function (err) { console.error('获取网络类型失败:', err); } }); } // 公共的发送请求方法 function commonSendRequest(role, params, baseUrl, tokenKey) { if (!checkConfig(baseUrl, '未配置请求域名')) { return; } if(checkNetwork()){ return; } const token = uni.getStorageSync(tokenKey) || ''; // 确保 params.header 已经被初始化 if (!params.header) { params.header = {}; } params.header[`lr-${role == 'api'?'user':role}-token`] = token; params.baseUrl = baseUrl + params.url; return this.sendRequest(role, params); } export default { async getUserInfo() { const dealer_info = uni.getStorageSync('dealer_info'); if (dealer_info) { // return dealer_info; } const res = await this.sendDealer({ url: 'Index/getuser' }); if (res.code === 1) { uni.setStorageSync('dealer_info', res.data); return res.data; } else { uni.removeStorageSync('token'); uni.removeStorageSync('dealer_info'); uni.reLaunch({ url: "/pages/login/login" }); } }, sendDealer(params) { return commonSendRequest.call(this, 'dealer', params, Config.baseDealerUrl, 'token'); }, sendPda(params) { return commonSendRequest.call(this, 'pda', params, Config.basePdaUrl, 'pdatoken'); }, sendApi(params) { return commonSendRequest.call(this, 'api', params, Config.baseApiUrl, 'lrusertoken'); }, sendSalesman(params) { return commonSendRequest.call(this, 'salesman', params, Config.baseSalesmanUrl, 'lrsalesmantoken'); }, sendEngineer(params){ return commonSendRequest.call(this, 'engineer', params, Config.baseEngineerUrl, 'lrengineertoken'); }, sendRequest(role, params) { const { app_type, app_type_name } = getAppInfo(); let isNonLoading = params.isNonLoading ? params.isNonLoading : false; if (!isNonLoading) { uni.showLoading({ title: '加载中', mask: true }); } const method = params.data != undefined ? 'POST' : 'GET'; const url = params.baseUrl; // #ifdef H5 const env = process.env.NODE_ENV const redirect_url = location.href const data = { app_type, app_type_name, env, redirect_url }; // #endif // #ifndef H5 const data = { app_type, app_type_name, }; // #endif let header = params.header; if (!header) { header = {}; } header['content-type'] = 'application/json'; params.async = false; if (params.data != undefined) Object.assign(data, params.data); if (params.async === false) { return new Promise((resolve, reject) => { uni.request({ url: url, method: method, data: data, header: header, dataType: params.dataType || 'json', responseType: params.responseType || 'text', success: (res) => { uni.hideLoading(); if (res.data.code == 401) { handle401(role); // #ifdef H5 if(role == 'api'){ let code = this.getUrlCode('code') if(code == null){ window.location.href = res.data.data.url return false; } } // #endif } resolve(res.data); }, fail: (res) => { handleRequestError(res, Config.baseUrl); reject(res); }, complete: (res) => { handleRequestError(res, Config.baseUrl); reject(res.data); } }); }); } else { uni.request({ url: url, method: method, data: data, header: header, dataType: params.dataType || 'json', responseType: params.responseType || 'text', success: (res) => { uni.hideLoading(); if (res.data.code == 401) { handle401(role); // #ifdef H5 if(role == 'api'){ let code = this.getUrlCode('code') if(code == null){ window.location.href = res.data.data.url return false; } } // #endif } typeof params.success == 'function' && params.success(res.data); }, fail: (res) => { handleRequestError(res, Config.baseUrl); typeof params.fail == 'function' && params.fail(res); }, complete: (res) => { handleRequestError(res, Config.baseUrl); typeof params.complete == 'function' && params.complete(res.data); } }); } }, upload(params) { const { app_type, app_type_name } = getAppInfo(); uni.showLoading({ title: '上传中...', mask: true }); uni.uploadFile({ url: Config.baseUrl + params.url + '?driver=' + siteConfig.upload.mode, filePath: params.filePath, name: params.name || 'file', fileType: params.fileType || 'image', formData: { app_type, app_type_name, }, header: { 'lr-dealer-token': uni.getStorageSync('token'), 'lr-user-token': uni.getStorageSync('lrusertoken') }, success: (res) => { uni.hideLoading(); typeof params.success == 'function' && params.success(JSON.parse(res.data)); }, fail: (res) => { uni.hideLoading(); typeof params.fail == 'function' && params.fail(res); } }); }, getUrlCode(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||[, ''])[1].replace(/\+/g, '%20')) || null }, async h5Login(){ this.isLogin() let code = this.getUrlCode('code') this.handleToLogin(code) }, async isLogin(){ const res = await this.sendApi({ url:'auth/islogin' }) }, async handleToLogin(code){ if(uni.getStorageSync('lrusertoken')=='' && code !=null){ const res = await this.sendApi({ url: 'auth/wechatLogin', data:{ code: code } }) if(res.code == 1){ uni.setStorageSync('lrusertoken',res.data.token) window.location.reload() }else if(res.code == 0){ uni.showToast({ title: res.msg, icon: 'none' }) } } }, };