Commit 94126e66 by liujinbo

航班保障-列表/筛选项-页面

parent f67ddbd9
import XPHK from '/static/mocp/image/air-company/xphk.png'
import HNHK from '/static/mocp/image/air-company/hnhk.png'
import SDHK from '/static/mocp/image/air-company/sdhk.png'
import TJHK from '/static/mocp/image/air-company/tjhk.png'
import GLHK from '/static/mocp/image/air-company/glhk.png'
import XBHK from '/static/mocp/image/air-company/xbhk.png'
import JPHK from '/static/mocp/image/air-company/jphk.png'
import WLMQHK from '/static/mocp/image/air-company/wlmq.png'
import FZHK from '/static/mocp/image/air-company/fzhk.png'
import CAHK from '/static/mocp/image/air-company/cahk.png'
export const airlinePicMapping = {
'8L': XPHK,
'LKA': XPHK,
'HNA': HNHK,
'HU': HNHK,
'DRJ': SDHK,
'GCE': TJHK,
'GS': TJHK,
'GCH': GLHK,
'GT': GLHK,
'WAC': CAHK,
'GXA': TJHK, // 北部湾航空
'YZJ': JPHK,
'CTJ': TJHK, // 天津货运航空
'CGH': GLHK,
'CGN': CAHK, // 长安航空
'CUH': WLMQHK,
'FZA': FZHK,
'GCA': HNHK
}
<template>
<!-- 航班号+航空图标 -->
<image
:style="{visibility: airlinePic ? 'visible' : 'hidden'}"
class="flight-no-image"
:src="airlinePic || HnaPic"
mode="widthFix" />
<text>{{ ps.flightNo }}</text>
</template>
<script setup>
import { computed } from 'vue'
import HnaPic from '../../../static/mocp/image/monitor/hna.png'
import { airlinePicMapping } from './components/airlinePicMapping'
const ps = defineProps(['flightNo', 'airline', 'width'])
const airlinePic = computed(function() {
return airlinePicMapping[ps.airline]
})
</script>
<style lang="scss" scoped>
.flight-no-image {
width: 22rpx;
height: 22rpx;
margin-right: 6rpx;
}
</style>
......@@ -16,6 +16,7 @@
@query="queryList"
@scroll="scroll"
:paging-style="getPagingStyle"
:default-page-size="pageSize"
>
<template #empty v-if="refresherEnabled || loadingMoreEnabled">
<global-empty></global-empty>
......@@ -207,6 +208,15 @@ const ps = defineProps({
localPaging: {
type: Boolean,
default: false
},
localPagingCB: {
type: Function,
default: () => {
}
},
pageSize: {
type: Number,
default: 10
}
})
// z-page样式
......@@ -256,11 +266,7 @@ const queryList = (pageIndex, pageSize) => {
paging.value?.complete(res.list || res.data?.list || res?.data || [])
} else {
const data = res.data || []
const currentTime = Date.now()
data.sort((a, s) => {
return Math.abs(currentTime - a.stdChn) - Math.abs(currentTime - s.stdChn)
})
paging.value?.setLocalPaging(data)
paging.value?.setLocalPaging(ps.localPagingCB(data))
}
} else {
uni.$mocpMessage.error(res.message)
......
import { defineStore } from 'pinia'
import useUserStore from 'mocp/store/user'
import { decideTimeRange } from 'mocp/utils/getFlightList'
import { decideTimeRange, listTab, listScreen } from 'mocp/utils/getFlightList'
const userStore = useUserStore()
const listTab = [
{ label: '航班号', selected: true },
{ label: '机号', selected: true },
{ label: '机型', selected: true },
{ label: '机位', selected: true },
{ label: '出发地', selected: true },
{ label: '预/实', selected: true },
{ label: '计划', selected: false },
{ label: '特殊任务', selected: true },
{ label: '状态', selected: false }
]
const listScreen = [
{ name: '进港', value: '进港' },
{ name: '出港', value: '出港' },
{ name: '无航班', value: '无航班' }
]
const time = decideTimeRange(new Date().getTime())
console.log(time)
const useFlightSupportStore = defineStore('informationDisclosure', {
state: () => {
return {
searchData: {
acOwn: '',//航司
isOut: 0,//0-进港 1-出港 2-无航班
startT: time.startT,
stopT: time.stopT,
isInbound: 1,
ac: '',//机号
flightNo: '',//航班号
acOwns2: '',
acTerminals1: '',
acType: '',//机型
acTypes2: '',
acs1: '',
isInbound: 1,
isOut: 0,
startT: 1721250000000,
stopT: 1721336400000,
terminal: userStore.userInfo.terminal//,'WUH',//航站
//flightNo: '',//航班号
//ac: '',//机号
/*startT: '1721163600000',
stopT: '1721249999000',
acTerminals2: userStore.userInfo.terminal,//'WUH',
sortType: 'stdChn',
apiPwd: 'Ifar$2_0160_525_Mocp',
isAsc: '1',
pageIndex: 1,
pageSize: 50,
requestFrom: 6,
realUserId: 10*/
acs1: ''
},
screenData: {
terminal: userStore.userInfo.terminal || 'WUH',//航站
acType: '',//机型
acOwn: ''//航司
},
details: undefined,
listTab,
......@@ -57,31 +33,52 @@ const useFlightSupportStore = defineStore('informationDisclosure', {
listScreenCurrent: 1
}
},
getters: {},
getters: {
getSearchData(satae) {
return {...satae.searchData, ...satae.screenData}
},
getSelectedList(satae) {
return satae.listTab.filter(item => item.selected)
}
},
actions: {
getSelectedList() {
return listTab.filter(item => item.selected)
resetScreenForm() {
this.screenData = {
terminal: userStore.userInfo.terminal || 'WUH',
acType: '',
acOwn: ''
}
},
resetForm() {
this.searchData = {
startT: '',
stopT: '',
acTerminals2: '',
sortType: '',
apiPwd: '',
isAsc: '',
pageIndex: '',
pageSize: '',
requestFrom: '',
realUserId: ''
setStateScreen(state) {
this.screenData = {
terminal: state.terminal || userStore.userInfo.terminal || 'WUH',
acType: state.acType,
acOwn: state.acOwn
}
},
setState(...args) {
this.$patch({ [args[0]]: args[1] })
// 设置列表tab筛选数据
setListTabSelected(args) {
this.listTab = listTab.map(item => {
const that = args.find(args => args == item.label)
return {
...item,
selected: !!that
}
})
}
},
// 配置持久化
persist: false
persist: {
// 调整为兼容多端的API
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
}
}
}
})
export default useFlightSupportStore
......@@ -8,3 +8,27 @@ export function decideTimeRange(inputNum: number) {
stopT: d.getTime() + dayForMilliseconds
}
}
export const listTab = [
{label: '航班号', key: 'flightNo', flex: 3, selected: true},
{label: '机号', key: 'ac', flex: 2, selected: true},
{label: '机型', key: 'acTypeGc', flex: 2, selected: true},
{label: '机位', key: 'parkPlace', flex: 2, selected: false},
{label: '出发地', key: 'depStn', flex: 2, selected: true},//place
{label: '预/实', key: 'time', flex: 2, selected: true},//etaChn ataChn : etdChn atdChn time
{label: '计划', key: 'staChn', flex: 2, selected: true},//staChn schTime
{label: '特殊任务', key: 'isSpecialTask', flex: 2, selected: false},
{label: '状态', key: 'status', flex: 2, selected: true}
]
export const listScreen = [
{name: '进港', value: 0},
{name: '出港', value: 1},
{name: '无航班', value: 2}
]
export const fightListTime = ['etdChn', 'atdChn', 'etaChn', 'ataChn']
export const fightListPlanTime = ['staChn', 'schTime']
export const finishedStatus = ['ARR', 'NDR', 'ATA']
export const depStatus = ['DEP']
......@@ -190,12 +190,18 @@
}
},
{
"path": "pages/modules/mocp/panel/flight-support/components/screen",
"path": "pages/modules/mocp/panel/flight-support/components/Screen",
"style": {
"navigationBarTitleText": "筛选"
}
},
{
"path": "pages/modules/mocp/panel/flight-support/components/Custom",
"style": {
"navigationBarTitleText": "自定义"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/list",
"style": {
"navigationBarTitleText": "技术评估"
......
<template>
<global-page
title="自定义"
ref="paging"
>
<template #default>
<view class="custom-title">推荐显示7个选项</view>
<up-checkbox-group
v-model="checkboxValue"
placement="column"
class="custom-checkbox"
>
<up-checkbox
class="checkbox-item"
v-for="(item, index) in listTab"
:key="index"
:label="item.label"
:name="item.label"
shape="circle"
size="14"
labelSize="14"
>
</up-checkbox>
</up-checkbox-group>
</template>
<template v-slot:bottom>
<global-button @tap="saveCustom" class="custom-btn" type="primary" size="large" :radius="5">
保存
</global-button>
</template>
</global-page>
</template>
<script setup>
import { ref, watch, onMounted } from 'vue'
import useFlightSupportStore from 'mocp/store/flight-support'
import { storeToRefs } from 'pinia'
import { cloneDeep } from 'lodash'
const flightSupportStore = useFlightSupportStore()
const { listTab } = storeToRefs(flightSupportStore)
const checkboxValue = ref([])
watch(
checkboxValue,
(value, oldValue) => {
if (value.length > 7) {
checkboxValue.value = value.filter(item => item != oldValue[oldValue.length - 1])
}
flightSupportStore.setListTabSelected(value)
}
)
onMounted(() => {
checkboxValue.value = listTab.value.filter(item => item.selected).map(item => item.label)
})
const saveCustom = () => {
uni.$mocpJump.navigateBack()
}
</script>
<style lang="scss" scoped>
@import '../constants/flightSupportList';
</style>
<template>
<view class="flex">
<image
v-if="displayPic"
class="renderTime"
:src="EstimatedPic" />
<text>{{ displayedText }}</text>
</view>
</template>
<script setup>
import { computed } from 'vue'
import EstimatedPic from '/static/mocp/image/monitor/estimate.png'
import Day from 'mocp/utils/dayjs'
import useFlightSupportStore from 'mocp/store/flight-support'
import { storeToRefs } from 'pinia'
const flightSupportStore = useFlightSupportStore()
const {searchData} = storeToRefs(flightSupportStore)
const ps = defineProps(['item'])
const {etdChn, atdChn, etaChn, ataChn} = ps.item
const displayPic = computed(function() {
return (searchData.value.isOut === 0 || !atdChn) && (searchData.value.isOut === 1 || !ataChn)
})
const displayedText = computed(function() {
// console.log(Day(etaChn).format('HH:mm'), Day(ataChn).format('HH:mm'), 'in')
// console.log(Day(etdChn).format('HH:mm'), Day(atdChn).format('HH:mm'), 'out')
if (searchData.value.isOut === 0) {
return ataChn ? Day(ataChn).format('HH:mm') : Day(etaChn).format('HH:mm')
} else {
return atdChn ? Day(atdChn).format('HH:mm') : Day(etdChn).format('HH:mm')
}
})
</script>
<style lang="scss" scoped>
.flex {
display: flex;
align-items: center;
}
.renderTime {
width: 22rpx;
height: 22rpx;
margin-right: 4rpx;
}
</style>
\ No newline at end of file
<template>
<global-page title="筛选">
<view class="search-form">
<view class="screen-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="状态" prop="state" :borderBottom="true">
<global-picker v-model="formData.state" pickAlign="right" clearable
dictkey="md_state"></global-picker>
</up-form-item>
<up-form-item label="航站" prop="terminal" :borderBottom="true">
<global-picker
pickAlign="right"
......@@ -13,50 +9,25 @@
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
/>
</up-form-item>
<up-form-item label="是否有效" prop="valid" :borderBottom="true">
<up-form-item label="机型" prop="acType" :borderBottom="true">
<global-picker
v-model="formData.valid"
v-model="formData.acType"
pickAlign="right"
:options="[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
></global-picker>
:options="baseStore.getTypeSelect"
clearable filter />
</up-form-item>
<up-form-item label="决策结果" prop="decisionState" :borderBottom="true">
<global-picker
v-model="formData.decisionState"
pickAlign="right"
:options="[
{ label: '同意', value: '1' },
{ label: '不同意', value: '0' }
]"
clearable
></global-picker>
</up-form-item>
<up-form-item label="航司" prop="aviation" :borderBottom="true">
<up-form-item label="航司" prop="acOwn" :borderBottom="true">
<global-picker
v-model="formData.aviation"
v-model="formData.acOwn"
pickAlign="right"
:options="baseStore.getAirlineSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item label="机号" prop="machineNumber" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.machineNumber" :options="deviceNumList" clearable
filter></global-picker>
</up-form-item>
<up-form-item label="日期" :borderBottom="true">
<global-calendar
pickAlign="right"
v-model:startTime="formData.startDateTime"
v-model:endTime="formData.endDateTime"
clearable
></global-calendar>
/>
</up-form-item>
</up-form>
</view>
......@@ -76,34 +47,40 @@
</template>
<script setup>
import useBaseStore from 'mocp/store/base'
import useMoveDecisionStore from 'mocp/store/move-decision'
import { ref } from 'vue'
import { storeToRefs } from 'pinia'
import { cloneDeep } from 'lodash'
import { ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import useMoveDecisionStore from 'mocp/store/move-decision'
import useFlightSupportStore from 'mocp/store/flight-support'
import { onUnload } from '@dcloudio/uni-app'
//获取下拉框选项
const baseStore = useBaseStore()
const {
selectList: { deviceNumList }
} = useBaseStore()
const moveDecisionStore = useMoveDecisionStore()
const flightSupportStore = useFlightSupportStore()
//获取查询表单数据
const { searchData } = storeToRefs(moveDecisionStore)
const formData = ref(cloneDeep(searchData.value))
const {screenData} = storeToRefs(flightSupportStore)
const formData = ref(cloneDeep(screenData.value))
const handleReset = () => {
moveDecisionStore.resetForm()
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
flightSupportStore.resetScreenForm()
uni.$mocpJump.redirectTo('/panel/flight-support/list')
uni.$emit('screenReload')
}
const handleConfirm = () => {
moveDecisionStore.setState('searchData', formData.value)
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
flightSupportStore.setStateScreen(formData.value)
uni.$mocpJump.redirectTo('/panel/flight-support/list')
uni.$emit('screenReload')
}
onUnload(() => {
uni.$off('screenReload')
})
</script>
<style lang="scss" scoped>
.search-form {
.screen-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
......
<template>
<view
class="tableRow flex"
:class="msg.globalMsg.isFinished ? 'mocp-bg-fill-4' : ''">
<view
v-for="(item, index) of msg.filterMsg"
:key="index"
class="rowItem u-line-1 text-center"
:style="{flex: item.flex}"
>
<global-flight-no
v-if="item.key === 'flightNo'"
:flightNo="item.data"
:airline="item.airlineCode"
:flex="item.flex"
/>
<RenderTime
v-else-if="item.key === 'time'"
:item="item"
/>
<view
v-else-if="item.key == 'status'"
:class="item.color">
{{ item.data }}
</view>
<text v-else>{{ item.data }}</text>
</view>
</view>
</template>
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import Day from 'mocp/utils/dayjs'
import useFlightSupportStore from 'mocp/store/flight-support'
import { decideReleaseStatus } from '../utils/currentInBoundMode'
import GlobalFlightNo from 'mocp/components/global-flight-no/global-flight-no.vue'
import RenderTime from '../components/RenderTime.vue'
import { fightListPlanTime } from 'mocp/utils/getFlightList'
const flightSupportStore = useFlightSupportStore()
const {listTab} = storeToRefs(flightSupportStore)
const ps = defineProps({
item: {
type: Object,
default: () => ({})
}
})
// 组装列表数据
const msg = computed(() => {
const filterListTab = listTab.value.filter(item => item.selected)
const filterMsg = filterListTab.map(item => {
const defaultObj = {
key: item.key,
flex: item.flex,
data: ps.item[item.key]
}
// 航班号
if (item.key == 'flightNo') {
return {
...defaultObj,
airlineCode: ps.item['airlineCode']
}
}
// 预/实
if (item.key == 'time') {
return {
...defaultObj
}
}
// 计划
if (fightListPlanTime.includes(item.key)) {
return {
...defaultObj,
data: Day(ps.item[item.key]).format('HH:mm')
}
}
// 状态
if (item.key == 'status') {
return {
...defaultObj,
...decideReleaseStatus(ps.item)
}
}
return {
...defaultObj
}
})
return {
globalMsg: ps.item,
filterMsg
}
})
</script>
<style lang="scss" scoped>
@import '../constants/flightSupportList';
</style>
.flex {
display: flex;
align-items: center; }
.text-center {
text-align: center; }
.color-blue {
color: blue; }
.color-red {
color: red; }
.flex-between {
justify-content: space-between; }
.inforDisclosureItem {
border-radius: 12rpx;
border-bottom: 1px solid #e7e7e7;
background-color: #fff; }
.inforDisclosureItem .tableRow {
width: 100%;
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
padding: 20rpx 0; }
.inforDisclosureItem .tableRow .rowItem {
flex: 1; }
.inforDisclosureItem .tableRow .rowItem.flex-1 {
flex: 1; }
.inforDisclosureItem .tableRow .rowItem.flex-2 {
flex: 2; }
.inforDisclosureItem .tableRow .rowItem.flex-3 {
flex: 3; }
.listTopTab {
padding: 20rpx 0.75rem;
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
background-color: #fff;
border-bottom: 1px solid #e7e7e7; }
.listTopTab .topTabItem {
flex: 1; }
.listScreenClass {
padding: 0.5rem 0.75rem; }
.listScreenClass .listScreenRT {
width: 262rpx; }
.listScreenClass .listScreenRT ::v-deep .u-subsection__item {
border: none !important; }
.listScreenClass .listScreenRT ::v-deep .u-subsection__bar {
border-radius: 50rpx; }
.custom-title {
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
padding: 0 24rpx; }
.custom-checkbox {
padding: 24rpx 0; }
.custom-checkbox .checkbox-item {
background: #fff;
padding: 20rpx 24rpx;
margin-bottom: 4rpx; }
.custom-btn {
margin: 24rpx 32rpx; }
/*# sourceMappingURL=flightSupportList.css.map */
{
"version": 3,
"mappings": "AACA,KAAM;EACF,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,MAAM;;AAGvB,YAAa;EACT,UAAU,EAAE,MAAM;;AAGtB,WAAY;EACR,KAAK,EAAE,IAAI;;AAGf,UAAW;EACP,KAAK,EAAE,GAAG;;AAGd,aAAc;EACV,eAAe,EAAE,aAAa;;AAGlC,oBAAqB;EACjB,aAAa,EAAE,KAAK;EACpB,aAAa,EAAE,iBAAgC;EAC/C,gBAAgB,EAAE,IAAI;EAEtB,8BAAU;IACN,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,OAAO;IAEhB,uCAAS;MACL,IAAI,EAAE,CAAC;MAEP,8CAAS;QACL,IAAI,EAAE,CAAC;MAGX,8CAAS;QACL,IAAI,EAAE,CAAC;MAGX,8CAAS;QACL,IAAI,EAAE,CAAC;;AAMvB,WAAY;EACR,OAAO,EAAE,aAAa;EACtB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAkB;EACzB,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,iBAAgC;EAE/C,uBAAY;IACR,IAAI,EAAE,CAAC;;AAIf,gBAAiB;EACb,OAAO,EAAE,cAAc;EAEvB,8BAAc;IACV,KAAK,EAAE,MAAM;IAEb,2DAA6B;MACzB,MAAM,EAAE,eAAe;IAG3B,0DAA4B;MACxB,aAAa,EAAE,KAAK;;AAMhC,aAAc;EACV,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAkB;EACzB,OAAO,EAAE,OAAO;;AAGpB,gBAAiB;EACb,OAAO,EAAE,OAAO;EAEhB,+BAAe;IACX,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,WAAW;IACpB,aAAa,EAAE,IAAI;;AAI3B,WAAY;EACR,MAAM,EAAE,WAAW",
"sources": ["flightSupportList.scss"],
"names": [],
"file": "flightSupportList.css"
}
@charset "utf-8";
.flex {
display: flex;
align-items: center;
}
.text-center {
text-align: center;
}
.color-blue {
color: blue;
}
.color-red {
color: red;
}
.flex-between {
justify-content: space-between;
}
.inforDisclosureItem {
padding: 24rpx;
margin-bottom: 16rpx;
border-radius: 12rpx;
border-bottom: 1px solid rgba(231, 231, 231, 1);
background-color: #fff;
.top {
justify-content: space-between;
.tableRow {
width: 100%;
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
padding: 20rpx 0;
.rowItem {
flex: 1;
&.flex-1 {
flex: 1;
}
&.flex-2 {
flex: 2;
}
&.flex-3 {
flex: 3;
}
}
}
}
.listTopTab {
padding: 0 0.75rem;
padding: 20rpx 0.75rem;
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
background-color: #fff;
border-bottom: 1px solid rgba(231, 231, 231, 1);
.topTabItem {
flex: 1;
......@@ -36,12 +78,22 @@
}
.flex {
display: flex;
align-items: center;
.custom-title {
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
padding: 0 24rpx;
}
.flex-between {
justify-content: space-between;
.custom-checkbox {
padding: 24rpx 0;
.checkbox-item {
background: #fff;
padding: 20rpx 24rpx;
margin-bottom: 4rpx;
}
}
.custom-btn {
margin: 24rpx 32rpx;
}
\ No newline at end of file
<template>
<global-page
ref="paging"
title="航班保障"
isDataList
refresherEnabled
loadingMoreEnabled
auto
ref="paging"
:params="searchData"
:params="getSearchData"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="getFlyToAppletsApi"
:padding="24"
localPaging
:pageSize="20"
:localPagingCB="localPagingCB"
>
<template #="{ dataList }">
<view
v-for="(item, index) in dataList"
v-for="item in dataList"
:key="item.id"
class="inforDisclosureItem flex mocp-bg-fill-4">
<view class="top">
<view class="flex">{{ item.flightNo }}****{{ item.airlineCode }}</view>
</view>
class="inforDisclosureItem flex">
<TableTow :item="item" />
</view>
</template>
<template v-slot:top>
<view class="flex listTopTab">
<view v-for="item of getSelectedList" :key="item.label" class="topTabItem">
<view class="flex listTopTab text-center">
<view
v-for="item of getSelectedList"
:key="item.label"
class="topTabItem"
:style="{flex: item.flex}">
{{ item.label }}
</view>
</view>
</template>
<template v-slot:bottom>
<view class="flex flex-between listScreenClass">
<global-icon icon="saixuan-01" />
<global-icon @tap="toCustom" icon="saixuan-01" />
<up-subsection
class="listScreenRT"
:list="listScreen"
:current="1"
:current="getSearchData.isOut"
mode="subsection"
bgColor="#f00"
activeColor="#165DFF"
inactiveColor="#165DFF"
@change="subsectionChange"
/>
</view>
</template>
......@@ -56,17 +60,59 @@ import { ref } from 'vue'
import { getFlyToAppletsApi } from 'mocp/api/flight-support'
import useFlightSupportStore from 'mocp/store/flight-support'
import { storeToRefs } from 'pinia'
import TableTow from './components/TableRow.vue'
import { finishedStatus } from 'mocp/utils/getFlightList'
import { onUnload } from '@dcloudio/uni-app'
const paging = ref(null)
const flightSupportStore = useFlightSupportStore()
const getSelectedList = flightSupportStore.getSelectedList()
console.log(flightSupportStore.getSelectedList())
const { searchData, listTab, listScreen, listScreenCurrent } = storeToRefs(flightSupportStore)
const {searchData, getSearchData, listScreen, getSelectedList} = storeToRefs(flightSupportStore)
const handleRightClick = () => {
console.log(listTab, listScreen, listScreenCurrent)
// uni.$mocpJump.navigateTo('/panel/flight-support/components/screen')
uni.$mocpJump.navigateTo('/panel/flight-support/components/Screen')
}
const localPagingCB = (data) => {
const currentTime = Date.now()
const listMsg = data.reduce((q, w) => {
if (finishedStatus.includes(w.status)) {
w.isFinished = true
q[2].push(w)
} else {
if (q[0].status === 'DEP') {
w.isDepartured = true
q[1].push(w)
} else {
q[0].push(w)
}
}
return q
}, [[], [], []])
.map((q, w) => {
if (w === 0) {
q.sort((a, s) => {
return Math.abs(currentTime - a.stdChn) - Math.abs(currentTime - s.stdChn)
})
}
return q
})
.flat()
// console.log('**listMsg**', listMsg)
return listMsg
}
const toCustom = () => {
uni.$mocpJump.navigateTo('/panel/flight-support/components/Custom')
}
const subsectionChange = (e) => {
searchData.value.isOut = e
paging.value.reload()
}
uni.$on('screenReload', () => {
paging.value?.reload()
})
</script>
......
import { ref } from 'vue'
export const allInBoundMode = {
In:1,
Out:2
}
export const currentInBoundModeForFlightTablePage = ref(allInBoundMode.In)
export const currentInBoundModeForFlightSinglePage = ref(allInBoundMode.In)
export function decideReleaseStatus(v) {
let allReleases = v.releases
let manualReleases = allReleases.filter(a => a.isUserAdd)
if (currentInBoundModeForFlightTablePage.value === allInBoundMode.Out) {
manualReleases = manualReleases.filter(a => a.isOut)
allReleases = allReleases.filter(a => a.isOut)
} else {
manualReleases = manualReleases.filter(a => !a.isOut)
allReleases = allReleases.filter(a => !a.isOut)
}
if (manualReleases.length) {
if (manualReleases.every(a => a.releaseStatus > 0)) {
return {
data:'已放行',
color:'color-blue'
}
}
return {
data:'未放行',
color:'color-red'
}
}
if (allReleases.every(a => a.releaseStatus > 0)) {
return {
data:'已放行',
color:'color-blue'
}
}
return {
data:'未放行',
color:'color-red'
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment