import { CommonData, CommonValue } from '~/common' import { Query } from '@/api/webApi' import { ElMessage } from 'element-plus' const flightInfoItemsMap = { departure: [ [ { label: '起飞机场简称', key: 'departureAirportZh', }, { label: '日期', getter: info => info.planDepartureTime?.split('T')[0], }, { label: '时间', getter: info => info.planDepartureTime?.split('T')[1], }, { label: '停机位', key: 'takeOffStand', }, ], [ { label: '特货信息/货物数', key: 'speCargoInfo', }, { label: '托运运单数/货物数', key: "concat(preLoadList,'/',preLoad)", }, { label: '中转进运单/货物数', key: "concat(transInList,'/',transInList)", }, { label: '已配载集装器', key: 'stowage_Yes', }, { label: '货站已交接集装器', key: 'depotJoin', }, { label: '已装载集装器/运单/货物数', key: 'loadPlane', }, { label: '拉下集装器/运单/货物数', key: 'pull', }, { label: '集装器数量', key: 'stowage', }, ], [ { label: '降落机场简称', key: 'landingAirportZh', }, { label: '日期', getter: info => info.planLandingTime?.split('T')[0], }, { label: '时间', getter: info => info.planLandingTime?.split('T')[1], }, ], ], arrival: [ [ { label: '起飞机场简称', key: 'departureAirportZh', }, { label: '日期', getter: info => info.planDepartureTime?.split('T')[0], }, { label: '时间', getter: info => info.planDepartureTime?.split('T')[1], }, ], [ { label: '特货信息/货物数', key: 'speCargoInfo', }, { label: '卸载运单数/货物数', key: "concat(unLoadPlaneList,'/',unLoadPlane)", }, { label: '中转进运单/货物数', key: "concat(transInList,'/',transIn)", }, { label: '已卸载集装器', key: 'stowage_Yes', }, { label: '卸载数量(板/箱/卡)', key: 'unloadPlane', }, { label: '货站交接数量(板/箱/卡)', key: 'pull', }, ], [ { label: '降落机场简称', key: 'landingAirportZh', }, { label: '日期', getter: info => info.planLandingTime?.split('T')[0], }, { label: '时间', getter: info => info.planLandingTime?.split('T')[1], }, { label: '停机位', key: 'landingStand', }, ], ], } const simulateFlightInfoMap = { departure: { C0: '深圳机场', C1: '2021-12-24', C2: '19 : 30 : 25', C3: '012', C4: '0', C5: '0', C6: '0', C7: '0', C8: '0', C9: '0', C10: '南京机场', C11: '2021-12-24', C12: '22 : 25 : 25', }, arrival: { C0: '南京机场', C1: '2021-12-24', C2: '19 : 30 : 25', C3: '0', C4: '0', C5: '0', C6: '0', C7: '0', C8: '0', C9: '深圳机场', C10: '2021-12-24', C11: '19 : 30 : 25', C12: '012', }, } export function useFlightInfo(name: string, dataContent: CommonValue[]) { const flightInfoItems = ref< { label: string; key?: string; getter?: (info: any) => string }[][] >([]) const getFlightInfoItems = () => { flightInfoItems.value = flightInfoItemsMap[name.includes('Departure') ? 'departure' : 'arrival'] } getFlightInfoItems() const flightInfo = reactive({}) const getFlightInfo = async () => { try { const { code, returnData: { listValues }, message, } = await Query({ id: DATACONTENT_ID[ name.slice(0, 1).toLowerCase() + name.slice(1) + 'Info' ], dataContent, }) if (Number(code) !== 0) { throw new Error(message ?? '失败') } if (!listValues.length) { ElMessage.info('未查询到航班信息') return } Object.assign(flightInfo, listValues[0]) } catch (error) { console.error(error) } } const computedFlightInfo = computed(() => item => { if (item.getter) { return item.getter(flightInfo) } else if (item.key) { return flightInfo[item.key] } else { return '' } }) const getSimulateFlightInfo = () => { const simulateFlightInfo = simulateFlightInfoMap[ name.includes('Departure') ? 'departure' : 'arrival' ] Object.assign(flightInfo, simulateFlightInfo) } const getAirportNameZh = async (airportCode: string) => { try { const { code, returnData: { listValues }, message, } = await Query({ id: DATACONTENT_ID.airportNameZh, dataContent: [airportCode], }) if (Number(code) !== 0) { throw new Error(message ?? '失败') } if (!listValues.length) { ElMessage.info('未查询到航班中文名') return '' } return listValues[0].airportname } catch (error) { console.error(error) return '' } } onMounted(async () => { await getFlightInfo() const { departureAirport, landingAirport } = flightInfo if (departureAirport) { flightInfo.departureAirportZh = await getAirportNameZh( String(departureAirport) ) } if (landingAirport) { flightInfo.landingAirportZh = await getAirportNameZh( String(landingAirport) ) } // getSimulateFlightInfo() }) return { flightInfoItems, flightInfo, computedFlightInfo, } }