fix: home;perf: phone adapt

This commit is contained in:
archer
2023-05-12 11:07:44 +08:00
parent 1226c3efb7
commit 340de071a9
3 changed files with 111 additions and 75 deletions

View File

@@ -1,6 +1,6 @@
# FastGpt 本地开发 # FastGpt 本地开发
第一次开发,请先[部署教程](docs/deploy/docker.md),需要部署数据库. 第一次开发,请先[部署教程](../deploy/docker.md),需要部署数据库.
## 环境变量配置 ## 环境变量配置

View File

@@ -359,26 +359,26 @@ const Chat = ({
]); ]);
// 删除一句话 // 删除一句话
const delChatRecord = useCallback(async () => { const delChatRecord = useCallback(
if (!messageContextMenuData) return; async (index: number, historyId: string) => {
setIsLoading(true); if (!messageContextMenuData) return;
const index = chatData.history.findIndex( setIsLoading(true);
(item) => item._id === messageContextMenuData.message._id
);
try { try {
// 删除数据库最后一句 // 删除数据库最后一句
await delChatRecordByIndex(chatId, messageContextMenuData.message._id); await delChatRecordByIndex(chatId, historyId);
setChatData((state) => ({ setChatData((state) => ({
...state, ...state,
history: state.history.filter((_, i) => i !== index) history: state.history.filter((_, i) => i !== index)
})); }));
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }
setIsLoading(false); setIsLoading(false);
}, [chatData.history, chatId, messageContextMenuData, setChatData, setIsLoading]); },
[chatId, messageContextMenuData, setChatData, setIsLoading]
);
// 复制内容 // 复制内容
const onclickCopy = useCallback( const onclickCopy = useCallback(
@@ -485,7 +485,7 @@ const Chat = ({
} }
setMessageContextMenuData({ setMessageContextMenuData({
left: e.clientX, left: e.clientX - 20,
top: e.clientY, top: e.clientY,
message message
}); });
@@ -686,35 +686,51 @@ const Chat = ({
<Flex key={item._id} alignItems={'flex-start'} py={2} px={[2, 4]}> <Flex key={item._id} alignItems={'flex-start'} py={2} px={[2, 4]}>
{item.obj === 'Human' && <Box flex={1} />} {item.obj === 'Human' && <Box flex={1} />}
{/* avatar */} {/* avatar */}
<Box <Menu autoSelect={false} isLazy>
{...(item.obj === 'AI' <MenuButton
? { as={Box}
order: 1, {...(item.obj === 'AI'
mr: ['6px', 4], ? {
cursor: 'pointer', order: 1,
onClick: () => router.push(`/model?modelId=${chatData.modelId}`) mr: ['6px', 4],
} cursor: 'pointer',
: { onClick: () => isPc && router.push(`/model?modelId=${chatData.modelId}`)
order: 3, }
ml: ['6px', 4] : {
})} order: 3,
> ml: ['6px', 4]
<Tooltip label={item.obj === 'AI' ? 'AI助手详情' : ''}> })}
<Image >
className="avatar" <Tooltip label={item.obj === 'AI' ? 'AI助手详情' : ''}>
src={ <Image
item.obj === 'Human' className="avatar"
? userInfo?.avatar src={
: chatData.model.avatar || LOGO_ICON item.obj === 'Human'
} ? userInfo?.avatar
alt="avatar" : chatData.model.avatar || LOGO_ICON
w={['20px', '34px']} }
h={['20px', '34px']} alt="avatar"
borderRadius={'50%'} w={['20px', '34px']}
objectFit={'contain'} h={['20px', '34px']}
/> borderRadius={'50%'}
</Tooltip> objectFit={'contain'}
</Box> />
</Tooltip>
</MenuButton>
{!isPc && (
<MenuList fontSize={'sm'} minW={'100px !important'}>
{chatData.model.canUse && item.obj === 'AI' && (
<MenuItem
onClick={() => router.push(`/model?modelId=${chatData.modelId}`)}
>
AI助手详情
</MenuItem>
)}
<MenuItem onClick={() => onclickCopy(item.value)}></MenuItem>
<MenuItem onClick={() => delChatRecord(index, item._id)}></MenuItem>
</MenuList>
)}
</Menu>
{/* message */} {/* message */}
<Flex order={2} maxW={['calc(100% - 50px)', '80%']}> <Flex order={2} maxW={['calc(100% - 50px)', '80%']}>
{item.obj === 'AI' ? ( {item.obj === 'AI' ? (
@@ -898,7 +914,18 @@ const Chat = ({
<MenuItem onClick={() => onclickCopy(messageContextMenuData.message.value)}> <MenuItem onClick={() => onclickCopy(messageContextMenuData.message.value)}>
</MenuItem> </MenuItem>
<MenuItem onClick={delChatRecord}></MenuItem> <MenuItem
onClick={() =>
delChatRecord(
chatData.history.findIndex(
(item) => item._id === messageContextMenuData.message._id
),
messageContextMenuData.message._id
)
}
>
</MenuItem>
</MenuList> </MenuList>
</Menu> </Menu>
</Box> </Box>

View File

@@ -140,37 +140,46 @@ const Home = () => {
position={'relative'} position={'relative'}
flexDirection={'column'} flexDirection={'column'}
alignItems={'center'} alignItems={'center'}
pt={'20vh'} h={'100%'}
overflow={'overlay'} overflow={'overlay'}
> >
<Box id={'particles-js'} position={'absolute'} top={0} left={0} right={0} bottom={0} /> <Box id={'particles-js'} position={'absolute'} top={0} left={0} right={0} bottom={0} />
<Image src="/icon/logo.png" w={['70px', '120px']} h={['70px', '120px']} alt={''}></Image>
<Box
fontWeight={'bold'}
fontSize={['40px', '70px']}
letterSpacing={'5px'}
color={'myBlue.600'}
>
FastGpt
</Box>
<Box color={'myBlue.600'} fontSize={['30px', '50px']}>
</Box>
<Box color={'myBlue.600'} fontSize={['30px', '50px']}>
AI
</Box>
<Button <Flex
my={5} flexDirection={'column'}
fontSize={['xl', '3xl']} alignItems={'center'}
h={'auto'} mt={'22vh'}
py={[2, 3]} position={'absolute'}
onClick={() => router.push(`/model`)} userSelect={'none'}
> >
<Image src="/icon/logo.png" w={['70px', '120px']} h={['70px', '120px']} alt={''}></Image>
</Button> <Box
fontWeight={'bold'}
fontSize={['40px', '70px']}
letterSpacing={'5px'}
color={'myBlue.600'}
>
FastGpt
</Box>
<Box color={'myBlue.600'} fontSize={['30px', '50px']}>
</Box>
<Box color={'myBlue.600'} fontSize={['30px', '50px']}>
AI
</Box>
<Box mt={'20vh'} w={'100%'} p={[5, 10]}> <Button
my={5}
fontSize={['xl', '3xl']}
h={'auto'}
py={[2, 3]}
onClick={() => router.push(`/model`)}
>
</Button>
</Flex>
<Box w={'100%'} mt={'100vh'} px={[5, 10]} pb={[5, 10]}>
<Card p={5} lineHeight={2}> <Card p={5} lineHeight={2}>
<Markdown source={data} isChatting={false} /> <Markdown source={data} isChatting={false} />
</Card> </Card>