import { Query } from '@/api/webApi' import { CommonData, CommonTableColumn } from '~/common' interface SimpleColumn { columnName: string columnLabel: string [x: string]: any } const columnGroupsMap: { [x: string]: { groupName: string children: SimpleColumn[] }[] } = { DepartureAirport: [ { groupName: '航班相关', children: [ { columnName: 'IATACode', columnLabel: '航司', needFilters: 1, fixed: true, }, { columnName: 'flightNO', columnLabel: '航班号', needFilters: 1, fixed: true, }, { columnName: 'flightDate', columnLabel: '执飞日期', width: 73, fixed: true, }, { columnName: 'planDepartureTime', columnLabel: '起飞时间', width: 73, fixed: true, }, { columnName: 'target', columnLabel: '目的站', needFilters: 1, fixed: true, }, { columnName: 'takeOffStand', columnLabel: '停机位', fixed: true, }, { columnName: 'lastflightNO', columnLabel: '前序航班', fixed: true, }, { columnName: 'acLandingTime', columnLabel: '实际降落\n时间', width: 73, }, ], }, { groupName: '货站相关', children: [ { columnName: 'speCargoInfo', columnLabel: '特货信息', }, { columnName: 'transIn', columnLabel: '中转进\n(运单/件)', }, { columnName: 'returns', columnLabel: '退运\n(板卡/件)', }, ], }, { groupName: '地服相关', children: [ { columnName: 'preLoad', columnLabel: '运单申报\n(运单/件)', }, { columnName: 'receiveSure', columnLabel: '收运核单\n(运单/件/重量)', }, { columnName: 'receiveSureTime', columnLabel: '收运核单\n时间', }, { columnName: 'receiveSure_No', columnLabel: '核单不通过\n(运单/件/重量)', }, { columnName: 'receiveSureTime_No', columnLabel: '核单不通过\n时间', }, { columnName: 'checks', columnLabel: '查验\n(拒运/查验)', }, { columnName: 'checkTime', columnLabel: '查验时间', }, { columnName: 'securityYes', columnLabel: '安检放行\n(运单/件)', }, { columnName: 'securityTime', columnLabel: '安检放行\n时间', }, { columnName: 'addCargo', columnLabel: '加货\n(运单/板卡/件/重量)', }, { columnName: 'addCargoTime', columnLabel: '加货时间', }, // { // columnName: 'wait', // columnLabel: '待运区\n(板卡/件)', // }, // { // columnName: 'waitTime', // columnLabel: '待运区时间', // }, { columnName: 'stowage', columnLabel: '预配载\n(板卡/件)', }, { columnName: 'stowageTime', columnLabel: '预配载时间', }, // { // columnName: 'planJoinTime', // columnLabel: '计划交接\n时间', // }, // { // columnName: 'requestDepotJoin', // columnLabel: '发起货站交接\n(板卡/件)', // }, // { // columnName: 'requestDepotJoinTime', // columnLabel: '发起货站交接\n时间', // }, { columnName: 'depotJoin', columnLabel: '货站交接\n(板卡/件)', }, { columnName: 'depotJoinTime', columnLabel: '货站交接\n时间', }, { columnName: 'resure', columnLabel: '运输前复核\n(板卡/件)', }, { columnName: 'resureTime', columnLabel: '运输前复核\n时间', }, { columnName: 'planeDown', columnLabel: '机下交接\n(板卡/件)', columnDescribe: '根据运输前复核计算所得', }, { columnName: 'planeDownTime', columnLabel: '机下交接\n时间', }, // { // columnName: 'loadPlaneSure', // columnLabel: '装机\n(板卡/件)', // }, { columnName: 'loadPlaneSureTime', columnLabel: '装机时间', }, // { // columnName: 'loadPlane', // columnLabel: '关闭舱门\n(板卡/件)', // }, { columnName: 'loadPlaneTime', columnLabel: '关闭舱门\n时间', }, { columnName: 'register', columnLabel: '拉下登记\n(板卡/件)', }, { columnName: 'pullRegisterTime', columnLabel: '拉下登记\n时间', }, { columnName: 'pullSure', columnLabel: '拉回确认\n(板卡/件)', }, { columnName: 'pullSureTime', columnLabel: '拉回确认\n时间', }, ], }, ], InternationalDepartureAirport: [ { groupName: '航班相关', children: [ { columnName: 'IATACode', columnLabel: '航司', needFilters: 1, fixed: true, }, { columnName: 'flightNO', columnLabel: '航班号', needFilters: 1, fixed: true, }, { columnName: 'flightDate', columnLabel: '执飞日期', width: 73, fixed: true, }, { columnName: 'planDepartureTime', columnLabel: '起飞时间', width: 73, fixed: true, }, { columnName: 'target', columnLabel: '目的站', needFilters: 1, fixed: true, }, { columnName: 'takeOffStand', columnLabel: '停机位', fixed: true, }, { columnName: 'lastflightNO', columnLabel: '前序航班', fixed: true, }, { columnName: 'acLandingTime', columnLabel: '实际降落\n时间', width: 73, }, ], }, { groupName: '货站相关', children: [ { columnName: 'speCargoInfo', columnLabel: '特货信息', }, { columnName: 'transIn', columnLabel: '中转进\n(运单/件)', }, { columnName: 'returns1', columnLabel: '退运\n(板卡/件)', }, ], }, { groupName: '地服相关', children: [ { columnName: 'preLoad', columnLabel: '运单申报\n(运单/件)', }, { columnName: 'enterPark', columnLabel: '入园\n(运单/件)', }, { columnName: 'enterParkTime', columnLabel: '入园时间', }, { columnName: 'enterCustoms', columnLabel: '进入海关\n(运单/件)', }, { columnName: 'enterCustomsTime', columnLabel: '进入海关时间', }, { columnName: 'passCustoms', columnLabel: '海关放行\n(运单/件)', }, { columnName: 'passCustomsTime', columnLabel: '海关放行\n时间', }, { columnName: 'nopassCustoms', columnLabel: '海关不通过\n(运单/件)', }, { columnName: 'nopassCustomsTime', columnLabel: '海关不通过\n时间', }, { columnName: 'receiveSure1', columnLabel: '运抵货站\n(运单/件)', }, { columnName: 'receiveSureTime', columnLabel: '运抵货站\n时间', }, { columnName: 'returns2', columnLabel: '退运\n(板卡/件)', }, { columnName: 'returnTime', columnLabel: '退运时间', }, { columnName: 'securityYes', columnLabel: '安检放行\n(运单/件)', }, { columnName: 'securityTime', columnLabel: '安检放行\n时间', }, { columnName: 'receiveSure2', columnLabel: '收运核单\n(运单/件)', }, { columnName: 'receiveSureResultTime', columnLabel: '收运核单\n时间', }, { columnName: 'receiveSure_No', columnLabel: '核单不通过\n(运单/件)', }, { columnName: 'receiveSureTime_No', columnLabel: '核单不通过\n时间', }, { columnName: 'tally_out', columnLabel: '理货\n(板卡/运单/件)', }, { columnName: 'tallyTime_out', columnLabel: '理货时间', }, { columnName: 'planJoinTime', columnLabel: '计划交接\n时间', }, { columnName: 'wait', columnLabel: '待运区\n(板卡/件)', }, { columnName: 'waitTime', columnLabel: '待运区\n时间', }, { columnName: 'stowage', columnLabel: '预配载\n(板卡/件)', }, { columnName: 'stowageTime', columnLabel: '预配载时间', }, { columnName: "concat(requestDepotJoinBoard,'/',requestDepotJoin)", columnLabel: '发起货站交接\n(板卡/件)', }, { columnName: 'requestDepotJoinTime', columnLabel: '发起货站交接\n时间', }, { columnName: 'depotJoin', columnLabel: '货站交接\n(板卡/件)', }, { columnName: 'depotJoinTime', columnLabel: '货站交接\n时间', }, { columnName: 'resure', columnLabel: '运输前复核\n(板卡/件)', }, { columnName: 'resureTime', columnLabel: '运输前复核\n时间', }, { columnName: 'planeDown', columnLabel: '机下交接\n(板卡/件)', columnDescribe: '根据运输前复核计算所得', }, { columnName: 'planeDownTime', columnLabel: '机下交接\n时间', }, // { // columnName: "concat(loadPlaneSureBoard,'/',loadPlaneSure)", // columnLabel: '装机\n(板卡/件)', // }, { columnName: 'loadPlaneSureTime', columnLabel: '装机时间', }, // { // columnName: 'loadPlane', // columnLabel: '关闭舱门\n(板卡/件)', // }, { columnName: 'loadPlaneTime', columnLabel: '关闭舱门\n时间', }, { columnName: 'register', columnLabel: '拉下登记\n(板卡/运单/件)', }, { columnName: 'pullregisterTime', columnLabel: '拉下登记\n时间', }, ], }, ], ArrivalAirport: [ { groupName: '航班相关', children: [ { columnName: 'IATACode', columnLabel: '航司', needFilters: 1, }, { columnName: 'flightNO', columnLabel: '航班号', needFilters: 1, }, { columnName: 'flightDate', columnLabel: '执飞日期', }, { columnName: 'planLandingTime', columnLabel: '降落时间', }, { columnName: 'target', columnLabel: '目的站', needFilters: 1, }, { columnName: 'landingStand', columnLabel: '停机位', }, ], }, { groupName: '货站相关', children: [ { columnName: 'speCargoInfo', columnLabel: '特货信息', }, { columnName: 'preUnLoad', columnLabel: '预计卸载数\n(运单/件)', }, { columnName: 'transOut', columnLabel: '中转出\n(运单/件)', }, { columnName: 'receiveDiff', columnLabel: '收货差异\n(板卡/件)', }, ], }, { groupName: '地服相关', children: [ // { // columnName: 'unloadBill', // columnLabel: '卸机单\n(板/箱/卡)', // }, // { // columnName: 'unloadBillTime', // columnLabel: '卸机单确认\n时间', // }, { columnName: 'unLoad', columnLabel: '卸机\n(板/箱/卡)', }, { columnName: 'unLoadTime', columnLabel: '卸机时间', }, { columnName: 'planeDown', columnLabel: '机下交接\n(板/箱/卡)', }, { columnName: 'planeDownTime_IN', columnLabel: '机下交接\n时间', }, { columnName: 'depotJoin', columnLabel: '货站交接\n(板/箱/卡)', }, { columnName: 'depotJoinTime_IN', columnLabel: '货站交接\n时间', }, { columnName: 'tally', columnLabel: '理货\n(板卡/运单/件/重量)', }, { columnName: 'tallyTime_in', columnLabel: '理货时间', }, { columnName: 'outWarehouse', columnLabel: '出库\n(批/运单/件)', }, { columnName: 'outWarehouseTime', columnLabel: '出库时间', }, ], }, ], InternationalArrivalAirport: [ { groupName: '航班相关', children: [ { columnName: 'IATACode', columnLabel: '航司', needFilters: 1, }, { columnName: 'flightNO', columnLabel: '航班号', needFilters: 1, }, { columnName: 'flightDate', columnLabel: '执飞日期', }, { columnName: 'planLandingTime', columnLabel: '降落时间', }, { columnName: 'target', columnLabel: '目的站', needFilters: 1, }, { columnName: 'landingStand', columnLabel: '停机位', }, ], }, { groupName: '货站相关', children: [ { columnName: 'speCargoInfo', columnLabel: '特货信息', }, { columnName: 'preUnLoad', columnLabel: '预计卸载数\n(运单/件)', }, { columnName: 'transOut', columnLabel: '中转出\n(运单/件)', }, { columnName: 'receiveDiff', columnLabel: '收货差异\n(板卡/件)', }, ], }, { groupName: '地服相关', children: [ // { // columnName: 'unloadBill', // columnLabel: '卸机单\n(板/箱/卡)', // }, // { // columnName: 'unloadBillTime', // columnLabel: '卸机时间', // }, { columnName: 'unLoad', columnLabel: '卸机\n(板/箱/卡)', }, { columnName: 'unLoadTime', columnLabel: '卸机时间', }, { columnName: 'planeDown', columnLabel: '机下交接\n(板/箱/卡)', }, { columnName: 'planeDownTime_IN', columnLabel: '机下交接\n时间', }, { columnName: 'depotJoin', columnLabel: '货站交接\n(板/箱/卡)', }, { columnName: 'depotJoinTime_IN', columnLabel: '货站交接\n时间', }, { columnName: 'tally', columnLabel: '理货\n(板卡/运单/件/重量)', }, { columnName: 'tallyTime_in', columnLabel: '理货时间', }, { columnName: "concat(passCustomsList_in,'/',passCustoms_in)", columnLabel: '海关放行\n(运单/件)', }, { columnName: 'passCustomsTime_in', columnLabel: '海关放行\n时间', }, { columnName: 'outWarehouse', columnLabel: '出库\n(批/运单/件)', }, { columnName: 'outWarehouseTime', columnLabel: '出库时间', }, { columnName: "concat(punishCustomsList_in,'/',punishCustoms_in)", columnLabel: '海关罚没\n(运单/件)', }, { columnName: 'punishCustomsTime_in', columnLabel: '海关罚没\n时间', }, ], }, ], } const headerClassMap = ['bg-yellow', 'bg-green', 'bg-cyan'] const computedWidth = (column: SimpleColumn) => { let width = 0 column.columnLabel.split('\n').forEach(line => { const len = line.length let realLength = 0 for (let i = 0; i < len; i++) { realLength += line.charCodeAt(i) > 255 ? 2 : 1 } if (width < realLength * 8) { width = realLength * 8 } }) if (column.needFilters || column.needSort) { width += 8 } // border return width + 1 } export function useAirportTable(name: string, formData: CommonData) { const tableColumns = ref([]) const tableData = ref([]) const getTableColumns = () => { const groups = columnGroupsMap[name] tableColumns.value = groups.reduce( (columns: CommonTableColumn[], group, groupIndex) => { group.children.forEach(column => { columns.push({ key: column.columnName, dataKey: column.columnName, title: column.columnLabel, columnDescribe: '', dataType: '', listqueryTemplateID: null, needCount: null, needFilters: null, needGroup: null, needSearch: null, needShow: 1, needSort: null, orderNumber: null, queryTemplateColumnSetID: null, queryTemplateID: null, width: computedWidth(column), flexGrow: 1, align: 'center', headerClass: headerClassMap[groupIndex], groupName: group.groupName, ...column, }) }) return columns }, [] ) } const getTableData = async () => { try { const { startDate, endDate, flightStatus, flightWarning, waybillType, } = formData const dataContent = [ startDate, endDate, // flightStatus, // flightWarning ] // if (name.includes('International')) { // dataContent.push(waybillType) // } const { code, returnData: { columnSet, listValues }, message, } = await Query({ id: DATACONTENT_ID[name.slice(0, 1).toLowerCase() + name.slice(1)], dataContent, }) if (Number(code) !== 0) { throw new Error(message || '失败') } // tableColumns.value = columnSet.map(column => ({ // key: column.columnName, // dataKey: column.columnName, // title: column.columnLabel, // width: column.columnLabel.length * 50, // flexGrow: 1, // align: 'center', // ...column, // })) tableData.value = listValues } catch (error) { console.error(error) } } onMounted(() => { getTableColumns() }) return { tableColumns, tableData, getTableData, } }