Commit cbf1888f by liujinbo

修改global-page-swiper

parent 3e934781
......@@ -8,11 +8,3 @@ export const getFleetListApi = (data, config) => {
config
})
}
export const WorkTaskIsSuccessApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/WorkTaskIsSuccess',
data,
config
})
}
import { http } from 'mocp/utils/http'
export const getMocinfoListApi = (data, config) => {
return http({
method: 'POST',
url: '/moc/getMocinfoList',
data,
config
})
}
......@@ -19,7 +19,8 @@
<global-empty></global-empty>
</template>
<slot :dataList="dataList">
<up-skeleton v-if="showSkeleton" rows="100" :loading="true" :animate="true" :title="false"></up-skeleton>
<up-skeleton v-if="showSkeleton" rows="100" :loading="true" :animate="true"
:title="false"></up-skeleton>
</slot>
</z-paging>
</view>
......@@ -84,6 +85,19 @@ const ps = defineProps({
backToTopBottom: {
type: [Number, String],
default: '160rpx'
},
localPaging: {
type: Boolean,
default: false
},
localPagingCB: {
type: Function,
default: () => {
}
},
pageSize: {
type: Number,
default: 10
}
})
......@@ -119,19 +133,22 @@ const queryList = (pageIndex, pageSize) => {
params[ps.tabValueField] = ps.tabValue
}
if (Object.prototype.toString.call(ps.api) == '[object Function]') {
ps.api(params, { loading: true })
.then((res) => {
if (res.code == 200) {
paging.value?.complete(res.list || res.data?.list || [])
firstLoaded.value = true
ps.api(params, {loading: true}).then((res) => {
if (res.code == 200 || res.list?.length) {
if (!ps.localPaging) {
paging.value?.complete(res.list || res.data?.list || res?.data || [])
} else {
uni.$mocpMessage.error(res.message)
const data = res.data || []
paging.value?.setLocalPaging(ps.localPagingCB(data))
}
})
.catch(() => {
showSkeleton.value = false
paging.value?.complete(false)
})
firstLoaded.value = true
} else {
uni.$mocpMessage.error(res.message)
}
}).catch(() => {
showSkeleton.value = false
paging.value?.complete(false)
})
} else {
showSkeleton.value = false
paging.value?.complete(false)
......
......@@ -18,7 +18,7 @@
:keyName="nameKey"
@handleChange="tabsChange"
inactiveStyle="color:#86909C"
:width="250"
:width="tabsWidth"
:height="100"
></global-tabs>
<slot name="top"></slot>
......@@ -46,6 +46,8 @@
:auto-show-back-to-top="autoShowBackToTop"
:loading-more-enabled="loadingMoreEnabled"
:back-to-top-bottom="backToTopBottom"
:localPaging="$attrs.localPaging"
:localPagingCB="$attrs.localPagingCB"
>
<template #="{ dataList }">
<slot :dataList="dataList"></slot>
......@@ -62,7 +64,7 @@
import { computed, nextTick, onUnmounted, ref } from 'vue'
// 获取屏幕边界到安全区域距离
const { safeAreaInsets } = uni.getSystemInfoSync()
const {safeAreaInsets} = uni.getSystemInfoSync()
const ps = defineProps({
background: {
type: String,
......@@ -72,10 +74,6 @@ const ps = defineProps({
type: [String, Number],
default: 0
},
padding: {
type: [String, Number],
default: 0
},
margin: {
type: [String, Number],
default: 0
......@@ -151,6 +149,10 @@ const ps = defineProps({
backToTopBottom: {
type: [Number, String],
default: '160rpx'
},
tabsWidth: {
type: [Number, String],
default: '250'
}
})
// z-swiper样式
......
import { defineStore } from 'pinia'
import Day from 'mocp/utils/dayjs'
const currentTime = Day(new Date())
const dateEnd = currentTime.format('YYYY-MM-DD')
const useInforDisclosureStore = defineStore('inforDisclosure', {
state: () => {
return {
searchData: {
state: 1,
machineNumber: '',
planeModel: '',
aviation: '',
terminal: '',
startTime: '',//填报日期-当前日期
guarantee: '',//保障阶段0 1 2
rlease_state: '',//完成状态0123
function_Info: '',//运行阶段012
failure_state: '',//故障状态
professional: ''//专业类别
startTime: '',
guarantee: '',
rlease_state: '',
function_Info: '',
failure_state: '',
professional: ''
},
details: undefined
}
......@@ -26,6 +23,7 @@ const useInforDisclosureStore = defineStore('inforDisclosure', {
actions: {
resetForm() {
this.searchData = {
state: 1,
machineNumber: '',
planeModel: '',
aviation: '',
......
<template>
<global-page
title="机队状态网"
<global-page-swiper
title="信息通报"
isDataList
refresherEnabled
loadingMoreEnabled
auto
ref="paging"
:params="searchData"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="getFleetListApi"
:api="getMocinfoListApi"
:padding="24"
localPaging
:localPagingCB="localPagingCB"
:tabList="tabList"
tabValueField="state"
tabsWidth="50%"
>
<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('fleet_state', item.state)"></custom-state>
<text class="txt u-line-1 fleetTxt" v-if="item.machineNumber">
{{ item.machineNumber }}
<text class="txt u-line-1 fleetTxt">
{{ item.info }}
</text>
</view>
</view>
......@@ -29,7 +31,7 @@
</view>
</view>
</template>
</global-page>
</global-page-swiper>
</template>
<script setup>
......@@ -39,32 +41,88 @@ import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import useInforDisclosureStore from 'mocp/store/inforDisclosure'
import { storeToRefs } from 'pinia'
import { onUnload } from '@dcloudio/uni-app'
import { getFleetListApi } from 'mocp/api/fleet'
import { getMocinfoListApi } from 'mocp/api/inforDisclosure'
import { getParamsByType } from 'mocp/hooks/use-params/useParams'
//跳转
const fleetStore = useFleetStore()
const {searchData} = storeToRefs(fleetStore)
const inforDisclosure = useInforDisclosureStore()
const {searchData} = storeToRefs(inforDisclosure)
const tabList = [
{
name: '当前通报',
value: 1
},
{
name: '历史通报',
value: 2
}
]
const goDetails = (data) => {
uni.$mocpJump.navigateTo('/panel/fleet/details', {id: data.id}).then(() => {
fleetStore.setState('details', data)
uni.$mocpJump.navigateTo('/panel/inforDisclosure/details', {id: data.id}).then(() => {
inforDisclosure.setState('details', data)
})
}
const localPagingCB = (data) => {
const RetentionBasisList = getParamsByType('RetentionBasis')
const OperationPhaseList = getParamsByType('OperationPhase')
const ReleaseStatuList = getParamsByType('ReleaseStatu')
data.list = data.list.reduce((q, w) => {
q.push(w)
if (Array.isArray(w.cascade) && w.cascade.length > 0) {
q.push(...w.cascade)
}
return q
}, [])
const mappedData = data.list.map(item => {
return {
time: item.creationTime.replace(/-/g, '/').replace(/:\d+?$/, ''),
operator: item.filledBy,
info: item.faultDescription,
status: item.failureState.toString() === '0' ?
'open' : item.failureState.toString() === '1' ?
'close' : '作废',
tags: [{
text: item.pid === '0' ? '主项' : '子项',
bg: item.pid === '0' ? 'blue' : 'lightblue',
color: 'white'
}, {
text: RetentionBasisList[item.guarantee * 1]?.label,
bg: '#E9E9E9', color: 'rgba(0,0,0,.4)'
},
{
text: OperationPhaseList[item.functionInfo * 1]?.label,
bg: '#E9E9E9', color: 'rgba(0,0,0,.4)'
}, {
text: ReleaseStatuList[item.rleaseState]?.label,
bg: '#E9E9E9', color: 'rgba(0,0,0,.4)'
}],
id: item.id
}
})
console.log('@@mappedData', mappedData)
return mappedData
}
//筛选
const handleRightClick = () => {
uni.$mocpJump.redirectTo('/panel/fleet/search')
uni.$mocpJump.redirectTo('/panel/inforDisclosure/search')
}
//刷新
const paging = ref()
uni.$on('inforDisclosure', () => {
uni.$on('inforDisclosureReload', () => {
paging.value?.reload()
})
onUnload(() => {
uni.$off('inforDisclosure')
uni.$off('inforDisclosureReload')
})
</script>
<style lang="scss" scoped>
@import 'mocpStatic/css/list.scss';
@import './constants/fleet.scss';
//@import './constants/fleet.scss';
</style>
......@@ -74,12 +74,42 @@
></global-picker>
</up-form-item>
<up-form-item label="完成状态" prop="guarantee" :borderBottom="true">
<up-form-item label="完成状态" prop="rlease_state" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.guarantee"
v-model="formData.rlease_state"
clearable
:options="getParamsByType('GuaranteeStage')"
:options="getParamsByType('ReleaseStatu')"
filter
></global-picker>
</up-form-item>
<up-form-item label="运行阶段" prop="function_Info" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.function_Info"
clearable
:options="getParamsByType('OperationPhase')"
filter
></global-picker>
</up-form-item>
<up-form-item label="故障状态" prop="failure_state" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.failure_state"
clearable
:options="getParamsByType('RetentionBasis')"
filter
></global-picker>
</up-form-item>
<up-form-item label="专业类别" prop="professional" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.professional"
clearable
:options="getParamsByType('MajorCategory')"
filter
></global-picker>
</up-form-item>
......
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