diff --git a/src/constant/message.ts b/src/constant/message.ts
index 7f3a46f..8f16d04 100644
--- a/src/constant/message.ts
+++ b/src/constant/message.ts
@@ -17,7 +17,7 @@ export const ChatMsgSysText = 1000 // 系统文本消息
export const ChatMsgSysGroupCreate = 1101 // 创建群聊消息
export const ChatMsgSysGroupMemberJoin = 1102 // 加入群聊消息
export const ChatMsgSysGroupMemberQuit = 1103 // 群成员退出群消息
-export const ChatMsgSysGroupMemberKicked = 1104 // 移出群成员消息
+export const ChatMsgSysGroupMemberKicked = 1104 // 移出群成员消息(普通群、项目群被踢)
export const ChatMsgSysGroupMessageRevoke = 1105 // 管理员撤回成员消息
export const ChatMsgSysGroupDismissed = 1106 // 群解散
export const ChatMsgSysGroupMuted = 1107 // 群禁言
@@ -27,6 +27,8 @@ export const ChatMsgSysGroupMemberCancelMuted = 1110 // 群成员解除禁言
export const ChatMsgSysGroupNotice = 1111 // 编辑群公告
export const ChatMsgSysGroupTransfer = 1113 // 变更群主
export const ChatMsgSysGroupAdmin = 1114 // 设置管理员
+export const ChatMsgSysGroupMemberRemoved = 1115 // 移出群成员消息(部门群、公司群自动移出)
+export const ChatMsgSysGroupNameChange = 1116 // 修改群名称
export const ChatMsgTypeMapping = {
[ChatMsgTypeText]: '[文本消息]',
@@ -56,7 +58,9 @@ export const ChatMsgTypeMapping = {
[ChatMsgSysGroupMemberCancelMuted]: '[群成员解除禁言消息]',
[ChatMsgSysGroupNotice]: '[群公告]',
[ChatMsgSysGroupTransfer]: '[转让群主]',
- [ChatMsgSysGroupAdmin]: '[设置管理员]'
+ [ChatMsgSysGroupAdmin]: '[设置管理员]',
+ [ChatMsgSysGroupMemberRemoved]: '[移出群成员消息]',
+ [ChatMsgSysGroupNameChange]: '[修改群名称]'
}
// 消息类型 - 消息组件 映射关系
@@ -87,7 +91,9 @@ export const MessageComponents = {
[ChatMsgSysGroupMemberMuted]: 'sys-group-member-muted-message',
[ChatMsgSysGroupMemberCancelMuted]: 'sys-group-member-cancel-muted-message',
[ChatMsgSysGroupTransfer]: 'sys-group-transfer-message',
- [ChatMsgSysGroupAdmin]:'sys-group-admin-message'
+ [ChatMsgSysGroupAdmin]:'sys-group-admin-message',
+ [ChatMsgSysGroupMemberRemoved]:'sys-group-member-removed-message',
+ [ChatMsgSysGroupNameChange]:'sys-group-name-change-message'
}
// 可转发的消息类型
diff --git a/src/event/talk.js b/src/event/talk.js
index aaf7488..11c0cee 100644
--- a/src/event/talk.js
+++ b/src/event/talk.js
@@ -178,7 +178,7 @@ class Talk extends Base {
let newRecord = formatTalkRecord(this.getAccountId(), this.resource);
const {addDialogueRecord,addChatRecord} = useDialogueListStore()
// 群成员变化的消息,需要更新群成员列表
- if ([1102, 1103, 1104].includes(record.msg_type)) {
+ if ([1102, 1103, 1104, 1115].includes(record.msg_type)) {
useDialogueStore().updateGroupMembers()
}
addDialogueRecord([newRecord],'add')
diff --git a/src/pages.json b/src/pages.json
index 8e516c8..a7ab3b9 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -178,6 +178,14 @@
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "pages/chatSettings/groupManage/manageGroupDeps",
+ "type": "page",
+ "style": {
+ "navigationStyle": "custom",
+ "enablePullDownRefresh": false
+ }
}
],
"globalStyle": {
diff --git a/src/pages/chatSettings/components/selectMemberByAlphabet.vue b/src/pages/chatSettings/components/selectMemberByAlphabet.vue
index 6c8780f..b266373 100644
--- a/src/pages/chatSettings/components/selectMemberByAlphabet.vue
+++ b/src/pages/chatSettings/components/selectMemberByAlphabet.vue
@@ -69,7 +69,7 @@
alphabetItem?.memberList?.length > 0 &&
alphabetItem?.key !== '0'
"
- :id="alphabetItem.key"
+ :id="alphabetItem.key === '#' ? 'special-hash' : alphabetItem.key"
:ref="
(el) => {
if (el) alphabetElementRefs[alphabetIndex] = el
@@ -418,16 +418,47 @@ const assembleAlphabetMemberList = async (newMemberList) => {
String.fromCharCode(i + 65),
)
let tempAlphabet = []
+
+ // 创建一个对象来存储所有分组的数据
+ let groupedData = {
+ '#': []
+ }
+ alphabet.forEach(letter => {
+ groupedData[letter] = []
+ })
+
+ // 对数据进行分组
+ if (newMemberList) {
+ newMemberList.forEach(item => {
+ const key = item.key?.toUpperCase()
+ if (alphabet.includes(key)) {
+ groupedData[key].push(item)
+ } else {
+ groupedData['#'].push(item)
+ }
+ })
+ }
+
+ // 将分组数据转换为最终格式
alphabet.forEach((letter) => {
- const matchedItems = newMemberList.filter((item) => item.key === letter)
- if (matchedItems.length > 0) {
+ if (groupedData[letter].length > 0) {
tempAlphabet.push(letter)
}
resultMemberList.value.push({
key: letter,
- memberList: matchedItems.length ? matchedItems : [],
+ memberList: groupedData[letter],
})
})
+
+ // 添加#分组(如果有数据)
+ if (groupedData['#'].length > 0) {
+ tempAlphabet.push('#')
+ resultMemberList.value.push({
+ key: '#',
+ memberList: groupedData['#'],
+ })
+ }
+
state.alphabet = tempAlphabet
if (props?.manageType === 'mention' && !props?.isMulSelect) {
resultMemberList.value.unshift({
@@ -544,15 +575,17 @@ const getPosiByDep = async (departmentIdsArr) => {
const scrollToView = (alphabet) => {
state.currentAlphabet = alphabet
state.isAssign = true
- console.log()
- zPaging.value?.scrollIntoViewById(
- alphabet,
- document.getElementById('topArea')?.clientHeight
- ? document.getElementById('topArea').clientHeight - 1
- : props?.manageType === 'mention'
- ? 140
- : 80,
- )
+
+ // 计算偏移高度
+ const offsetHeight = document.getElementById('topArea')?.clientHeight
+ ? document.getElementById('topArea').clientHeight - 1
+ : props?.manageType === 'mention'
+ ? 140
+ : 80
+
+ // 使用scrollIntoViewById处理所有情况
+ const targetId = alphabet === '#' ? 'special-hash' : alphabet
+ zPaging.value?.scrollIntoViewById(targetId, offsetHeight)
}
//监听列表滚动
@@ -754,3 +787,4 @@ defineExpose({
}
}
+
diff --git a/src/pages/chatSettings/components/settingFormItem.vue b/src/pages/chatSettings/components/settingFormItem.vue
index 94b0384..2742782 100644
--- a/src/pages/chatSettings/components/settingFormItem.vue
+++ b/src/pages/chatSettings/components/settingFormItem.vue
@@ -16,7 +16,8 @@
props?.item?.hasPointer &&
(props?.isManager ||
(!props?.isManager &&
- props?.item?.label !== $t('chat.settings.groupName')))
+ (props?.item?.label !== $t('chat.settings.groupName') ||
+ props?.item?.label !== $t('chat.settings.groupType'))))
"
src="/src/static/image/chatSettings/pointer.png"
/>
diff --git a/src/pages/chatSettings/groupManage/manageGroupDeps.vue b/src/pages/chatSettings/groupManage/manageGroupDeps.vue
new file mode 100644
index 0000000..5833e6b
--- /dev/null
+++ b/src/pages/chatSettings/groupManage/manageGroupDeps.vue
@@ -0,0 +1,75 @@
+
+