Эх сурвалжийг харах

航班视图-航段显示修改

zhongxiaoyu 2 жил өмнө
parent
commit
d90b72640e

+ 291 - 79
src/views/baggageManagement/components/flight/index.vue

@@ -14,53 +14,102 @@
         </div>
         <div class="part1-wrapper">
           <div class="airline">{{ queryData.flightNO }}
-            <el-select v-model="selectedAirline" size="mini" class="airline-select">
-              <el-option v-for="airline in airlineList" :key="airline.value" :value="airline.value" :label="airline.label" />
+            <el-select
+              v-model="selectedAirline"
+              size="mini"
+              class="airline-select"
+            >
+              <el-option
+                v-for="(airline, index) in airlineList"
+                :key="index"
+                :value="airline.value"
+                :label="airline.label"
+              />
             </el-select>
           </div>
           <div class="part1_info">
             <div class="part1_info_box">
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>起飞机场简称:</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.departureName }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>起飞机场三字码:</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.planDepartureApt }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>航站楼:{{ flightInfo.departureBuild }}</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>分拣转盘:{{ flightInfo.sortCarousel }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>
                     日期:{{ flightInfo.planDepartureTime && flightInfo.planDepartureTime.split("T")[0] }}
                   </span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>
                     时间:{{ flightInfo.planDepartureTime && flightInfo.planDepartureTime.split("T")[1] }}
                   </span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>登机口:{{ flightInfo.bordingGate }}</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>停机位:{{ flightInfo.standForDepartrue }}</span>
                 </el-col>
               </el-row>
@@ -76,36 +125,68 @@
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="16" :sm="16" :xl="12">
+                <el-col
+                  :xs="16"
+                  :sm="16"
+                  :xl="12"
+                >
                   <span>航班状态:</span>
                 </el-col>
-                <el-col :xs="8" :sm="8" :xl="12">
+                <el-col
+                  :xs="8"
+                  :sm="8"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.flightStatus === null ? "正常" : flightInfo.flightStatus }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>托运旅客数:</span>
                   <span>{{ flightInfo.count1 }}</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>终点行李数:</span>
                   <span>{{ flightInfo.count2 }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="18" :sm="18" :xl="12">
+                <el-col
+                  :xs="18"
+                  :sm="18"
+                  :xl="12"
+                >
                   <span>中转进行李数:</span>
                 </el-col>
-                <el-col :xs="6" :sm="6" :xl="12">
+                <el-col
+                  :xs="6"
+                  :sm="6"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.count4 }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="18" :sm="18" :xl="12">
+                <el-col
+                  :xs="18"
+                  :sm="18"
+                  :xl="12"
+                >
                   <span>中转出行李数:</span>
                 </el-col>
-                <el-col :xs="6" :sm="6" :xl="12">
+                <el-col
+                  :xs="6"
+                  :sm="6"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.count3 }}</span>
                 </el-col>
               </el-row>
@@ -113,18 +194,34 @@
             <i class="part1_info_arrow_right el-icon-caret-right" />
             <div class="part1_info_box">
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>降落机场简称:</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.landingName }}</span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>降落机场三字码:</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>{{ flightInfo.planLandingApt }}</span>
                 </el-col>
               </el-row>
@@ -137,22 +234,38 @@
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>
                     日期:{{ flightInfo.expectLandingTime && flightInfo.expectLandingTime.split("T")[0] }}
                   </span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>
                     时间:{{ flightInfo.expectLandingTime && flightInfo.expectLandingTime.split("T")[1] }}
                   </span>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>提取转盘:{{ flightInfo.carousel }}</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
+                <el-col
+                  :xs="24"
+                  :sm="24"
+                  :xl="12"
+                >
                   <span>停机位:{{ flightInfo.standForLanding }}</span>
                 </el-col>
               </el-row>
@@ -163,10 +276,36 @@
       <div class="part2">
         <div class="title">
           <span class="manageTitle">航班容器列表</span>
-          <img class="btn-square btn-shadow" src="@/assets/baggage/ic_export.png" title="导出" @click="exportHandler('containerTable', '航班容器列表')">
+          <img
+            class="btn-square btn-shadow"
+            src="@/assets/baggage/ic_export.png"
+            title="导出"
+            @click="exportHandler('containerTable', '航班容器列表')"
+          >
         </div>
