|
@@ -36,11 +36,6 @@
|
|
|
:collapse-tags="item.multiple"
|
|
|
:clearable="item.clearable"
|
|
|
:disabled="item.disabled"
|
|
|
- @change="
|
|
|
- value => {
|
|
|
- item.changeHandler && call(item.changeHandler, value)
|
|
|
- }
|
|
|
- "
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="option in item.options"
|
|
@@ -70,11 +65,6 @@
|
|
|
:props="item.props"
|
|
|
:clearable="item.clearable"
|
|
|
:disabled="item.disabled"
|
|
|
- @change="
|
|
|
- value => {
|
|
|
- item.changeHandler && call(item.changeHandler, value)
|
|
|
- }
|
|
|
- "
|
|
|
/>
|
|
|
</template>
|
|
|
</el-form-item>
|
|
@@ -83,7 +73,8 @@
|
|
|
type="primary"
|
|
|
size="small"
|
|
|
@click="getData"
|
|
|
- >{{ buttonText }}</el-button>
|
|
|
+ >{{ buttonText }}</el-button
|
|
|
+ >
|
|
|
</el-form-item>
|
|
|
<el-form-item v-if="withExport">
|
|
|
<img
|
|
@@ -91,7 +82,7 @@
|
|
|
title="导出"
|
|
|
class="btn-icon-only"
|
|
|
@click="exportClickHandler"
|
|
|
- >
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
<el-form-item v-if="withSetting">
|
|
|
<img
|
|
@@ -99,7 +90,7 @@
|
|
|
title="节点设置"
|
|
|
class="btn-icon-only"
|
|
|
@click="settingClickHandler"
|
|
|
- >
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -107,6 +98,7 @@
|
|
|
|
|
|
<script>
|
|
|
import { Query } from '@/api/dataIntegration'
|
|
|
+import { mapGetters } from 'vuex'
|
|
|
export default {
|
|
|
name: 'StatisticsHeader',
|
|
|
props: {
|
|
@@ -183,37 +175,22 @@ export default {
|
|
|
}
|
|
|
],
|
|
|
changeHandler(value) {
|
|
|
- this.formData.inOrOut = ''
|
|
|
- // this.formData.interval = ''
|
|
|
- this.formData.area = ''
|
|
|
- this.formData.airline = ''
|
|
|
- this.formData.airport = ''
|
|
|
- this.formData.terminal = ''
|
|
|
this.setInOrOutOptions(value)
|
|
|
- const airlineItem = this.formItems.find(item => item.prop === 'airline')
|
|
|
- const areaItem = this.formItems.find(item => item.prop === 'area')
|
|
|
- const airportItem = this.formItems.find(item => item.prop === 'airport')
|
|
|
- const terminalItem = this.formItems.find(item => item.prop === 'terminal')
|
|
|
- airlineItem && (airlineItem.disabled = true)
|
|
|
- areaItem && (areaItem.disabled = true)
|
|
|
- airportItem && (airportItem.disabled = true)
|
|
|
- terminalItem && (terminalItem.disabled = true)
|
|
|
- switch (value) {
|
|
|
- case '航线':
|
|
|
- airlineItem && (airlineItem.disabled = false)
|
|
|
- break
|
|
|
- case '基地分公司':
|
|
|
- areaItem && (areaItem.disabled = false)
|
|
|
- break
|
|
|
- case '航站':
|
|
|
- airportItem && (airportItem.disabled = false)
|
|
|
- break
|
|
|
- case '航站楼':
|
|
|
- terminalItem && (terminalItem.disabled = false)
|
|
|
- break
|
|
|
- default:
|
|
|
- break
|
|
|
+ const rangeMap = {
|
|
|
+ 航线: 'airline',
|
|
|
+ 基地分公司: 'area',
|
|
|
+ 航站: 'airport',
|
|
|
+ 航站楼: 'terminal'
|
|
|
}
|
|
|
+ Object.entries(rangeMap).forEach(([k, v]) => {
|
|
|
+ const theItem = this.formItems.find(item => item.prop === v)
|
|
|
+ if (value === k) {
|
|
|
+ theItem && (theItem.disabled = false)
|
|
|
+ } else {
|
|
|
+ this.formData[v] = ''
|
|
|
+ theItem && (theItem.disabled = true)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
{
|
|
@@ -307,6 +284,12 @@ export default {
|
|
|
]
|
|
|
}
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(['savedFormDataMap']),
|
|
|
+ formDataObj() {
|
|
|
+ return JSON.parse(JSON.stringify(this.formData))
|
|
|
+ }
|
|
|
+ },
|
|
|
watch: {
|
|
|
items: {
|
|
|
handler(val) {
|
|
@@ -321,6 +304,16 @@ export default {
|
|
|
},
|
|
|
deep: true,
|
|
|
immediate: true
|
|
|
+ },
|
|
|
+ formDataObj: {
|
|
|
+ handler(val, oldVal) {
|
|
|
+ this.formItems.forEach(item => {
|
|
|
+ if (item.changeHandler && String(val[item.prop]) !== String(oldVal[item.prop])) {
|
|
|
+ item.changeHandler.call(this, val[item.prop])
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ deep: true
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -335,19 +328,19 @@ export default {
|
|
|
this.formItems.push(item)
|
|
|
}
|
|
|
})
|
|
|
+ const savedFormData = this.savedFormDataMap[this.$route.name]
|
|
|
this.formItems.forEach(item => {
|
|
|
if (item.queryId && item.setKey) {
|
|
|
this.getOptions(item.queryId, item.setKey, item.prop)
|
|
|
}
|
|
|
- if (item.defaultOption) {
|
|
|
+ if (savedFormData?.[item.prop]) {
|
|
|
+ this.formData[item.prop] = savedFormData[item.prop]
|
|
|
+ } else if (item.defaultOption) {
|
|
|
this.formData[item.prop] = item.defaultOption
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
methods: {
|
|
|
- call(func, ...args) {
|
|
|
- func.call(this, ...args)
|
|
|
- },
|
|
|
getData() {
|
|
|
try {
|
|
|
this.formItems.forEach(item => {
|
|
@@ -370,6 +363,9 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
this.$emit('getFormData', this.formData)
|
|
|
+ this.$store.dispatch('savedSettings/saveFormData', {
|
|
|
+ formData: this.formData
|
|
|
+ })
|
|
|
},
|
|
|
exportClickHandler() {
|
|
|
this.$emit('export')
|
|
@@ -382,37 +378,43 @@ export default {
|
|
|
switch (range) {
|
|
|
case '全部':
|
|
|
case '航线':
|
|
|
- theInOrOutItem.options = [
|
|
|
- {
|
|
|
- label: '全部',
|
|
|
- value: '全部'
|
|
|
- }
|
|
|
- ]
|
|
|
+ if (theInOrOutItem) {
|
|
|
+ theInOrOutItem.options = [
|
|
|
+ {
|
|
|
+ label: '全部',
|
|
|
+ value: '全部'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ theInOrOutItem.disabled = true
|
|
|
+ }
|
|
|
this.formData.inOrOut = '全部'
|
|
|
- this.formItems[1].disabled = true
|
|
|
break
|
|
|
case '基地分公司':
|
|
|
case '航站':
|
|
|
case '航站楼':
|
|
|
- theInOrOutItem.options = [
|
|
|
- {
|
|
|
- value: '全部',
|
|
|
- label: '全部'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '进港',
|
|
|
- label: '进港'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '离港',
|
|
|
- label: '离港'
|
|
|
- }
|
|
|
- ]
|
|
|
- this.formItems[1].disabled = false
|
|
|
+ if (theInOrOutItem) {
|
|
|
+ theInOrOutItem.options = [
|
|
|
+ {
|
|
|
+ value: '全部',
|
|
|
+ label: '全部'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '进港',
|
|
|
+ label: '进港'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '离港',
|
|
|
+ label: '离港'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ theInOrOutItem.disabled = false
|
|
|
+ }
|
|
|
break
|
|
|
default:
|
|
|
- theInOrOutItem.options = []
|
|
|
- this.formItems[1].disabled = false
|
|
|
+ if (theInOrOutItem) {
|
|
|
+ theInOrOutItem.options = []
|
|
|
+ theInOrOutItem.disabled = false
|
|
|
+ }
|
|
|
break
|
|
|
}
|
|
|
},
|
|
@@ -440,7 +442,10 @@ export default {
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
-<style lang="scss" scoped>
|
|
|
+<style
|
|
|
+ lang="scss"
|
|
|
+ scoped
|
|
|
+>
|
|
|
.flight-statistics-header {
|
|
|
padding-top: 24px;
|
|
|
min-height: 80px;
|