From cd1ab80a5deb044274e1a4fb8764b0d8656a91c6 Mon Sep 17 00:00:00 2001 From: linxd <544554903@qq.com> Date: Mon, 14 Jul 2025 12:05:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=8B=E6=83=85=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E7=AE=A1=E7=90=86=E5=92=8C=E5=8F=8B=E6=83=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/favicon.ico | Bin 4286 -> 2620 bytes src/components/FileUpload/FileUpload.tsx | 1 - src/dicts/friendLinkDict.ts | 5 +- src/pages/aboutManage/aboutManage.tsx | 39 ++++++++++-- .../friendLinkManage/friendLinkCategory.tsx | 24 ++++--- .../friendLinkManage/friendLinkManage.tsx | 60 +++++++++++------- 6 files changed, 90 insertions(+), 39 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index 29f0ff411715e95fa7153b03d6a296af44a86267..56bab80e89dd05b25174711a4c30d2c2ef90903b 100644 GIT binary patch literal 2620 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 d%(ZPB@GgMmm5-a5>pZgtTFc^sc = ({ // 监听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' },