Files
xk-doctor-wx/common/js/common.js
李琦 31551437c2 1. 更新切换账号逻辑
2. 诊所管理员功能上线
2026-05-30 16:36:33 +08:00

86 lines
3.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { getDoctorWxEnv } from '@/config/app-env.js';
/** 与 newApi 医生端接口一致;环境见 config/app-env.js */
export const DOCTOR_NEWAPI_BASE = getDoctorWxEnv().newApiBase;
/** 用于拉取同站点 public/traditional.json与 DOCTOR_NEWAPI_BASE 同源) */
export function getDoctorNewApiStaticOrigin() {
try {
return new URL(DOCTOR_NEWAPI_BASE).origin;
} catch (e) {
return '';
}
}
export async function requestConfig(ins, options, successHandler = null, failHandler = null, completeHandler = null){
//原来是ins.baseUrl = options.baseUrl || ins.baseUrl
let baseUrl = options.baseUrl || ins.baseUrl;
// TODO 这里写dev还是生产环境
if (options.url.split('/').indexOf('newApi') !== -1) {
baseUrl = DOCTOR_NEWAPI_BASE;
}
options.url = options.url.replace('/oldApi/', '');
options.url = options.url.replace('/newApi/', '');
const defaultHeader = { 'Content-Type': 'application/x-www-form-urlencoded' }
// 每次请求独立合并 header避免登录 isToken:false 污染单例
let config = {
url:`${baseUrl}${options.url?options.url:''}`,
header: { ...defaultHeader, ...(options.header || {}) }
}
if(ins.requestInterceptor){
let _cg = null
// 合并请求拦截器配置
try {
_cg = await ins.requestInterceptor(Object.assign({}, options, config))
} catch (e){
return false
}
// config为false或null return
if(!_cg || typeof _cg !== 'object'){
return false
}
// 更新options
Object.assign(options, _cg)
config.url = options.url
config.header = options.header
}
const type = options.type || "request"
// config 详情 如果options没有直接使用删除props
if(type === "request"){
config["data"] = options.data || options.params || {}
config["method"] = options.method || "GET"
config["dataType"] = options.dataType || "json"
config["responseType"] = options.responseType || "text"
config['sslVerify'] = false
// 如果是需要提交复杂对象/数组的写操作POST/PUT/PATCH强制使用 JSON 提交
const method = (config["method"] || "GET").toUpperCase()
if (["POST", "PUT", "PATCH"].includes(method)) {
const data = config["data"]
if (data && typeof data === 'object') {
const hasComplexValue = Object.values(data).some((v) => {
return v && typeof v === 'object'
})
if (hasComplexValue) {
config.header["Content-Type"] = "application/json"
}
}
}
}else if(type === "upload"){
config["filePath"] = options.filePath
config["name"] = options.name
config["method"] = options.method || "POST"
config["formData"] = options.formData
// fileType for alipay
config["fileType"] = options.fileType || "image"
config['sslVerify'] = false
// 强制删除 Content-Type
delete config.header["Content-Type"]
}
return config
}
function _isPromise(obj) {
return obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'
}