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 ( -
-
-
-
-
个人设置
- -
-
-
-
个人信息
-
- - -
-
- - - {submitted && errors.name &&
{errors.name}
} -
-
- - - {submitted && errors.email &&
{errors.email}
} -
-
- - {submitted && errors.department && ( -
{errors.department}
- )} -
-
- - {submitted && errors.group &&
{errors.group}
} -
-
- -
-
安全设置
-
-
-
- - 修改密码 -
- 上次修改:{lastPasswordChange} -
- -
-
- -
-
安全设置
-
-
-
- - 修改密码 -
- 上次修改:{lastPasswordChange} -
- -
-
-
-
- - 双重认证 -
- 增强账户安全性 -
- -
-
- -
-
通知设置
-
- - -
新的数据集访问申请通知
-
-
- - -
异常登录和权限变更提醒
-
-
-
-
- - -
-
+ return ( +
+
+
+
+
个人设置
+ +
+
+
+
个人信息
+
+ + +
+
+ + + {submitted && errors.name && ( +
{errors.name}
+ )} +
+
+ + + {submitted && errors.email && ( +
{errors.email}
+ )} +
+
+ + {submitted && errors.department && ( +
{errors.department}
+ )} +
+
+ + {submitted && errors.group && ( +
{errors.group}
+ )} +
- {showChangePassword && ( - setShowChangePassword(false)} /> - )} -
- ); + +
+
安全设置
+
+
+
+ + 修改密码 +
+ + 上次修改:{lastPasswordChange} + +
+ +
+
+ +
+
安全设置
+
+
+
+ + 修改密码 +
+ + 上次修改:{lastPasswordChange} + +
+ +
+
+
+
+ + 双重认证 +
+ 增强账户安全性 +
+ +
+
+ +
+
通知设置
+
+ + +
+ 新的数据集访问申请通知 +
+
+
+ + +
+ 异常登录和权限变更提醒 +
+
+
+
+
+ + +
+ +
+ {showChangePassword && ( + setShowChangePassword(false)} + /> + )} +
+ ); } export default UserSettingsModal; diff --git a/src/pages/Chat/Chat.jsx b/src/pages/Chat/Chat.jsx index dba40c9..3bb7772 100644 --- a/src/pages/Chat/Chat.jsx +++ b/src/pages/Chat/Chat.jsx @@ -47,15 +47,12 @@ export default function Chat() { // If we have a knowledgeBaseId but no chatId, check if we have an existing chat or create a new one useEffect(() => { - console.log('Chat.jsx: chatHistory', chatHistory); - // 只有当 knowledgeBaseId 存在但 chatId 不存在,且聊天历史已加载完成时才执行 if (knowledgeBaseId && !chatId && status === 'succeeded' && !status.includes('loading')) { console.log('Chat.jsx: 创建新聊天...'); // 处理可能的多个知识库ID (以逗号分隔) const knowledgeBaseIds = knowledgeBaseId.split(',').map((id) => id.trim()); - console.log('Chat.jsx: 处理知识库ID列表:', knowledgeBaseIds); // 创建新聊天 - 使用新的API创建会话 dispatch( diff --git a/src/router/router.jsx b/src/router/router.jsx index 6ad6601..7ae5274 100644 --- a/src/router/router.jsx +++ b/src/router/router.jsx @@ -6,8 +6,8 @@ import KnowledgeBaseDetail from '../pages/KnowledgeBase/Detail/KnowledgeBaseDeta import Chat from '../pages/Chat/Chat'; import PermissionsPage from '../pages/Permissions/PermissionsPage'; import Loading from '../components/Loading'; -import Login from '../pages/Auth/Login'; -import Signup from '../pages/Auth/Signup'; +import Login from '../pages/auth/Login'; +import Signup from '../pages/auth/Signup'; import ProtectedRoute from './protectedRoute'; import { useSelector } from 'react-redux'; import NotificationSnackbar from '../components/NotificationSnackbar';