-        <el-table ref="containerTable" :data="containerTableData" border style="width: 100%" height="344px" stripe size="mini" show-summary :summary-method="summaryMethod" :header-cell-style="{ color: '#101116' }" :row-class-name="rowClass" @row-click="containerClick">
-          <el-table-column v-for="col in containerTableColumn" :key="col.id" :prop="col.prop" :label="col.label" :width="col.width" :align="col.align || 'center'" :show-overflow-tooltip="true" />
+        <el-table
+          ref="containerTable"
+          :data="containerTableData"
+          border
+          style="width: 100%"
+          height="344px"
+          stripe
+          size="mini"
+          show-summary
+          :summary-method="summaryMethod"
+          :header-cell-style="{ color: '#101116' }"
+          :row-class-name="rowClass"
+          @row-click="containerClick"
+        >
+          <el-table-column
+            v-for="col in containerTableColumn"
+            :key="col.id"
+            :prop="col.prop"
+            :label="col.label"
+            :width="col.width"
+            :align="col.align || 'center'"
+            :show-overflow-tooltip="true"
+          />
         </el-table>
       </div>
       <!-- <div
@@ -227,40 +366,113 @@
           />
         </el-table>
       </div> -->
-      <div class="drag-mask" :class="{ active: dragActive }" />
-      <div class="part4" :style="draggableStyle">
-        <div v-drag-height class="drag-box" :class="{ active: dragActive }">
+      <div
+        class="drag-mask"
+        :class="{ active: dragActive }"
+      />
+      <div
+        class="part4"
+        :style="draggableStyle"
+      >
+        <div
+          v-drag-height
+          class="drag-box"
+          :class="{ active: dragActive }"
+        >
           <i class="drag-icon el-icon-d-caret" />
-          <div class="drag-line" :style="dragLineStyle" />
+          <div
+            class="drag-line"
+            :style="dragLineStyle"
+          />
         </div>
         <div class="title">
           <span class="manageTitle">航班行李列表</span>
           <TimeZoneSelector />
-          <img class="btn-square btn-shadow" src="@/assets/baggage/ic_export.png" title="导出" @click="exportHandler('flightBaggageTable', '航班行李列表')">
-          <img class="btn-square btn-shadow" src="@/assets/baggage/ic_setting.png" title="列设置" @click="show">
+          <img
+            class="btn-square btn-shadow"
+            src="@/assets/baggage/ic_export.png"
+            title="导出"
+            @click="exportHandler('flightBaggageTable', '航班行李列表')"
+          >
+          <img
+            class="btn-square btn-shadow"
+            src="@/assets/baggage/ic_setting.png"
+            title="列设置"
+            @click="show"
+          >
         </div>
-        <el-table ref="flightBaggageTable" :data="dealedTableData" border style="width: 100%" height="calc(100% - 64px)" stripe size="mini" show-summary :summary-method="summaryRow(dealedTableData.length)" :header-cell-class-name="headerCellClass" :header-cell-style="{ color: '#101116' }" :row-class-name="rowClass" :cell-class-name="cellClass" @cell-click="cellClickHandler">
-          <el-table-column v-for="col in tableColsCopy" :key="col.index" :prop="col.prop" :label="col.label" :align="col.align || 'center'" :width="col.width" :fixed="col.fixed" :formatter="tableFormat">
+        <el-table
+          ref="flightBaggageTable"
+          :data="dealedTableData"
+          border
+          style="width: 100%"
+          height="calc(100% - 64px)"
+          stripe
+          size="mini"
+          show-summary
+          :summary-method="summaryRow(dealedTableData.length)"
+          :header-cell-class-name="headerCellClass"
+          :header-cell-style="{ color: '#101116' }"
+          :row-class-name="rowClass"
+          :cell-class-name="cellClass"
+          @cell-click="cellClickHandler"
+        >
+          <el-table-column
+            v-for="col in tableColsCopy"
+            :key="col.index"
+            :prop="col.prop"
+            :label="col.label"
+            :align="col.align || 'center'"
+            :width="col.width"
+            :fixed="col.fixed"
+            :formatter="tableFormat"
+          >
             <template #header>
-              <TableHeaderCell :label="col.label" :filter-options="flightBaggageTableFilters[col.prop]" :filter-values.sync="filterValues[col.prop]" :sortable="col.sortable" :sort-rule.sync="tableDataSortRules[col.prop]" />
+              <TableHeaderCell
+                :label="col.label"
+                :filter-options="flightBaggageTableFilters[col.prop]"
+                :filter-values.sync="filterValues[col.prop]"
+                :sortable="col.sortable"
+                :sort-rule.sync="tableDataSortRules[col.prop]"
+              />
             </template>
           </el-table-column>
         </el-table>
       </div>
     </div>
     <!--列设置-->
