diff --git a/src/components/UserSettingsModal.jsx b/src/components/UserSettingsModal.jsx index f3d9343..6fce3f6 100644 --- a/src/components/UserSettingsModal.jsx +++ b/src/components/UserSettingsModal.jsx @@ -1,294 +1,338 @@ -import React, { useEffect, useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { updateProfileThunk } from '../store/auth/auth.thunk'; -import ChangePasswordModal from './ChangePasswordModal'; +import React, { useEffect, useState } from "react"; +import { useDispatch, useSelector } from "react-redux"; +import { updateProfileThunk } from "../store/auth/auth.thunk"; +import ChangePasswordModal from "./ChangePasswordModal"; // 部门和组别的映射关系 const departmentGroups = { - 达人部门: ['达人'], - 商务部门: ['商务'], - 样本中心: ['样本'], - 产品部门: ['产品'], - AI自媒体: ['AI自媒体'], - HR: ['HR'], - 技术部门: ['技术'], + 达人部门: ["达人"], + 商务部门: ["商务"], + 样本中心: ["样本"], + 产品部门: ["产品"], + AI自媒体: ["AI自媒体"], + HR: ["HR"], + 技术部门: ["技术"], }; function UserSettingsModal({ show, onClose }) { - const { user, loading } = useSelector((state) => state.auth); - const [lastPasswordChange] = useState('30天前'); // This would come from backend in real app - const [formData, setFormData] = useState({}); - const [showChangePassword, setShowChangePassword] = useState(false); - // 可选的组别列表 - const [availableGroups, setAvailableGroups] = useState([]); + const { user, loading } = useSelector((state) => state.auth); + const [lastPasswordChange] = useState("30天前"); // This would come from backend in real app + const [formData, setFormData] = useState({}); + const [showChangePassword, setShowChangePassword] = useState(false); + // 可选的组别列表 + const [availableGroups, setAvailableGroups] = useState([]); - const [submitted, setSubmitted] = useState(false); - const [errors, setErrors] = useState({}); + const [submitted, setSubmitted] = useState(false); + const [errors, setErrors] = useState({}); - const dispatch = useDispatch(); + const dispatch = useDispatch(); - useEffect(() => { - if (user) { - setFormData({ - name: user.name, - email: user.email, - department: user.department, - group: user.group, - }); - } - }, [user]); + useEffect(() => { + if (user) { + setFormData({ + name: user.name, + email: user.email, + department: user.department, + group: user.group, + }); + } + }, [user]); - // 当部门变化时更新可用的组别 - useEffect(() => { - if (formData.department && departmentGroups[formData.department]) { - setAvailableGroups(departmentGroups[formData.department]); - } else { - setAvailableGroups([]); - } - }, [formData.department]); + // 当部门变化时更新可用的组别 + useEffect(() => { + if (formData.department && departmentGroups[formData.department]) { + setAvailableGroups(departmentGroups[formData.department]); + } else { + setAvailableGroups([]); + } + }, [formData.department]); - if (!show) return null; + if (!show) return null; - const handleInputChange = (e) => { - const { name, value } = e.target; + const handleInputChange = (e) => { + const { name, value } = e.target; - if (name === 'department') { - setFormData({ - ...formData, - [name]: value, - ['group']: '', - }); - } else { - setFormData({ - ...formData, - [name]: value, - }); - } + if (name === "department") { + setFormData({ + ...formData, + [name]: value, + ["group"]: "", + }); + } else { + setFormData({ + ...formData, + [name]: value, + }); + } - // 清除对应的错误信息 - if (errors[name]) { - setErrors({ - ...errors, - [name]: '', - }); - } - }; + // 清除对应的错误信息 + if (errors[name]) { + setErrors({ + ...errors, + [name]: "", + }); + } + }; - const handleSubmit = async (e) => { - e.preventDefault(); - setSubmitted(true); + const handleSubmit = async (e) => { + e.preventDefault(); + setSubmitted(true); - if (validateForm()) { - console.log('Form submitted successfully!'); - console.log('Update data:', formData); - try { - await dispatch(updateProfileThunk(formData)).unwrap(); - } catch (error) { - console.error('Signup failed:', error); - } - } - }; + if (validateForm()) { + console.log("Form submitted successfully!"); + console.log("Update data:", formData); + try { + await dispatch(updateProfileThunk(formData)).unwrap(); + } catch (error) { + console.error("Signup failed:", error); + } + } + }; - const validateForm = () => { - const newErrors = {}; - if (!formData.email) { - newErrors.email = 'Email is required'; - } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(formData.email)) { - newErrors.email = 'Invalid email address'; - } + const validateForm = () => { + const newErrors = {}; + if (!formData.email) { + newErrors.email = "Email is required"; + } else if ( + !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(formData.email) + ) { + newErrors.email = "Invalid email address"; + } - if (!formData.name) { - newErrors.name = 'Name is required'; - } + if (!formData.name) { + newErrors.name = "Name is required"; + } - if (!formData.department) { - newErrors.department = '请选择部门'; - } + if (!formData.department) { + newErrors.department = "请选择部门"; + } - if (!formData.group) { - newErrors.group = '请选择组别'; - } + if (!formData.group) { + newErrors.group = "请选择组别"; + } - setErrors(newErrors); - return Object.keys(newErrors).length === 0; - }; + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; - return ( -