Files
xk-doctor-wx/api/reception.js
李琦 62ffb6fd31 feat: 工作台常用入口可批量编辑,简报改为横幅,列表补下拉刷新
各角色工作台支持批量保存常用入口和业务员看板;AI 简报改成单行横幅避免锁死滑动;仓库/提现/对账等列表统一下拉刷新,并补代付码弹窗。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 08:53:16 +08:00

712 lines
17 KiB
JavaScript
Raw 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 {
req
} from '@/common/js/index.js';
import {
loadValid as loadTraditionalTcmValid,
save as saveTraditionalTcm,
DEFAULT_TTL_MS,
} from '@/subPackages/sub_workbench/prescription_v2/utils/traditionalTcmLocalCache.js';
// 门店维度患者列表(全渠道挂号 + 当前门店),其它页面如需可继续调用
export function getPatientList(data) {
return req.request({
url: '/newApi/doctor-reception-wx/patient-list',
method: 'GET',
data
})
}
/** 在线复诊患者列表(与 PC online-consultation/get-patient-list 一致type: 1当前 2历史可选 store_id */
export function getOnlineConsultationPatientListApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/online-consultation-patient-list',
method: 'GET',
data
})
}
// 获取正在接诊的患者列表
export function getAcceptingPatientList(data) {
return req.request({
url: '/newApi/doctor-reception-wx/accepting-patient-list',
method: 'GET',
data
})
}
/** 工作台看板统计 */
export function getWorkbenchStats(data) {
return req.request({
url: '/newApi/doctor-reception-wx/workbench-stats',
method: 'GET',
data
})
}
/** 未来7天预约明细工作台预约卡片点击弹层xk-api业务在 result */
export function getAppointmentUpcomingListApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/appointment-upcoming-list',
method: 'GET',
data
})
}
/** 医生代患者改期 xk-api POST /doctor-reception-wx/reschedule-appointmentregister_id/visit_date/slot_id/remark写改期日志 */
export function rescheduleAppointmentApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/reschedule-appointment',
method: 'POST',
data
})
}
/** 生成患者代付码 xk-api POST /doctor-reception-wx/proxy-pay-qrcodeorder_id返回 base64 小程序码 + 订单号/金额) */
export function getProxyPayQrcodeApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/proxy-pay-qrcode',
method: 'POST',
data
})
}
/** 医生本人号源日历 xk-api GET /doctor-reception-wx/my-schedule-calendar改期抽屉选新日期/时段) */
export function getMyScheduleCalendarApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/my-schedule-calendar',
method: 'GET',
data: data || {}
})
}
// 获取患者详情(挂号维度的就诊信息,不含处方列表)
export function getPatientItem(id) {
return req.request({
url: '/newApi/doctor-reception-wx/patient-item',
method: 'GET',
data: { id }
})
}
/** 医生应用特色方到开方区 */
export function applySpecialPrescriptionApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/apply-special-prescription',
method: 'POST',
data
})
}
/** 常用回复模板(与 PC online-consultation/get-quick-reply-list 同源) */
export function getQuickReplyListApi() {
return req.request({
url: '/newApi/doctor-reception-wx/get-quick-reply-list',
method: 'GET'
})
}
/** 本次挂号处方分页 */
export function getRegisterPrescriptionList(data) {
return req.request({
url: '/newApi/doctor-reception-wx/register-prescription-list',
method: 'GET',
data
})
}
/** 患者历史处方分页(可排除某次挂号) */
export function getPatientPrescriptionHistory(data) {
return req.request({
url: '/newApi/doctor-reception-wx/patient-prescription-history',
method: 'GET',
data
})
}
/** 撤回处方(待支付) */
export function withdrawPrescriptionWx(data) {
return req.request({
url: '/newApi/doctor-reception-wx/withdraw-prescription',
method: 'POST',
data
})
}
/**
* 根据患者ID获取患者信息
* @param {number} patientId - 患者ID
* @returns {Promise}
*/
export function getPatientInfoByPatientId(patientId) {
return req.request({
url: '/newApi/doctor-reception-wx/get-patient-info-by-patient-id',
method: 'GET',
data: { patient_id: patientId }
})
}
// 接诊
export function receptionApi(id) {
return req.request({
url: '/newApi/doctor-reception-wx/reception',
method: 'POST',
data: { id }
})
}
// 拒诊
export function refuseReceptionApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/refuse-reception',
method: 'POST',
data
})
}
// 获取拒诊原因列表
export function refuseReceptionListApi() {
return req.request({
url: '/newApi/doctor-reception-wx/refuse-reception-list',
method: 'GET'
})
}
// 结束问诊
export function endOfDiagnosisApi(id) {
return req.request({
url: '/newApi/doctor-reception-wx/end-of-diagnosis',
method: 'POST',
data: { id }
})
}
// 获取商品列表
export function getProductListDoctorReception(data) {
return req.request({
url: '/newApi/doctor-reception-wx/product-list',
method: 'GET',
data
})
}
/** 中药全局快捷克数(与药品无关,每次打开中药抽屉拉取) */
export function getChineseMedicineQuickGramsApi() {
return req.request({
url: '/newApi/doctor-reception-wx/chinese-medicine-quick-grams',
method: 'GET'
})
}
// 获取药品使用方式列表
export function getDrugUseList() {
return req.request({
url: '/newApi/doctor-reception-wx/drug-use-list',
method: 'GET'
})
}
// 获取药品使用方式及默认用法用量
export function getDrugUseWithDefault(drugId) {
return req.request({
url: '/newApi/doctor-reception-wx/drug-use-with-default',
method: 'GET',
data: { drug_id: drugId }
})
}
// 获取疾病列表
export function getDiseaseList(name, page = 1, pageSize = 20) {
return req.request({
url: '/newApi/doctor-reception-wx/disease-list',
// url: '/doctor-reception-wx/disease-list',
method: 'GET',
data: { name, page, page_size: pageSize }
})
}
// 获取医生的常用诊断列表
export function getMyDiseaseList() {
return req.request({
url: '/newApi/doctor-reception-wx/my-disease-list',
method: 'GET'
})
}
// 添加常用诊断
export function addMyDisease(diseaseId) {
return req.request({
url: '/newApi/doctor-reception-wx/add-my-disease',
method: 'POST',
data: { disease_id: diseaseId }
})
}
// 删除常用诊断
export function deleteMyDisease(id) {
return req.request({
url: '/newApi/doctor-reception-wx/delete-my-disease',
method: 'POST',
data: { id }
})
}
// 获取医嘱列表
export function getDoctorOrderList() {
return req.request({
url: '/newApi/doctor-reception-wx/doctor-order-list',
// url: '/doctor-reception-wx/doctor-order-list',
method: 'GET'
})
}
// 创建医嘱
export function createDoctorOrder(content) {
return req.request({
url: '/newApi/doctor-reception-wx/create-doctor-order',
method: 'POST',
data: { content }
})
}
// 删除医嘱
export function deleteDoctorOrder(id) {
return req.request({
url: '/newApi/doctor-reception-wx/delete-doctor-order',
method: 'POST',
data: { id }
})
}
// 添加西药处方
export function addWestPrescription(data) {
return req.request({
url: '/newApi/doctor-reception-wx/add-west-prescription',
method: 'POST',
data
})
}
/**
* 按药品查可选配送仓(药店开方选仓)
* 走 PC 同源 admin JWT 接口;医生小程序侧若无权限需后端另开 doctor 路由,此处与 delivery-warehouse-drug 对齐
*/
export function getDeliveryWarehouseOptionsByDrugs(data) {
return req.request({
url: '/newApi/doctor-reception-wx/delivery-warehouse-options-by-drugs',
method: 'GET',
data
})
}
// 检查中药相冲
export function checkChineseMedicineConflictApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/check-chinese-medicine-conflict',
method: 'POST',
data
})
}
function parseTraditionalTcmResponse(inner) {
if (!inner || typeof inner !== 'object') return null;
const { diseases, method, syndrome, expires_at, expires_at_ms, cache_ttl_seconds } = inner;
if (!Array.isArray(diseases) || !Array.isArray(method) || !Array.isArray(syndrome)) {
return null;
}
let expiresAtMs;
if (typeof expires_at_ms === 'number' && expires_at_ms > Date.now()) {
expiresAtMs = expires_at_ms;
} else if (typeof expires_at === 'number' && expires_at > 0) {
expiresAtMs = expires_at * 1000;
} else {
const ttlSec =
typeof cache_ttl_seconds === 'number' && cache_ttl_seconds > 0
? cache_ttl_seconds
: DEFAULT_TTL_MS / 1000;
expiresAtMs = Date.now() + ttlSec * 1000;
}
return {
payload: { diseases, method, syndrome },
expiresAtMs,
};
}
/**
* 中医证候/治法/疾病术语表:未过期读本地,否则 GET doctor-reception-wx与 PC 同源数据 + 过期元数据)
* @returns {Promise<{ diseases: array, method: array, syndrome: array }>}
*/
export function getTraditionalChineseMedicineJson() {
const cached = loadTraditionalTcmValid();
if (cached) {
return Promise.resolve(cached);
}
return req
.request({
url: '/newApi/doctor-reception-wx/traditional-chinese-medicine-all',
method: 'GET',
})
.then((res) => {
if (res && res.wakaryReqToReject) {
return Promise.reject(res);
}
const code = res && res.code;
if (code != null && code !== 0 && code !== 200) {
return Promise.reject(new Error((res && res.message) || 'traditional tcm api error'));
}
const inner = res && (res.result != null ? res.result : res.data);
const parsed = parseTraditionalTcmResponse(inner);
if (!parsed) {
return Promise.reject(new Error('traditional tcm invalid'));
}
saveTraditionalTcm(parsed.payload, parsed.expiresAtMs);
return parsed.payload;
});
}
// 获取我的诊所列表
export function getMyStoreListApi() {
return req.request({
url: '/newApi/doctor-reception-wx/get-my-store-list',
method: 'GET'
})
}
// 获取当前诊所类型
export function getCurrentStoreTypeApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/get-current-store-type',
method: 'GET',
data
})
}
/**
* 开方处方类型选项(含默认选中、可选 icon / icon_text
* 后端按 clinic_type 判断 default未传 icon 时前端不展示
*/
export function getPrescriptionTypeOptionsApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/prescription-type-options',
method: 'GET',
data: data || {}
})
}
// 订单百分比调价配置(开方前)
export function getPriceAdjustConfigApi(storeId) {
return req.request({
url: '/newApi/doctor-reception-wx/price-adjust-config',
method: 'GET',
data: storeId ? { store_id: storeId } : {}
})
}
// 接诊页匹配推广员传方
export function getSalespersonTransferByRegisterApi(registerId) {
return req.request({
url: '/newApi/transfer-prescription/get-salesperson-by-register',
method: 'GET',
data: { register_id: registerId }
})
}
// 切换诊所
export function switchStoreApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/switch-store',
method: 'POST',
data
})
}
// 获取处方详情(医生小程序 doctor-reception-wx 路由,与接诊接口同鉴权)
export function getPrescriptionInfoApi(id) {
return req.request({
url: '/newApi/doctor-reception-wx/prescription-detail',
method: 'GET',
data: { id }
})
}
// 获取加工规则列表
export function getProcessRuleList(data) {
return req.request({
url: '/newApi/doctor-reception-wx/process-rule-list',
method: 'GET',
data
})
}
// 获取煎煮方式列表
export function getUseWayList() {
return req.request({
url: '/newApi/doctor-reception-wx/drug-use-way-list',
method: 'GET'
})
}
// 获取常用方列表
export function getCommonPrescriptionListApi(storeId) {
return req.request({
url: '/newApi/common-prescription/list',
method: 'GET',
data: { store_id: storeId }
})
}
// 获取常用方详情
// 注意prescription_v2 选用常用方已改走 list与 PC 对齐,主表行 + 平行药品行一次返回),不再调用此接口
export function getCommonPrescriptionDetailApi(id, type) {
return req.request({
url: '/newApi/common-prescription/detail',
method: 'GET',
data: { id, type }
})
}
// 保存西药常用方
export function saveWestCommonPrescriptionApi(data) {
return req.request({
url: '/newApi/common-prescription/save-west',
method: 'POST',
data
})
}
// 保存中药常用方
export function saveChineseCommonPrescriptionApi(data) {
return req.request({
url: '/newApi/common-prescription/save-chinese',
method: 'POST',
data
})
}
// 保存颗粒药/保健食品常用方
export function saveGranularCommonPrescriptionApi(data) {
return req.request({
url: '/newApi/common-prescription/save-granular',
method: 'POST',
data
})
}
// 删除常用方
export function deleteCommonPrescriptionApi(data) {
return req.request({
url: '/newApi/common-prescription/delete',
method: 'POST',
data
})
}
// 获取公共医嘱列表
export function getDoctorOrderCommonList(data) {
return req.request({
url: '/newApi/doctor-reception-wx/common-list',
method: 'GET',
data
})
}
/** 根据挂号获取转诊处方信息(非转诊挂号时 result 为 null */
export function getTransferPrescriptionByRegisterApi(register_id) {
return req.request({
url: '/newApi/doctor-reception-wx/transfer-prescription-by-register',
method: 'GET',
data: { register_id }
})
}
/** 根据挂号与门店获取就诊经历药品列表(与 PC online-consultation/get-drugs-by-register-id 对齐) */
export function getDrugsByRegisterIdApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/get-drugs-by-register-id',
method: 'GET',
data: {
register_id: data.register_id,
store_id: data.store_id
}
})
}
/** 获取病历 */
export function getMedicalRecordApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/get-medical-record',
method: 'GET',
data
})
}
/** 保存病历 */
export function saveMedicalRecordApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/save-medical-record',
method: 'POST',
data
})
}
/** 清空病历 */
export function clearMedicalRecordApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/clear-medical-record',
method: 'POST',
data
})
}
/** 引用最近病历(兼容旧入口,优先用列表抽屉) */
export function latestMedicalRecordApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/latest-medical-record',
method: 'GET',
data
})
}
/** 按就诊人拉取病历列表(引用历史抽屉) */
export function listMedicalRecordByPatientApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/list-medical-record-by-patient',
method: 'GET',
data
})
}
/** 病历词条检索 */
export function searchMedicalRecordEntryApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/search-medical-record-entry',
method: 'GET',
data
})
}
/** AI 写病历(需先填主诉;返回草稿字段,不自动保存) */
export function aiGenerateMedicalRecordApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-generate-medical-record',
method: 'POST',
data
})
}
/** AI 功能门闸:醒目提示 + 是否已签署知情同意 */
export function aiFeatureGateApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-feature-gate',
method: 'GET',
data
})
}
/** AI 知情同意签署(按 VIP 功能码,签署一次即可) */
export function aiAgreeConsentApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-agree-consent',
method: 'POST',
data
})
}
/** AI 给处方(支持 use_entrusted_process / process_rule_id 等扩展字段) */
export function aiGeneratePrescriptionApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-generate-prescription',
method: 'POST',
data
})
}
/** 本挂号 AI 生成历史(轻量列表) */
export function aiListGenerationsApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-list-generations',
method: 'GET',
data
})
}
/** AI 生成详情(点选历史) */
export function aiGenerationDetailApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-generation-detail',
method: 'GET',
data
})
}
/** 标记 AI 生成记录为已读(熄灭未读微光) */
export function aiMarkGenerationReadApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-mark-generation-read',
method: 'POST',
data
})
}
/** AI 处方药名模糊对照 */
export function aiMatchPrescriptionDrugsApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-match-prescription-drugs',
method: 'POST',
data
})
}
/** AI 出方:改选对照药品并写回 result_json标记 is_modified */
export function aiSavePrescriptionDrugSelectionApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/ai-save-prescription-drug-selection',
method: 'POST',
data
})
}
/** 金方列表VIPgolden_formulaxk-api业务在 result */
export function goldenFormulaListApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/golden-formula-list',
method: 'GET',
data
})
}
/** 金方来源下拉导入弹窗筛选用xk-api */
export function goldenFormulaSourceOptionApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/golden-formula-source-option',
method: 'GET',
data
})
}
/** 金方详情xk-api */
export function goldenFormulaDetailApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/golden-formula-detail',
method: 'GET',
data
})
}
/** 金方导入药名对照xk-api */
export function goldenFormulaApplyApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/golden-formula-apply',
method: 'POST',
data
})
}
/** 保存医生金方匹配选择xk-api */
export function goldenFormulaSaveMatchApi(data) {
return req.request({
url: '/newApi/doctor-reception-wx/golden-formula-save-match',
method: 'POST',
data
})
}