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 本地开发
第一次开发,请先[部署教程](docs/deploy/docker.md),需要部署数据库.
第一次开发,请先[部署教程](../deploy/docker.md),需要部署数据库.
## 环境变量配置

View File

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

View File

@@ -140,37 +140,46 @@ const Home = () => {
position={'relative'}
flexDirection={'column'}
alignItems={'center'}
pt={'20vh'}
h={'100%'}
overflow={'overlay'}
>
<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
my={5}
fontSize={['xl', '3xl']}
h={'auto'}
py={[2, 3]}
onClick={() => router.push(`/model`)}
<Flex
flexDirection={'column'}
alignItems={'center'}
mt={'22vh'}
position={'absolute'}
userSelect={'none'}
>
</Button>
<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>
<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}>
<Markdown source={data} isChatting={false} />
</Card>