Commit 5947aaa7 by pangchong

feat: AOG开发

parent 9f2a4fd3
import { http } from 'mocp/utils/http'
export const getWorkTaskListApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/getWorkTaskList',
data,
config
})
}
export const WorkTaskIsSuccessApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/WorkTaskIsSuccess',
data,
config
})
}
// 建议以文件名首字母作为前缀aog_
export const aog_state = [
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '2' }
]
import { defineStore } from 'pinia'
const useAogStore = defineStore('aog', {
state: () => {
return {
searchData: {
state: '1',
machineNumber: '',
model: '',
aviation: '',
terminal: '',
major: null,
aogLevel: null,
happenDateStart: null,
happenDateEnd: null,
aogStartTimeStart: null,
aogStartTimeEnd: null,
happenAddr: '',
faultDesc: ''
},
details: undefined
}
},
getters: {},
actions: {
resetForm() {
this.searchData = {
state: '1',
machineNumber: '',
model: '',
aviation: '',
terminal: '',
major: null,
aogLevel: null,
happenDateStart: null,
happenDateEnd: null,
aogStartTimeStart: null,
aogStartTimeEnd: null,
happenAddr: '',
faultDesc: ''
}
},
setState(...args) {
this.$patch({ [args[0]]: args[1] })
}
},
// 配置持久化
persist: {
// 调整为兼容多端的API
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
}
}
}
})
export default useAogStore
......@@ -13,7 +13,7 @@ const menuList = ref([
{ id: 10, name: '协议单位', icon: 'xydw', group: '航站管理', count: 0 },
{ id: 11, name: '不正常事件', icon: 'bzcsj', group: '运行品质', count: 0 },
{ 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, url: '/panel/aog/search' },
{ id: 14, name: 'MCO', icon: 'MCO', group: '运行品质', count: 0 },
{ id: 15, name: '航班保障', icon: 'hbbz', group: '运行品质', count: 0 }
])
......
......@@ -33,16 +33,6 @@ const useWorkAssignmentStore = defineStore('workAssignment', {
}
},
// 配置持久化
persist: {
// 调整为兼容多端的API
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
}
}
}
persist: false
})
export default useWorkAssignmentStore
......@@ -241,6 +241,24 @@
"style": {
"navigationBarTitleText": "工作任务指令详情"
}
},
{
"path": "pages/modules/mocp/panel/aog/search",
"style": {
"navigationBarTitleText": "筛选"
}
},
{
"path": "pages/modules/mocp/panel/aog/list",
"style": {
"navigationBarTitleText": "AOG列表"
}
},
{
"path": "pages/modules/mocp/panel/aog/details",
"style": {
"navigationBarTitleText": "AOG详情"
}
}
],
"globalStyle": {
......
.details {
padding: 16rpx 24rpx;
border-radius: 12rpx;
background: #ffffff;
color: $mocp-text-4;
}
<template>
<global-page :padding="24" title="AOG详情"></global-page>
</template>
<script setup>
import { storeToRefs } from 'pinia'
import { timeStampFormat } from 'mocp/utils/tool'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import { ref } from 'vue'
import useAogStore from 'mocp/store/aog'
const aogStore = useAogStore()
const { details } = storeToRefs(aogStore)
</script>
<style lang="scss" scoped>
@import './constants/details.scss';
</style>
<template>
<global-page
title="AOG列表"
isDataList
refresherEnabled
loadingMoreEnabled
auto
ref="paging"
:params="searchData"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="getWorkTaskListApi"
:padding="24"
>
<template #="{ dataList }">
<view class="item" v-for="item in dataList" :key="item.id" @tap="goDetails(item)">
<view class="item-title">
<view class="left">
<custom-state :value="useGetDictByValue('wa_state', item.state)"></custom-state>
<text class="txt u-line-1" v-if="item.machineNumber">{{ item.machineNumber }}</text>
</view>
<view class="right">
<global-tag :type="useGetDictByValue('wa_isSuccessType', item.isSuccess)">
{{ useGetDictByValue('wa_isSuccess', item.isSuccess) }}
</global-tag>
</view>
</view>
<view class="item-content u-line-3">
{{ item.taskDescription || '无' }}
</view>
<view class="item-footer">
<view class="label">
<global-icon icon="calendar"></global-icon>
<text class="txt">
{{ timeStampFormat(item.feedbackTime, { format: 'YYYY/MM/DD' }) }}
</text>
</view>
</view>
</view>
</template>
</global-page>
</template>
<script setup>
import { ref } from 'vue'
import { timeStampFormat } from 'mocp/utils/tool'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import { storeToRefs } from 'pinia'
import { onUnload } from '@dcloudio/uni-app'
import { getWorkTaskListApi } from 'mocp/api/work-assignment'
import useAogStore from 'mocp/store/aog'
//跳转
const aogStore = useAogStore()
const { searchData } = storeToRefs(aogStore)
const goDetails = (data) => {
uni.$mocpJump.navigateTo('/panel/aog/details', { id: data.id }).then(() => {
aogStore.setState('details', data)
})
}
//筛选
const handleRightClick = () => {
uni.$mocpJump.redirectTo('/panel/aog/search')
}
//刷新
const paging = ref()
uni.$on('aogReload', () => {
paging.value?.reload()
})
onUnload(() => {
uni.$off('aogReload')
})
</script>
<style lang="scss" scoped>
@import 'mocpStatic/css/list.scss';
</style>
<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="wa_state"></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="机型" prop="model" :borderBottom="true">
<global-picker v-model="formData.model" pickAlign="right" :options="baseStore.getTypeSelect" clearable filter></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="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="major" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.major" clearable :options="baseStore.getTerminalSelect" filter></global-picker>
</up-form-item>
<up-form-item label="AOG级别" prop="aogLevel" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.aogLevel"
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item label="发生日期" :borderBottom="true">
<global-calendar
pickAlign="right"
v-model:startTime="formData.happenDateStart"
v-model:endTime="formData.happenDateEnd"
clearable
></global-calendar>
</up-form-item>
<up-form-item label="AOG启动日期" :borderBottom="true">
<global-calendar
pickAlign="right"
v-model:startTime="formData.aogStartTimeStart"
v-model:endTime="formData.aogStartTimeEnd"
clearable
></global-calendar>
</up-form-item>
<up-form-item label="发生地点" prop="happenAddr" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.happenAddr"
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item label="故障描述" prop="faultDesc" :borderBottom="true">
<up-input v-model="formData.faultDesc" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
</up-form>
</view>
<template #bottom>
<view class="footer-btn">
<up-row gutter="10">
<up-col span="6">
<global-button type="primary" plain 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 { storeToRefs } from 'pinia'
import { cloneDeep } from 'lodash'
import { ref } from 'vue'
import useAogStore from 'mocp/store/aog'
//获取下拉框选项
const baseStore = useBaseStore()
const {
selectList: { deviceNumList }
} = useBaseStore()
const aogStore = useAogStore()
//获取查询表单数据
const { searchData } = storeToRefs(aogStore)
const formData = ref(cloneDeep(searchData.value))
const handleReset = () => {
aogStore.resetForm()
uni.$mocpJump.redirectTo('/panel/aog/list')
uni.$emit('aogReload')
}
const handleConfirm = () => {
aogStore.setState('searchData', formData.value)
uni.$mocpJump.redirectTo('/panel/aog/list')
uni.$emit('aogReload')
}
</script>
<style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn {
padding: 24rpx 32rpx;
background-color: #fff;
}
</style>
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