You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

61 lines
2.2 KiB

import { List, NavBar, SpinLoading, Toast } from 'antd-mobile';
import { UnorderedListOutline, SetOutline, UploadOutline, LoopOutline } from 'antd-mobile-icons';
import { useNavigate } from 'react-router-dom';
import { useAppDispatch, useAppSelector } from '../utils/hooks';
import { syncBaseData } from '../store/features/baseData';
export default function Mine2() {
const navigate = useNavigate();
const dispatch = useAppDispatch();
const baseState = useAppSelector((state) => state.baseData);
const onSync = async () => {
const res = await dispatch(syncBaseData()).unwrap();
if (!res.success) {
Toast.show(res.message);
}
};
return (
<div>
<NavBar className="bg-white" back={null}>
</NavBar>
<div className="home-page-content overflow-x-hidden overflow-y-auto pt-3">
<List>
<List.Item prefix={<UnorderedListOutline />} onClick={() => navigate('/measure/records')}>
</List.Item>
<List.Item prefix={<UploadOutline />} onClick={() => navigate('/measure/upload')}>
</List.Item>
<List.Item prefix={<SetOutline />} onClick={() => navigate('/profile/setting')}>
</List.Item>
<List.Item prefix={<LoopOutline />} onClick={onSync}>
<div className="flex justify-between">
<span></span>
{baseState.syncBaseProgress.finish ? (
<div>
{baseState.syncBaseProgress.error ? (
<span className="text-xs text-[red]">{baseState.syncBaseProgress.msg}</span>
) : (
<span className="text-xs text-[green]">
{baseState.syncBaseProgress.progress >= 90 ? '同步完成' : ''}
</span>
)}
</div>
) : (
<div className="flex items-center gap-2">
<span className="text-xs">{`${baseState.syncBaseProgress.progress}%`}</span>
<SpinLoading style={{ '--size': '16px' }} />
</div>
)}
</div>
</List.Item>
</List>
</div>
</div>
);
}