Files
medical-mall/types/delivery.uts

350 lines
7.3 KiB
Plaintext

import type { UserProfile } from '@/types/mall-types.uts'
export type DeliveryOnlineStatus = 'online' | 'resting' | 'busy'
export type DeliveryAccountStatus = 'active' | 'disabled' | 'locked' | 'suspended'
export type DeliveryCertificateStatus = 'valid' | 'expired' | 'pending'
export type DeliveryOrderStatus =
'pending_assignment' |
'pending_accept' |
'accepted' |
'waiting_departure' |
'departed' |
'on_the_way' |
'arrived' |
'checked_in' |
'in_service' |
'serving' |
'pending_confirm' |
'pending_submit' |
'pending_acceptance' |
'completed' |
'rejected' |
'abnormal' |
'terminated' |
'exception_pending' |
'cancelled' |
'settled' |
'archived'
export type DeliveryExceptionType =
'cannot_contact_user' |
'user_not_home' |
'family_uncooperative' |
'outside_service_scope' |
'staff_cannot_continue' |
'complaint_dispute' |
'cannot_contact_elder' |
'cannot_enter_home' |
'wrong_address' |
'elder_refuse_service' |
'family_requests_reschedule' |
'safety_risk' |
'elder_health_abnormal' |
'emergency_illness' |
'item_unavailable' |
'other'
export type DeliveryLocationType = {
latitude: number
longitude: number
address: string
time: string
}
export type DeliveryTimelineItemType = {
id: string
title: string
time: string
description: string
}
export type DeliveryStatusLogType = {
id: string
orderId: string
fromStatus: DeliveryOrderStatus
toStatus: DeliveryOrderStatus
operatorRole: string
operatorId: string
remark: string
createdAt: string
}
export type DeliveryServiceItemType = {
id: string
name: string
required: boolean
completed: boolean
incompleteReason: string
remark: string
updatedAt: string
}
export type DeliveryEvidenceRecordType = {
id: string
orderId: string
phase: string
fileType: string
name: string
url: string
localPath: string
status: string
progress: number
retryable: boolean
createdAt: string
}
export type DeliveryHealthMetricsType = {
bloodPressure: string
heartRate: string
bloodSugar: string
bloodOxygen: string
}
export type DeliveryConfirmationType = {
method: 'sms_code' | 'signature' | 'none'
code: string
signatureName: string
signatureUrl: string
confirmedAt: string
}
export type DeliveryServiceRecordType = {
id: string
orderId: string
startTime: string
endTime: string
actualDurationMinutes: number
serviceItems: Array<DeliveryServiceItemType>
serviceContent: Array<string>
processNote: string
elderStatus: string
healthMetrics: DeliveryHealthMetricsType
materialsUsed: string
abnormalNote: string
photos: Array<string>
staffRemark: string
familyConfirmation: DeliveryConfirmationType
createdAt: string
updatedAt: string
}
export type DeliveryAbnormalReportType = {
id: string
orderId: string
type: DeliveryExceptionType
description: string
occurredAt: string
locationText: string
images: Array<string>
needPlatformIntervention: boolean
requestCancelOrder: boolean
requestReschedule: boolean
createdAt: string
}
export type DeliveryOrderType = {
id: string
orderNo: string
serviceType: string
serviceName: string
serviceCategory: string
serviceItems: Array<DeliveryServiceItemType>
serviceContentOptions?: Array<string>
elderId: string
elderName: string
elderNameMasked: string
elderGender: string
elderAge: number
elderPhone: string
elderPhoneMasked: string
fullElderName: string
fullPhone: string
contactRelation: string
addressSummary: string
address: string
addressDetail: string
fullAddress: string
latitude: number
longitude: number
appointmentTime: string
appointmentStartTime: string
appointmentEndTime: string
duration: number
estimatedDuration: number
price: number
staffIncome: number
distance: string
actualStartTime: string
actualEndTime: string
status: DeliveryOrderStatus
statusText: string
statusTone: string
riskTags: Array<string>
healthTags: Array<string>
careLevel: string
needFamilyPresent: boolean
needMaterials: boolean
remark: string
merchantId: string
merchantName: string
deliveryStaffId: string
deliveryStaffName: string
acceptTime: string
rejectTime?: string
departTime: string
arriveTime: string
checkinTime: string
startServiceTime?: string
finishTime: string
cancelReason: string
exceptionType: string
exceptionDesc: string
evidenceList: Array<DeliveryEvidenceRecordType>
signatureUrl: string
signatureName: string
satisfactionStatus: string
settlementStatus: string
archiveStatus: string
createdAt: string
updatedAt: string
contactName: string
contactPhone: string
notices: Array<string>
timeline: Array<DeliveryTimelineItemType>
statusLog: Array<DeliveryStatusLogType>
serviceSummary: string
progressNote: string
distanceKm: string
allowCheckinRadiusMeters: number
lastLocation: DeliveryLocationType | null
trackPoints: Array<DeliveryLocationType>
serviceRecord: DeliveryServiceRecordType | null
abnormalReport: DeliveryAbnormalReportType | null
}
export type DeliveryCertificateType = {
id: string
name: string
status: DeliveryCertificateStatus
expireAt: string
issuer: string
imageUrl: string
}
export type DeliveryInfoType = {
id: string
userId: string
staffNo: string
name: string
phone: string
role: string
status: DeliveryAccountStatus
organizationId: string
organizationName: string
certificates: Array<DeliveryCertificateType>
certificateStatus: DeliveryCertificateStatus
certificateExpireAt: string
onlineStatus: DeliveryOnlineStatus
serviceArea: string
skills: Array<string>
avatarUrl: string
todayAccepted: number
todayServing: number
todayCompleted: number
usesMock: boolean
}
export type DeliveryDashboardType = {
pendingAssignmentCount: number
pendingAcceptCount: number
todayOrderCount: number
pendingDepartCount: number
servingCount: number
completedCount: number
exceptionCount: number
expectedIncome: number
onlineStatus: DeliveryOnlineStatus
nextOrder: DeliveryOrderType | null
recentOrders: Array<DeliveryOrderType>
}
export type DeliveryMessageType = {
id: string
title: string
content: string
type: string
createdAt: string
read: boolean
orderId: string
}
export type DeliveryRecordType = {
id: string
orderId: string
orderNo: string
serviceName: string
elderName: string
elderNameMasked: string
status: string
statusText: string
appointmentStartTime: string
appointmentTime: string
actualStartTime: string
actualEndTime: string
staffIncome: number
settlementStatus: string
acceptanceStatus: string
exceptionDesc: string
ratingText: string
hasServiceRecord: boolean
}
export type DeliveryLoginPayloadType = {
account: string
password: string
}
export type DeliveryLoginResultType = {
token: string
userInfo: UserProfile
deliveryInfo: DeliveryInfoType | null
usesMock: boolean
}
export type DeliveryOrderQueryType = {
tab: string
keyword: string
}
export type DeliveryProgressPayloadType = {
items: Array<DeliveryServiceItemType>
progressNote: string
serviceSummary: string
}
export type DeliveryCheckinPayloadType = {
location: DeliveryLocationType
note: string
photos: Array<string>
checkinMode: string
}
export type DeliveryFinishPayloadType = {
serviceSummary: string
signatureName: string
confirmByFamily: boolean
}
export type DeliveryExceptionPayloadType = {
exceptionType: DeliveryExceptionType
description: string
images: Array<string>
occurredAt?: string
locationText?: string
needPlatformIntervention?: boolean
requestCancelOrder?: boolean
requestReschedule?: boolean
}