Sfoglia il codice sorgente

keepAlive页面重置

zhongxiaoyu 2 anni fa
parent
commit
c48742e2b7

+ 1 - 1
src/views/baggageManagement/components/arrival/index.vue

@@ -114,7 +114,7 @@
       <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 ref="columnSetTree" :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
               label: 'label',
               children: 'children',
             }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />

+ 26 - 6
src/views/baggageManagement/components/baggage/index.vue

@@ -208,6 +208,7 @@
         <div class="title">列设置</div>
         <div class="content">
           <el-tree
+            ref="columnSetTree"
             :data="tableCols"
             :class="colsCheckClass"
             show-checkbox
@@ -378,7 +379,7 @@ export default {
         { name: '节点标识', prop: 'nodeCode', width: 100 },
         { name: '节点名称', prop: 'nodeName', width: 70 },
         { name: '位置标识', prop: 'locationCode' },
-        { name: '位置描述', prop: 'locationRemark'},
+        { name: '位置描述', prop: 'locationRemark' },
         { name: '读取时间', prop: 'dealTime', width: 158 },
         { name: '结果', prop: 'status', width: 60 },
         { name: '次级代码', prop: 'secondaryCode', width: 70 },
@@ -452,6 +453,9 @@ export default {
         if (path.includes('baggageView')) {
           const { flightNO, flightDate, bagSN } = query
           if (flightNO && flightDate && bagSN) {
+            if (Object.keys(this.queryData).some(key => this.queryData[key] !== query[key])) {
+              this.resetSettings()
+            }
             this.queryData = { flightNO, flightDate, bagSN }
             this.queryBasicInfo()
             this.queryAirline()
@@ -505,6 +509,15 @@ export default {
       this.basicInfoHeight = this.$refs['basicInfo'].offsetHeight
       this.$refs['table']?.doLayout()
     },
+    resetSettings() {
+      this.initTableCols()
+      // Object.keys(this.filterValues).forEach(key => {
+      //   this.filterValues[key] = []
+      // })
+      // Object.keys(this.tableDataSortRules).forEach(key => {
+      //   this.tableDataSortRules[key] = ''
+      // })
+    },
     baggageBasicInfoClickHandler(prop) {
       if (prop !== 'compensationSign') {
         return
@@ -884,12 +897,19 @@ export default {
       const dataContent = [flightNO, flightDate, bagSN]
       try {
         const result = await this.queryBaggageMessage(dataContent)
-        // const messageList = result.map(message => {
-        //   return typeof message === 'string' ? JSON.parse(message) : message
-        // })
-        const messageList = result.reduce((list, message) => {
+        const messageList = result.reduce((list, message, currentIndex, arr) => {
           const messageObject = typeof message === 'string' ? JSON.parse(message) : message
-          if (messageObject.dataContent.includes(bagSN.slice(0, 7))) {
+          // 确保是当前行李的报文
+          const isCorrectBaggage = messageObject.dataContent.includes(bagSN.slice(0, 7))
+          // 相同报文去重
+          const index = arr.findIndex(testMessage => {
+            const testMessageObject = typeof testMessage === 'string' ? JSON.parse(testMessage) : testMessage
+            return (
+              messageObject.dataContent === testMessageObject.dataContent &&
+              messageObject.ssid === testMessageObject.ssid
+            )
+          })
+          if (isCorrectBaggage && currentIndex === index) {
             return [...list, messageObject]
           } else {
             return list

+ 19 - 8
src/views/baggageManagement/components/container/index.vue

@@ -131,6 +131,7 @@
         <div class="title">列设置</div>
         <div class="content">
           <el-tree
+            ref="columnSetTree"
             :data="tableCols"
             :class="colsCheckClass"
             show-checkbox
@@ -184,7 +185,7 @@ export default {
   ],
   data() {
     return {
-      fullscreenLoading: false,
+      loading: false,
       queryData: {},
       computedTableHeight: undefined,
       tableCols: [
@@ -312,6 +313,7 @@ export default {
               landingAirport !== oldLandingAirport ||
               containerID !== oldContainerID
             ) {
+              this.resetSettings()
               this.queryData = { flightNO, flightDate, departureAirport, landingAirport, containerID }
               this.queryContainerBaggage([flightNO, flightDate, departureAirport, landingAirport, containerID])
             }
@@ -323,16 +325,16 @@ export default {
       deep: true,
       immediate: true
     },
-    fullscreenLoading(val) {
+    loading(val) {
       if (val) {
-        this.loading = this.$loading({
+        this.fullscreenLoading = this.$loading({
           lock: true,
           text: '加载中',
           spinner: 'el-icon-loading',
           background: 'rgba(0, 0, 0, 0.7)'
         })
       } else {
-        this.loading?.close()
+        this.fullscreenLoading?.close()
       }
     }
   },
@@ -354,10 +356,10 @@ export default {
     this.setTableHeight()
   },
   deactivated() {
-    this.loading?.close()
+    this.fullscreenLoading?.close()
   },
   beforeDestroy() {
-    this.loading?.close()
+    this.fullscreenLoading?.close()
   },
   methods: {
     setTableHeight() {
@@ -372,6 +374,15 @@ export default {
         this.$refs['table']?.doLayout()
       })
     },
+    resetSettings() {
+      this.initTableCols()
+      Object.keys(this.filterValues).forEach(key => {
+        this.filterValues[key] = []
+      })
+      Object.keys(this.tableDataSortRules).forEach(key => {
+        this.tableDataSortRules[key] = ''
+      })
+    },
     rowClass({ row, rowIndex }) {
       const classes = []
       if (row['isDEL'] === 'DEL') {
@@ -492,7 +503,7 @@ export default {
       throttledExportToExcel(table, tableName, fileName)
     },
     async queryContainerBaggage(dataContent) {
-      this.fullscreenLoading = true
+      this.loading = true
       this.tableData = []
       try {
         const tableData = await myQuery(DATACONTENT_ID.containerBaggage, ...dataContent)
@@ -501,7 +512,7 @@ export default {
       } catch {
         this.$message.error('失败')
       }
-      this.fullscreenLoading = false
+      this.loading = false
     }
   }
 }

+ 9 - 0
src/views/baggageManagement/components/containerHistory/index.vue

@@ -234,6 +234,7 @@ export default {
         if (path.includes('containerHistory')) {
           const { containerID } = query
           if (containerID) {
+            this.resetSettings()
             const { containerID: oldContainerID } = this.queryData
             if (containerID !== oldContainerID) {
               this.queryData = { containerID }
@@ -274,6 +275,14 @@ export default {
     this.tableLoading = false
   },
   methods: {
+    resetSettings() {
+      Object.keys(this.filterValues).forEach(key => {
+        this.filterValues[key] = []
+      })
+      Object.keys(this.tableDataSortRules).forEach(key => {
+        this.tableDataSortRules[key] = ''
+      })
+    },
     currentChangeHandler({ index }) {
       if (index > -1) {
         this.selectedHistoryData = this.containerHistory[index]

+ 1 - 1
src/views/baggageManagement/components/departure/index.vue

@@ -115,7 +115,7 @@
       <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 ref="columnSetTree" :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
               label: 'label',
               children: 'children',
             }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />

+ 1 - 1
src/views/baggageManagement/components/departureC/index.vue

@@ -109,7 +109,7 @@
       <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 ref="columnSetTree" :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
               label: 'label',
               children: 'children',
             }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />

+ 24 - 8
src/views/baggageManagement/components/flight/index.vue

@@ -475,6 +475,7 @@
         <div class="title">列设置</div>
         <div class="content">
           <el-tree
+            ref="columnSetTree"
             :data="tableCols"
             :class="colsCheckClass"
             show-checkbox
@@ -564,7 +565,7 @@ export default {
   mixins: [tableColsMixin, timeZoneMixin],
   data() {
     return {
-      fullscreenLoading: false,
+      loading: false,
       airlineList: [],
       selectedAirline: '',
       queryData: {},
@@ -882,6 +883,9 @@ export default {
         if (path.includes('flightView')) {
           const { flightNO, flightDate, departureAirport, landingAirport, fastFilter } = query
           if (flightNO && flightDate) {
+            if (Object.keys(this.queryData).some(key => this.queryData[key] !== query[key])) {
+              this.resetSettings()
+            }
             const {
               flightNO: oldFlightNO,
               flightDate: oldFlightDate,
@@ -914,16 +918,16 @@ export default {
       deep: true,
       immediate: true
     },
-    fullscreenLoading(val) {
+    loading(val) {
       if (val) {
-        this.loading = this.$loading({
+        this.fullscreenLoading = this.$loading({
           lock: true,
           text: '加载中',
           spinner: 'el-icon-loading',
           background: 'rgba(0, 0, 0, 0.7)'
         })
       } else {
-        this.loading?.close()
+        this.fullscreenLoading?.close()
       }
     },
     selectedAirline(val) {
@@ -946,6 +950,9 @@ export default {
       }
     })
   },
+  updated() {
+    this.resizeHandler()
+  },
   activated() {
     this.getWarningData()
     this.resizeHandler()
@@ -955,11 +962,11 @@ export default {
   deactivated() {
     this.dragHeight = 0
     this.dragY = 0
-    this.loading?.close()
+    this.fullscreenLoading?.close()
     window.removeEventListener('resize', this.debouncedResizeHandler)
   },
   beforeDestroy() {
-    this.loading?.close()
+    this.fullscreenLoading?.close()
   },
   methods: {
     resizeHandler() {
@@ -968,6 +975,15 @@ export default {
       // this.$refs['transferOutBaggageTable']?.doLayout()
       this.$refs['flightBaggageTable']?.doLayout()
     },
+    resetSettings() {
+      this.initTableCols()
+      Object.keys(this.filterValues).forEach(key => {
+        this.filterValues[key] = []
+      })
+      Object.keys(this.tableDataSortRules).forEach(key => {
+        this.tableDataSortRules[key] = ''
+      })
+    },
     setfastFilterValues() {
       const inFlightNOList = new Set()
       const transferFlightNOList = new Set()
@@ -1277,7 +1293,7 @@ export default {
       }
     },
     async queryAll(dataContent) {
-      this.fullscreenLoading = true
+      this.loading = true
       this.flightInfo = {}
       try {
         const [flightInfo, containerTableDataData, flightBaggageTableData] = await Promise.all([
@@ -1303,7 +1319,7 @@ export default {
       } catch (error) {
         this.$message.error('失败')
       }
-      this.fullscreenLoading = false
+      this.loading = false
     },
     async getWarningData() {
       try {

+ 1 - 1
src/views/baggageManagement/components/transferArrival/index.vue

@@ -126,7 +126,7 @@
       <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 ref="columnSetTree" :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
               label: 'label',
               children: 'children',
             }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />

+ 1 - 1
src/views/baggageManagement/components/transferDeparture/index.vue

@@ -126,7 +126,7 @@
       <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 ref="columnSetTree" :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
               label: 'label',
               children: 'children',
             }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />

+ 2 - 1
src/views/baggageManagement/mixins/tableCols.js

@@ -50,6 +50,7 @@ export default {
       setTableCols(this.tableCols)
       this.tableColsCopy = this._.cloneDeep(this.tableCols)
       this.checkedKeysTemp = [...this.checkedKeys]
+      this.$refs['columnSetTree']?.setCheckedKeys(this.checkedKeysTemp)
     },
     // 列设置-确定
     handleCheck(data, checked) {
@@ -71,7 +72,7 @@ export default {
           this[tableDataName] = tableDataTemp
         }
         this.loading = false
-      }, 1000)
+      }, 500)
     },
     colsFilter(cols) {
       const temp = cols.filter(col => {

+ 3 - 0
src/views/baggageManagement/mixins/terminal.js

@@ -28,6 +28,9 @@ export default {
   created() {
     this.setFilterAndSort(this.tableCols)
   },
+  updated() {
+    this.resizeHandler()
+  },
   activated() {
     this.resizeHandler()
     this.debouncedResizeHandler = this._.debounce(this.resizeHandler, this.debounceTime)