fix: align appointment viewing and fleet follow-up navigation
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
import type { LocationQuery, RouteLocationRaw } from 'vue-router'
|
||||
import type { CapacityInquiry } from './capacityOfferTypes'
|
||||
|
||||
const businessNo = (value: unknown): value is string => typeof value === 'string' && /^[A-Z][A-Z0-9-]{1,63}$/.test(value)
|
||||
export function inquirySourceQuery(row: Pick<CapacityInquiry, 'offerNo' | 'bookingNo'>) {
|
||||
return { fleetSource: 'inquiry', fleetOfferNo: row.offerNo, fleetBookingNo: row.bookingNo }
|
||||
}
|
||||
export function inquiryReturnTarget(query: LocationQuery = {}): RouteLocationRaw | null {
|
||||
if (query.fleetSource !== 'inquiry' || !businessNo(query.fleetOfferNo) || !businessNo(query.fleetBookingNo)) return null
|
||||
return { name: 'overseas-master-data-capacity-offer-detail', params: { offerNo: query.fleetOfferNo }, query: { inquiry: query.fleetBookingNo } }
|
||||
}
|
||||
export function inquiryOrderTarget(row: CapacityInquiry, can: (permission: string) => boolean): RouteLocationRaw | null {
|
||||
const domain = row.businessType === 'US_TRUCK' ? 'truck' : 'looseboard'
|
||||
if (!row.businessOrderNo || !can(`platform:overseas-business:${domain}:list`)) return null
|
||||
return { name: domain === 'truck' ? 'overseas-business-trucks' : 'overseas-business-looseboards', query: { orderNo: row.businessOrderNo, ...inquirySourceQuery(row) } }
|
||||
}
|
||||
Reference in New Issue
Block a user