zhongxiaoyu 2 лет назад
Родитель
Сommit
ef8cc1cad7
1 измененных файлов с 296 добавлено и 74 удалено
  1. 296 74
      src/views/baggageManagement/components/flight/index.vue

+ 296 - 74
src/views/baggageManagement/components/flight/index.vue

@@ -12,22 +12,39 @@
         <div class="title">
           <span class="manageTitle">
             <span>航班基本信息</span>
-            <span class="btn-back"><i class="el-icon-arrow-left" />返回上一步</span>
-          </span>        
+            <!-- <span class="btn-back"><i class="el-icon-arrow-left" />返回上一步</span> -->
+          </span>
         </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, index) in airlineList" :key="index" :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>
@@ -48,22 +65,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.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>
@@ -79,26 +112,67 @@
                 </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">
-                  <span>{{ flightInfo.flightStatus === null ? "正常" : flightInfo.flightStatus }}</span>
+                <el-col
+                  :xs="8"
+                  :sm="8"
+                  :xl="12"
+                >
+                  <!-- <span>{{ flightInfo.flightStatus === null ? "正常" : flightInfo.flightStatus }}</span> -->
+                  <span>{{ flightInfo.flightStateCN }}</span>
                 </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"
+                >
+                  <span>{{ flightInfo.craftNo }}</span>
+                </el-col>
+              </el-row>
+              <el-row>
+                <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.count1 }}</span>
                 </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.count2 }}</span>
                 </el-col>
               </el-row>
@@ -122,10 +196,18 @@
             <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>
@@ -146,23 +228,55 @@
                 </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">
-                  <span>提取转盘:{{ flightInfo.carousel }}</span>
+                <el-col
+                  :xs="16"
+                  :sm="16"
+                  :xl="12"
+                >
+                  <span>提取转盘:</span>
                 </el-col>
-                <el-col :xs="24" :sm="24" :xl="12">
-                  <span>停机位:{{ flightInfo.standForLanding }}</span>
+                <el-col
+                  :xs="8"
+                  :sm="8"
+                  :xl="12"
+                >
+                  <span>{{ flightInfo.carousel }}</span>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col
+                  :xs="16"
+                  :sm="16"
+                  :xl="12"
+                >
+                  <span>停机位:</span>
+                </el-col>
+                <el-col
+                  :xs="8"
+                  :sm="8"
+                  :xl="12"
+                >
+                  <span>{{ flightInfo.standForLanding }}</span>
                 </el-col>
               </el-row>
             </div>
@@ -172,10 +286,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="290px" 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="290px"
+          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
@@ -236,40 +376,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>
@@ -290,20 +503,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
@@ -329,7 +542,7 @@ export default {
     TableHeaderCell
   },
   mixins: [tableColsMixin, timeZoneMixin],
-  data () {
+  data() {
     return {
       fullscreenLoading: false,
       airlineList: [],
@@ -417,7 +630,7 @@ export default {
   },
   computed: {
     ...mapGetters(['clickedCells']),
-    dealedTableData () {
+    dealedTableData() {
       const filtered = this.flightBaggageTableData.filter(item => {
         let flag = true
         Object.entries(this.filterValues).forEach(([key, arr]) => {
@@ -440,12 +653,12 @@ export default {
       )
       return this._.orderBy(filtered, sortRules[0], sortRules[1])
     },
-    draggableStyle () {
+    draggableStyle() {
       return {
         height: `calc(100vh - 80px - 64px - 16px - 290px + ${this.dragHeight}px)`
       }
     },
-    dragLineStyle () {
+    dragLineStyle() {
       return {
         transform: `translateY(${this.dragHeight - this.dragY}px)`
       }
@@ -453,7 +666,7 @@ export default {
   },
   watch: {
     $route: {
-      handler ({ path, query }) {
+      handler({ path, query }) {
         if (path.includes('flightView')) {
           const { flightNO, flightDate } = query
           if (flightNO && flightDate) {
@@ -470,7 +683,7 @@ export default {
       deep: true,
       immediate: true
     },
-    fullscreenLoading (val) {
+    fullscreenLoading(val) {
       if (val) {
         this.loading = this.$loading({
           lock: true,
@@ -482,13 +695,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, [])
@@ -499,7 +712,7 @@ export default {
       }
     })
   },
-  activated () {
+  activated() {
     this.$nextTick(() => {
       this.$refs['containerTable']?.doLayout()
       // this.$refs['transferInBaggageTable']?.doLayout()
@@ -507,7 +720,7 @@ export default {
       this.$refs['flightBaggageTable']?.doLayout()
     })
   },
-  updated () {
+  updated() {
     this.$nextTick(() => {
       this.$refs['containerTable']?.doLayout()
       // this.$refs['transferInBaggageTable']?.doLayout()
@@ -515,14 +728,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')
@@ -533,7 +746,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) {
@@ -541,7 +754,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(
@@ -578,7 +791,7 @@ export default {
       }
       return classes.join(' ')
     },
-    cellClickHandler (row, column, cell, event) {
+    cellClickHandler(row, column, cell, event) {
       if (
         [
           'preFlightNO',
@@ -660,13 +873,19 @@ export default {
               }
             })
             break
-          case 'U_Device_ID':
+          case 'U_Device_ID': {
+            const [departureAirport, landingAirport] = this.selectedAirline.split('-')
+            const container = this.containerTableData.find(({ containerNumber }) => containerNumber === row.U_Device_ID)
             this.$router.push({
-              path: `/${this.$route.path.split('/').slice(1, -1).join('/')}/newContainerView`,
+              path: `/${this.$route.path.split('/').slice(1, -1).join('/')}/containerView`,
               query: {
                 flightNO: this.queryData.flightNO,
                 flightDate: this.queryData.flightDate,
-                containerID: row.U_Device_ID
+                departureAirport,
+                landingAirport,
+                containerID: row.U_Device_ID,
+                containerType: container.style,
+                containerSpace: container.containerSpace
               }
             })
             // this.$router.push({
@@ -676,13 +895,14 @@ export default {
             //   }
             // })
             break
+          }
           default:
             break
         }
       }
     },
     // 合计行
-    summaryMethod ({ columns, data }) {
+    summaryMethod({ columns, data }) {
       const sums = []
       if (columns.length > 0) {
         columns.forEach((column, index) => {
@@ -714,12 +934,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',
@@ -742,25 +962,27 @@ 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(({ departureAirport, landingAirport, departureBuild, landingBuild }) => ({
-          label: `${departureAirport}${departureBuild ? `(${departureBuild})` : ''}-${landingAirport}${landingBuild ? `(${landingBuild})` : ''}`,
+          label: `${departureAirport}${departureBuild ? `(${departureBuild})` : ''}-${landingAirport}${
+            landingBuild ? `(${landingBuild})` : ''
+          }`,
           value: `${departureAirport}-${landingAirport}`
         }))
         if (this.airlineList.length) {
@@ -770,7 +992,7 @@ export default {
         this.$message.error('失败')
       }
     },
-    async queryAll (dataContent) {
+    async queryAll(dataContent) {
       this.fullscreenLoading = true
       this.flightInfo = {}
       try {