import React, { useCallback, useRef } from 'react';
import { Box, Flex, useTheme } from '@chakra-ui/react';
import { useGlobalStore } from '@/store/global';
import { useRouter } from 'next/router';
import dynamic from 'next/dynamic';
import { clearCookie } from '@/utils/user';
import { useUserStore } from '@/store/user';
import { useConfirm } from '@/hooks/useConfirm';
import PageContainer from '@/components/PageContainer';
import SideTabs from '@/components/SideTabs';
import Tabs from '@/components/Tabs';
import UserInfo from './components/Info';
const BillTable = dynamic(() => import('./components/BillTable'), {
ssr: false
});
const PayRecordTable = dynamic(() => import('./components/PayRecordTable'), {
ssr: false
});
const InformTable = dynamic(() => import('./components/InformTable'), {
ssr: false
});
enum TabEnum {
'info' = 'info',
'bill' = 'bill',
'pay' = 'pay',
'inform' = 'inform',
'loginout' = 'loginout'
}
const NumberSetting = ({ currentTab }: { currentTab: `${TabEnum}` }) => {
const tabList = useRef([
{ icon: 'meLight', label: '个人信息', id: TabEnum.info, Component: },
{ icon: 'billRecordLight', label: '消费记录', id: TabEnum.bill, Component: },
{ icon: 'payRecordLight', label: '充值记录', id: TabEnum.pay, Component: },
{ icon: 'informLight', label: '通知', id: TabEnum.inform, Component: },
{ icon: 'loginoutLight', label: '登出', id: TabEnum.loginout, Component: () => <>> }
]);
const { openConfirm, ConfirmChild } = useConfirm({
content: '确认退出登录?'
});
const router = useRouter();
const theme = useTheme();
const { isPc } = useGlobalStore();
const { setUserInfo } = useUserStore();
const setCurrentTab = useCallback(
(tab: string) => {
if (tab === TabEnum.loginout) {
openConfirm(() => {
clearCookie();
setUserInfo(null);
router.replace('/login');
})();
} else {
router.replace({
query: {
currentTab: tab
}
});
}
},
[openConfirm, router, setUserInfo]
);
return (
{isPc ? (
) : (
({
id: item.id,
label: item.label
}))}
activeId={currentTab}
onChange={setCurrentTab}
/>
)}
{currentTab === TabEnum.info && }
{currentTab === TabEnum.bill && }
{currentTab === TabEnum.pay && }
{currentTab === TabEnum.inform && }
);
};
export async function getServerSideProps({ query }: any) {
return {
props: {
currentTab: query?.currentTab || TabEnum.info
}
};
}
export default NumberSetting;