fix bug#3907 群成员把管理员提前显示
This commit is contained in:
parent
b4b614b545
commit
b8fd50394c
@ -9,7 +9,7 @@
|
||||
? ''
|
||||
: '0',
|
||||
}"
|
||||
v-for="(memberItem, memberIndex) in props?.memberList"
|
||||
v-for="(memberItem, memberIndex) in sortedMemberList"
|
||||
@click="toUserDetailPage(memberItem)"
|
||||
>
|
||||
<div
|
||||
@ -81,7 +81,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { defineProps } from 'vue'
|
||||
import { defineProps, computed } from 'vue'
|
||||
const props = defineProps({
|
||||
memberList: Array, //人员列表
|
||||
memberListsLimit: Number, //人员列表数量限制
|
||||
@ -90,6 +90,36 @@ const props = defineProps({
|
||||
hideAddRemoveBtns: Boolean, //是否隐藏添加移除按钮
|
||||
})
|
||||
|
||||
// 对成员列表进行排序
|
||||
const sortedMemberList = computed(() => {
|
||||
if (!props.memberList || props.memberList.length === 0) return [];
|
||||
|
||||
// 创建一个新数组,保留原始索引
|
||||
const indexedList = props.memberList.map((item, index) => ({ item, index }));
|
||||
|
||||
// 按照leader属性和原始顺序排序
|
||||
return indexedList.sort((a, b) => {
|
||||
const leaderA = a.item.leader || 0;
|
||||
const leaderB = b.item.leader || 0;
|
||||
|
||||
// 如果leader状态不同,优先按leader排序
|
||||
if ((leaderA === 1 || leaderA === 2) && (leaderB !== 1 && leaderB !== 2)) {
|
||||
return -1; // a排在前面
|
||||
}
|
||||
if ((leaderB === 1 || leaderB === 2) && (leaderA !== 1 && leaderA !== 2)) {
|
||||
return 1; // b排在前面
|
||||
}
|
||||
|
||||
// 如果都是管理员,按照leader值大小排序
|
||||
if ((leaderA === 1 || leaderA === 2) && (leaderB === 1 || leaderB === 2)) {
|
||||
return leaderB - leaderA; // leader值大的排前面
|
||||
}
|
||||
|
||||
// 其他情况保持原始顺序
|
||||
return a.index - b.index;
|
||||
}).map(item => item.item); // 返回排序后的原始对象
|
||||
})
|
||||
|
||||
//点击跳转到用户详情页面
|
||||
const toUserDetailPage = (userItem) => {
|
||||
console.log(userItem)
|
||||
|
Loading…
Reference in New Issue
Block a user