import * as WebBrowser from 'expo-web-browser'; import * as React from 'react'; import { StyleSheet, View, FlatList } from 'react-native'; import { Div, Button, Text, Avatar, Image } from 'react-native-magnus'; import { Flex } from '@ant-design/react-native'; import { TouchableRipple } from 'react-native-paper'; import { useTranslation } from 'react-i18next'; import { useCreation, useRequest } from '@umijs/hooks'; import { useFocusEffect } from '@react-navigation/native'; import useModel from 'flooks'; import Toast from '../../flooks/Toast'; import Order from './model'; import Header from './Header'; // 头部 import Time from '../../Utils/TimeUtils'; import MapMarkImg from '../Map/MapMarkImg'; import { getStatusInfo, getGoodsInfo } from '../../Utils/OrderUtils'; export default function OrderScreen({ navigation }) { const { t } = useTranslation(); const [orderList, setorderList] = React.useState(); const { success, warnning } = useModel(Toast, []); const { again } = useModel(Order, []); const orderRequest = useRequest('/orderInfo/my?sort=id,desc', { manual: true, onSuccess: (result) => { setorderList(result.content); }, }); useFocusEffect( React.useCallback(() => { orderRequest.run(); }, []) ); return ( <>
orderRequest.run()} refreshing={orderRequest.loading} contentContainerStyle={styles.list} data={orderList} renderItem={({ item, index }) => ( { navigation.navigate(name || 'OrderDetail', { orderId: item.id, }); }} goMerchant={() => { again(item.id).then(() => { navigation.navigate('MerchantDetail', { merchantId: item.merchantId, }); }); }} index={index} connect={(type) => { if (type === 'merchant') { if (!item.muserId) { warnning('商家信息有误请联系客服帮你催单'); } else { navigation.navigate('Chat', { toUserId: item.muserId, toUserName: item.merShowName, }); } } }} /> )} keyExtractor={(item) => item.id.toString()} /> ); } // 订单组件 function Item({ merchant = {}, info, goNext, orderGoodsSpecs, goMerchant, connect, }) { const { t } = useTranslation(); const orderGoodsInfo = getGoodsInfo(orderGoodsSpecs); const statusInfo = getStatusInfo(info); const finish = info.riderStatus === 'CARRY_OUT'; const Allfinish = info.status === 'COMPLETED'; return (
{info.merShowName} {finish || Allfinish || statusInfo.isRefund ? ( {t('yi-song-da')} ) : ( {t('yu-ji')} {new Time( info.timeOfArrival, 'yyyy-MM-DD HH:mm:ss' ).getFormat('HH:mm')} {t('song-da')} )}
{t('ding-dan-shi-jian')}: {info.orderTime}
{t('ding-dan-shang-pin')} {orderGoodsInfo.name} {t('deng')} {orderGoodsInfo.num} {t('jian2')} ¥{info.realAmount}
{!statusInfo.isRefund && ( )} {info.status === 'UNPAID' && ( )} {!statusInfo.isRefund && (finish && !Allfinish ? ( ) : ( ))} {finish && !statusInfo.isRefund && ( )} ); } const styles = StyleSheet.create({ item: { paddingVertical: 20, paddingHorizontal: 10, backgroundColor: '#fff', borderRadius: 3, flex: 1, }, list: { padding: 15, }, icon: { width: 53, height: 53, borderRadius: 3, backgroundColor: '#eee', }, main: { marginLeft: 5, }, orderDetail: { paddingVertical: 10, borderTopWidth: 1, borderColor: '#E5E5E5', marginTop: 10, }, btns: { paddingTop: 15, }, });