import * as React from 'react'; import { View, Text, TouchableHighlight, TouchableOpacity, ImageURISource, } from 'react-native'; import FastImage, { Source } from 'react-native-fast-image'; import { useNavigation, useRoute } from '@react-navigation/native'; import { useDispatch, useSelector } from 'react-redux'; import { RematchDispatch, Models } from '@rematch/core'; import { Picker, ActivityIndicator } from '@ant-design/react-native'; import { ScreenNavigationProp,ScreenRouteProp } from '../../../interface'; import { AppContext, AppContextProps } from '../../../navigation'; import Price from '../../../components/Price'; import CaiNiao from '../../../icon/CaiNiao'; import { color } from '../../../constants'; import { RootState } from '../../../store'; import { Breakage } from '../../../store/models/inspection'; import { SERVICE_URL } from '../../../constants'; import ImageGrid from './ImageGrid'; import styles from './style'; interface BreakageCardProps { onDeleteBreakage(id?:number):void; onChangeBreakage(value:any, id?:number):void; data:Breakage; rateData: Array; photoTotal?: number; } const BreakageCard:React.FC = ({ onDeleteBreakage, onChangeBreakage, data, rateData, photoTotal=3 }) => { const { uploadings } = useSelector((state:RootState) => state.common); const { appToken } = React.useContext(AppContext); const { navigate } = useNavigation>(); const photos:Array = data._photos; const photosLength:number = photos.length; return ( onChangeBreakage(v, data.id)} cascade > {`${data.componentCname || '部位'}/${data.repairName || '维修方式'}/${data.length}x${data.width}cm`} onDeleteBreakage(data.id)} style={styles.breakageCardDelete} > { photos.map(uri => { const source:Source = uri.indexOf('file://') > -1 ? { uri } : { uri: `${SERVICE_URL}/yms/ctn-repair/getFile/${uri}`, headers: { Authorization: `Bearer ${appToken}` } } return ( console.log('start--->',uri)} onLoadEnd={() => console.log('end--->', uri)} /> ) }) } { photosLength < photoTotal && navigate('Camera', { breakageId: data.id })}> <> {photosLength}/{photoTotal} } ) } const repairComponentParams:Array = [ 'componentCname', 'repairName', 'length', 'width' ] export default ():React.ReactElement => { const { inspection } = useDispatch>(); const { ctnRepairParamsList, treeRate, rate }= useSelector((state:RootState) => state.inspection); const loading = useSelector((state:RootState) => state.loading); const fetchRateByCtnOwnering = loading.effects.inspection.fetchRateByCtnOwner; const handleAddBreakage = React.useCallback(() => { const id = ctnRepairParamsList.length+1; const breakage:Breakage = { id, componentCname: '', repairName: '', length: 0, width: 0, customerRate: 0, raTiCustomerRate: 0, photos: [], _photos: [] } inspection.updateBreakages({ breakage }) }, [ctnRepairParamsList, inspection]) const handleDeleteBreakage = React.useCallback((id:number) => { inspection.updateBreakages({ id, type: 'delete' }); inspection.computedFee(); }, [inspection]); const handleChangeBreakage = React.useCallback((values, id:number) => { const oldBreakage = ctnRepairParamsList.filter(item => item.id === id)[0]; const changedBreakageFields:Partial = {}; const size:string[] = values[2].split('x'); values.splice(2,1,...size); const currentRate:Breakage = rate.filter((item:Breakage) => item.componentCname === values[0] && item.repairName === values[1] && item.length === Number(values[2]) && item.width === Number(values[3]) )[0]??{}; repairComponentParams.forEach((name, index) => { changedBreakageFields[name] = values[index] }); changedBreakageFields['customerRate'] = currentRate['customerRate']; changedBreakageFields['raTiCustomerRate'] = currentRate['raTiCustomerRate']; inspection.updateBreakages({ breakage: { ...oldBreakage, ...changedBreakageFields }, id, type: 'update' }); inspection.computedFee(); }, [ctnRepairParamsList, rate, inspection]) return ( <> { fetchRateByCtnOwnering ? : 添加残损信息({ctnRepairParamsList.length}) } { ctnRepairParamsList.map(breakage => { return ( ) }) } ) }