From 3e2b4d2453e383f645c740d4d386e7d2c78f3eba Mon Sep 17 00:00:00 2001 From: sunqh <253801736@qq.com> Date: Tue, 27 Jan 2026 15:36:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E8=AE=BE=E7=BD=AE-=E5=A4=B4?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../List/components/CompanyEditModal.tsx | 5 ++-- .../Profile/components/ProfileEditForm.tsx | 28 +++++++++++-------- .../Dept/components/AdminDepEditModal.tsx | 5 ++-- src/pages/Staff/Dept/index.tsx | 2 +- .../Grp/components/AdminGrpEditModal.tsx | 5 ++-- src/pages/Staff/Grp/index.tsx | 5 ++-- .../Staff/List/components/AdminEditModal.tsx | 5 ++-- src/pages/Staff/List/index.tsx | 5 ++-- .../User/List/components/UserEditModal.tsx | 5 ++-- src/utils/http.ts | 18 +++++++++--- 10 files changed, 52 insertions(+), 31 deletions(-) diff --git a/src/pages/Company/List/components/CompanyEditModal.tsx b/src/pages/Company/List/components/CompanyEditModal.tsx index 947bff2..1ba6f86 100644 --- a/src/pages/Company/List/components/CompanyEditModal.tsx +++ b/src/pages/Company/List/components/CompanyEditModal.tsx @@ -1,4 +1,4 @@ -import { Button, DatePicker, Form, Input, notification, Select } from 'antd'; +import { App, Button, DatePicker, Form, Input, Select } from 'antd'; import TextArea from 'antd/lib/input/TextArea'; import dayjs from 'dayjs'; import { stringify } from 'qs'; @@ -23,11 +23,12 @@ export const CompanyEditModal: React.FC = (props) => { const [title, setTitle] = useState(''); const [form] = Form.useForm(); const [data, setData] = useState(null); + const { notification } = App.useApp(); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 diff --git a/src/pages/Profile/components/ProfileEditForm.tsx b/src/pages/Profile/components/ProfileEditForm.tsx index c5ae1c6..4b17dc3 100644 --- a/src/pages/Profile/components/ProfileEditForm.tsx +++ b/src/pages/Profile/components/ProfileEditForm.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, notification, Upload } from 'antd'; +import { App, Button, Form, Input, Upload } from 'antd'; import type React from 'react'; import { useEffect, useRef, useState } from 'react'; import { AdminServices } from '@/services/AdminServices'; @@ -19,11 +19,12 @@ export const ProfileEditForm: React.FC = (props) => { const userInfo = useUserStore().user; const [previewUrl, setPreviewUrl] = useState(); const avatarFileRef = useRef(null); + const { notification } = App.useApp(); // 保存回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); } }; @@ -55,12 +56,6 @@ export const ProfileEditForm: React.FC = (props) => { formData.append('avatar', avatarFileRef.current); } - //console.log('formData entries:'); - // formData.forEach((value, key) => { - // console.log(key, value); - // }); - //console.log('formData', formData); - // 调用 useRequest editRequest(formData); } catch (error) { console.log('表单验证未通过', error); @@ -68,16 +63,25 @@ export const ProfileEditForm: React.FC = (props) => { }; useEffect(() => { - const uri = `${userInfo.avatar}?v=${encodeURIComponent(userInfo.update_date)}`; - console.log('uri', uri); + const avatar = userInfo.avatar; + + // 只在「没选择新头像」时,使用后端头像 + if (!avatarFileRef.current) { + const uri = avatar ? `/api/${avatar}?v=${encodeURIComponent(userInfo.update_date)}` : ''; + + setPreviewUrl(uri); + } + form.setFieldsValue({ username: userInfo.username, mobile: userInfo.mobile, email: userInfo.email, nickname: userInfo.nickname, - avatar: uri, // 默认头像 + //avatar: uri, // 默认头像 }); - setPreviewUrl(userInfo.avatar); + //setPreviewUrl(uri); + + avatarFileRef.current = null; }, [userInfo]); return ( diff --git a/src/pages/Staff/Dept/components/AdminDepEditModal.tsx b/src/pages/Staff/Dept/components/AdminDepEditModal.tsx index 9795da5..e9ac46e 100644 --- a/src/pages/Staff/Dept/components/AdminDepEditModal.tsx +++ b/src/pages/Staff/Dept/components/AdminDepEditModal.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, notification, Select } from 'antd'; +import { App, Button, Form, Input, Select } from 'antd'; import TextArea from 'antd/lib/input/TextArea'; import { stringify } from 'qs'; import type React from 'react'; @@ -22,11 +22,12 @@ export const AdminDepEditModal: React.FC = (props) => { const [title, setTitle] = useState(''); const [form] = Form.useForm(); const [data, setData] = useState(null); + const { notification } = App.useApp(); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 diff --git a/src/pages/Staff/Dept/index.tsx b/src/pages/Staff/Dept/index.tsx index f7b3589..4d01b04 100644 --- a/src/pages/Staff/Dept/index.tsx +++ b/src/pages/Staff/Dept/index.tsx @@ -48,7 +48,7 @@ const DepListForm: React.FC = () => { const { request: deleteAdminDepartmentRequest } = useRequest(AdminDepartmentServices.del, { onSuccessCodeZero: (res) => { if (res.err_code == 0) { - notification.success({ message: '删除成功' }); + notification.success({ title: '删除成功' }); page(params.curr_page); } }, diff --git a/src/pages/Staff/Grp/components/AdminGrpEditModal.tsx b/src/pages/Staff/Grp/components/AdminGrpEditModal.tsx index 6d56d32..4d3e8b6 100644 --- a/src/pages/Staff/Grp/components/AdminGrpEditModal.tsx +++ b/src/pages/Staff/Grp/components/AdminGrpEditModal.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, notification, Select, Space, Tree } from 'antd'; +import { App, Button, Form, Input, Select, Space, Tree } from 'antd'; import TextArea from 'antd/lib/input/TextArea'; import { stringify } from 'qs'; import type React from 'react'; @@ -26,11 +26,12 @@ export const AdminGrpEditModal: React.FC = (props) => { const [menuTree, setMenuTree] = useState([]); const [checkedKeys, setCheckedKeys] = useState([]); const [expandedKeys, setExpandedKeys] = useState([]); + const { notification } = App.useApp(); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); diff --git a/src/pages/Staff/Grp/index.tsx b/src/pages/Staff/Grp/index.tsx index dac2cc4..b29b054 100644 --- a/src/pages/Staff/Grp/index.tsx +++ b/src/pages/Staff/Grp/index.tsx @@ -1,4 +1,4 @@ -import { Button, DatePicker, Input, notification, Popconfirm, Select } from 'antd'; +import { App, Button, DatePicker, Input, Popconfirm, Select } from 'antd'; import { stringify } from 'qs'; import { useEffect, useRef, useState } from 'react'; import { FormItemPlugin, FormPlugin } from '@/components/FormPlugin'; @@ -33,6 +33,7 @@ const GrpListForm: React.FC = () => { const [ajaxData, setAjaxData] = useState({ count: 0, data: [] }); //const [showMoreSearch, setShowMoreSearch] = useState(false); const AdminGrpEditModalRef = useRef(null); + const { notification } = App.useApp(); const { loading: listLoading, request: listRequest } = useRequest(AdminGroupServices.getAdminGroupList, { onSuccessCodeZero: (res) => { @@ -46,7 +47,7 @@ const GrpListForm: React.FC = () => { const { request: deleteAdminGroupRequest } = useRequest(AdminGroupServices.del, { onSuccessCodeZero: (res) => { if (res.err_code == 0) { - notification.success({ message: '删除成功' }); + notification.success({ title: '删除成功' }); page(params.curr_page); } }, diff --git a/src/pages/Staff/List/components/AdminEditModal.tsx b/src/pages/Staff/List/components/AdminEditModal.tsx index 3d62072..0523af4 100644 --- a/src/pages/Staff/List/components/AdminEditModal.tsx +++ b/src/pages/Staff/List/components/AdminEditModal.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, notification, Select } from 'antd'; +import { App, Button, Form, Input, Select } from 'antd'; import { stringify } from 'qs'; import type React from 'react'; import { useImperativeHandle, useState } from 'react'; @@ -26,6 +26,7 @@ export const AdminEditModal: React.FC = (props) => { const [data, setData] = useState(null); const [department, setDepartment] = useState([]); const [group, setGroup] = useState([]); + const { notification } = App.useApp(); const { request: getAdminDepartmentAjaxListRequest } = useRequest( AdminDepartmentServices.getAdminDepartmentAjaxList, @@ -45,7 +46,7 @@ export const AdminEditModal: React.FC = (props) => { // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 diff --git a/src/pages/Staff/List/index.tsx b/src/pages/Staff/List/index.tsx index 2ba6d77..3614625 100644 --- a/src/pages/Staff/List/index.tsx +++ b/src/pages/Staff/List/index.tsx @@ -1,4 +1,4 @@ -import { Button, DatePicker, Input, notification, Popconfirm, Select } from 'antd'; +import { App, Button, DatePicker, Input, Popconfirm, Select } from 'antd'; import { stringify } from 'qs'; import { useEffect, useRef, useState } from 'react'; import { FormItemPlugin, FormPlugin } from '@/components/FormPlugin'; @@ -39,6 +39,7 @@ const AdminListForm: React.FC = () => { const [ajaxData, setAjaxData] = useState({ count: 0, data: [] }); const [showMoreSearch, setShowMoreSearch] = useState(false); const AdminEditModalRef = useRef(null); + const { notification } = App.useApp(); const { loading: listLoading, request: listRequest } = useRequest(AdminServices.getAdminList, { onSuccessCodeZero: (res) => { @@ -52,7 +53,7 @@ const AdminListForm: React.FC = () => { const { request: deleteAdminRequest } = useRequest(AdminServices.del, { onSuccessCodeZero: (res) => { if (res.err_code == 0) { - notification.success({ message: '删除成功' }); + notification.success({ title: '删除成功' }); page(params.curr_page); } }, diff --git a/src/pages/User/List/components/UserEditModal.tsx b/src/pages/User/List/components/UserEditModal.tsx index e490ca4..e5b7354 100644 --- a/src/pages/User/List/components/UserEditModal.tsx +++ b/src/pages/User/List/components/UserEditModal.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, notification, Select } from 'antd'; +import { App, Button, Form, Input, Select } from 'antd'; import TextArea from 'antd/lib/input/TextArea'; import { stringify } from 'qs'; import type React from 'react'; @@ -22,11 +22,12 @@ export const UserEditModal: React.FC = (props) => { const [title, setTitle] = useState(''); const [form] = Form.useForm(); const [data, setData] = useState(null); + const { notification } = App.useApp(); // 请求成功回调 const success = (res: any) => { if (res.err_code === 0) { - notification.success({ message: '保存成功' }); + notification.success({ title: '保存成功' }); props.onCallback?.(); setOpen(false); form.resetFields(); // 提交成功重置表单 diff --git a/src/utils/http.ts b/src/utils/http.ts index b7f58ee..3c7e7cc 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -19,11 +19,21 @@ import type { IAjaxDataBase } from './type'; const ajax = async (method: string, url: string, data: any, config?: any) => { try { + const headers: Record = { + 'X-Requested-With': 'XMLHttpRequest', + ...config?.headers, + }; + + // 判断是否是 FormData + if (!(data instanceof FormData)) { + headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; + } const res: IAjaxDataBase = await fetch(pathAddApiString(url), { - headers: { - 'X-Requested-With': 'XMLHttpRequest', - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - }, + // headers: { + // 'X-Requested-With': 'XMLHttpRequest', + // 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + // }, + headers, method: method, body: data, credentials: 'include',