|
|
|
|
@@ -144,22 +144,23 @@ export function formatOrderDate(value) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function normalizeStatusKey(order = {}) {
|
|
|
|
|
const rawStatus = String(order.status || order.orderStatus || '').trim()
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const rawStatus = String(safeOrder.status || safeOrder.orderStatus || '').trim()
|
|
|
|
|
if (['pending_review', 'approved_wait_assign', 'assigned_wait_room', 'rejected', 'contract_signed'].includes(rawStatus)) {
|
|
|
|
|
return rawStatus
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const contractStatus = Number(order.contractStatus)
|
|
|
|
|
const contractStatus = Number(safeOrder.contractStatus)
|
|
|
|
|
if (contractStatus === 1) {
|
|
|
|
|
return 'contract_signed'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const approvalStatus = Number(
|
|
|
|
|
order.approvalStatus !== undefined
|
|
|
|
|
? order.approvalStatus
|
|
|
|
|
: order.auditStatus !== undefined
|
|
|
|
|
? order.auditStatus
|
|
|
|
|
: order.statusCode
|
|
|
|
|
safeOrder.approvalStatus !== undefined
|
|
|
|
|
? safeOrder.approvalStatus
|
|
|
|
|
: safeOrder.auditStatus !== undefined
|
|
|
|
|
? safeOrder.auditStatus
|
|
|
|
|
: safeOrder.statusCode
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if (approvalStatus === -1 || /reject|refuse|驳回/i.test(rawStatus)) {
|
|
|
|
|
@@ -169,12 +170,12 @@ function normalizeStatusKey(order = {}) {
|
|
|
|
|
return 'pending_review'
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
order.roomNo ||
|
|
|
|
|
order.roomCode ||
|
|
|
|
|
order.roomName ||
|
|
|
|
|
order.checkinDate ||
|
|
|
|
|
order.startDate ||
|
|
|
|
|
order.start
|
|
|
|
|
safeOrder.roomNo ||
|
|
|
|
|
safeOrder.roomCode ||
|
|
|
|
|
safeOrder.roomName ||
|
|
|
|
|
safeOrder.checkinDate ||
|
|
|
|
|
safeOrder.startDate ||
|
|
|
|
|
safeOrder.start
|
|
|
|
|
) {
|
|
|
|
|
return 'assigned_wait_room'
|
|
|
|
|
}
|
|
|
|
|
@@ -182,17 +183,18 @@ function normalizeStatusKey(order = {}) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function resolveStatusText(order = {}, statusKey, language = getCurrentLanguage()) {
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
|
|
|
|
|
const contractStatus = Number(order.contractStatus)
|
|
|
|
|
if (contractStatus === 1 && order.contractStatusDesc && language !== 'en') {
|
|
|
|
|
return order.contractStatusDesc
|
|
|
|
|
const contractStatus = Number(safeOrder.contractStatus)
|
|
|
|
|
if (contractStatus === 1 && safeOrder.contractStatusDesc && language !== 'en') {
|
|
|
|
|
return safeOrder.contractStatusDesc
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (language !== 'en' && order.approvalStatusDesc) {
|
|
|
|
|
return order.approvalStatusDesc
|
|
|
|
|
if (language !== 'en' && safeOrder.approvalStatusDesc) {
|
|
|
|
|
return safeOrder.approvalStatusDesc
|
|
|
|
|
}
|
|
|
|
|
if (language !== 'en' && order.statusDesc) {
|
|
|
|
|
return order.statusDesc
|
|
|
|
|
if (language !== 'en' && safeOrder.statusDesc) {
|
|
|
|
|
return safeOrder.statusDesc
|
|
|
|
|
}
|
|
|
|
|
const map = {
|
|
|
|
|
pending_review: getBookingText('pendingReview', language),
|
|
|
|
|
@@ -218,35 +220,39 @@ function resolveTagType(statusKey) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getBuildingFloorText(order = {}, language = getCurrentLanguage()) {
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const isEn = language === 'en'
|
|
|
|
|
const building = [
|
|
|
|
|
isEn
|
|
|
|
|
? (order.buildingNameEn || order.buildingEn || order.buildingSectionNameEn || order.buildingName || order.building || order.buildingSectionName || '')
|
|
|
|
|
: (order.buildingName || order.building || order.buildingSectionName || ''),
|
|
|
|
|
? (safeOrder.buildingNameEn || safeOrder.buildingEn || safeOrder.buildingSectionNameEn || safeOrder.buildingName || safeOrder.building || safeOrder.buildingSectionName || '')
|
|
|
|
|
: (safeOrder.buildingName || safeOrder.building || safeOrder.buildingSectionName || ''),
|
|
|
|
|
isEn
|
|
|
|
|
? (order.floorNameEn || order.floorEn || order.floorName || order.floor || '')
|
|
|
|
|
: (order.floorName || order.floor || '')
|
|
|
|
|
? (safeOrder.floorNameEn || safeOrder.floorEn || safeOrder.floorName || safeOrder.floor || '')
|
|
|
|
|
: (safeOrder.floorName || safeOrder.floor || '')
|
|
|
|
|
].filter(Boolean).join(' ')
|
|
|
|
|
return building || '--'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getRoomTypeText(order = {}, language = getCurrentLanguage()) {
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const isEn = language === 'en'
|
|
|
|
|
if (isEn) {
|
|
|
|
|
return order.roomTypeNameEn || order.styleNameEn || order.roomNameEn || order.roomTypeName || order.styleNameZh || order.roomType || order.roomName || '--'
|
|
|
|
|
return safeOrder.roomTypeNameEn || safeOrder.styleNameEn || safeOrder.roomNameEn || safeOrder.roomTypeName || safeOrder.styleNameZh || safeOrder.roomType || safeOrder.roomName || '--'
|
|
|
|
|
}
|
|
|
|
|
return order.roomTypeName || order.styleNameZh || order.roomType || order.roomName || '--'
|
|
|
|
|
return safeOrder.roomTypeName || safeOrder.styleNameZh || safeOrder.roomType || safeOrder.roomName || '--'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getOrderNo(order = {}) {
|
|
|
|
|
return order.orderNo || order.no || order.code || '--'
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
return safeOrder.orderNo || safeOrder.no || safeOrder.code || '--'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getOrderStatusCode(order = {}) {
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const candidates = [
|
|
|
|
|
order.orderStatus,
|
|
|
|
|
order.statusCode,
|
|
|
|
|
order.status
|
|
|
|
|
safeOrder.orderStatus,
|
|
|
|
|
safeOrder.statusCode,
|
|
|
|
|
safeOrder.status
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for (let index = 0; index < candidates.length; index += 1) {
|
|
|
|
|
@@ -264,14 +270,15 @@ export function getOrderStatusCode(order = {}) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getOrderTime(order = {}) {
|
|
|
|
|
const checkInPeriod = order.checkInPeriod || {}
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const checkInPeriod = safeOrder.checkInPeriod || {}
|
|
|
|
|
const candidates = [
|
|
|
|
|
order.updateTime,
|
|
|
|
|
order.createTime,
|
|
|
|
|
order.createdAt,
|
|
|
|
|
order.startDate,
|
|
|
|
|
order.start,
|
|
|
|
|
order.checkinDate,
|
|
|
|
|
safeOrder.updateTime,
|
|
|
|
|
safeOrder.createTime,
|
|
|
|
|
safeOrder.createdAt,
|
|
|
|
|
safeOrder.startDate,
|
|
|
|
|
safeOrder.start,
|
|
|
|
|
safeOrder.checkinDate,
|
|
|
|
|
checkInPeriod.start
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
@@ -287,13 +294,14 @@ export function sortOrdersByLatest(orderList = []) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hasStayFields(order = {}) {
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
return !!(
|
|
|
|
|
order.roomNo
|
|
|
|
|
|| order.roomCode
|
|
|
|
|
|| order.slotCode
|
|
|
|
|
|| order.contractNo
|
|
|
|
|
|| order.actualCheckInTime
|
|
|
|
|
|| order.checkinTime
|
|
|
|
|
safeOrder.roomNo
|
|
|
|
|
|| safeOrder.roomCode
|
|
|
|
|
|| safeOrder.slotCode
|
|
|
|
|
|| safeOrder.contractNo
|
|
|
|
|
|| safeOrder.actualCheckInTime
|
|
|
|
|
|| safeOrder.checkinTime
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -336,32 +344,33 @@ export function isCurrentBookingOrder(order = {}) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function normalizeBookingOrder(order = {}, language = getCurrentLanguage()) {
|
|
|
|
|
const statusKey = normalizeStatusKey(order)
|
|
|
|
|
const statusCode = getOrderStatusCode(order)
|
|
|
|
|
const checkInPeriod = order.checkInPeriod || {}
|
|
|
|
|
const startDate = order.startDate || order.start || order.checkinDate || checkInPeriod.start
|
|
|
|
|
const endDate = order.endDate || order.end || order.checkoutDate || checkInPeriod.end
|
|
|
|
|
const safeOrder = order || {}
|
|
|
|
|
const statusKey = normalizeStatusKey(safeOrder)
|
|
|
|
|
const statusCode = getOrderStatusCode(safeOrder)
|
|
|
|
|
const checkInPeriod = safeOrder.checkInPeriod || {}
|
|
|
|
|
const startDate = safeOrder.startDate || safeOrder.start || safeOrder.checkinDate || checkInPeriod.start
|
|
|
|
|
const endDate = safeOrder.endDate || safeOrder.end || safeOrder.checkoutDate || checkInPeriod.end
|
|
|
|
|
return {
|
|
|
|
|
...order,
|
|
|
|
|
orderNo: getOrderNo(order),
|
|
|
|
|
roomTypeText: getRoomTypeText(order, language),
|
|
|
|
|
buildingFloorText: getBuildingFloorText(order, language),
|
|
|
|
|
...safeOrder,
|
|
|
|
|
orderNo: getOrderNo(safeOrder),
|
|
|
|
|
roomTypeText: getRoomTypeText(safeOrder, language),
|
|
|
|
|
buildingFloorText: getBuildingFloorText(safeOrder, language),
|
|
|
|
|
startDateText: formatOrderDate(startDate),
|
|
|
|
|
endDateText: formatOrderDate(endDate),
|
|
|
|
|
createdAtText: formatOrderDateTime(order.createTime || order.updateTime || order.createdAt),
|
|
|
|
|
createdAtText: formatOrderDateTime(safeOrder.createTime || safeOrder.updateTime || safeOrder.createdAt),
|
|
|
|
|
roomNoText: language === 'en'
|
|
|
|
|
? (order.roomNoEn || order.roomCodeEn || order.roomNameEn || order.roomNo || order.roomCode || order.roomName || '--')
|
|
|
|
|
: (order.roomNo || order.roomCode || order.roomName || order.roomNoEn || order.roomCodeEn || order.roomNameEn || '--'),
|
|
|
|
|
? (safeOrder.roomNoEn || safeOrder.roomCodeEn || safeOrder.roomNameEn || safeOrder.roomNo || safeOrder.roomCode || safeOrder.roomName || '--')
|
|
|
|
|
: (safeOrder.roomNo || safeOrder.roomCode || safeOrder.roomName || safeOrder.roomNoEn || safeOrder.roomCodeEn || safeOrder.roomNameEn || '--'),
|
|
|
|
|
areaText: language === 'en'
|
|
|
|
|
? (order.areaNameEn || order.campusNameEn || order.areaName || order.campusName || '--')
|
|
|
|
|
: (order.areaName || order.campusName || '--'),
|
|
|
|
|
rejectReasonText: order.rejectReason || order.approveReason || order.remark || '',
|
|
|
|
|
? (safeOrder.areaNameEn || safeOrder.campusNameEn || safeOrder.areaName || safeOrder.campusName || '--')
|
|
|
|
|
: (safeOrder.areaName || safeOrder.campusName || '--'),
|
|
|
|
|
rejectReasonText: safeOrder.rejectReason || safeOrder.approveReason || safeOrder.remark || '',
|
|
|
|
|
startDate,
|
|
|
|
|
endDate,
|
|
|
|
|
status: statusKey,
|
|
|
|
|
statusCode,
|
|
|
|
|
statusKey,
|
|
|
|
|
statusText: resolveStatusText(order, statusKey, language),
|
|
|
|
|
statusText: resolveStatusText(safeOrder, statusKey, language),
|
|
|
|
|
tagType: resolveTagType(statusKey)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|