73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
/**
|
||
* 省市区选择器接口(xk-api,取值用 code / result / message,配合 unwrapXkApi)
|
||
* 按 loginMode 切角色前缀,对齐 upload.js:医生走 region-picker,业务员/平台/诊所管理员走带前缀路由
|
||
* 为什么:doctor.php 里同名路由只会命中最先注册的医生鉴权组,业务员 token 会被 401
|
||
*/
|
||
import { req } from '@/common/js/index.js'
|
||
|
||
/**
|
||
* 按当前登录角色解析 region-picker 前缀与鉴权头标记
|
||
* @returns {{ prefix: string, header: Record<string, string> }}
|
||
*/
|
||
function resolveRegionPickerRoute() {
|
||
const mode = uni.getStorageSync('loginMode')
|
||
if (mode === 'salesperson') {
|
||
return {
|
||
prefix: '/newApi/salesperson-region-picker/',
|
||
header: { _salesperson: '1' },
|
||
}
|
||
}
|
||
if (mode === 'platform_admin') {
|
||
return {
|
||
prefix: '/newApi/platform-admin-region-picker/',
|
||
header: { _platformAdmin: '1' },
|
||
}
|
||
}
|
||
if (mode === 'clinic_admin') {
|
||
return {
|
||
prefix: '/newApi/clinic-admin-region-picker/',
|
||
header: { _clinicAdmin: '1' },
|
||
}
|
||
}
|
||
// 医生 / 药师等默认
|
||
return {
|
||
prefix: '/newApi/region-picker/',
|
||
header: {},
|
||
}
|
||
}
|
||
|
||
function regionPickerRequest(path, data) {
|
||
const { prefix, header } = resolveRegionPickerRoute()
|
||
return req.request({
|
||
url: `${prefix}${path}`,
|
||
method: 'GET',
|
||
data,
|
||
header,
|
||
})
|
||
}
|
||
|
||
/** 按 pid 拉一层子节点 */
|
||
export function getRegionChildren(pid = 0) {
|
||
return regionPickerRequest('children', { pid })
|
||
}
|
||
|
||
/** 地名/首拼/全拼合一搜索 */
|
||
export function searchRegions(keyword, limit = 30) {
|
||
return regionPickerRequest('search', { keyword, limit })
|
||
}
|
||
|
||
/** 按省+叶回显 */
|
||
export function resolveRegionPair(provinceId, cityId) {
|
||
return regionPickerRequest('resolve', {
|
||
province_id: provinceId,
|
||
city_id: cityId,
|
||
})
|
||
}
|
||
|
||
/** 批量 ID 解析 */
|
||
export function resolveRegionIds(ids) {
|
||
return regionPickerRequest('resolve', {
|
||
ids: (ids || []).join(','),
|
||
})
|
||
}
|