Commit cbf1888f by liujinbo

修改global-page-swiper

parent 3e934781
...@@ -8,11 +8,3 @@ export const getFleetListApi = (data, config) => { ...@@ -8,11 +8,3 @@ export const getFleetListApi = (data, config) => {
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 @@ ...@@ -19,7 +19,8 @@
<global-empty></global-empty> <global-empty></global-empty>
</template> </template>
<slot :dataList="dataList"> <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> </slot>
</z-paging> </z-paging>
</view> </view>
...@@ -84,6 +85,19 @@ const ps = defineProps({ ...@@ -84,6 +85,19 @@ const ps = defineProps({
backToTopBottom: { backToTopBottom: {
type: [Number, String], type: [Number, String],
default: '160rpx' default: '160rpx'
},
localPaging: {
type: Boolean,
default: false
},
localPagingCB: {
type: Function,
default: () => {
}
},
pageSize: {
type: Number,
default: 10
} }
}) })
...@@ -119,16 +133,19 @@ const queryList = (pageIndex, pageSize) => { ...@@ -119,16 +133,19 @@ const queryList = (pageIndex, pageSize) => {
params[ps.tabValueField] = ps.tabValue params[ps.tabValueField] = ps.tabValue
} }
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 || res.list?.length) {
if (res.code == 200) { if (!ps.localPaging) {
paging.value?.complete(res.list || res.data?.list || []) paging.value?.complete(res.list || res.data?.list || res?.data || [])
} else {
const data = res.data || []
paging.value?.setLocalPaging(ps.localPagingCB(data))
}
firstLoaded.value = true firstLoaded.value = true
} else { } else {
uni.$mocpMessage.error(res.message) uni.$mocpMessage.error(res.message)
} }
}) }).catch(() => {
.catch(() => {
showSkeleton.value = false showSkeleton.value = false
paging.value?.complete(false) paging.value?.complete(false)
}) })
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
:keyName="nameKey" :keyName="nameKey"
@handleChange="tabsChange" @handleChange="tabsChange"
inactiveStyle="color:#86909C" inactiveStyle="color:#86909C"
:width="250" :width="tabsWidth"
:height="100" :height="100"
></global-tabs> ></global-tabs>
<slot name="top"></slot> <slot name="top"></slot>
...@@ -46,6 +46,8 @@ ...@@ -46,6 +46,8 @@
:auto-show-back-to-top="autoShowBackToTop" :auto-show-back-to-top="autoShowBackToTop"
:loading-more-enabled="loadingMoreEnabled" :loading-more-enabled="loadingMoreEnabled"
:back-to-top-bottom="backToTopBottom" :back-to-top-bottom="backToTopBottom"
:localPaging="$attrs.localPaging"
:localPagingCB="$attrs.localPagingCB"
> >
<template #="{ dataList }"> <template #="{ dataList }">
<slot :dataList="dataList"></slot> <slot :dataList="dataList"></slot>
...@@ -62,7 +64,7 @@ ...@@ -62,7 +64,7 @@
import { computed, nextTick, onUnmounted, ref } from 'vue' import { computed, nextTick, onUnmounted, ref } from 'vue'
// 获取屏幕边界到安全区域距离 // 获取屏幕边界到安全区域距离
const { safeAreaInsets } = uni.getSystemInfoSync() const {safeAreaInsets} = uni.getSystemInfoSync()
const ps = defineProps({ const ps = defineProps({
background: { background: {
type: String, type: String,
...@@ -72,10 +74,6 @@ const ps = defineProps({ ...@@ -72,10 +74,6 @@ const ps = defineProps({
type: [String, Number], type: [String, Number],
default: 0 default: 0
}, },
padding: {
type: [String, Number],
default: 0
},
margin: { margin: {
type: [String, Number], type: [String, Number],
default: 0 default: 0
...@@ -151,6 +149,10 @@ const ps = defineProps({ ...@@ -151,6 +149,10 @@ const ps = defineProps({
backToTopBottom: { backToTopBottom: {
type: [Number, String], type: [Number, String],
default: '160rpx' default: '160rpx'
},
tabsWidth: {
type: [Number, String],
default: '250'
} }
}) })
// z-swiper样式 // z-swiper样式
......
import { defineStore } from 'pinia' 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', { const useInforDisclosureStore = defineStore('inforDisclosure', {
state: () => { state: () => {
return { return {
searchData: { searchData: {
state: 1,
machineNumber: '', machineNumber: '',
planeModel: '', planeModel: '',
aviation: '', aviation: '',
terminal: '', terminal: '',
startTime: '',//填报日期-当前日期 startTime: '',
guarantee: '',//保障阶段0 1 2 guarantee: '',
rlease_state: '',//完成状态0123 rlease_state: '',
function_Info: '',//运行阶段012 function_Info: '',
failure_state: '',//故障状态 failure_state: '',
professional: ''//专业类别 professional: ''
}, },
details: undefined details: undefined
} }
...@@ -26,6 +23,7 @@ const useInforDisclosureStore = defineStore('inforDisclosure', { ...@@ -26,6 +23,7 @@ const useInforDisclosureStore = defineStore('inforDisclosure', {
actions: { actions: {
resetForm() { resetForm() {
this.searchData = { this.searchData = {
state: 1,
machineNumber: '', machineNumber: '',
planeModel: '', planeModel: '',
aviation: '', aviation: '',
......
<template> <template>
<global-page <global-page-swiper
title="机队状态网" title="信息通报"
isDataList isDataList
refresherEnabled refresherEnabled
loadingMoreEnabled loadingMoreEnabled
auto auto
ref="paging" ref="paging"
:params="searchData" :params="searchData"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick" @handleRightClick="handleRightClick"
:api="getFleetListApi" :api="getMocinfoListApi"
:padding="24" :padding="24"
localPaging
:localPagingCB="localPagingCB"
:tabList="tabList"
tabValueField="state"
tabsWidth="50%"
> >
<template #="{ dataList }"> <template #="{ dataList }">
<view class="item" v-for="item in dataList" :key="item.id" @tap="goDetails(item)"> <view class="item" v-for="item in dataList" :key="item.id" @tap="goDetails(item)">
<view class="item-title"> <view class="item-title">
<view class="left"> <view class="left">
<custom-state :value="useGetDictByValue('fleet_state', item.state)"></custom-state> <custom-state :value="useGetDictByValue('fleet_state', item.state)"></custom-state>
<text class="txt u-line-1 fleetTxt" v-if="item.machineNumber"> <text class="txt u-line-1 fleetTxt">
{{ item.machineNumber }} {{ item.info }}
</text> </text>
</view> </view>
</view> </view>
...@@ -29,7 +31,7 @@ ...@@ -29,7 +31,7 @@
</view> </view>
</view> </view>
</template> </template>
</global-page> </global-page-swiper>
</template> </template>
<script setup> <script setup>
...@@ -39,32 +41,88 @@ import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict' ...@@ -39,32 +41,88 @@ import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import useInforDisclosureStore from 'mocp/store/inforDisclosure' import useInforDisclosureStore from 'mocp/store/inforDisclosure'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { onUnload } from '@dcloudio/uni-app' 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 inforDisclosure = useInforDisclosureStore()
const {searchData} = storeToRefs(fleetStore) const {searchData} = storeToRefs(inforDisclosure)
const tabList = [
{
name: '当前通报',
value: 1
},
{
name: '历史通报',
value: 2
}
]
const goDetails = (data) => { const goDetails = (data) => {
uni.$mocpJump.navigateTo('/panel/fleet/details', {id: data.id}).then(() => { uni.$mocpJump.navigateTo('/panel/inforDisclosure/details', {id: data.id}).then(() => {
fleetStore.setState('details', data) 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 = () => { const handleRightClick = () => {
uni.$mocpJump.redirectTo('/panel/fleet/search') uni.$mocpJump.redirectTo('/panel/inforDisclosure/search')
} }
//刷新 //刷新
const paging = ref() const paging = ref()
uni.$on('inforDisclosure', () => { uni.$on('inforDisclosureReload', () => {
paging.value?.reload() paging.value?.reload()
}) })
onUnload(() => { onUnload(() => {
uni.$off('inforDisclosure') uni.$off('inforDisclosureReload')
}) })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'mocpStatic/css/list.scss'; @import 'mocpStatic/css/list.scss';
@import './constants/fleet.scss'; //@import './constants/fleet.scss';
</style> </style>
...@@ -74,12 +74,42 @@ ...@@ -74,12 +74,42 @@
></global-picker> ></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="完成状态" prop="guarantee" :borderBottom="true"> <up-form-item label="完成状态" prop="rlease_state" :borderBottom="true">
<global-picker <global-picker
pickAlign="right" pickAlign="right"
v-model="formData.guarantee" v-model="formData.rlease_state"
clearable 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 filter
></global-picker> ></global-picker>
</up-form-item> </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