290 lines
9.9 KiB
TypeScript
290 lines
9.9 KiB
TypeScript
import request from '@/utils/request'
|
|
|
|
export interface MyPatientListParams {
|
|
page_no: number
|
|
page_size: number
|
|
keyword?: string
|
|
status_filter?: '' | 'unbooked' | 'pending_interview' | 'completed' | 'missed'
|
|
start_date?: string
|
|
end_date?: string
|
|
}
|
|
|
|
export function myPatientLists(params: MyPatientListParams) {
|
|
return request.get({ url: '/firstvisit.myPatient/lists', params })
|
|
}
|
|
|
|
export interface MyPatientOrderListParams {
|
|
page_no: number
|
|
page_size: number
|
|
keyword?: string
|
|
prescription_audit_status?: '' | number
|
|
payment_slip_audit_status?: '' | number
|
|
fulfillment_status?: '' | number
|
|
start_date?: string
|
|
end_date?: string
|
|
}
|
|
|
|
export function myPatientOrderLists(params: MyPatientOrderListParams) {
|
|
return request.get({ url: '/firstvisit.myPatient/orders', params })
|
|
}
|
|
|
|
export function myPatientOrderDetail(params: { id: number }) {
|
|
return request.get({ url: '/firstvisit.myPatient/orderDetail', params })
|
|
}
|
|
|
|
export function myPatientOrderEdit(params: Record<string, unknown>) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderEdit', params })
|
|
}
|
|
|
|
export function myPatientOrderAuditPrescription(params: {
|
|
id: number
|
|
action: 'approve' | 'reject'
|
|
remark?: string
|
|
}) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderAuditPrescription', params })
|
|
}
|
|
|
|
export function myPatientOrderRevokeRxAudit(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderRevokeRxAudit', params })
|
|
}
|
|
|
|
export function myPatientOrderAuditPayment(params: {
|
|
id: number
|
|
action: 'approve' | 'reject'
|
|
remark?: string
|
|
}) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderAuditPayment', params })
|
|
}
|
|
|
|
export function myPatientOrderRevokePayAudit(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderRevokePayAudit', params })
|
|
}
|
|
|
|
export function myPatientOrderDdcode(params: {
|
|
id: number
|
|
express_company: string
|
|
tracking_number: string
|
|
}) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderDdcode', params })
|
|
}
|
|
|
|
export function myPatientOrderShip(params: {
|
|
id: number
|
|
ship_mode?: 'gancao' | 'direct'
|
|
express_company: string
|
|
tracking_number: string
|
|
}) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderShip', params })
|
|
}
|
|
|
|
export function myPatientOrderAddPayOrder(params: {
|
|
id: number
|
|
order_type: number
|
|
pay_amount: number
|
|
pay_remark?: string
|
|
completion_request?: number
|
|
pay_create_type?: 'fubei' | 'express_cod'
|
|
}) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderAddPayOrder', params })
|
|
}
|
|
|
|
export function myPatientOrderComplete(params: { id: number; fulfillment_status: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderComplete', params })
|
|
}
|
|
|
|
export function myPatientOrderRefund(params: { id: number; reason: string; refund_amount?: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderRefund', params })
|
|
}
|
|
|
|
export function myPatientOrderWithdraw(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderWithdraw', params })
|
|
}
|
|
|
|
export function myPatientOrderUploadToPharmacy(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/orderUploadToPharmacy', params })
|
|
}
|
|
|
|
export interface MyPatientProgressListParams {
|
|
page_no: number
|
|
page_size: number
|
|
keyword?: string
|
|
status?: '' | 1 | 3 | 4
|
|
start_date?: string
|
|
end_date?: string
|
|
}
|
|
|
|
export function myPatientProgressLists(params: MyPatientProgressListParams) {
|
|
return request.get({ url: '/firstvisit.myPatient/progress', params })
|
|
}
|
|
|
|
export function myPatientCreateAppointment(params: Record<string, unknown>) {
|
|
return request.post({ url: '/firstvisit.myPatient/createAppointment', params })
|
|
}
|
|
|
|
export function myPatientCancelAppointment(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.myPatient/cancelAppointment', params })
|
|
}
|
|
|
|
export function myPatientAssistants() {
|
|
return request.get({ url: '/firstvisit.myPatient/assistants' })
|
|
}
|
|
|
|
export function myPatientAssign(params: { id: number; assistant_id: number; is_inherit?: 0 | 1 }) {
|
|
return request.post({ url: '/firstvisit.myPatient/assign', params })
|
|
}
|
|
|
|
export function myPatientFillIdCard(params: { id: number; id_card: string }) {
|
|
return request.post({ url: '/firstvisit.myPatient/fillIdCard', params })
|
|
}
|
|
|
|
export interface FirstVisitConversionParams {
|
|
time_type: 'today' | 'yesterday' | 'week' | 'month' | 'quarter' | 'year' | 'custom'
|
|
start_date?: string
|
|
end_date?: string
|
|
dept_id?: number
|
|
assistant_id?: number
|
|
media_channel_code?: string
|
|
}
|
|
|
|
/** 一诊综合数据转化:服务端按当前角色 DataScope 与所选部门/员工取交集。 */
|
|
export function firstVisitConversionOverview(params: FirstVisitConversionParams) {
|
|
return request.get(
|
|
{ url: '/firstvisit.conversion/overview', params, timeout: 120000 },
|
|
{ ignoreCancelToken: true }
|
|
)
|
|
}
|
|
|
|
export interface FirstVisitRegistrationStatsParams {
|
|
time_type: 'today' | 'yesterday' | 'week' | 'month'
|
|
dept_id?: number
|
|
assistant_id?: number
|
|
}
|
|
|
|
/** 一诊挂号统计:部门和员工参数只会在服务端 DataScope 权限范围内继续收窄。 */
|
|
export function firstVisitRegistrationStatsOverview(params: FirstVisitRegistrationStatsParams) {
|
|
return request.get(
|
|
{ url: '/firstvisit.registrationStats/overview', params, timeout: 120000 },
|
|
{ ignoreCancelToken: true }
|
|
)
|
|
}
|
|
|
|
export interface FirstVisitDoctorDashboardParams {
|
|
time_type: 'today' | 'yesterday' | 'week' | 'month' | 'custom'
|
|
start_date?: string
|
|
end_date?: string
|
|
dept_id?: number
|
|
doctor_id?: number
|
|
active_only?: 0 | 1
|
|
alert_threshold?: number
|
|
}
|
|
|
|
/** 一诊医生看板:医生与经手医助范围均由服务端根据当前角色和部门权限计算。 */
|
|
export function firstVisitDoctorDashboardOverview(params: FirstVisitDoctorDashboardParams) {
|
|
return request.get(
|
|
{ url: '/firstvisit.doctorDashboard/overview', params, timeout: 120000 },
|
|
{ ignoreCancelToken: true }
|
|
)
|
|
}
|
|
|
|
export function wecomPromotionOverview() {
|
|
return request.get({ url: '/firstvisit.wecomPromotion/overview' })
|
|
}
|
|
|
|
export function wecomPromotionSavePool(params: Record<string, unknown>) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/savePool', params })
|
|
}
|
|
|
|
export function wecomPromotionSaveWidget(params: Record<string, unknown>) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/saveWidget', params })
|
|
}
|
|
|
|
export function wecomPromotionDeletePool(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/deletePool', params })
|
|
}
|
|
|
|
export function wecomPromotionSaveLink(params: Record<string, unknown>) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/saveLink', params })
|
|
}
|
|
|
|
export function wecomPromotionCheckApiPermission() {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/checkApiPermission' })
|
|
}
|
|
|
|
export function wecomPromotionSyncRemoteLinks(params: { pool_id: number }) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/syncRemoteLinks', params, timeout: 120000 })
|
|
}
|
|
|
|
export function wecomPromotionRemoteLinkDetail(params: { id: number }) {
|
|
return request.get({ url: '/firstvisit.wecomPromotion/remoteLinkDetail', params })
|
|
}
|
|
|
|
export function wecomPromotionDeleteRemoteLink(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/deleteRemoteLink', params })
|
|
}
|
|
|
|
export function wecomPromotionToggleLink(params: { id: number; status: number }) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/toggleLink', params })
|
|
}
|
|
|
|
export function wecomPromotionDeleteLink(params: { id: number }) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/deleteLink', params })
|
|
}
|
|
|
|
export type WecomPromotionCustomerChatStatus = '' | 'messaged' | 'silent' | 'unknown'
|
|
|
|
export interface WecomPromotionCustomerStatsParams {
|
|
page_no: number
|
|
page_size: number
|
|
promotion_link_id?: number
|
|
userid?: string
|
|
chat_status?: 0 | 1 | 2
|
|
}
|
|
export interface WecomPromotionCustomerStatsSummary {
|
|
customer_count: number
|
|
messaged_customer_count: number
|
|
message_customer_rate: number
|
|
received_message_count: number
|
|
message_count_known_count: number
|
|
}
|
|
|
|
export interface WecomPromotionCustomerStatRow {
|
|
id?: number
|
|
userid?: string
|
|
external_userid_masked?: string
|
|
customer_id_masked?: string
|
|
customer_name_masked?: string
|
|
link_id?: number | string
|
|
link_name?: string
|
|
member_id?: number
|
|
member_name?: string
|
|
department_name?: string
|
|
dept_name?: string
|
|
has_messaged?: boolean | number
|
|
chat_status?: 0 | 1 | 2
|
|
message_count_known?: boolean | number
|
|
received_message_count?: number
|
|
last_synced_at?: string
|
|
last_message_at?: string
|
|
}
|
|
|
|
export interface WecomPromotionCustomerStatsResult {
|
|
summary?: Partial<WecomPromotionCustomerStatsSummary>
|
|
lists?: WecomPromotionCustomerStatRow[]
|
|
total?: number
|
|
link_options?: Array<{ id: number | string; name: string }>
|
|
member_options?: Array<{ id: number; userid?: string; name: string; department_name?: string; dept_name?: string }>
|
|
meta?: { last_synced_at?: string }
|
|
}
|
|
|
|
/** 获客客户消息统计:服务端继续按当前角色和部门数据范围收窄。 */
|
|
export function wecomPromotionCustomerStats(params: WecomPromotionCustomerStatsParams) {
|
|
return request.get(
|
|
{ url: '/firstvisit.wecomPromotion/customerStatistics', params, timeout: 120000 },
|
|
{ ignoreCancelToken: true }
|
|
)
|
|
}
|
|
|
|
export function wecomPromotionSyncCustomers(params: { promotion_link_id?: number } = {}) {
|
|
return request.post({ url: '/firstvisit.wecomPromotion/syncCustomers', params, timeout: 120000 })
|
|
}
|