From a7fd55aa1c6517eb0842d4d301731272f88d3b71 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 6 May 2026 18:17:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/stats.ts | 13 + .../src/views/consumer/prescription/index.vue | 111 +- .../consumer/prescription/order_list.vue | 25 +- .../consumer/prescription/order_list_h5.vue | 19 +- admin/src/views/fans/yeji.vue | 1172 ++++++++++++----- admin/src/views/tcm/diagnosis/edit.vue | 33 +- admin/tsconfig.tsbuildinfo | 2 +- .../controller/stats/YejiStatsController.php | 10 + .../lists/tcm/PrescriptionOrderLists.php | 39 + server/app/adminapi/logic/dept/DeptLogic.php | 556 +++++++- .../adminapi/logic/stats/YejiStatsLogic.php | 378 +++++- .../logic/tcm/PrescriptionOrderLogic.php | 47 +- .../tcm/PrescriptionOrderValidate.php | 5 +- ...scription_order_edit_remark_extra_menu.sql | 16 + ...dd_prescription_order_remark_assistant.sql | 3 + .../add_yeji_revisit_breakdown_menu.sql | 15 + 16 files changed, 2069 insertions(+), 375 deletions(-) create mode 100644 server/sql/1.9.20260506/add_prescription_order_edit_remark_extra_menu.sql create mode 100644 server/sql/1.9.20260506/add_prescription_order_remark_assistant.sql create mode 100644 server/sql/1.9.20260506/add_yeji_revisit_breakdown_menu.sql diff --git a/admin/src/api/stats.ts b/admin/src/api/stats.ts index b64e2ba9..9886fe7e 100644 --- a/admin/src/api/stats.ts +++ b/admin/src/api/stats.ts @@ -68,6 +68,19 @@ export function yejiStatsLeadLines(params: { return request.get({ url: '/stats.yejiStats/leadLines', params }) } +/** 二中心复诊:部门行下钻医助 × 业务订单笔数 */ +export function yejiStatsRevisitBreakdown(params: { + start_date: string + end_date: string + dept_id: number + revisit_slot: number + dept_ids?: string + channel_code?: string + tag_id?: string +}) { + return request.get({ url: '/stats.yejiStats/revisitBreakdown', params }) +} + export function doctorDailyStatsOverview(params: { start_date?: string end_date?: string diff --git a/admin/src/views/consumer/prescription/index.vue b/admin/src/views/consumer/prescription/index.vue index 2c93363e..2d8b9898 100644 --- a/admin/src/views/consumer/prescription/index.vue +++ b/admin/src/views/consumer/prescription/index.vue @@ -669,6 +669,49 @@ + + +
+ +

+ 当前处方暂无关联业务订单,或您无订单列表权限;若有订单,将在此处显示订单内 + 服用天数与 + 医助备注。 +

+
+
@@ -1183,7 +1226,7 @@ - + + + + @@ -1333,6 +1386,7 @@ import { prescriptionDetail, prescriptionOrderCreate, prescriptionOrderPaidPayOrders, + prescriptionOrderLists, getDoctors, prescriptionLibraryLists } from '@/api/tcm' @@ -1475,6 +1529,7 @@ const createOrderForm = reactive({ amount: 0, internal_cost: undefined as number | undefined, remark_extra: '', + remark_assistant: '', pay_order_ids: [] as number[] }) @@ -1714,6 +1769,7 @@ function resetCreateOrderForm() { createOrderForm.amount = 0 createOrderForm.internal_cost = undefined createOrderForm.remark_extra = '' + createOrderForm.remark_assistant = '' createOrderForm.pay_order_ids = [] createOrderPatientList.value = [] createOrderPaidOrders.value = [] @@ -1884,7 +1940,8 @@ async function submitCreateOrderFromPrescription() { tracking_number: createOrderForm.tracking_number || '', fee_type: createOrderForm.fee_type, amount: createOrderForm.amount, - remark_extra: createOrderForm.remark_extra || '' + remark_extra: createOrderForm.remark_extra || '', + remark_assistant: createOrderForm.remark_assistant || '' } // 添加省市区字段 @@ -2238,6 +2295,52 @@ const editForm = reactive({ times_per_day: 2 }) +/** 编辑页:关联业务订单上的服用天数、医助备注(与处方提示一致) */ +const rxLinkedOrderHint = reactive({ + loading: false, + orderNo: '', + medicationDays: null as number | null, + remarkAssistant: '' +}) + +function clearRxLinkedOrderHint() { + rxLinkedOrderHint.loading = false + rxLinkedOrderHint.orderNo = '' + rxLinkedOrderHint.medicationDays = null + rxLinkedOrderHint.remarkAssistant = '' +} + +async function loadRxLinkedOrderHintForEdit(prescriptionId: number) { + rxLinkedOrderHint.orderNo = '' + rxLinkedOrderHint.medicationDays = null + rxLinkedOrderHint.remarkAssistant = '' + if (!prescriptionId) { + rxLinkedOrderHint.loading = false + return + } + rxLinkedOrderHint.loading = true + try { + const data: any = await prescriptionOrderLists({ + page_no: 1, + page_size: 5, + prescription_id: prescriptionId + }) + const lists = data?.lists + const row = Array.isArray(lists) && lists.length ? lists[0] : null + if (row) { + rxLinkedOrderHint.orderNo = String(row.order_no || '').trim() + const md = row.medication_days + const mdn = md !== null && md !== undefined && String(md).trim() !== '' ? Number(md) : NaN + rxLinkedOrderHint.medicationDays = Number.isFinite(mdn) && mdn > 0 ? mdn : null + rxLinkedOrderHint.remarkAssistant = String(row.remark_assistant || '').trim() + } + } catch { + /* 无列表权限或网络错误:保持空 */ + } finally { + rxLinkedOrderHint.loading = false + } +} + const diagnosisViewRef = ref<{ openViewOnly: (id: number) => Promise } | null>(null) @@ -2882,6 +2985,7 @@ const resetForm = () => { editForm.is_system_auto = 0 editForm.business_prescription_audit_rejected = 0 editForm.business_prescription_audit_remark = '' + clearRxLinkedOrderHint() } // 新增处方 @@ -3009,8 +3113,9 @@ const handleEdit = async (row: any) => { setTimeout(() => { isLoadingData.value = false }, 0) - + showEdit.value = true + void loadRxLinkedOrderHintForEdit(Number(editForm.id)) nextTick(() => { formRef.value?.clearValidate() scheduleEditSignatureInit() diff --git a/admin/src/views/consumer/prescription/order_list.vue b/admin/src/views/consumer/prescription/order_list.vue index f5908bdc..806c9ec5 100644 --- a/admin/src/views/consumer/prescription/order_list.vue +++ b/admin/src/views/consumer/prescription/order_list.vue @@ -994,7 +994,7 @@