From 0eaacbb4ce7e960aaf43496743e4e59bebcf4c64 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 13 May 2026 16:54:54 +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 | 21 +- .../src/views/fans/commission-settlement.vue | 384 ++++++++++- admin/tsconfig.tsbuildinfo | 2 +- .../stats/CommissionSettlementController.php | 12 + .../adminapi/logic/stats/YejiStatsLogic.php | 640 ++++++++++++++++-- .../logic/tcm/PrescriptionOrderLogic.php | 161 +++++ .../common/service/ExpressTrackingService.php | 233 +++++++ server/config/project.php | 10 + .../commission_settlement_confirm_revoke.sql | 8 + 9 files changed, 1373 insertions(+), 98 deletions(-) create mode 100644 server/sql/1.9.20260513/commission_settlement_confirm_revoke.sql diff --git a/admin/src/api/stats.ts b/admin/src/api/stats.ts index d428f63d..d4819327 100644 --- a/admin/src/api/stats.ts +++ b/admin/src/api/stats.ts @@ -110,6 +110,13 @@ const COMMISSION_SETTLEMENT_TIMEOUT_MS = 120000 /** 提成结算业绩(独立于业绩看板 yejiStats) */ export function commissionSettlementOverview(params: { settlement_month: string + /** 与 tcm.prescriptionOrder/lists 同源:create_time between */ + start_time?: string + end_time?: string + /** 默认 3=履约完成,与列表 fulfillment_status 一致 */ + fulfillment_status?: number + /** 传 1 时仅统计 is_system_auto=1;显式时段下默认不传(含手动) */ + require_system_auto_prescription?: 0 | 1 dept_ids?: number[] | string channel_code?: string }) { @@ -127,14 +134,21 @@ export function commissionSettlementChannelOptions() { return request.get({ url: '/stats.commissionSettlement/channelOptions' }) } -/** 提成核对:订单明细分页 bucket: 空|current|deferred */ +/** 提成核对:订单明细分页 bucket: 空|current|deferred;appt_channel_value 可与 assistant_id/doctor_id 组合(0=未匹配挂号渠道) */ export function commissionSettlementOrderLines(params: { settlement_month: string + start_time?: string + end_time?: string + fulfillment_status?: number + require_system_auto_prescription?: 0 | 1 dept_ids?: number[] | string channel_code?: string page?: number page_size?: number bucket?: string + assistant_id?: number + doctor_id?: number + appt_channel_value?: number }) { return request.get( { url: '/stats.commissionSettlement/orderLines', params, timeout: COMMISSION_SETTLEMENT_TIMEOUT_MS }, @@ -160,3 +174,8 @@ export function commissionSettlementConfirmFinalize(params: Record) { ignoreCancelToken: true } ) } + +/** 撤回「确定本期业绩」:清除顺延结转,状态变为可再次核对/确定 */ +export function commissionSettlementConfirmRevoke(params: Record) { + return request.post({ url: '/stats.commissionSettlement/confirmRevoke', params }) +} diff --git a/admin/src/views/fans/commission-settlement.vue b/admin/src/views/fans/commission-settlement.vue index 09968387..99a44059 100644 --- a/admin/src/views/fans/commission-settlement.vue +++ b/admin/src/views/fans/commission-settlement.vue @@ -9,7 +9,11 @@

提成结算业绩

- 系统代开处方对应的已完成业务订单;按结算月 7 日截止拆分本期提成与顺延下期;可按部门汇总或下发至业绩归属医助与处方开方医生 + 订单池默认与处方订单列表同源:创建时间 start_time~end_time + + fulfillment_status(默认完成态 3),账号列表可见性/数据域一并生效。 + 选结算月仍可套用「物流签收尾款支付均须在结算月 7 日 24 点前」拆分「本期提成 / 顺延下期」 + (仅有签收在范围内、尾款晚于截止仍会顺延); + 展示部门/渠道下拉与列表不同,勾选后会与列表计数不同

@@ -17,9 +21,9 @@
结算月
{{ meta.settlement_month || settlementMonth }}
-
-
订单创建月
-
{{ meta.order_month }}
+
+
订单时间窗
+
{{ orderWindowLabel }}
截止时刻
@@ -42,6 +46,21 @@ class="filter-month" />
+
+ 订单创建 + + + 仅系统代开处方 + +
渠道来源

{{ meta.rule_note }}

- 订单创建月为结算月的上一自然月;仅系统代开处方(完成挂号等自动生成)对应的履约已完成业务订单。 - 签收时间取物流签收时间;尾款支付取关联支付单已支付时间(优先尾款/全部费用类型)。 - 签收与尾款均在结算月 7 日 24:00 前完成的计入「本期提成」,其余计入「顺延下期」。 + 请选择结算月并设置订单创建时间范围(与处方订单列表 URL 参数 + start_time/end_time/fulfillment_status + 一致);切换结算月会自动带出上一自然月整段作为默认时段,可按业务修改(例如 2026-04-02~04-30)。 + 「仅系统代开处方」勾选后与列表在未限制开方类型时的条数会不一致。

当前结算月:{{ meta.settlement_month }} - · 订单创建月:{{ meta.order_month }} + · 订单时间:{{ orderWindowLabel }} + · 履约状态:{{ meta.fulfillment_status ?? 3 }} · 截止时刻:{{ meta.cutoff_end }} +

@@ -136,27 +164,43 @@
- 已确定业绩 - 待确定业绩 + 已确定业绩 + 已撤回确定 + 待确定业绩 {{ confirmInfo.confirmed_admin_name || '—' }} · {{ confirmInfo.confirmed_at_text }} + + 撤回:{{ confirmInfo.revoked_admin_name || '—' }} · {{ confirmInfo.revoked_at_text }} +
业绩明细核对 - + 保存核对备注 确定本期业绩 + + 撤回确定 +

@@ -245,6 +289,8 @@ 按诊单业绩归属医助 × 挂号渠道(doctor_appointment.channels)拆分到行; 「复诊2」「复诊3」「自媒体1」等保持各自独立,未关联挂号统一归到「未匹配挂号渠道」。 同一医助多行自动合并「医助 / 归属中心」单元格,「顺延汇入」为上期结转进入本期订单池的单数。 + 展示部门有勾选时,本表仅列出可归入该部门上下文的业绩医助(与人事部门落在所选部门范围内的账号一致)。 + 点击挂号渠道:查看该行对应的业务订单明细(与上方部门筛选一致)。

{{ row.appt_channel_name }} @@ -293,6 +340,8 @@ 按处方创建账号(开方人) × 挂号渠道拆分; 可与医助维度交叉核对;同一医生多行自动合并「医生 / 归属中心」单元格。 + 展示部门有勾选时,与医助表相同,仅统计该部门上下文内订单对应的开方医生。 + 点击挂号渠道:查看该行对应的业务订单明细。
{{ row.appt_channel_name }} @@ -341,7 +391,7 @@ - + + + + + + + + + + @@ -373,8 +442,20 @@ - - + + + + + + + + +
@@ -390,8 +471,8 @@ @@ -403,12 +484,33 @@ 结算月:{{ meta.settlement_month || settlementMonth }} - +
- + + + + + + + + + + @@ -427,8 +529,20 @@ - - + + + + + + + + +
@@ -445,12 +559,13 @@