diff --git a/src/constants/theme.ts b/src/constants/theme.ts index e5c6410e2..3c3c1cb76 100644 --- a/src/constants/theme.ts +++ b/src/constants/theme.ts @@ -90,9 +90,6 @@ export const theme = extendTheme({ fonts: { body: '-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"' }, - fontWeights: { - bold: 500 - }, breakpoints: { sm: '900px', md: '1200px', diff --git a/src/pages/api/model/update.ts b/src/pages/api/model/update.ts index aeb8b90c4..31ef0eb3e 100644 --- a/src/pages/api/model/update.ts +++ b/src/pages/api/model/update.ts @@ -9,7 +9,7 @@ import { authModel } from '@/service/utils/auth'; /* 获取我的模型 */ export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { - const { name, search, share, service, security, systemPrompt, temperature } = + const { name, avatar, search, share, service, security, systemPrompt, temperature } = req.body as ModelUpdateParams; const { modelId } = req.query as { modelId: string }; const { authorization } = req.headers; @@ -40,6 +40,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< }, { name, + avatar, systemPrompt, temperature, 'share.isShare': share.isShare, diff --git a/src/pages/model/detail/components/ModelEditForm.tsx b/src/pages/model/detail/components/ModelEditForm.tsx index 7cdb77c2a..88c5be608 100644 --- a/src/pages/model/detail/components/ModelEditForm.tsx +++ b/src/pages/model/detail/components/ModelEditForm.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useCallback } from 'react'; import { Box, Card, @@ -15,7 +15,8 @@ import { Button, Select, Grid, - Switch + Switch, + Image } from '@chakra-ui/react'; import { QuestionOutlineIcon } from '@chakra-ui/icons'; import type { ModelSchema } from '@/types/mongoSchema'; @@ -23,6 +24,9 @@ import { UseFormReturn } from 'react-hook-form'; import { modelList, ModelVectorSearchModeMap } from '@/constants/model'; import { formatPrice } from '@/utils/user'; import { useConfirm } from '@/hooks/useConfirm'; +import { useSelectFile } from '@/hooks/useSelectFile'; +import { useToast } from '@/hooks/useToast'; +import { fileToBase64 } from '@/utils/file'; const ModelEditForm = ({ formHooks, @@ -40,11 +44,50 @@ const ModelEditForm = ({ }); const { register, setValue, getValues } = formHooks; const [refresh, setRefresh] = useState(false); + const { File, onOpen: onOpenSelectFile } = useSelectFile({ + fileType: '.jpg,.png', + multiple: false + }); + const { toast } = useToast(); + + const onSelectFile = useCallback( + async (e: File[]) => { + const file = e[0]; + if (!file) return; + + if (file.size > 100 * 1024) { + return toast({ + title: '头像需小于 100kb', + status: 'warning' + }); + } + + const base64 = (await fileToBase64(file)) as string; + setValue('avatar', base64); + setRefresh((state) => !state); + }, + [setValue, toast] + ); return ( <> 基本信息 + + + 头像: + + {'avatar'} + @@ -167,7 +210,7 @@ const ModelEditForm = ({ 系统提示词