>(`/v1/chatroom/getMemberList?${queryParams.toString()}`)
if (response.code === 200 && response.data) {
- const membersList = response.data.list.map((item: any) => ({
- id: item.id || `member-${Math.random()}`,
- nickname: item.nickname || '未知成员',
- wechatId: item.identifier || '',
- avatar: item.avatar || '/placeholder.svg',
- role: item.isOwner ? 'owner' : (item.isAdmin ? 'admin' : 'member'),
- joinTime: item.createTime ? new Date(item.createTime * 1000).toLocaleString() : '--'
- }))
+ const membersList = response.data.list.map((item: any) => {
+ // 确定角色类型
+ let role: "owner" | "admin" | "member" | undefined;
+ if (item.isOwner) {
+ role = "owner";
+ } else if (item.isAdmin) {
+ role = "admin";
+ } else {
+ role = "member";
+ }
+
+ return {
+ id: item.id || `member-${Math.random()}`,
+ nickname: item.name || item.ownerNickname || '未知成员',
+ wechatId: item.ownerWechatId || item.identifier || '',
+ avatar: item.ownerAvatar || item.avatar || '/placeholder.svg',
+ role: role,
+ joinTime: item.createTime ? new Date(item.createTime * 1000).toLocaleString() : '--'
+ };
+ });
setMembers(membersList)
setTotalItems(response.data.total)
@@ -139,12 +153,12 @@ export function WechatGroupMemberSelector({
members.map((member) => (
m.id === member.id)}
+ checked={tempSelectedMembers.some((m) => m.id === member.id)}
onCheckedChange={(checked) => {
if (checked) {
- onSelect([...selectedMembers, member])
+ setTempSelectedMembers([...tempSelectedMembers, member])
} else {
- onSelect(selectedMembers.filter((m) => m.id !== member.id))
+ setTempSelectedMembers(tempSelectedMembers.filter((m) => m.id !== member.id))
}
}}
/>
@@ -201,8 +215,11 @@ export function WechatGroupMemberSelector({
-
diff --git a/Cunkebao/components/WechatGroupSelector.tsx b/Cunkebao/components/WechatGroupSelector.tsx
index 1b34b8dba..193e10201 100644
--- a/Cunkebao/components/WechatGroupSelector.tsx
+++ b/Cunkebao/components/WechatGroupSelector.tsx
@@ -36,13 +36,15 @@ export function WechatGroupSelector({ open, onOpenChange, selectedGroups, onSele
const [page, setPage] = useState(1)
const [totalPages, setTotalPages] = useState(1)
const [totalItems, setTotalItems] = useState(0)
+ const [tempSelectedGroups, setTempSelectedGroups] = useState([])
const pageSize = 20
useEffect(() => {
if (open) {
fetchGroups(1)
+ setTempSelectedGroups([...selectedGroups])
}
- }, [open])
+ }, [open, selectedGroups])
const fetchGroups = async (pageNum: number) => {
setLoading(true)
@@ -130,12 +132,12 @@ export function WechatGroupSelector({ open, onOpenChange, selectedGroups, onSele
groups.map((group) => (
g.id === group.id)}
+ checked={tempSelectedGroups.some((g) => g.id === group.id)}
onCheckedChange={(checked) => {
if (checked) {
- onSelect([...selectedGroups, group])
+ setTempSelectedGroups([...tempSelectedGroups, group])
} else {
- onSelect(selectedGroups.filter((g) => g.id !== group.id))
+ setTempSelectedGroups(tempSelectedGroups.filter((g) => g.id !== group.id))
}
}}
/>
@@ -188,7 +190,12 @@ export function WechatGroupSelector({ open, onOpenChange, selectedGroups, onSele
onOpenChange(false)}>
取消
- onOpenChange(false)}>确定 ({selectedGroups.length})
+ {
+ onSelect(tempSelectedGroups)
+ onOpenChange(false)
+ }}>
+ 确定 ({tempSelectedGroups.length})
+