-    <Dialog :flag="dialogFlag" class="dialog-check-group">
+    <Dialog
+      :flag="dialogFlag"
+      class="dialog-check-group"
+    >
       <div class="dialog-wrapper">
         <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: 'label',
               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('flightBaggageTableData')">确定</el-button>
-          <el-button size="medium" @click="hide">取消</el-button>
+          <el-button
+            size="medium"
+            class="r24"
+            type="primary"
+            @click="onCheck('flightBaggageTableData')"
+          >确定</el-button>
+          <el-button
+            size="medium"
+            @click="hide"
+          >取消</el-button>
         </div>
       </div>
     </Dialog>
@@ -281,20 +493,20 @@ export default {
   name: 'FlightView',
   directives: {
     dragHeight: {
-      inserted (el, binding, vnode) {
+      inserted(el, binding, vnode) {
         const that = vnode.context
         let mousedownY
         let dragY
         let dragHeight
         const offsetTop = el.offsetParent.offsetTop
-        function mousemoveHandler (e) {
+        function mousemoveHandler(e) {
           e.stopPropagation()
           e.preventDefault()
           dragY = dragHeight + mousedownY - e.screenY
           dragY = dragY < 0 ? 0 : dragY > offsetTop ? offsetTop : dragY
           that.dragY = dragY
         }
-        function mouseupHandler (e) {
+        function mouseupHandler(e) {
           e.stopPropagation()
           e.preventDefault()
           that.dragHeight = that.dragY
@@ -320,7 +532,7 @@ export default {
     TableHeaderCell
   },
   mixins: [tableColsMixin, timeZoneMixin],
-  data () {
+  data() {
     return {
       fullscreenLoading: false,
       airlineList: [],
@@ -408,7 +620,7 @@ export default {
   },
   computed: {
     ...mapGetters(['clickedCells']),
-    dealedTableData () {
+    dealedTableData() {
       const filtered = this.flightBaggageTableData.filter(item => {
         let flag = true
         Object.entries(this.filterValues).forEach(([key, arr]) => {
@@ -431,12 +643,12 @@ export default {
       )
       return this._.orderBy(filtered, sortRules[0], sortRules[1])
     },
-    draggableStyle () {
+    draggableStyle() {
       return {
         height: `calc(100vh - 80px - 64px - 16px - 344px + ${this.dragHeight}px)`
       }
     },
-    dragLineStyle () {
+    dragLineStyle() {
       return {
         transform: `translateY(${this.dragHeight - this.dragY}px)`
       }
@@ -444,7 +656,7 @@ export default {
   },
   watch: {
     $route: {
-      handler ({ path, query }) {
+      handler({ path, query }) {
         if (path.includes('flightView')) {
           const { flightNO, flightDate } = query
           if (flightNO && flightDate) {
@@ -461,7 +673,7 @@ export default {
       deep: true,
       immediate: true
     },
-    fullscreenLoading (val) {
+    fullscreenLoading(val) {
       if (val) {
         this.loading = this.$loading({
           lock: true,
@@ -473,13 +685,13 @@ export default {
         this.loading?.close()
       }
     },
-    selectedAirline (val) {
+    selectedAirline(val) {
       const { flightNO, flightDate } = this.queryData
       const [departureAirport, landingAirport] = val.split('-')
       this.queryAll([flightNO, flightDate, departureAirport, landingAirport])
     }
   },
-  created () {
+  created() {
     Object.values(this.tableCols).forEach(({ prop, filterable, sortable }) => {
       if (filterable) {
         this.$set(this.flightBaggageTableFilters, prop, [])
@@ -490,7 +702,7 @@ export default {
       }
     })
   },
-  activated () {
+  activated() {
     this.$nextTick(() => {
       this.$refs['containerTable']?.doLayout()
       // this.$refs['transferInBaggageTable']?.doLayout()
@@ -498,7 +710,7 @@ export default {
       this.$refs['flightBaggageTable']?.doLayout()
     })
   },
-  updated () {
+  updated() {
     this.$nextTick(() => {
       this.$refs['containerTable']?.doLayout()
       // this.$refs['transferInBaggageTable']?.doLayout()
@@ -506,14 +718,14 @@ export default {
       this.$refs['flightBaggageTable']?.doLayout()
     })
   },
-  deactivated () {
+  deactivated() {
     this.loading?.close()
   },
-  beforeDestroy () {
+  beforeDestroy() {
     this.loading?.close()
   },
   methods: {
-    rowClass ({ row, rowIndex }) {
+    rowClass({ row, rowIndex }) {
       const classes = []
       if (this.warningContainers.includes(row['containerNumber']) || row['latestStatus'] === '待翻减') {
         classes.push('row-warning')
@@ -524,7 +736,7 @@ export default {
       return classes.join(' ')
     },
     // 给表头单元格加上 ascending 或 descending 使用 element 自带的排序箭头变色
-    headerCellClass ({ row, column, rowIndex, columnIndex }) {
+    headerCellClass({ row, column, rowIndex, columnIndex }) {
       const classes = []
       const rule = this.tableDataSortRules[column.property]
       if (rule) {
@@ -532,7 +744,7 @@ export default {
       }
       return classes.join(' ')
     },
-    cellClass ({ row, column, rowIndex, columnIndex }) {
+    cellClass({ row, column, rowIndex, columnIndex }) {
       const classes = []
       if (
         ['checkInTime', 'DealInfo', 'sortLocationMark', 'loadLocationMark', 'inflLocationMark'].includes(
@@ -569,7 +781,7 @@ export default {
       }
       return classes.join(' ')
     },
-    cellClickHandler (row, column, cell, event) {
+    cellClickHandler(row, column, cell, event) {
       if (
         [
           'preFlightNO',
@@ -665,7 +877,7 @@ export default {
       }
     },
     // 合计行
-    summaryMethod ({ columns, data }) {
+    summaryMethod({ columns, data }) {
       const sums = []
       if (columns.length > 0) {
         columns.forEach((column, index) => {
@@ -697,12 +909,12 @@ export default {
       return sums
     },
     // 统计行数
-    summaryRow (num) {
+    summaryRow(num) {
       return function () {
         return ['合计', `共${num}件`]
       }
     },
-    containerClick (row) {
+    containerClick(row) {
       if (row.containerNumber === 'FBULK') {
         this.$router.push({
           path: '/advance',
@@ -725,35 +937,35 @@ export default {
         })
       }
     },
-    exportHandler (refName, tableName) {
+    exportHandler(refName, tableName) {
       const table = this.$refs[refName].$el.cloneNode(true)
       const fileName = `${tableName}-${this.queryData.flightNO}-${this.queryData.flightDate}.xlsx`
       throttledExportToExcel(table, tableName, fileName)
     },
-    queryflightInfo (dataContent) {
+    queryflightInfo(dataContent) {
       return myQuery(DATACONTENT_ID.flightInfo, ...dataContent)
     },
-    queryContainer (dataContent) {
+    queryContainer(dataContent) {
       return myQuery(DATACONTENT_ID.flightContainer, ...dataContent)
     },
-    queryBaggageByFlightNO (dataContent) {
+    queryBaggageByFlightNO(dataContent) {
       return myQuery(DATACONTENT_ID.flightBaggage, ...dataContent)
     },
-    async queryAirline (dataContent) {
+    async queryAirline(dataContent) {
       try {
         const listValues = await myQuery(DATACONTENT_ID.flightAirline, ...dataContent)
-        this.airlineList = listValues.map(airline => ({
-          label: `${airline.departureAirport}-${airline.landingAirport}`,
-          value: `${airline.departureAirport}-${airline.landingAirport}`
+        this.airlineList = listValues.map(({ departureAirport, landingAirport, departureBuild, landingBuild }) => ({
+          label: `${departureAirport}${departureBuild ? `(${departureBuild})` : ''}-${landingAirport}${landingBuild ? `(${landingBuild})` : ''}`,
+          value: `${departureAirport}-${landingAirport}`
         }))
         if (this.airlineList.length) {
           this.selectedAirline = this.airlineList[0].value
         }
       } catch (error) {
-this.$message.error("失败");
+        this.$message.error('失败')
       }
     },
-    async queryAll (dataContent) {
+    async queryAll(dataContent) {
       this.fullscreenLoading = true
       this.flightInfo = {}
       try {
@@ -785,7 +997,7 @@ this.$message.error("失败");
         })
         setTableFilters(this.flightBaggageTableData, this.flightBaggageTableFilters)
       } catch (error) {
-        this.$message.error("失败");
+        this.$message.error('失败')
       }
       this.fullscreenLoading = false
     }
@@ -839,7 +1051,7 @@ this.$message.error("失败");
           color: #ffffff;
           ::v-deep .airline-select {
             .el-input__inner {
-              width: 150px;
+              width: 200px;
               background-color: transparent;
               font-size: 18px;
               font-weight: bold;