From 91c82965b2d987452ca276e3a03b48c8dcda2ae9 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 19 八月 2026 11:47:26 +0800
Subject: [PATCH] config(env): 更新生产环境配置和公司名称

---
 src/views/im/home/pages/contact/friend-list.vue |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/src/views/im/home/pages/contact/friend-list.vue b/src/views/im/home/pages/contact/friend-list.vue
new file mode 100644
index 0000000..faae9b3
--- /dev/null
+++ b/src/views/im/home/pages/contact/friend-list.vue
@@ -0,0 +1,73 @@
+<script lang="ts" setup>
+import type { FriendLite } from '../../types'
+
+import { ref, toRef } from 'vue'
+
+import { IconifyIcon as Icon } from '#/packages/icons/src'
+
+import { FriendItem } from '../../components/friend'
+import { useFriendBuckets } from '../../composables/useFriendBuckets'
+
+defineOptions({ name: 'ImContactFriendList' })
+
+const props = defineProps<{
+  activeId?: number
+  friends: FriendLite[]
+  keyword: string
+}>()
+
+const emit = defineEmits<{
+  chat: [friend: FriendLite]
+  delete: [friend: FriendLite]
+  select: [friend: FriendLite]
+}>()
+
+const expanded = ref(true)
+
+const { filtered, buckets } = useFriendBuckets(toRef(props, 'friends'), toRef(props, 'keyword'))
+</script>
+
+<template>
+  <!--
+    閫氳褰� - 濂藉弸鍒嗙粍
+    - 鑷不锛氭姌鍙犵姸鎬� + 鍏抽敭瀛楄繃婊� + 瀛楁瘝鍒嗘《 鏈粍浠跺唴闂幆
+    - 瀛楁瘝鍒嗘《 / 鎷奸煶鎼滅储濮旀墭 useFriendBuckets锛屼笌閫夋嫨绫诲脊绐� FriendPickerPanel 鍏辩敤涓�浠借鍒�
+    - 閫変腑鎬佺敱鐖剁骇 activeId 閫忎紶锛沜hat / delete 閫忎紶鍒扮埗绾ц蛋 store 鏀归��
+  -->
+  <div>
+    <!-- 鎶樺彔鍒嗙粍澶达細瀛楀彿瀵归綈寰俊 PC锛�15px锛夛紝hover 娴呭簳鑹插弽棣� -->
+    <div
+      class="flex gap-2 items-center px-3.5 py-2.5 cursor-pointer select-none text-15px text-[var(--ant-color-text)] hover:bg-[var(--ant-color-fill-secondary)]"
+      @click="expanded = !expanded"
+    >
+      <Icon :icon="expanded ? 'ep:caret-bottom' : 'ep:caret-right'" :size="14" />
+      <span class="flex-1">濂藉弸</span>
+      <span class="text-sm text-[var(--ant-color-text-secondary)]">{{ filtered.length }}</span>
+    </div>
+    <div v-show="expanded">
+      <template v-for="bucket in buckets" :key="bucket.letter">
+        <!-- 瀛楁瘝鍒嗘《 header锛氭祬搴� + 灏忓瓧鍙凤紝浣滀负濂藉弸鍒楄〃鍐呴儴鍒嗛殧 -->
+        <div
+          class="pt-1 pb-0.5 px-3.5 text-12px text-[var(--ant-color-text-secondary)] bg-[var(--ant-color-fill-tertiary)]"
+        >
+          {{ bucket.letter }}
+        </div>
+        <FriendItem
+          v-for="friend in bucket.list"
+          :key="friend.id"
+          :friend="friend"
+          :active="activeId === friend.id"
+          @click="emit('select', friend)"
+          @chat="emit('chat', $event)"
+          @delete="emit('delete', $event)"
+        />
+      </template>
+      <div
+        v-if="filtered.length === 0"
+        class="py-3 text-12px text-center text-[var(--ant-color-text-disabled)]"
+      >
+        {{ keyword ? '娌℃湁鍖归厤鐨勫ソ鍙�' : '鏆傛棤濂藉弸' }}
+      </div>
+    </div>
+  </div>
+</template>

--
Gitblit v1.9.3