238 lines
7.7 KiB
TypeScript
238 lines
7.7 KiB
TypeScript
import request from '@/utils/request'
|
||
|
||
export function getConversionStatsOverview(params: any) {
|
||
return request.get({ url: '/stats.conversion/overview', params })
|
||
}
|
||
|
||
/** 业绩看板:单区间(部门 × 时间 × 渠道) */
|
||
export function yejiStatsOverview(params: {
|
||
start_date: string
|
||
end_date: string
|
||
dept_ids?: number[] | string
|
||
channel_code?: string
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/overview', params })
|
||
}
|
||
|
||
/** 业绩看板:多区间一次返回(默认 月/周/今日/昨日 四张表) */
|
||
export function yejiStatsMulti(params: {
|
||
dept_ids?: number[] | string
|
||
channel_code?: string
|
||
ranges?: Array<{ label?: string; start_date: string; end_date: string }>
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/multi', params })
|
||
}
|
||
|
||
/** 业绩看板:部门下拉 */
|
||
export function yejiStatsDeptOptions() {
|
||
return request.get({ url: '/stats.yejiStats/deptOptions' })
|
||
}
|
||
|
||
/** 业绩看板:渠道下拉(按 source_group_name 分组) */
|
||
export function yejiStatsChannelOptions() {
|
||
return request.get({ url: '/stats.yejiStats/channelOptions' })
|
||
}
|
||
|
||
/** 业绩看板:医助排行榜(按部门分表;区间须与当前业绩表一致) */
|
||
export function yejiStatsLeaderboard(params: {
|
||
start_date: string
|
||
end_date: string
|
||
dept_ids?: number[] | string
|
||
channel_code?: string
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/leaderboard', params })
|
||
}
|
||
|
||
/** 「未归属中心」行:按订单创建人拆解合计业绩(与看板「合计业绩」未归属部分同口径) */
|
||
export function yejiStatsUnassignedBreakdown(params: {
|
||
start_date: string
|
||
end_date: string
|
||
dept_ids?: string
|
||
channel_code?: string
|
||
tag_id?: string
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/unassignedBreakdown', params })
|
||
}
|
||
|
||
/** 部门行「进线数据」逐条明细(与看板同口径) */
|
||
export function yejiStatsLeadLines(params: {
|
||
start_date: string
|
||
end_date: string
|
||
dept_id: number
|
||
dept_ids?: string
|
||
channel_code?: string
|
||
tag_id?: string
|
||
page?: number
|
||
page_size?: number
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/leadLines', params })
|
||
}
|
||
|
||
/** 医助排行榜「预约诊单」逐条挂号明细;业绩主表部门行传 dept_id(可与 assistant_id 二选一) */
|
||
export function yejiStatsAppointmentLines(params: {
|
||
start_date: string
|
||
end_date: string
|
||
assistant_id?: number
|
||
dept_id?: number
|
||
dept_ids?: string
|
||
channel_code?: string
|
||
tag_id?: string
|
||
page?: number
|
||
page_size?: number
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/appointmentLines', 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 })
|
||
}
|
||
|
||
/** 被指派数明细:与看板「被指派数」同口径;部门行传 dept_id,医助排行榜传 assistant_id */
|
||
export function yejiStatsAssignLines(params: {
|
||
start_date: string
|
||
end_date: string
|
||
dept_id?: number
|
||
assistant_id?: number
|
||
dept_ids?: string
|
||
channel_code?: string
|
||
tag_id?: string
|
||
page?: number
|
||
page_size?: number
|
||
}) {
|
||
return request.get({ url: '/stats.yejiStats/assignLines', params })
|
||
}
|
||
|
||
export function doctorDailyStatsOverview(params: {
|
||
start_date?: string
|
||
end_date?: string
|
||
channel_code?: string
|
||
dept_ids?: number[] | string
|
||
}) {
|
||
return request.get({ url: '/stats.doctorDailyStats/overview', params })
|
||
}
|
||
|
||
/** 提成结算接口计算较重,单独放宽超时(默认多为 60s) */
|
||
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
|
||
}) {
|
||
return request.get(
|
||
{ url: '/stats.commissionSettlement/overview', params, timeout: COMMISSION_SETTLEMENT_TIMEOUT_MS },
|
||
{ ignoreCancelToken: true }
|
||
)
|
||
}
|
||
|
||
export function commissionSettlementDeptOptions() {
|
||
return request.get({ url: '/stats.commissionSettlement/deptOptions' })
|
||
}
|
||
|
||
export function commissionSettlementChannelOptions() {
|
||
return request.get({ url: '/stats.commissionSettlement/channelOptions' })
|
||
}
|
||
|
||
/** 提成核对:订单明细分页 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 },
|
||
{ ignoreCancelToken: true }
|
||
)
|
||
}
|
||
|
||
export function commissionSettlementConfirmStatus(params: {
|
||
settlement_month: string
|
||
dept_ids?: number[] | string
|
||
channel_code?: string
|
||
}) {
|
||
return request.get({ url: '/stats.commissionSettlement/confirmStatus', params })
|
||
}
|
||
|
||
export function commissionSettlementSaveReconcile(params: Record<string, any>) {
|
||
return request.post({ url: '/stats.commissionSettlement/saveReconcile', params })
|
||
}
|
||
|
||
export function commissionSettlementConfirmFinalize(params: Record<string, any>) {
|
||
return request.post(
|
||
{ url: '/stats.commissionSettlement/confirmFinalize', params, timeout: COMMISSION_SETTLEMENT_TIMEOUT_MS },
|
||
{ ignoreCancelToken: true }
|
||
)
|
||
}
|
||
|
||
/** 撤回「确定本期业绩」:清除顺延结转,状态变为可再次核对/确定 */
|
||
export function commissionSettlementConfirmRevoke(params: Record<string, any>) {
|
||
return request.post({ url: '/stats.commissionSettlement/confirmRevoke', params })
|
||
}
|
||
|
||
/** 复诊接诊率(按月):当月 N 诊接诊率,部门 → 医助分组 + 合计;剔除「继承」指派 */
|
||
export function revisitRateOverview(params: { month?: string; dept_ids?: string }) {
|
||
return request.get({ url: '/stats.revisitRate/overview', params })
|
||
}
|
||
|
||
/** 复诊接诊率:部门下拉(前端组树) */
|
||
export function revisitRateDeptOptions() {
|
||
return request.get({ url: '/stats.revisitRate/deptOptions' })
|
||
}
|
||
|
||
/** 复诊接诊率:「被指派数」点击下钻(按诊单聚合明细) */
|
||
export function revisitRateAssignLines(params: {
|
||
month?: string
|
||
dept_ids?: string
|
||
assistant_id?: number
|
||
dept_id?: number
|
||
}) {
|
||
return request.get({ url: '/stats.revisitRate/assignLines', params })
|
||
}
|
||
|
||
/** 复诊接诊率:「N 诊单数」点击下钻(具体订单明细) */
|
||
export function revisitRateVisitOrderLines(params: {
|
||
month?: string
|
||
slot: number
|
||
dept_ids?: string
|
||
assistant_id?: number
|
||
dept_id?: number
|
||
}) {
|
||
return request.get({ url: '/stats.revisitRate/visitOrderLines', params })
|
||
}
|
||
|
||
/** 医助个人业绩概览 */
|
||
export function assistantPerformanceOverview(params: {
|
||
time_type?: string
|
||
start_date?: string
|
||
end_date?: string
|
||
}) {
|
||
return request.get({ url: '/stats.assistantPerformance/overview', params })
|
||
}
|