diff --git a/public/favicon.ico b/public/favicon.ico index 29f0ff4..56bab80 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/components/FileUpload/FileUpload.tsx b/src/components/FileUpload/FileUpload.tsx index 6c8672f..83e3185 100644 --- a/src/components/FileUpload/FileUpload.tsx +++ b/src/components/FileUpload/FileUpload.tsx @@ -62,7 +62,6 @@ const FileUpload: React.FC = ({ // 监听value变化 useEffect(() => { - // 处理字符串URL值(这是关键修复) if (typeof value === 'string' && value) { const file: Partial = { diff --git a/src/dicts/friendLinkDict.ts b/src/dicts/friendLinkDict.ts index cdf6121..189ce58 100644 --- a/src/dicts/friendLinkDict.ts +++ b/src/dicts/friendLinkDict.ts @@ -26,14 +26,15 @@ export const useFriendLinkDict = () => { }; // 友情链接分类类型选项 + // type int 是 类型(0.普通展示、1.重点展示) const categoryTypeOptions = [ { label: intl.formatMessage({ id: 'friendLink.category.type.normal' }), - value: 'normal', + value: '0', }, { label: intl.formatMessage({ id: 'friendLink.category.type.featured' }), - value: 'featured', + value: '1', }, ]; diff --git a/src/pages/aboutManage/aboutManage.tsx b/src/pages/aboutManage/aboutManage.tsx index 300d3bc..05ca606 100644 --- a/src/pages/aboutManage/aboutManage.tsx +++ b/src/pages/aboutManage/aboutManage.tsx @@ -4,6 +4,7 @@ import { Card, Form, Input, Button, message, Tabs, Spin } from 'antd'; import WangEditor from '@/components/WangEidtor/WangEidtor'; import { getAboutUs, updateAboutUs, AboutUsRequest } from '@/servers/api/about'; import styles from './aboutManage.less'; +import FileUpload from '@/components/FileUpload' const { TabPane } = Tabs; @@ -44,6 +45,8 @@ const AboutManage: React.FC = () => { contactsEmailEn: response.data.contactsEmailEn, contactsConsult: response.data.contactsConsult, contactsConsultEn: response.data.contactsConsultEn, + // address_img varchar(255) 地址地图图片 + addressImg: response.data.addressImg, }); } else { message.error(response.message || intl.formatMessage({ id: 'aboutManage.fetchFailed' })); @@ -72,15 +75,19 @@ const AboutManage: React.FC = () => { const values = await form.validateFields(); setSubmitting(true); + // 处理上传文件字段 + const formattedValues = { ...values }; + if (values.addressImg && Array.isArray(values.addressImg) && values.addressImg.length > 0) { + // 如果addressImg是文件数组,提取URL + formattedValues.addressImg = values.addressImg[0]?.url || ''; + } + // 准备提交数据 const submitData: AboutUsRequest = { ...aboutData, - ...values, + ...formattedValues, }; - // 保留原有的addressImg,如果没有则设置为空字符串 - submitData.addressImg = aboutData?.addressImg || ''; - const response = await updateAboutUs(submitData); if (response && response.success) { message.success(intl.formatMessage({ id: 'aboutManage.saveSuccess' })); @@ -141,6 +148,30 @@ const AboutManage: React.FC = () => { layout="vertical" initialValues={aboutData || {}} > + { + if (typeof value === 'string') { + return [ + { + uid: '-1', + name: 'image.jpg', + status: 'done', + url: value, + } + ]; + } + return value; + }} + > + + { // 处理编辑分类 const handleEditCategory = (record: API.CategoryType) => { - setIsEdit(true); - setCurrentCategory(record); - form.setFieldsValue({ - name: record.name, - type: record.type, - parentId: record.parentId, - orderBy: record.orderBy, - remark: record.remark, + getCategoryDetail(record.id).then((res: API.Response) => { + if (res.success && res.data) { + setIsEdit(true); + setCurrentCategory(res.data); + form.setFieldsValue({ + name: res.data.name, + type: res.data.type, + parentId: res.data.parentId, + orderBy: res.data.orderBy, + remark: res.data.remark, + }); + setModalVisible(true); + } }); - setModalVisible(true); }; // 处理删除分类 diff --git a/src/pages/friendLinkManage/friendLinkManage.tsx b/src/pages/friendLinkManage/friendLinkManage.tsx index 2364683..9466277 100644 --- a/src/pages/friendLinkManage/friendLinkManage.tsx +++ b/src/pages/friendLinkManage/friendLinkManage.tsx @@ -109,18 +109,19 @@ const FriendLinkManage: React.FC = () => { .then((res: API.Response) => { if (res.success && res.data) { const detail = res.data; - console.log('Detail data:', detail); - // 设置表单初始值,包括缩略图URL - form.setFieldsValue({ + // 设置表单初始值 + const formValues = { name: detail.name, nameEn: detail.nameEn, url: detail.url, orderBy: parseInt(detail.orderBy), classificationId: detail.classificationId, - // 设置为URL字符串,组件会自动处理 - thumbnail: detail.thumbnail, - }); + // 直接使用缩略图URL字符串 + thumbnail: detail.thumbnail || '', + }; + + form.setFieldsValue(formValues); } else { message.error(intl.formatMessage({ id: 'friendLink.detail.failed' })); } @@ -236,14 +237,21 @@ const FriendLinkManage: React.FC = () => { // 处理表单提交 const handleModalSubmit = () => { form.validateFields().then(async (values) => { - console.log('Form values:', values); try { - // 现在thumbnail字段已经直接是URL字符串,不需要额外处理 - const formData = { - ...values, - }; + // 处理表单数据 + const formData = { ...values }; - console.log('Submitting form data:', formData); + // 处理缩略图字段 + if (formData.thumbnail && Array.isArray(formData.thumbnail) && formData.thumbnail.length > 0) { + // 提取URL + formData.thumbnail = formData.thumbnail[0]?.url || ''; + } else if (typeof formData.thumbnail === 'string' && formData.thumbnail) { + // 如果已经是字符串URL,直接使用 + // 这种情况可能出现在编辑模式下 + formData.thumbnail = formData.thumbnail; + } else { + formData.thumbnail = ''; + } let res; if (isEdit) { @@ -350,12 +358,7 @@ const FriendLinkManage: React.FC = () => {
- {selectedRowKeys.length > 0 && ( - {intl.formatMessage({ id: 'friendLink.selectedCount' }, { count: selectedRowKeys.length })} + {intl.formatMessage( + { id: 'friendLink.selectedCount' }, + { count: selectedRowKeys.length }, + )} )}
@@ -470,8 +476,18 @@ const FriendLinkManage: React.FC = () => { { - return e[0].url; + normalize={(value) => { + if (typeof value === 'string' && value) { + return [ + { + uid: '-1', + name: 'thumbnail.jpg', + status: 'done', + url: value, + } + ]; + } + return value; }} rules={[ { @@ -484,7 +500,7 @@ const FriendLinkManage: React.FC = () => { maxCount={1} maxSize={2} allowedTypes={['jpg', 'png']} - listType="picture" + listType="picture-card" tip={intl.formatMessage( { id: 'component.fileUpload.fileTypeTip' }, { types: 'JPG, PNG' },