Commit ef59220e by liujinbo

Merge branch 'refs/heads/master' into master_ljb

# Conflicts:
#	src/pages/modules/mocp/panel/flight-support/components/TableRow.vue
parents 021e5077 752fb438
...@@ -12,6 +12,7 @@ declare module 'vue' { ...@@ -12,6 +12,7 @@ declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
// 全局组件 // 全局组件
GlobalActionSheet: typeof import('./src/mocp/components/global-action-sheet/global-action-sheet.vue')['default'] GlobalActionSheet: typeof import('./src/mocp/components/global-action-sheet/global-action-sheet.vue')['default']
GlobalAirlineImage: typeof import('./src/mocp/components/global-airline-image/global-airline-image.vue')['default']
GlobalAlbum: typeof import('./src/mocp/components/global-album/global-album.vue')['default'] GlobalAlbum: typeof import('./src/mocp/components/global-album/global-album.vue')['default']
GlobalButton: typeof import('./src/mocp/components/global-button/global-button.vue')['default'] GlobalButton: typeof import('./src/mocp/components/global-button/global-button.vue')['default']
GlobalCalendar: typeof import('./src/mocp/components/global-calendar/global-calendar.vue')['default'] GlobalCalendar: typeof import('./src/mocp/components/global-calendar/global-calendar.vue')['default']
......
export const airlineMap = {
GT: 'guilinhangkong',
'9H': 'changanhangkong', // 长安航空
HT: 'tianjinhangkong',
UQ: 'wulumuqihangkong',
DRJ: 'shouduhangkong',
JD: 'shouduhangkong',
FU: 'fuzhouhangkong',
CN: 'hainanhangkong', // 大新华航空
HNA: 'hainanhangkong',
GS: 'tianjinhangkong',
GX: 'beibuwanhangkong', // 北部湾航空
HU: 'hainanhangkong',
'8L': 'xiangpenghangkong',
PN: 'xibuhangkong',
Y8: 'jinpenghangkong',
LKA: 'xiangpenghangkong',
GCE: 'tianjinhangkong',
GCH: 'guilinhangkong',
WAC: 'xibuhangkong',
GXA: 'tianjinhangkong',
YZJ: 'jinpenghangkong',
CTJ: 'tianjinghuoyunhangkong',
CGH: 'guilinhangkong',
CGN: 'changanhangkong',
CUH: 'wulumuqihangkong',
FZA: 'fuzhouhangkong',
GCA: 'hainanhangkong'
}
<template>
<view class="airline" :style="style" :class="class">
<up-image :show-loading="true" :src="getImage" :width="width + 'rpx'" :height="height + 'rpx'" shape="circle" lazyLoad></up-image>
<text class="txt" v-if="$slots.default">
<slot></slot>
</text>
</view>
</template>
<script setup>
import { computed } from 'vue'
import { airlineMap } from './data'
const ps = defineProps({
code: {
type: String,
default: ''
},
width: {
type: [String, Number],
default: 40
},
height: {
type: [String, Number],
default: 40
},
style: {
type: Object,
default: () => {
return {}
}
},
class: {
type: [Array, String],
default: () => {
return ''
}
}
})
const getImage = computed(() => {
return '/static/mocp/image/airline/' + (airlineMap[ps.code] || 'hainanhangkong') + '.png'
})
</script>
<style lang="scss" scoped>
.airline {
display: flex;
align-items: center;
.txt {
margin-left: 8rpx;
}
}
</style>
<template> <template>
<view class="global-card" :class="class" :style="style"> <view class="global-card" :class="class" :style="style">
<view class="global-card-title" :style="getTitleStyle"> <view class="global-card-title" :style="getTitleStyle" v-if="showTitle">
<view class="left u-line-1"> <view class="left u-line-1">
<view class="txt">{{ title }}</view> <view class="txt">{{ title }}</view>
</view> </view>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<up-icon name="arrow-right" size="16"></up-icon> <up-icon name="arrow-right" size="16"></up-icon>
</view> </view>
</view> </view>
<view class="global-card-content" v-if="showContent"> <view class="global-card-content" :style="getContentStyle" v-if="showContent">
<slot></slot> <slot></slot>
</view> </view>
</view> </view>
...@@ -30,6 +30,10 @@ const ps = defineProps({ ...@@ -30,6 +30,10 @@ const ps = defineProps({
return {} return {}
} }
}, },
showTitle: {
type: Boolean,
default: true
},
title: { title: {
type: String, type: String,
default: '' default: ''
...@@ -57,6 +61,14 @@ const getTitleStyle = computed(() => { ...@@ -57,6 +61,14 @@ const getTitleStyle = computed(() => {
} }
return _style return _style
}) })
const getContentStyle = computed(() => {
const _style = { ...ps.contentStyle }
if (ps.showTitle) {
_style['border-top'] = '2rpx solid #f4f4f4'
_style['padding-top'] = '16rpx'
}
return _style
})
const handleTitleClick = () => { const handleTitleClick = () => {
es('handleTitleClick') es('handleTitleClick')
} }
...@@ -90,8 +102,6 @@ const handleTitleClick = () => { ...@@ -90,8 +102,6 @@ const handleTitleClick = () => {
} }
} }
&-content { &-content {
border-top: 2rpx solid #f4f4f4;
padding-top: 16rpx;
line-height: 40rpx; line-height: 40rpx;
color: $mocp-text-4; color: $mocp-text-4;
} }
......
...@@ -11,14 +11,14 @@ ...@@ -11,14 +11,14 @@
show-refresher-update-time show-refresher-update-time
v-if="firstLoaded || isCurrentPage" v-if="firstLoaded || isCurrentPage"
ref="paging" ref="paging"
v-model="getDataList" v-model="dataList"
@query="queryList" @query="queryList"
:fixed="false" :fixed="false"
> >
<template #empty> <template #empty>
<global-empty></global-empty> <global-empty></global-empty>
</template> </template>
<slot :dataList="getDataList"></slot> <slot :dataList="dataList"></slot>
</z-paging> </z-paging>
</view> </view>
</template> </template>
...@@ -139,7 +139,10 @@ const queryList = (pageIndex, pageSize) => { ...@@ -139,7 +139,10 @@ const queryList = (pageIndex, pageSize) => {
ps.api(params, { loading: true }) ps.api(params, { loading: true })
.then((res) => { .then((res) => {
if (res.code == 200 || res.list?.length) { if (res.code == 200 || res.list?.length) {
const data = res.list || res.data?.list || res?.data || [] let data = res.list || res.data?.list || res?.data || []
if (ps.transformData) {
data = ps.transformData(data) || []
}
if (ps.localPaging) { if (ps.localPaging) {
paging.value?.setLocalPaging(data) paging.value?.setLocalPaging(data)
} else { } else {
...@@ -157,21 +160,8 @@ const queryList = (pageIndex, pageSize) => { ...@@ -157,21 +160,8 @@ const queryList = (pageIndex, pageSize) => {
paging.value?.complete(false) paging.value?.complete(false)
} }
} }
//获取数据
const getDataList = computed({
get: () => {
if (ps.transformData) {
return ps.transformData(dataList.value) || []
} else {
return dataList.value
}
},
set: (value) => {
dataList.value = value
}
})
defineExpose({ defineExpose({
getDataList, dataList,
reload: () => { reload: () => {
paging.value?.reload() paging.value?.reload()
}, },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!-- 全局page 不带tab切换--> <!-- 全局page 不带tab切换-->
<z-paging <z-paging
ref="paging" ref="paging"
v-model="getDataList" v-model="dataList"
:auto="auto" :auto="auto"
:fixed="fixed" :fixed="fixed"
:height="height" :height="height"
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
:paging-style="getPagingStyle" :paging-style="getPagingStyle"
:default-page-size="pageSize" :default-page-size="pageSize"
> >
<template #empty v-if="auto && !getDataList.length"> <template #empty v-if="auto && !dataList.length">
<global-empty></global-empty> <global-empty></global-empty>
</template> </template>
<!-- 头部 --> <!-- 头部 -->
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<view class="mocp-content" :style="getStyle"> <view class="mocp-content" :style="getStyle">
<template v-if="isDataList || localData"> <template v-if="isDataList || localData">
<up-checkbox-group v-model="chooseValue" v-if="chooseDataType == 'checkbox'"> <up-checkbox-group v-model="chooseValue" v-if="chooseDataType == 'checkbox'">
<template v-for="(item, index) in getDataList" :key="index"> <template v-for="(item, index) in dataList" :key="index">
<up-checkbox :name="index" v-if="chooseDataType == 'checkbox'"> <up-checkbox :name="index" v-if="chooseDataType == 'checkbox'">
<template #label> <template #label>
<slot :item="item" :index="index"></slot> <slot :item="item" :index="index"></slot>
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
</up-checkbox> </up-checkbox>
</template> </template>
</up-checkbox-group> </up-checkbox-group>
<template v-for="(item, index) in getDataList" :key="index" v-else> <template v-for="(item, index) in dataList" :key="index" v-else>
<slot :item="item" :index="index"></slot> <slot :item="item" :index="index"></slot>
</template> </template>
</template> </template>
...@@ -294,7 +294,7 @@ const scroll = () => { ...@@ -294,7 +294,7 @@ const scroll = () => {
//监听选择 //监听选择
const chooseValue = ref([]) const chooseValue = ref([])
watch(chooseValue, (value) => { watch(chooseValue, (value) => {
let data = value.map((index) => getDataList.value[index]) let data = value.map((index) => dataList.value[index])
if (ps.mapFieldName) { if (ps.mapFieldName) {
data = data.map((v) => v[ps.mapFieldName]).join(ps.mapFieldSplit) data = data.map((v) => v[ps.mapFieldName]).join(ps.mapFieldSplit)
} }
...@@ -317,7 +317,10 @@ const queryList = (pageIndex, pageSize) => { ...@@ -317,7 +317,10 @@ const queryList = (pageIndex, pageSize) => {
ps.api(params, { loading: true }) ps.api(params, { loading: true })
.then((res) => { .then((res) => {
if (res.code == 200 || res.list?.length) { if (res.code == 200 || res.list?.length) {
const data = res.list || res.data?.list || res?.data || [] let data = res.list || res.data?.list || res?.data || []
if (ps.transformData) {
data = ps.transformData(data) || []
}
if (ps.localPaging) { if (ps.localPaging) {
paging.value?.setLocalPaging(data) paging.value?.setLocalPaging(data)
} else { } else {
...@@ -341,19 +344,6 @@ const queryList = (pageIndex, pageSize) => { ...@@ -341,19 +344,6 @@ const queryList = (pageIndex, pageSize) => {
} }
es('query', { pageIndex, pageSize }) es('query', { pageIndex, pageSize })
} }
//获取数据
const getDataList = computed({
get: () => {
if (ps.transformData) {
return ps.transformData(dataList.value) || []
} else {
return dataList.value
}
},
set: (value) => {
dataList.value = value
}
})
//点击左边插槽 //点击左边插槽
const handleLeftClick = () => { const handleLeftClick = () => {
if (ps.navLeftClick == 'default') { if (ps.navLeftClick == 'default') {
......
...@@ -5,15 +5,21 @@ export const aog_status = [ ...@@ -5,15 +5,21 @@ export const aog_status = [
{ text: '-', class: 'mocp-color-text-4', value: 3 } { text: '-', class: 'mocp-color-text-4', value: 3 }
] ]
export const aog_bBstatus = [
{ text: '未完成', class: 'mocp-color-warning-6', value: 0 },
{ text: '已完成', class: 'mocp-color-success-6', value: 2 },
{ text: '-', class: 'mocp-color-text-4', value: 3 }
]
export const aogDetails_status = [ export const aogDetails_status = [
{ text: '未到位', class: 'mocp-color-warning-6', value: '0' }, { text: '未到位', class: 'mocp-color-warning-6', value: '0' },
{ text: '已到位', class: 'mocp-color-success-6', value: '1' } { text: '已到位', class: 'mocp-color-success-6', value: '1' }
] ]
export const bbDetails_status = [ export const bbDetails_status = [
{ text: '开始施工', class: 'mocp-color-primary-6', value: '0' }, { text: '正在施工', class: 'mocp-color-warning-6', value: '0' },
{ text: '已完成', class: 'mocp-color-success-6', value: '1' }, { text: '已完成', class: 'mocp-color-success-6', value: '1' },
{ text: '-', class: 'mocp-color-text-4', value: '-1' } { text: '-', class: 'mocp-color-text-4', value: '2' }
] ]
export const otherDetails_status = [ export const otherDetails_status = [
......
...@@ -14,6 +14,12 @@ const ps = defineProps({ ...@@ -14,6 +14,12 @@ const ps = defineProps({
size: { size: {
type: [String, Number], type: [String, Number],
default: 34 default: 34
},
CLOSEStyle: {
type: Object,
default: () => {
return {}
}
} }
}) })
const getStyle = computed(() => { const getStyle = computed(() => {
...@@ -23,6 +29,7 @@ const getStyle = computed(() => { ...@@ -23,6 +29,7 @@ const getStyle = computed(() => {
} }
if (ps.value == 'CLOSE') { if (ps.value == 'CLOSE') {
_style.color = '#F53F3F' _style.color = '#F53F3F'
Object.assign(_style, ps.CLOSEStyle)
} }
if (ps.value == 'OI') { if (ps.value == 'OI') {
_style.color = '#00B42A' _style.color = '#00B42A'
......
...@@ -3,3 +3,14 @@ export const sa_state = [ ...@@ -3,3 +3,14 @@ export const sa_state = [
{ label: 'OPEN', value: '1' }, { label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '2' } { label: 'CLOSE', value: '2' }
] ]
export const sa_isSuccess = [
{ label: '已拒绝', value: '1' },
{ label: '待接收', value: '2' },
{ label: '已接收', value: '3' }
]
export const sa_isSuccessType = [
{ label: 'danger', value: '1' },
{ label: 'primary', value: '2' },
{ label: 'success', value: '3' }
]
...@@ -96,8 +96,6 @@ const useAogStore = defineStore('aog', { ...@@ -96,8 +96,6 @@ const useAogStore = defineStore('aog', {
if (state.bbData && state.bbData.length) { if (state.bbData && state.bbData.length) {
if (state.bbData.every((a) => a.realityCompleteTime)) { if (state.bbData.every((a) => a.realityCompleteTime)) {
bbStatus = 2 bbStatus = 2
} else if (state.bbData.some((a) => a.realityCompleteTime)) {
bbStatus = 1
} else { } else {
bbStatus = 0 bbStatus = 0
} }
......
import useUserStore from 'mocp/store/user' import useUserStore from 'mocp/store/user'
// const baseURL = 'https://hna-platform.anyremote.cn'//测试 const baseURL = 'https://hna-platform.anyremote.cn' //测试
const baseURL = 'https://moc.hnatechnic.com/api'//生产 // const baseURL = 'https://moc.hnatechnic.com/api'//生产
class ServiceLoading { class ServiceLoading {
open (loading) { open (loading) {
...@@ -84,7 +84,7 @@ export const httpInterceptor = (options) => { ...@@ -84,7 +84,7 @@ export const httpInterceptor = (options) => {
} }
// 添加 token 请求头标识 // 添加 token 请求头标识
if (userStore.token) { if (userStore.token) {
options.header.Authorization = `Bearer ${ userStore.token }` options.header.Authorization = `Bearer ${userStore.token}`
} }
console.log('接口请求信息:', options) console.log('接口请求信息:', options)
return options return options
......
...@@ -444,7 +444,7 @@ ...@@ -444,7 +444,7 @@
{ {
"path": "pages/modules/mocp/panel/mco/step-back", "path": "pages/modules/mocp/panel/mco/step-back",
"style": { "style": {
"navigationBarTitleText": "步骤反馈" "navigationBarTitleText": "步骤详情"
} }
} }
], ],
...@@ -477,4 +477,4 @@ ...@@ -477,4 +477,4 @@
} }
] ]
} }
} }
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<up-cell title="实际完成时间" :value="getBbDetails.realityCompleteTime || '-'"></up-cell> <up-cell title="实际完成时间" :value="getBbDetails.realityCompleteTime || '-'"></up-cell>
<up-cell title="状态"> <up-cell title="状态">
<template #value> <template #value>
<global-text-status :value="getBbDetails.state" dictkey="bbDetails_status"></global-text-status> <global-text-status :value="getStatus(getBbDetails)" dictkey="bbDetails_status"></global-text-status>
</template> </template>
</up-cell> </up-cell>
<up-cell title="步骤" :label="getBbDetails.stepContent || '-'"></up-cell> <up-cell title="步骤" :label="getBbDetails.stepContent || '-'"></up-cell>
...@@ -44,6 +44,12 @@ import { updateAogConstructionApi } from 'mocp/api/aog' ...@@ -44,6 +44,12 @@ import { updateAogConstructionApi } from 'mocp/api/aog'
const aogStore = useAogStore() const aogStore = useAogStore()
const { getBbDetails, details } = storeToRefs(aogStore) const { getBbDetails, details } = storeToRefs(aogStore)
const getStatus = (row) => {
if (!row.startTime && !row.realityCompleteTime) {
return '2'
}
return row.startTime && row.realityCompleteTime ? '1' : '0'
}
//修改状态 //修改状态
const showAction = ref(false) const showAction = ref(false)
const showConfirm = ref(false) const showConfirm = ref(false)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<global-page :padding="24" title="AOG施工列表" auto :localData="bbData"> <global-page :padding="24" title="AOG施工列表" auto :localData="bbData">
<template #default="{ item, index }"> <template #default="{ item, index }">
<global-card :title="`步骤${index + 1}`" titleSuffix="查看详情" @handleTitleClick="goTo(index)"> <global-card :title="`步骤${index + 1}`" titleSuffix="查看详情" @handleTitleClick="goTo(index)">
<global-text-status :value="item.state" dictkey="bbDetails_status"></global-text-status> <global-text-status :value="getStatus(item)" dictkey="bbDetails_status"></global-text-status>
</global-card> </global-card>
</template> </template>
</global-page> </global-page>
...@@ -19,5 +19,11 @@ const goTo = (index) => { ...@@ -19,5 +19,11 @@ const goTo = (index) => {
aogStore.setState('bbIndex', index) aogStore.setState('bbIndex', index)
}) })
} }
const getStatus = (row) => {
if (!row.startTime && !row.realityCompleteTime) {
return '2'
}
return row.startTime && row.realityCompleteTime ? '1' : '0'
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<view class="txt">{{ timeStampFormat(workBench?.createdTime, { format: 'YYYY/MM/DD' }) }}</view> <view class="txt">{{ timeStampFormat(workBench?.createdTime, { format: 'YYYY/MM/DD' }) }}</view>
</view> </view>
</view> </view>
<global-card title="信息通报"> <global-card :showTitle="false">
<view class="card-details"> <view class="card-details">
<view class="card-details-item"> <view class="card-details-item">
<view class="title">故障描述:</view> <view class="title">故障描述:</view>
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
<global-text-status :value="aogStore.getPersonnelStatus" dictkey="aog_status"></global-text-status> <global-text-status :value="aogStore.getPersonnelStatus" dictkey="aog_status"></global-text-status>
</global-card> </global-card>
<global-card title="施工情况" @handleTitleClick="goTo('/panel/aog/construction-list')"> <global-card title="施工情况" @handleTitleClick="goTo('/panel/aog/construction-list')">
<global-text-status :value="aogStore.getBbStatus" dictkey="aog_status"></global-text-status> <global-text-status :value="aogStore.getBbStatus" dictkey="aog_bBstatus"></global-text-status>
</global-card> </global-card>
<global-card title="其他特殊保障" @handleTitleClick="goTo('/panel/aog/other-list')"> <global-card title="其他特殊保障" @handleTitleClick="goTo('/panel/aog/other-list')">
<global-text-status :value="aogStore.getOtherStatus" dictkey="aog_status"></global-text-status> <global-text-status :value="aogStore.getOtherStatus" dictkey="aog_status"></global-text-status>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<view class="item" @tap="goDetails(item)"> <view class="item" @tap="goDetails(item)">
<view class="item-title"> <view class="item-title">
<view class="left"> <view class="left">
<custom-state :value="useGetDictByValue('aog_state', item.state)"></custom-state> <custom-state :value="useGetDictByValue('aog_state', item.state)" :CLOSEStyle="{ color: '#1d2129' }"></custom-state>
<text class="txt u-line-1" v-if="item.aogNum">{{ item.aogNum }}</text> <text class="txt u-line-1" v-if="item.aogNum">{{ item.aogNum }}</text>
</view> </view>
</view> </view>
......
...@@ -25,9 +25,6 @@ ...@@ -25,9 +25,6 @@
.left { .left {
display: flex; display: flex;
align-items: center; align-items: center;
.left-icon {
margin-right: 16rpx;
}
.txt { .txt {
margin-left: 16rpx; margin-left: 16rpx;
display: flex; display: flex;
......
...@@ -28,9 +28,10 @@ ...@@ -28,9 +28,10 @@
</view> </view>
<view class="details-header-bottom"> <view class="details-header-bottom">
<view class="left"> <view class="left">
<view class="txt u-line-1" v-if="details.ac"> <view class="txt" v-if="details.ac">
<global-icon class="left-icon" icon="Vector" size="24" color="#DD4012"></global-icon> <global-airline-image :code="details.acOwn">
{{ details.ac }} {{ details.ac }}
</global-airline-image>
</view> </view>
<view class="txt u-line-1" v-if="details.acType"> <view class="txt u-line-1" v-if="details.acType">
{{ details.acType }} {{ details.acType }}
......
...@@ -5,9 +5,7 @@ ...@@ -5,9 +5,7 @@
<view class="details-header"> <view class="details-header">
<view class="details-header-top"> <view class="details-header-top">
<view class="left"> <view class="left">
<custom-state <custom-state :value="useGetDictByValue('wa_state', details.state)" :size="32" />
:value="useGetDictByValue('wa_state', details.state)"
:size="32" />
</view> </view>
<view class="right"> <view class="right">
<global-tag :type="useGetDictByValue('wa_isSuccessType', details.isSuccess)"> <global-tag :type="useGetDictByValue('wa_isSuccessType', details.isSuccess)">
...@@ -17,10 +15,9 @@ ...@@ -17,10 +15,9 @@
</view> </view>
<view class="details-header-bottom"> <view class="details-header-bottom">
<view class="left"> <view class="left">
<global-icon class="left-icon" icon="Vector" size="24" color="#DD4012"></global-icon> <global-airline-image :code="details.aviation">
<view class="txt">
{{ details.aviation }} {{ details.machineNumber }} {{ details.model }} {{ details.aviation }} {{ details.machineNumber }} {{ details.model }}
</view> </global-airline-image>
</view> </view>
</view> </view>
</view> </view>
...@@ -29,18 +26,13 @@ ...@@ -29,18 +26,13 @@
<text>ATA章节:{{ details.ata }}</text> <text>ATA章节:{{ details.ata }}</text>
<view class="fleetDescribe">故障描述:</view> <view class="fleetDescribe">故障描述:</view>
<view class="describeCont">{{ details.faultDescribe || '无' }}</view> <view class="describeCont">{{ details.faultDescribe || '无' }}</view>
</view> </view>
</view> </view>
<view class="details-footer"> <view class="details-footer">
<view class="fleetDescribe">处理措施:</view> <view class="fleetDescribe">处理措施:</view>
<view class="describeCont">{{ details.handle || '无' }}</view> <view class="describeCont">{{ details.handle || '无' }}</view>
<view class="footerData occurrenceData"> <view class="footerData occurrenceData">发生日期:{{ timeStampFormat(details.sendingTime, { format: 'YYYY-MM-DD' }) }}</view>
发生日期:{{ timeStampFormat(details.sendingTime, {format: 'YYYY-MM-DD'}) }} <view class="footerData occurrenceData">填报时间:{{ timeStampFormat(details.creationTime, { format: 'YYYY-MM-DD' }) }}</view>
</view>
<view class="footerData occurrenceData">
填报时间:{{ timeStampFormat(details.creationTime, {format: 'YYYY-MM-DD'}) }}
</view>
</view> </view>
</view> </view>
</template> </template>
...@@ -54,8 +46,7 @@ import { timeStampFormat } from 'mocp/utils/tool' ...@@ -54,8 +46,7 @@ import { timeStampFormat } from 'mocp/utils/tool'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict' import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
const fleetStore = useFleetStore() const fleetStore = useFleetStore()
const {details} = storeToRefs(fleetStore) const { details } = storeToRefs(fleetStore)
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../work-assignment/constants/details.scss'; @import '../work-assignment/constants/details.scss';
......
...@@ -5,9 +5,7 @@ ...@@ -5,9 +5,7 @@
<view class="details-header"> <view class="details-header">
<view class="details-header-top"> <view class="details-header-top">
<view class="left"> <view class="left">
<custom-state <custom-state :value="useGetDictByValue('wa_state', details.state)" :size="32" />
:value="useGetDictByValue('wa_state', details.state)"
:size="32" />
</view> </view>
<view class="right"> <view class="right">
<global-tag :type="useGetDictByValue('wa_isSuccessType', details.isSuccess)"> <global-tag :type="useGetDictByValue('wa_isSuccessType', details.isSuccess)">
...@@ -17,10 +15,9 @@ ...@@ -17,10 +15,9 @@
</view> </view>
<view class="details-header-bottom"> <view class="details-header-bottom">
<view class="left"> <view class="left">
<global-icon class="left-icon" icon="Vector" size="24" color="#DD4012"></global-icon> <global-airline-image :code="details.aviation">
<view class="txt">
{{ details.aviation }} {{ details.machineNumber }} {{ details.model }} {{ details.aviation }} {{ details.machineNumber }} {{ details.model }}
</view> </global-airline-image>
</view> </view>
</view> </view>
</view> </view>
...@@ -29,18 +26,13 @@ ...@@ -29,18 +26,13 @@
<text>ATA章节:{{ details.ata }}</text> <text>ATA章节:{{ details.ata }}</text>
<view class="fleetDescribe">故障描述:</view> <view class="fleetDescribe">故障描述:</view>
<view class="describeCont">{{ details.faultDescribe || '无' }}</view> <view class="describeCont">{{ details.faultDescribe || '无' }}</view>
</view> </view>
</view> </view>
<view class="details-footer"> <view class="details-footer">
<view class="fleetDescribe">处理措施:</view> <view class="fleetDescribe">处理措施:</view>
<view class="describeCont">{{ details.handle || '无' }}</view> <view class="describeCont">{{ details.handle || '无' }}</view>
<view class="footerData occurrenceData"> <view class="footerData occurrenceData">发生日期:{{ timeStampFormat(details.sendingTime, { format: 'YYYY-MM-DD' }) }}</view>
发生日期:{{ timeStampFormat(details.sendingTime, {format: 'YYYY-MM-DD'}) }} <view class="footerData occurrenceData">填报时间:{{ timeStampFormat(details.creationTime, { format: 'YYYY-MM-DD' }) }}</view>
</view>
<view class="footerData occurrenceData">
填报时间:{{ timeStampFormat(details.creationTime, {format: 'YYYY-MM-DD'}) }}
</view>
</view> </view>
</view> </view>
</template> </template>
...@@ -58,14 +50,12 @@ import { getFleetListApi } from 'mocp/api/fleet' ...@@ -58,14 +50,12 @@ import { getFleetListApi } from 'mocp/api/fleet'
import { WorkTaskIsSuccessApi } from 'mocp/api/work-assignment' import { WorkTaskIsSuccessApi } from 'mocp/api/work-assignment'
import Day from 'mocp/utils/dayjs' import Day from 'mocp/utils/dayjs'
const fleetStore = useFleetStore() const fleetStore = useFleetStore()
const {details} = storeToRefs(fleetStore) const { details } = storeToRefs(fleetStore)
console.log(details, details.value.creationTime, timeStampFormat('1721810489517', {format: 'YYYY-MM-DD'})) console.log(details, details.value.creationTime, timeStampFormat('1721810489517', { format: 'YYYY-MM-DD' }))
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../work-assignment/constants/details.scss'; @import '../work-assignment/constants/details.scss';
@import './constants/inforDisclosure.scss'; @import './constants/inforDisclosure.scss';
</style> </style>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<view class="txt">{{ timeStampFormat(details.executionDate, { format: 'YYYY/MM/DD' }) }}</view> <view class="txt">{{ timeStampFormat(details.executionDate, { format: 'YYYY/MM/DD' }) }}</view>
</view> </view>
</view> </view>
<global-card title="信息通报"> <global-card :showTitle="false">
<view class="card-details"> <view class="card-details">
<view class="card-details-item"> <view class="card-details-item">
<view class="title">故障描述:</view> <view class="title">故障描述:</view>
......
<template> <template>
<global-page title="步骤反馈" showFooterBtn footerBtnText="确认提交" @handleFooterClick="handleFooterClick"> <global-page title="步骤详情" :showFooterBtn="false" footerBtnText="确认提交" @handleFooterClick="handleFooterClick">
<view class="mocp-cell" v-if="getStepDetails"> <template v-if="getStepDetails">
<view class="mocp-title">步骤详情</view> <view class="mocp-cell">
<up-cell-group> <!-- <view class="mocp-title">步骤详情</view> -->
<up-cell title="MCO编号" :value="getStepDetails.mcoNumber"></up-cell> <up-cell-group>
<up-cell title="创建时间" :value="timeStampFormat(getStepDetails.creationTime)"></up-cell> <up-cell title="MCO编号" :value="getStepDetails.mcoNumber"></up-cell>
<up-cell title="计划工时" :value="getStepDetails.plannedWork"></up-cell> <up-cell title="创建时间" :value="timeStampFormat(getStepDetails.creationTime)"></up-cell>
<up-cell title="步骤描述" :label="getStepDetails.stepContent || '无'"></up-cell> <up-cell title="计划工时" :value="getStepDetails.plannedWork"></up-cell>
</up-cell-group> <up-cell title="步骤描述" :label="getStepDetails.stepContent || '无'"></up-cell>
</view> </up-cell-group>
<view class="mocp-cell">
<view class="mocp-title">反馈</view>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="状态" prop="state" :borderBottom="true">
<global-picker v-model.number="formData.state" pickAlign="right" clearable dictkey="mco_stepState"></global-picker>
</up-form-item>
<up-form-item label="工作人" :borderBottom="true">
<custom-admin-picker
pickAlign="right"
clearable
v-model="formData.staff"
valueField="label"
:searchValue="formData.staff"
></custom-admin-picker>
</up-form-item>
<up-form-item label="实际工时" :borderBottom="true">
<up-input v-model="formData.stateP" inputAlign="right" border="none" placeholder="请输入" clearable type="number">
<template #suffix>人数</template>
</up-input>
<up-input v-model="formData.stateH" inputAlign="right" border="none" placeholder="请输入" clearable type="number">
<template #suffix>小时</template>
</up-input>
</up-form-item>
<up-form-item label="反馈内容" :borderBottom="true" labelPosition="top">
<up-textarea placeholder="请输入" :height="40" border="none" v-model="formData.content"></up-textarea>
</up-form-item>
<up-form-item label="附件" :borderBottom="true" labelPosition="top">
<view style="margin-top: 24rpx">
<global-upload
:fileList="getStepDetails.backList?.contentFile || ''"
v-model="formData.contentFile"
mapFieldName="id"
:multiple="false"
></global-upload>
</view>
</up-form-item>
</up-form>
</view> </view>
</view> <view class="mocp-cell" style="display: none">
<view class="mocp-title">反馈</view>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="状态" prop="state" :borderBottom="true">
<global-picker v-model.number="formData.state" pickAlign="right" clearable dictkey="mco_stepState"></global-picker>
</up-form-item>
<up-form-item label="工作人" :borderBottom="true">
<custom-admin-picker
pickAlign="right"
clearable
v-model="formData.staff"
valueField="label"
:searchValue="formData.staff"
></custom-admin-picker>
</up-form-item>
<up-form-item label="实际工时" :borderBottom="true">
<up-input v-model="formData.stateP" inputAlign="right" border="none" placeholder="请输入" clearable type="number">
<template #suffix>人数</template>
</up-input>
<up-input v-model="formData.stateH" inputAlign="right" border="none" placeholder="请输入" clearable type="number">
<template #suffix>小时</template>
</up-input>
</up-form-item>
<up-form-item label="反馈内容" :borderBottom="true" labelPosition="top">
<up-textarea placeholder="请输入" :height="40" border="none" v-model="formData.content"></up-textarea>
</up-form-item>
<up-form-item label="附件" :borderBottom="true" labelPosition="top">
<view style="margin-top: 24rpx">
<global-upload
:fileList="getStepDetails.backList?.contentFile || ''"
v-model="formData.contentFile"
mapFieldName="id"
:multiple="false"
></global-upload>
</view>
</up-form-item>
</up-form>
</view>
</view>
</template>
</global-page> </global-page>
</template> </template>
...@@ -56,7 +58,7 @@ ...@@ -56,7 +58,7 @@
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import useMcoStore from 'mocp/store/mco' import useMcoStore from 'mocp/store/mco'
import { timeStampFormat } from 'mocp/utils/tool' import { timeStampFormat } from 'mocp/utils/tool'
import { reactive, ref } from 'vue' import { reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { addBackApi } from 'mocp/api/mco' import { addBackApi } from 'mocp/api/mco'
...@@ -74,8 +76,8 @@ onLoad(() => { ...@@ -74,8 +76,8 @@ onLoad(() => {
const details = getStepDetails.value?.backList || {} const details = getStepDetails.value?.backList || {}
formData.state = details.state formData.state = details.state
formData.staff = details.staff formData.staff = details.staff
formData.stateP = details.actualWork.split('X')[0] formData.stateP = details.actualWork?.split('X')[0]
formData.stateH = details.actualWork.split('X')[1] formData.stateH = details.actualWork?.split('X')[1]
formData.content = details.content formData.content = details.content
}) })
//提交 //提交
......
...@@ -10,11 +10,21 @@ ...@@ -10,11 +10,21 @@
<custom-state :value="useGetDictByValue('sa_state', details.state)" :size="28"></custom-state> <custom-state :value="useGetDictByValue('sa_state', details.state)" :size="28"></custom-state>
</template> </template>
</up-cell> </up-cell>
<up-cell title="状态">
<template #value>
<global-tag :type="useGetDictByValue('sa_isSuccessType', details.isSuccess)">
{{ useGetDictByValue('sa_isSuccess', details.isSuccess) }}
</global-tag>
</template>
</up-cell>
<up-cell title="机号" :value="details.machineNumber || '-'"></up-cell> <up-cell title="机号" :value="details.machineNumber || '-'"></up-cell>
<up-cell title="机型" :value="details.model || '-'"></up-cell> <up-cell title="机型" :value="details.model || '-'"></up-cell>
<up-cell title="相关席位" :value="details.relevantSeatsName || '-'"></up-cell> <up-cell title="相关席位" :value="details.relevantSeatsName || '-'"></up-cell>
<up-cell title="航司" :value="useGetDictByValue('', details.aviation, { data: baseStore.getAirlineSelect }) || '-'"></up-cell> <up-cell title="航司" :value="useGetDictByValue('', details.aviation, { data: baseStore.getAirlineSelect }) || '-'"></up-cell>
<up-cell title="航站" :value="details.terminal || '-'"></up-cell> <up-cell title="航站" :value="details.terminal || '-'"></up-cell>
<up-cell title="ATA章节" :value="details.ata || '-'"></up-cell>
<up-cell title="专业" :value="getParamNameByValue('MajorCategory', details.specialty) || '-'"></up-cell>
<up-cell title="发动机型号" :value="details.engineModel || '-'"></up-cell>
<up-cell title="任务需求" :label="details.supportNeeds || '-'"></up-cell> <up-cell title="任务需求" :label="details.supportNeeds || '-'"></up-cell>
</up-cell-group> </up-cell-group>
</view> </view>
...@@ -26,6 +36,7 @@ import { storeToRefs } from 'pinia' ...@@ -26,6 +36,7 @@ import { storeToRefs } from 'pinia'
import useSupportApplicationStore from 'mocp/store/support-application' import useSupportApplicationStore from 'mocp/store/support-application'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict' import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import useBaseStore from 'mocp/store/base' import useBaseStore from 'mocp/store/base'
import { getParamNameByValue } from 'mocp/hooks/use-params/useParams'
const baseStore = useBaseStore() const baseStore = useBaseStore()
const supportApplicationStore = useSupportApplicationStore() const supportApplicationStore = useSupportApplicationStore()
......
...@@ -15,8 +15,9 @@ ...@@ -15,8 +15,9 @@
</view> </view>
<view class="details-header-bottom"> <view class="details-header-bottom">
<view class="left"> <view class="left">
<global-icon class="left-icon" icon="Vector" size="24" color="#DD4012"></global-icon> <global-airline-image :code="details.aviation">
<view class="txt">{{ details.aviation }} {{ details.machineNumber }} {{ details.model }}</view> {{ details.aviation }} {{ details.machineNumber }} {{ details.model }}
</global-airline-image>
</view> </view>
<view class="right"> <view class="right">
<view class="txt">{{ details.terminal }}</view> <view class="txt">{{ details.terminal }}</view>
...@@ -47,7 +48,7 @@ ...@@ -47,7 +48,7 @@
</view> </view>
</template> </template>
<template #bottom> <template #bottom>
<view class="footer-btn"> <view class="footer-btn" v-if="details">
<template <template
v-if=" v-if="
details.sponsorId == userStore.userInfo?.realUserInfo.id || details.sponsorId == userStore.userInfo?.realUserInfo.id ||
......
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