Initial commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import { BookingDetail, Day, Slot } from './types.uts'
|
||||
|
||||
export function formatDateText(date: string): string {
|
||||
if (date.length == 0) return ''
|
||||
const parts = date.split('-')
|
||||
if (parts.length < 3) return date
|
||||
return parseInt(parts[1]).toString() + '月' + parseInt(parts[2]).toString() + '日'
|
||||
}
|
||||
|
||||
export function maskPhone(phone: string): string {
|
||||
if (phone.length < 7) return phone
|
||||
return phone.slice(0, 3) + ' **** ' + phone.slice(phone.length - 4)
|
||||
}
|
||||
|
||||
export function pad(value: number): string {
|
||||
if (value < 10) return '0' + value.toString()
|
||||
return value.toString()
|
||||
}
|
||||
|
||||
export function formatMonth(date: Date): string {
|
||||
return date.getFullYear().toString() + '-' + pad(date.getMonth() + 1)
|
||||
}
|
||||
|
||||
export function formatDate(date: Date): string {
|
||||
return date.getFullYear().toString() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate())
|
||||
}
|
||||
|
||||
export function timestampFromDate(dateText: string): number {
|
||||
if (dateText.length == 0) return 0
|
||||
const parts = dateText.split('-')
|
||||
if (parts.length < 3) return 0
|
||||
return new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])).getTime()
|
||||
}
|
||||
|
||||
export function normalizeSlots(slots: Slot[]): Slot[] {
|
||||
const result: Slot[] = []
|
||||
for (let i = 0; i < slots.length; i += 1) {
|
||||
const slot = slots[i]
|
||||
result.push({
|
||||
id: slot.id,
|
||||
start_time: slot.start_time,
|
||||
status: 'available',
|
||||
statusText: '可约'
|
||||
} as Slot)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
export function bookingStatusText(status: string): string {
|
||||
if (status == 'pending') return '待确认'
|
||||
if (status == 'confirmed') return '已预约'
|
||||
if (status == 'cancelled_by_user') return '已取消'
|
||||
if (status == 'cancelled_by_operator') return '已取消'
|
||||
if (status == 'completed') return '已完成'
|
||||
if (status == 'expired') return '已失效'
|
||||
return status
|
||||
}
|
||||
|
||||
export function normalizeBookings(bookings: BookingDetail[]): BookingDetail[] {
|
||||
const result: BookingDetail[] = []
|
||||
for (let i = 0; i < bookings.length; i += 1) {
|
||||
const item = bookings[i]
|
||||
const status = item.booking.status
|
||||
result.push({
|
||||
booking: item.booking,
|
||||
project: item.project,
|
||||
day: item.day,
|
||||
slot: item.slot,
|
||||
key: item.booking.id,
|
||||
dateText: formatDateText(item.day.date),
|
||||
statusText: bookingStatusText(status),
|
||||
canCancel: status == 'pending' || status == 'confirmed'
|
||||
} as BookingDetail)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
export function emptyDay(): Day {
|
||||
return { date: '', status: '', slots: [] } as Day
|
||||
}
|
||||
|
||||
export function emptySlot(): Slot {
|
||||
return { id: '', start_time: '', status: '' } as Slot
|
||||
}
|
||||
Reference in New Issue
Block a user