|
@@ -7,62 +7,31 @@
|
|
|
-->
|
|
|
<template>
|
|
|
<div class="baggage-view">
|
|
|
- <div
|
|
|
- ref="basicInfo"
|
|
|
- class="part1"
|
|
|
- >
|
|
|
+ <div ref="basicInfo" class="part1">
|
|
|
<div class="title">
|
|
|
<span>行李基本信息</span>
|
|
|
- <el-radio-group
|
|
|
- v-model="infoBtn"
|
|
|
- class="radioBtn"
|
|
|
- size="mini"
|
|
|
- fill="#FFFFFF"
|
|
|
- text-color="#28344D"
|
|
|
- >
|
|
|
- <el-radio-button
|
|
|
- v-for="item in infoRadios"
|
|
|
- :key="item"
|
|
|
- :label="item"
|
|
|
- />
|
|
|
+ <el-radio-group v-model="infoBtn" class="radioBtn" size="mini" fill="#FFFFFF" text-color="#28344D">
|
|
|
+ <el-radio-button v-for="item in infoRadios" :key="item" :label="item" />
|
|
|
</el-radio-group>
|
|
|
</div>
|
|
|
<div class="part1_info">
|
|
|
<el-row :gutter="12">
|
|
|
- <el-col
|
|
|
- v-for="(item, index) in baggageBasicInfoCols"
|
|
|
- :key="index"
|
|
|
- :xl="[1, 4, 5].includes(index % 7) ? 4 : 3"
|
|
|
- :sm="6"
|
|
|
- :xs="6"
|
|
|
- >
|
|
|
- <span class="label">{{ item.label }}:</span><span
|
|
|
- class="content"
|
|
|
- :title="formattedBaggageInfo(item.prop)"
|
|
|
- >{{ formattedBaggageInfo(item.prop) }}</span>
|
|
|
+ <el-col v-for="(item, index) in baggageBasicInfoCols" :key="index" :xl="[1, 4, 5].includes(index % 7) ? 4 : 3" :sm="6" :xs="6">
|
|
|
+ <span class="label">{{ item.label }}:</span><span class="content" :title="formattedBaggageInfo(item.prop)">{{ formattedBaggageInfo(item.prop) }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div
|
|
|
- v-show="infoBtn === infoRadios[0]"
|
|
|
- class="part2"
|
|
|
- >
|
|
|
+ <div v-show="infoBtn === infoRadios[0]" class="part2">
|
|
|
<div class="part2_info">
|
|
|
- <div
|
|
|
- style="width: 120px"
|
|
|
- class="title"
|
|
|
- >行李跟踪信息</div>
|
|
|
+ <div style="width: 120px" class="title">行李跟踪信息</div>
|
|
|
<div class="type normal">
|
|
|
{{ baggageBasicInfo.BagStatus }}
|
|
|
</div>
|
|
|
<div class="step">
|
|
|
<div class="baggage-track-chart">
|
|
|
<div class="stepLine">
|
|
|
- <div
|
|
|
- :style="{ width: lineWidth }"
|
|
|
- class="stepLineBlue"
|
|
|
- />
|
|
|
+ <div :style="{ width: lineWidth }" class="stepLineBlue" />
|
|
|
</div>
|
|
|
<!-- <el-popover
|
|
|
v-for="(item, index) in stepData"
|
|
@@ -87,13 +56,7 @@
|
|
|
<span>{{ item.DealTime }}</span>
|
|
|
</div>
|
|
|
</el-popover> -->
|
|
|
- <div
|
|
|
- v-for="(item, index) in stepData"
|
|
|
- :key="index"
|
|
|
- :class="{ 'stepItem': true, activeItem: item.DealTime }"
|
|
|
- @mouseenter="itemMouseEnterHandler(item)"
|
|
|
- @mouseleave="itemMouseLeaveHandler(item)"
|
|
|
- >
|
|
|
+ <div v-for="(item, index) in stepData" :key="index" :class="{ 'stepItem': true, activeItem: item.DealTime }" @mouseenter="itemMouseEnterHandler(item)" @mouseleave="itemMouseLeaveHandler(item)">
|
|
|
<span class="head">
|
|
|
<!-- {{ item.airPort }} -->
|
|
|
<!-- <span v-if="item.airPort && item.nodeName !== ''">-</span> -->
|
|
@@ -106,24 +69,13 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="btns">
|
|
|
- <img
|
|
|
- class="btn-square btn-shadow"
|
|
|
- src="../../../../assets/baggage/ic_export.png"
|
|
|
- >
|
|
|
- <img
|
|
|
- class="btn-square btn-shadow"
|
|
|
- src="../../../../assets/baggage/ic_setting.png"
|
|
|
- @click="show"
|
|
|
- >
|
|
|
+ <img class="btn-square btn-shadow" src="../../../../assets/baggage/ic_export.png">
|
|
|
+ <img class="btn-square btn-shadow" src="../../../../assets/baggage/ic_setting.png" @click="show">
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div
|
|
|
- v-show="infoBtn == infoRadios[0]"
|
|
|
- class="part3"
|
|
|
- :style="{
|
|
|
+ <div v-show="infoBtn == infoRadios[0]" class="part3" :style="{
|
|
|
'height': `calc(100vh - 80px - ${basicInfoHeight}px - 128px - 3 * 8px - 44px)`
|
|
|
- }"
|
|
|
- >
|
|
|
+ }">
|
|
|
<!-- <el-popover
|
|
|
trigger="hover"
|
|
|
placement="top-start"
|
|
@@ -132,30 +84,8 @@
|
|
|
:disabled="!messageTooltipVisible"
|
|
|
>
|
|
|
<div class="pre-line">{{ messageTooltip }}</div> -->
|
|
|
- <el-table
|
|
|
- ref="table"
|
|
|
- :data="baggageTableData"
|
|
|
- :height="`calc(100vh - 80px - ${basicInfoHeight}px - 128px - 3 * 8px - 44px)`"
|
|
|
- size="mini"
|
|
|
- border
|
|
|
- fit
|
|
|
- :header-cell-class-name="headerCellClass"
|
|
|
- :header-cell-style="{ color: '#101116' }"
|
|
|
- :cell-class-name="cellClass"
|
|
|
- :span-method="tableSpanMethod"
|
|
|
- @cell-mouse-enter="cellMouseEnterHandler"
|
|
|
- @cell-mouse-leave="cellMouseLeaveHandler"
|
|
|
- @cell-click="cellClickHandler"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- v-for="item in tableColsCopy"
|
|
|
- :key="item.index"
|
|
|
- :prop="item.prop"
|
|
|
- :label="item.name"
|
|
|
- :align="item.align || 'center'"
|
|
|
- :width="item.width"
|
|
|
- show-overflow-tooltip
|
|
|
- >
|
|
|
+ <el-table ref="table" :data="baggageTableData" :height="`calc(100vh - 80px - ${basicInfoHeight}px - 128px - 3 * 8px - 44px)`" size="mini" border fit :header-cell-class-name="headerCellClass" :header-cell-style="{ color: '#101116' }" :cell-class-name="cellClass" :span-method="tableSpanMethod" @cell-mouse-enter="cellMouseEnterHandler" @cell-mouse-leave="cellMouseLeaveHandler" @cell-click="cellClickHandler">
|
|
|
+ <el-table-column v-for="item in tableColsCopy" :key="item.index" :prop="item.prop" :label="item.name" :align="item.align || 'center'" :width="item.width" show-overflow-tooltip>
|
|
|
<template slot="header">
|
|
|
<div class="cell-content">{{ item.name }}</div>
|
|
|
</template>
|
|
@@ -167,13 +97,9 @@
|
|
|
<!-- </el-popover> -->
|
|
|
</div>
|
|
|
|
|
|
- <div
|
|
|
- v-show="infoBtn === infoRadios[1]"
|
|
|
- class="part4"
|
|
|
- :style="{
|
|
|
+ <div v-show="infoBtn === infoRadios[1]" class="part4" :style="{
|
|
|
'height': `calc(100vh - 80px - ${basicInfoHeight}px - 2 * 8px - 44px)`
|
|
|
- }"
|
|
|
- >
|
|
|
+ }">
|
|
|
<header class="head">
|
|
|
<div class="title">行李跟踪信息</div>
|
|
|
<div class="btns">
|
|
@@ -190,15 +116,8 @@
|
|
|
</header>
|
|
|
<main class="main">
|
|
|
<template v-if="messageList.length">
|
|
|
- <el-row
|
|
|
- :gutter="24"
|
|
|
- type="flex"
|
|
|
- >
|
|
|
- <el-col
|
|
|
- v-for="(message, index) in messageList"
|
|
|
- :key="index"
|
|
|
- :span="6"
|
|
|
- >
|
|
|
+ <el-row :gutter="24" type="flex">
|
|
|
+ <el-col v-for="(message, index) in messageList" :key="index" :span="6">
|
|
|
<div class="card">
|
|
|
<div class="message-date">{{ message.date + ' UTC' }}</div>
|
|
|
<div class="message-content">
|
|
@@ -218,46 +137,23 @@
|
|
|
</el-row>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <el-empty
|
|
|
- :image-size="1"
|
|
|
- description="暂无数据"
|
|
|
- />
|
|
|
+ <el-empty :image-size="1" description="暂无数据" />
|
|
|
</template>
|
|
|
</main>
|
|
|
</div>
|
|
|
<!--列设置-->
|
|
|
- <Dialog
|
|
|
- :flag="dialogFlag"
|
|
|
- class="dialog-check-cols"
|
|
|
- >
|
|
|
+ <Dialog :flag="dialogFlag" class="dialog-check-cols">
|
|
|
<div class="col-dialog">
|
|
|
<div class="title">列设置</div>
|
|
|
<div class="content">
|
|
|
- <el-tree
|
|
|
- :data="tableCols"
|
|
|
- :class="colsCheckClass"
|
|
|
- show-checkbox
|
|
|
- node-key="index"
|
|
|
- :default-expand-all="true"
|
|
|
- :props="{
|
|
|
+ <el-tree :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
|
|
|
label: 'name',
|
|
|
children: 'children',
|
|
|
- }"
|
|
|
- :default-checked-keys="checkedKeysTemp"
|
|
|
- @check="handleCheck"
|
|
|
- />
|
|
|
+ }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />
|
|
|
</div>
|
|
|
<div class="foot right t30">
|
|
|
- <el-button
|
|
|
- size="medium"
|
|
|
- class="r24"
|
|
|
- type="primary"
|
|
|
- @click="onCheck"
|
|
|
- >确定</el-button>
|
|
|
- <el-button
|
|
|
- size="medium"
|
|
|
- @click="hide"
|
|
|
- >取消</el-button>
|
|
|
+ <el-button size="medium" class="r24" type="primary" @click="onCheck">确定</el-button>
|
|
|
+ <el-button size="medium" @click="hide">取消</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</Dialog>
|
|
@@ -274,7 +170,7 @@ export default {
|
|
|
Dialog
|
|
|
},
|
|
|
mixins: [tableColsMixin],
|
|
|
- data() {
|
|
|
+ data () {
|
|
|
return {
|
|
|
departureAirport: '',
|
|
|
landingAirport: '',
|
|
@@ -448,7 +344,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- lineWidth() {
|
|
|
+ lineWidth () {
|
|
|
for (let i = this.stepData.length - 1; i > -1; i--) {
|
|
|
if (this.stepData[i].DealTime) {
|
|
|
return (i * 100) / (this.stepData.length - 1) + '%'
|
|
@@ -470,7 +366,7 @@ export default {
|
|
|
// )
|
|
|
// }
|
|
|
// },
|
|
|
- formattedBaggageInfo() {
|
|
|
+ formattedBaggageInfo () {
|
|
|
return function (prop) {
|
|
|
const value = this.baggageBasicInfo[prop]
|
|
|
if ((value ?? '') === '') {
|
|
@@ -499,7 +395,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
- infoBtn(val) {
|
|
|
+ infoBtn (val) {
|
|
|
const that = this
|
|
|
if (val === '跟踪报文') {
|
|
|
clearInterval(this.loopEvent)
|
|
@@ -518,7 +414,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
hoveredRow: {
|
|
|
- handler(row) {
|
|
|
+ handler (row) {
|
|
|
this.stepData.forEach(item => {
|
|
|
item.tableHover = row && item.resourceFile === row.resourceFile
|
|
|
})
|
|
@@ -526,7 +422,7 @@ export default {
|
|
|
deep: true
|
|
|
}
|
|
|
},
|
|
|
- mounted() {
|
|
|
+ mounted () {
|
|
|
this.queryData = this._.cloneDeep(this.$route.query)
|
|
|
// console.log(this.queryData)
|
|
|
const that = this
|
|
@@ -535,11 +431,11 @@ export default {
|
|
|
that.queryBaggageAll()
|
|
|
}, 3000)
|
|
|
},
|
|
|
- updated() {
|
|
|
+ updated () {
|
|
|
this.basicInfoHeight = this.$refs['basicInfo'].offsetHeight
|
|
|
this.$refs['table']?.doLayout()
|
|
|
},
|
|
|
- beforeDestroy() {
|
|
|
+ beforeDestroy () {
|
|
|
clearInterval(this.loopEvent)
|
|
|
this.loopEvent = null
|
|
|
clearInterval(this.queryMessageLoop)
|
|
@@ -556,7 +452,7 @@ export default {
|
|
|
// }
|
|
|
// }
|
|
|
// },
|
|
|
- initTableData(tableData) {
|
|
|
+ initTableData (tableData) {
|
|
|
const spanArr = []
|
|
|
let pos = 0
|
|
|
for (let i = 0; i < tableData.length; i++) {
|
|
@@ -580,12 +476,12 @@ export default {
|
|
|
this.spanArr = spanArr
|
|
|
this.pos = pos
|
|
|
},
|
|
|
- headerCellClass({ row, column, rowIndex, columnIndex }) {
|
|
|
+ headerCellClass ({ row, column, rowIndex, columnIndex }) {
|
|
|
if (['departureAirport', 'landingAirport'].includes(column.property)) {
|
|
|
return 'pre-line'
|
|
|
}
|
|
|
},
|
|
|
- cellClass({ row, column, rowIndex, columnIndex }) {
|
|
|
+ cellClass ({ row, column, rowIndex, columnIndex }) {
|
|
|
const classes = []
|
|
|
if (column.property === 'flightNo') {
|
|
|
classes.push('cell-click')
|
|
@@ -595,7 +491,7 @@ export default {
|
|
|
}
|
|
|
return classes.join(' ')
|
|
|
},
|
|
|
- cellClickHandler(row, column, cell, event) {
|
|
|
+ cellClickHandler (row, column, cell, event) {
|
|
|
switch (column.property) {
|
|
|
case 'flightNo':
|
|
|
this.$router.push({
|
|
@@ -610,7 +506,7 @@ export default {
|
|
|
break
|
|
|
}
|
|
|
},
|
|
|
- tableSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
|
+ tableSpanMethod ({ row, column, rowIndex, columnIndex }) {
|
|
|
if (['flightNo', 'flightDate', 'departureAirport', 'landingAirport'].includes(column['property'])) {
|
|
|
const _row = this.spanArr[rowIndex]
|
|
|
const _col = _row > 0 ? 1 : 0
|
|
@@ -620,25 +516,25 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- itemMouseEnterHandler(item) {
|
|
|
+ itemMouseEnterHandler (item) {
|
|
|
if (item.resourceFile) {
|
|
|
// this.checkBaggageMessage(item.resourceFile)
|
|
|
item.hover = true
|
|
|
}
|
|
|
},
|
|
|
- itemMouseLeaveHandler(item) {
|
|
|
+ itemMouseLeaveHandler (item) {
|
|
|
item.hover = false
|
|
|
},
|
|
|
- cellMouseEnterHandler(row, column, cell, event) {
|
|
|
+ cellMouseEnterHandler (row, column, cell, event) {
|
|
|
// if (row?.resourceFile) {
|
|
|
// this.checkBaggageMessage(row.resourceFile)
|
|
|
// }
|
|
|
this.hoveredRow = row
|
|
|
},
|
|
|
- cellMouseLeaveHandler() {
|
|
|
+ cellMouseLeaveHandler () {
|
|
|
// this.hoveredRow = null
|
|
|
},
|
|
|
- async checkBaggageMessage(resourceFile) {
|
|
|
+ async checkBaggageMessage (resourceFile) {
|
|
|
if (!this.messageTooltipList.some(message => message.resourceFile === resourceFile)) {
|
|
|
const result = await this.queryMessage([resourceFile])
|
|
|
this.messageTooltipList.push({
|
|
@@ -648,22 +544,22 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 行李详情基础信息
|
|
|
- queryBaggageBasicInfo(dataContent) {
|
|
|
+ queryBaggageBasicInfo (dataContent) {
|
|
|
return myQuery(queryMap.baggageBasicInfoByID, ...dataContent)
|
|
|
},
|
|
|
// 行李详情追踪链
|
|
|
- queryBaggageTrack(dataContent) {
|
|
|
+ queryBaggageTrack (dataContent) {
|
|
|
return myQuery(queryMap.baggageTrackByID, ...dataContent)
|
|
|
},
|
|
|
// 行李详情表格
|
|
|
- queryBaggageDetails(dataContent) {
|
|
|
+ queryBaggageDetails (dataContent) {
|
|
|
return myQuery(queryMap.baggageDetailsByID, ...dataContent)
|
|
|
},
|
|
|
// 原始报文
|
|
|
- queryMessage(dataContent) {
|
|
|
+ queryMessage (dataContent) {
|
|
|
return myQuery(queryMap.message, ...dataContent)
|
|
|
},
|
|
|
- async queryBaggageAll(queryData = this.queryData) {
|
|
|
+ async queryBaggageAll (queryData = this.queryData) {
|
|
|
const { FlightNO, FlightDate, BagSN } = queryData
|
|
|
const dataContent = [FlightNO, FlightDate, BagSN]
|
|
|
try {
|
|
@@ -702,7 +598,7 @@ export default {
|
|
|
console.log('错误', error)
|
|
|
}
|
|
|
},
|
|
|
- async baggageMessageQuery() {
|
|
|
+ async baggageMessageQuery () {
|
|
|
const { FlightNO, FlightDate, BagSN } = this.queryData
|
|
|
const dataContent = [FlightNO, FlightDate, BagSN]
|
|
|
try {
|
|
@@ -889,7 +785,7 @@ export default {
|
|
|
padding: 0;
|
|
|
word-spacing: 0;
|
|
|
font-size: 14px;
|
|
|
- font-family: Helvetica, 'Microsoft YaHei';
|
|
|
+ font-family: Helvetica, "Microsoft YaHei";
|
|
|
font-weight: 400;
|
|
|
color: #303133;
|
|
|
.cell-content {
|
|
@@ -930,12 +826,12 @@ export default {
|
|
|
.card {
|
|
|
width: 100%;
|
|
|
min-height: 440px;
|
|
|
- padding: 24px 0 24px 32px;
|
|
|
+ padding: 20px;
|
|
|
background: #ffffff;
|
|
|
box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.29);
|
|
|
margin-bottom: 24px;
|
|
|
> .message-date {
|
|
|
- width: 160px;
|
|
|
+ width: 180px;
|
|
|
height: 26px;
|
|
|
line-height: 14px;
|
|
|
font-size: 14px;
|
|
@@ -949,6 +845,7 @@ export default {
|
|
|
line-height: 24px;
|
|
|
font-size: 14px;
|
|
|
color: #303133;
|
|
|
+ word-break: break-all;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -976,16 +873,16 @@ export default {
|
|
|
white-space: pre-line;
|
|
|
}
|
|
|
}
|
|
|
-.el-popper[x-placement^='top'].popover-dark .popper__arrow::after {
|
|
|
+.el-popper[x-placement^="top"].popover-dark .popper__arrow::after {
|
|
|
border-top-color: #303133;
|
|
|
}
|
|
|
-.el-popper[x-placement^='right'].popover-dark .popper__arrow::after {
|
|
|
+.el-popper[x-placement^="right"].popover-dark .popper__arrow::after {
|
|
|
border-right-color: #303133;
|
|
|
}
|
|
|
-.el-popper[x-placement^='bottom'].popover-dark .popper__arrow::after {
|
|
|
+.el-popper[x-placement^="bottom"].popover-dark .popper__arrow::after {
|
|
|
border-bottom-color: #303133;
|
|
|
}
|
|
|
-.el-popper[x-placement^='left'].popover-dark .popper__arrow::after {
|
|
|
+.el-popper[x-placement^="left"].popover-dark .popper__arrow::after {
|
|
|
border-left-color: #303133;
|
|
|
}
|
|
|
</style>
|