From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/mall/promotion/kefu/components/tools/emoji.ts |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/views/mall/promotion/kefu/components/tools/emoji.ts b/src/views/mall/promotion/kefu/components/tools/emoji.ts
new file mode 100644
index 0000000..3755e38
--- /dev/null
+++ b/src/views/mall/promotion/kefu/components/tools/emoji.ts
@@ -0,0 +1,129 @@
+import { isEmpty } from '@/utils/is'
+
+const emojiList = [
+  { name: '[绗戞帀鐗橾', file: 'xiaodiaoya.png' },
+  { name: '[鍙埍]', file: 'keai.png' },
+  { name: '[鍐烽叿]', file: 'lengku.png' },
+  { name: '[闂槾]', file: 'bizui.png' },
+  { name: '[鐢熸皵]', file: 'shengqi.png' },
+  { name: '[鎯婃亹]', file: 'jingkong.png' },
+  { name: '[鐬岀潯]', file: 'keshui.png' },
+  { name: '[澶х瑧]', file: 'daxiao.png' },
+  { name: '[鐖卞績]', file: 'aixin.png' },
+  { name: '[鍧忕瑧]', file: 'huaixiao.png' },
+  { name: '[椋炲惢]', file: 'feiwen.png' },
+  { name: '[鐤戦棶]', file: 'yiwen.png' },
+  { name: '[寮�蹇僝', file: 'kaixin.png' },
+  { name: '[鍙戝憜]', file: 'fadai.png' },
+  { name: '[娴佹唱]', file: 'liulei.png' },
+  { name: '[姹楅]', file: 'hanyan.png' },
+  { name: '[鎯婃倸]', file: 'jingshu.png' },
+  { name: '[鍥皛]', file: 'kun.png' },
+  { name: '[蹇冪]', file: 'xinsui.png' },
+  { name: '[澶╀娇]', file: 'tianshi.png' },
+  { name: '[鏅昡', file: 'yun.png' },
+  { name: '[鍟奭', file: 'a.png' },
+  { name: '[鎰ゆ�抅', file: 'fennu.png' },
+  { name: '[鐫$潃]', file: 'shuizhuo.png' },
+  { name: '[闈㈡棤琛ㄦ儏]', file: 'mianwubiaoqing.png' },
+  { name: '[闅捐繃]', file: 'nanguo.png' },
+  { name: '[鐘洶]', file: 'fankun.png' },
+  { name: '[濂藉悆]', file: 'haochi.png' },
+  { name: '[鍛曞悙]', file: 'outu.png' },
+  { name: '[榫囩墮]', file: 'ziya.png' },
+  { name: '[鎳垫瘮]', file: 'mengbi.png' },
+  { name: '[鐧界溂]', file: 'baiyan.png' },
+  { name: '[楗挎]', file: 'esi.png' },
+  { name: '[鍑禲', file: 'xiong.png' },
+  { name: '[鎰熷啋]', file: 'ganmao.png' },
+  { name: '[娴佹睏]', file: 'liuhan.png' },
+  { name: '[绗戝摥]', file: 'xiaoku.png' },
+  { name: '[娴佸彛姘碷', file: 'liukoushui.png' },
+  { name: '[灏村艾]', file: 'ganga.png' },
+  { name: '[鎯婅]', file: 'jingya.png' },
+  { name: '[澶ф儕]', file: 'dajing.png' },
+  { name: '[涓嶅ソ鎰忔�漖', file: 'buhaoyisi.png' },
+  { name: '[澶ч椆]', file: 'danao.png' },
+  { name: '[涓嶅彲鎬濊]', file: 'bukesiyi.png' },
+  { name: '[鐖变綘]', file: 'aini.png' },
+  { name: '[绾㈠績]', file: 'hongxin.png' },
+  { name: '[鐐硅禐]', file: 'dianzan.png' },
+  { name: '[鎭堕瓟]', file: 'emo.png' }
+]
+
+export interface Emoji {
+  name: string
+  url: string
+}
+
+export const useEmoji = () => {
+  const emojiPathList = ref<any[]>([])
+
+  /** 鍔犺浇鏈湴鍥剧墖 */
+  const initStaticEmoji = async () => {
+    const pathList = import.meta.glob(
+      '@/views/mall/promotion/kefu/components/asserts/*.{png,jpg,jpeg,svg}'
+    )
+    for (const path in pathList) {
+      const imageModule: any = await pathList[path]()
+      emojiPathList.value.push({ path: path, src: imageModule.default })
+    }
+  }
+
+  /** 鍒濆鍖� */
+  onMounted(async () => {
+    if (isEmpty(emojiPathList.value)) {
+      await initStaticEmoji()
+    }
+  })
+
+  /**
+   * 灏嗘枃鏈腑鐨勮〃鎯呮浛鎹㈡垚鍥剧墖
+   *
+   * @return 鏇挎崲鍚庣殑鏂囨湰
+   * @param content 娑堟伅鍐呭
+   */
+  const replaceEmoji = (content: string) => {
+    let newData = content
+    if (typeof newData !== 'object') {
+      const reg = /\[(.+?)]/g // [] 涓嫭鍙�
+      const zhEmojiName = newData.match(reg)
+      if (zhEmojiName) {
+        zhEmojiName.forEach((item) => {
+          const emojiFile = getEmojiFileByName(item)
+          newData = newData.replace(
+            item,
+            `<img style="width: 20px;height: 20px;margin:0 1px 3px 1px;vertical-align: middle;" src="${emojiFile}" alt=""/>`
+          )
+        })
+      }
+    }
+    return newData
+  }
+
+  /**
+   * 鑾峰緱鎵�鏈夎〃鎯�
+   *
+   * @return 琛ㄦ儏鍒楄〃
+   */
+  function getEmojiList(): Emoji[] {
+    return emojiList.map((item) => ({
+      url: getEmojiFileByName(item.name),
+      name: item.name
+    })) as Emoji[]
+  }
+
+  function getEmojiFileByName(name: string) {
+    for (const emoji of emojiList) {
+      if (emoji.name === name) {
+        const emojiPath = emojiPathList.value.find(
+          (item: { path: string; src: string }) => item.path.indexOf(emoji.file) > -1
+        )
+        return emojiPath ? emojiPath.src : undefined
+      }
+    }
+    return false
+  }
+
+  return { replaceEmoji, getEmojiList }
+}

--
Gitblit v1.8.0