2026-07-19 16:07:46 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 用户管理 / 就诊人档案 API(诊所管理员 / 平台超管)
|
|
|
|
|
|
*/
|
|
|
|
|
|
import { req } from '@/common/js/index.js';
|
|
|
|
|
|
import { unwrapClinicRes } from '@/api/clinicAdmin.js';
|
|
|
|
|
|
|
|
|
|
|
|
function getProfileContext() {
|
|
|
|
|
|
const mode = uni.getStorageSync('loginMode');
|
|
|
|
|
|
if (mode === 'clinic_admin') {
|
|
|
|
|
|
return {
|
|
|
|
|
|
prefix: '/newApi/clinic-admin-user-patient-profile',
|
|
|
|
|
|
headerKey: '_clinicAdmin',
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
|
|
|
prefix: '/newApi/platform-admin-user-patient-profile',
|
|
|
|
|
|
headerKey: '_platformAdmin',
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function profileRequest(options) {
|
|
|
|
|
|
const ctx = getProfileContext();
|
|
|
|
|
|
return req.request({
|
|
|
|
|
|
...options,
|
|
|
|
|
|
header: {
|
|
|
|
|
|
...(options.header || {}),
|
|
|
|
|
|
[ctx.headerKey]: '1',
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
|
const data = unwrapClinicRes(res);
|
|
|
|
|
|
// code 可能是数字 0 或字符串 "0";勿用 === 导致 ok 为 false、列表被丢弃
|
|
|
|
|
|
const ok = !!(res && (
|
|
|
|
|
|
Number(res.code) === 0
|
|
|
|
|
|
|| (res.errcode != null && Number(res.errcode) !== -1)
|
|
|
|
|
|
));
|
|
|
|
|
|
return { res, data, ok };
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 从 profile 接口包装中取出列表 items(兼容 result/data/items 多层)
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function pickProfileItems(wrap) {
|
|
|
|
|
|
const raw = (wrap && wrap.data) || null;
|
|
|
|
|
|
const body = wrap && wrap.res;
|
|
|
|
|
|
const fromBody = body && (body.result || body.data);
|
|
|
|
|
|
let payload = raw;
|
|
|
|
|
|
// unwrap 后若仍带着 code/result,再剥一层
|
|
|
|
|
|
if (payload && payload.items == null && payload.result != null) {
|
|
|
|
|
|
payload = payload.result;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (payload == null && fromBody) {
|
|
|
|
|
|
payload = fromBody;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (Array.isArray(payload)) {
|
|
|
|
|
|
return payload;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (payload && Array.isArray(payload.items)) {
|
|
|
|
|
|
return payload.items;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (payload && Array.isArray(payload.list)) {
|
|
|
|
|
|
return payload.list;
|
|
|
|
|
|
}
|
|
|
|
|
|
return [];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function getUserPatientList(params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({ url: `${prefix}/list`, method: 'GET', data: params });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** 会员管理:微信用户分页列表 */
|
|
|
|
|
|
export function getWxUserList(params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({ url: `${prefix}/user-list`, method: 'GET', data: params });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** 某微信用户下的就诊人列表 */
|
|
|
|
|
|
export function getPatientListByUser(userId) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/patient-list-by-user`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { user_id: userId },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function getUserPatientDetail(upId) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/detail`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { up_id: upId },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function getUserPatientRegisterList(upId, params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/register-list`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { up_id: upId, ...params },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** 就诊人单次挂号详情(基本信息 + 选药 + 回答记录) */
|
|
|
|
|
|
export function getUserPatientRegisterDetail(registerId) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/register-detail`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { register_id: registerId },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function getUserPatientPrescriptionList(upId, params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/prescription-list`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { up_id: upId, ...params },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function getUserPatientOrderList(upId, params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/order-list`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { up_id: upId, ...params },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2026-07-20 13:50:03 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 就诊人回访记录列表
|
|
|
|
|
|
* @param {number|string} upId 就诊人ID
|
|
|
|
|
|
* @param {object} params { pageSize }
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getPatientCallLogList(upId, params) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/call-log-list`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
data: { up_id: upId, ...(params || {}) },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 创建就诊人回访记录
|
|
|
|
|
|
* @param {number|string} upId 就诊人ID
|
|
|
|
|
|
* @param {object} payload { phone, call_at, result, tags, conclusion, remark, next_at }
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function createPatientCallLog(upId, payload) {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/call-log-create`,
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: { up_id: upId, ...(payload || {}) },
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 小程序回访字典(启用中的结果/标签 + 颜色)
|
|
|
|
|
|
* 返回结构:{ results: [{value,name,color}], tags: [...] }
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getPatientCallLogDict() {
|
|
|
|
|
|
const { prefix } = getProfileContext();
|
|
|
|
|
|
return profileRequest({
|
|
|
|
|
|
url: `${prefix}/call-log-dict`,
|
|
|
|
|
|
method: 'GET',
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|