Commit 506ea510 by liujinbo

航班保障-页面

parent 0f17c728
import { http } from 'mocp/utils/http'
export const flightSupportGetListApi = (data, config) => {
return http({
method: 'POST',
url: '/flighting/getFList',
data,
config
})
}
export const getAircraftTerminalsApi = (data, config) => {
return http({
method: 'POST',
url: '/resource/flight/getAircraftTerminals',
data,
config
})
}
...@@ -26,17 +26,20 @@ ...@@ -26,17 +26,20 @@
<!-- 自定义导航栏 --> <!-- 自定义导航栏 -->
<global-navbar :title="title" v-if="showNavbar"> <global-navbar :title="title" v-if="showNavbar">
<template #left v-if="pages.length > 1 && showNavLeft"> <template #left v-if="pages.length > 1 && showNavLeft">
<up-icon v-if="navLeftType == 'icon'" :name="navLeftIcon" size="16" @tap="handleLeftClick"></up-icon> <up-icon v-if="navLeftType == 'icon'" :name="navLeftIcon" size="16"
@tap="handleLeftClick"></up-icon>
<view v-if="navLeftType == 'text'" class="cancel" @tap="handleLeftClick">{{ navLeftText }}</view> <view v-if="navLeftType == 'text'" class="cancel" @tap="handleLeftClick">{{ navLeftText }}</view>
</template> </template>
<template #right v-if="showNavRight"> <template #right v-if="showNavRight">
<global-button type="text" size="small" v-if="navRightType == 'text'" @tap="handleRightClick"> <global-button type="text" size="small" v-if="navRightType == 'text'" @tap="handleRightClick">
{{ navRightText }} {{ navRightText }}
</global-button> </global-button>
<global-button type="primary" size="small" v-if="navRightType == 'button'" style="padding: 0 32rpx" @tap="handleRightClick"> <global-button type="primary" size="small" v-if="navRightType == 'button'" style="padding: 0 32rpx"
@tap="handleRightClick">
{{ navRightText }} {{ navRightText }}
</global-button> </global-button>
<global-icon v-if="navRightType == 'icon'" :icon="navRightIcon" @tap="handleRightClick"></global-icon> <global-icon v-if="navRightType == 'icon'" :icon="navRightIcon"
@tap="handleRightClick"></global-icon>
</template> </template>
</global-navbar> </global-navbar>
<slot name="top"></slot> <slot name="top"></slot>
...@@ -244,7 +247,7 @@ const queryList = (pageIndex, pageSize) => { ...@@ -244,7 +247,7 @@ const queryList = (pageIndex, pageSize) => {
if (Object.prototype.toString.call(ps.api) == '[object Function]') { if (Object.prototype.toString.call(ps.api) == '[object Function]') {
ps.api(params, { loading: true }) ps.api(params, { loading: true })
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200 || res.list?.length) {
paging.value?.complete(res.list || res.data?.list || []) paging.value?.complete(res.list || res.data?.list || [])
} else { } else {
uni.$mocpMessage.error(res.message) uni.$mocpMessage.error(res.message)
...@@ -311,15 +314,19 @@ export default { ...@@ -311,15 +314,19 @@ export default {
// 表单内容 // 表单内容
:deep(.u-form-item__body) { :deep(.u-form-item__body) {
padding: 24rpx 0 !important; padding: 24rpx 0 !important;
.u-form-item__body__left__content__label { .u-form-item__body__left__content__label {
color: $mocp-text-5 !important; color: $mocp-text-5 !important;
font-size: 28rpx !important; font-size: 28rpx !important;
} }
.u-input__content__field-wrapper__field { .u-input__content__field-wrapper__field {
color: $mocp-text-4 !important; color: $mocp-text-4 !important;
} }
.u-textarea { .u-textarea {
margin-top: 8rpx; margin-top: 8rpx;
.u-textarea__field { .u-textarea__field {
font-size: 28rpx !important; font-size: 28rpx !important;
color: $mocp-text-4 !important; color: $mocp-text-4 !important;
...@@ -327,9 +334,11 @@ export default { ...@@ -327,9 +334,11 @@ export default {
} }
} }
} }
.cancel { .cancel {
font-size: 28rpx; font-size: 28rpx;
} }
.footer-btn { .footer-btn {
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
background-color: #fff; background-color: #fff;
......
import { defineStore } from 'pinia'
const useFlightSupportStore = defineStore('informationDisclosure', {
state: () => {
return {
searchData: {
startT: '1721163600000',
stopT: '1721249999000',
acTerminals2: 'WUH',
sortType: 'stdChn',
apiPwd: 'Ifar$2_0160_525_Mocp',
isAsc: '1',
pageIndex: 1,
pageSize: 50,
requestFrom: 6,
realUserId: 10
},
details: undefined,
screenData: {}
}
},
getters: {},
actions: {
resetForm() {
this.searchData = {
startT: '',
stopT: '',
acTerminals2: '',
sortType: '',
apiPwd: '',
isAsc: '',
pageIndex: '',
pageSize: '',
requestFrom: '',
realUserId: ''
}
},
setState(...args) {
this.$patch({ [args[0]]: args[1] })
}
},
// 配置持久化
persist: false
})
export default useFlightSupportStore
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref } from 'vue' import { ref } from 'vue'
const menuList = ref([ const menuList = ref([
{ id: 1, name: '信息通报', icon: 'xxtb', group: '技术支援', count: 12, url: '/panel/information-disclosure/list' }, { id: 1, name: '信息通报', icon: 'xxtb', group: '技术支援', count: 12, url: '/panel/information-disclosure/list' },
{ id: 2, name: '机队状态', icon: 'jdzt', group: '技术支援', count: 0 }, { id: 2, name: '机队状态', icon: 'jdzt', group: '技术支援', count: 0 },
...@@ -15,7 +16,7 @@ const menuList = ref([ ...@@ -15,7 +16,7 @@ const menuList = ref([
{ id: 12, name: '考核记录', icon: 'khjl', group: '运行品质', count: 0, url: '/panel/appraisal-record/list' }, { id: 12, name: '考核记录', icon: 'khjl', group: '运行品质', count: 0, url: '/panel/appraisal-record/list' },
{ id: 13, name: 'AOG任务', icon: 'AOG', group: '运行品质', count: 0 }, { id: 13, name: 'AOG任务', icon: 'AOG', group: '运行品质', count: 0 },
{ id: 14, name: 'MCO', icon: 'MCO', group: '运行品质', count: 0 }, { id: 14, name: 'MCO', icon: 'MCO', group: '运行品质', count: 0 },
{ id: 15, name: '航班保障', icon: 'hbbz', group: '运行品质', count: 0 } { id: 15, name: '航班保障', icon: 'hbbz', group: '运行品质', count: 0, url: '/panel/flight-support/list' }
]) ])
const useUserStore = defineStore('user', { const useUserStore = defineStore('user', {
state: () => { state: () => {
......
...@@ -52,7 +52,8 @@ ...@@ -52,7 +52,8 @@
"style": { "style": {
"navigationBarTitleText": "tab页面", "navigationBarTitleText": "tab页面",
"app-plus": { "app-plus": {
"bounce": "none" //关闭窗口回弹效果 "bounce": "none"
//关闭窗口回弹效果
} }
} }
}, },
...@@ -176,7 +177,6 @@ ...@@ -176,7 +177,6 @@
"navigationBarTitleText": "公司值班经理意见" "navigationBarTitleText": "公司值班经理意见"
} }
}, },
/*信息通报*/
{ {
"path": "pages/modules/mocp/panel/information-disclosure/list", "path": "pages/modules/mocp/panel/information-disclosure/list",
"style": { "style": {
...@@ -184,6 +184,18 @@ ...@@ -184,6 +184,18 @@
} }
}, },
{ {
"path": "pages/modules/mocp/panel/flight-support/list",
"style": {
"navigationBarTitleText": "航班保障"
}
},
{
"path": "pages/modules/mocp/panel/flight-support/components/screen",
"style": {
"navigationBarTitleText": "筛选"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/list", "path": "pages/modules/mocp/panel/technology-evaluation/list",
"style": { "style": {
"navigationBarTitleText": "技术评估" "navigationBarTitleText": "技术评估"
...@@ -256,15 +268,20 @@ ...@@ -256,15 +268,20 @@
}, },
"condition": { "condition": {
//模式配置,仅开发期间生效 //模式配置,仅开发期间生效
"current": 1, //当前激活的模式(list 的索引项) "current": 1,
//当前激活的模式(list 的索引项)
"list": [ "list": [
{ {
"name": "test", //模式名称 "name": "test",
"path": "pages/modules/mocp/tab/index" //启动页面,必选 //模式名称
"path": "pages/modules/mocp/tab/index"
//启动页面,必选
}, },
{ {
"name": "login", //模式名称 "name": "login",
"path": "pages/modules/mocp/login/index" //启动页面,必选 //模式名称
"path": "pages/modules/mocp/login/index"
//启动页面,必选
} }
] ]
} }
......
<template>
<global-page title="筛选">
<view class="search-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"
v-model="formData.terminal"
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item label="是否有效" prop="valid" :borderBottom="true">
<global-picker
v-model="formData.valid"
pickAlign="right"
:options="[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
></global-picker>
</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">
<global-picker
v-model="formData.aviation"
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>
<template #bottom>
<view class="footer-btn">
<up-row gutter="10">
<up-col span="6">
<global-button type="light" size="large" :radius="5" @tap="handleReset">重置</global-button>
</up-col>
<up-col span="6">
<global-button type="primary" size="large" :radius="5" @tap="handleConfirm">确定</global-button>
</up-col>
</up-row>
</view>
</template>
</global-page>
</template>
<script setup>
import useBaseStore from 'mocp/store/base'
import useMoveDecisionStore from 'mocp/store/move-decision'
import { storeToRefs } from 'pinia'
import { cloneDeep } from 'lodash'
import { ref } from 'vue'
//获取下拉框选项
const baseStore = useBaseStore()
const {
selectList: { deviceNumList }
} = useBaseStore()
const moveDecisionStore = useMoveDecisionStore()
//获取查询表单数据
const { searchData } = storeToRefs(moveDecisionStore)
const formData = ref(cloneDeep(searchData.value))
const handleReset = () => {
moveDecisionStore.resetForm()
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
}
const handleConfirm = () => {
moveDecisionStore.setState('searchData', formData.value)
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
}
</script>
<style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn {
padding: 24rpx 32rpx;
background-color: #fff;
}
</style>
...@@ -13,3 +13,4 @@ ...@@ -13,3 +13,4 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
<template>
<global-page
title="航班保障"
isDataList
refresherEnabled
loadingMoreEnabled
auto
ref="paging"
:params="searchData"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="flightSupportGetListApi"
:padding="24"
>
<template #="{ dataList }">
<view
v-for="(item, index) in dataList"
:key="item.id"
class="inforDisclosureItem flex mocp-bg-fill-4">
<view class="top">
<view class="flex">{{ item.airlineCode }}</view>
</view>
</view>
</template>
<template v-slot:top>123456</template>
<template v-slot:bottom>
<view></view>
</template>
</global-page>
</template>
<script setup>
import { ref } from 'vue'
import { flightSupportGetListApi } from 'mocp/api/flight-support'
import useFlightSupportStore from 'mocp/store/flight-support'
import { storeToRefs } from 'pinia'
const flightSupportStore = useFlightSupportStore()
const { searchData } = storeToRefs(flightSupportStore)
const handleRightClick = () => {
console.log('handleRightClick information-disclosure', flightSupportStore)
uni.$mocpJump.navigateTo('/panel/flight-support/components/screen')
}
</script>
<style scoped lang="scss">
@import './constants/flightSupportList';
</style>
\ No newline at end of file
@charset "utf-8";
.inforDisclosureItem {
padding: 24rpx;
margin-bottom: 16rpx;
border-radius: 12rpx;
.top {
justify-content: space-between;
}
}
.flex {
display: flex;
align-items: center;
}
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
auto auto
ref="paging" ref="paging"
:params="searchData" :params="searchData"
showNavRight
navRightType="icon" navRightType="icon"
navRightIcon="saixuan-01" navRightIcon="saixuan-01"
@handleRightClick="handleRightClick" @handleRightClick="handleRightClick"
...@@ -15,16 +14,21 @@ ...@@ -15,16 +14,21 @@
:padding="24" :padding="24"
> >
<template #="{ dataList }"> <template #="{ dataList }">
<view v-for="item in dataList" :key="item.id" class="inforDisclosureItem flex"> <view
v-for="(item, index) in dataList"
:key="item.id"
class="inforDisclosureItem flex mocp-bg-fill-4">
<view class="top"> <view class="top">
<view class="flex"></view> <view class="flex">{{ item.presenter }}</view>
</view> </view>
</view> </view>
</template> </template>
</global-page> </global-page>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'
//临时调用接口 //临时调用接口
import { getArrangeWorkListApi } from 'mocp/api/assign-work' import { getArrangeWorkListApi } from 'mocp/api/assign-work'
import useInformationDisclosureStore from 'mocp/store/information-disclosure' import useInformationDisclosureStore from 'mocp/store/information-disclosure'
...@@ -36,8 +40,10 @@ const { searchData } = storeToRefs(informationDisclosureStore) ...@@ -36,8 +40,10 @@ const { searchData } = storeToRefs(informationDisclosureStore)
const handleRightClick = () => { const handleRightClick = () => {
console.log('handleRightClick information-disclosure', informationDisclosureStore) console.log('handleRightClick information-disclosure', informationDisclosureStore)
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import 'mocpStatic/css/inforDisclosureList.scss'; @import './constants/inforDisclosureList';
</style> </style>
\ 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