diff --git a/src/assets/emoji/0.gif b/src/assets/emoji/0.gif new file mode 100644 index 00000000..e7848ec7 Binary files /dev/null and b/src/assets/emoji/0.gif differ diff --git a/src/assets/emoji/1.gif b/src/assets/emoji/1.gif new file mode 100644 index 00000000..cb5b26b3 Binary files /dev/null and b/src/assets/emoji/1.gif differ diff --git a/src/assets/emoji/10.gif b/src/assets/emoji/10.gif new file mode 100644 index 00000000..53a6c672 Binary files /dev/null and b/src/assets/emoji/10.gif differ diff --git a/src/assets/emoji/11.gif b/src/assets/emoji/11.gif new file mode 100644 index 00000000..d718e6d7 Binary files /dev/null and b/src/assets/emoji/11.gif differ diff --git a/src/assets/emoji/12.gif b/src/assets/emoji/12.gif new file mode 100644 index 00000000..2362b454 Binary files /dev/null and b/src/assets/emoji/12.gif differ diff --git a/src/assets/emoji/13.gif b/src/assets/emoji/13.gif new file mode 100644 index 00000000..4d8dc78a Binary files /dev/null and b/src/assets/emoji/13.gif differ diff --git a/src/assets/emoji/14.gif b/src/assets/emoji/14.gif new file mode 100644 index 00000000..131c3d97 Binary files /dev/null and b/src/assets/emoji/14.gif differ diff --git a/src/assets/emoji/15.gif b/src/assets/emoji/15.gif new file mode 100644 index 00000000..25c57aee Binary files /dev/null and b/src/assets/emoji/15.gif differ diff --git a/src/assets/emoji/16.gif b/src/assets/emoji/16.gif new file mode 100644 index 00000000..27116567 Binary files /dev/null and b/src/assets/emoji/16.gif differ diff --git a/src/assets/emoji/17.gif b/src/assets/emoji/17.gif new file mode 100644 index 00000000..4419ba28 Binary files /dev/null and b/src/assets/emoji/17.gif differ diff --git a/src/assets/emoji/18.gif b/src/assets/emoji/18.gif new file mode 100644 index 00000000..478a4213 Binary files /dev/null and b/src/assets/emoji/18.gif differ diff --git a/src/assets/emoji/19.gif b/src/assets/emoji/19.gif new file mode 100644 index 00000000..59261eaf Binary files /dev/null and b/src/assets/emoji/19.gif differ diff --git a/src/assets/emoji/2.gif b/src/assets/emoji/2.gif new file mode 100644 index 00000000..b01cbcf3 Binary files /dev/null and b/src/assets/emoji/2.gif differ diff --git a/src/assets/emoji/20.gif b/src/assets/emoji/20.gif new file mode 100644 index 00000000..45becb45 Binary files /dev/null and b/src/assets/emoji/20.gif differ diff --git a/src/assets/emoji/21.gif b/src/assets/emoji/21.gif new file mode 100644 index 00000000..d3f1afee Binary files /dev/null and b/src/assets/emoji/21.gif differ diff --git a/src/assets/emoji/22.gif b/src/assets/emoji/22.gif new file mode 100644 index 00000000..ee220d1c Binary files /dev/null and b/src/assets/emoji/22.gif differ diff --git a/src/assets/emoji/23.gif b/src/assets/emoji/23.gif new file mode 100644 index 00000000..5dbd9f31 Binary files /dev/null and b/src/assets/emoji/23.gif differ diff --git a/src/assets/emoji/24.gif b/src/assets/emoji/24.gif new file mode 100644 index 00000000..d3ae9465 Binary files /dev/null and b/src/assets/emoji/24.gif differ diff --git a/src/assets/emoji/25.gif b/src/assets/emoji/25.gif new file mode 100644 index 00000000..5cf2a9e7 Binary files /dev/null and b/src/assets/emoji/25.gif differ diff --git a/src/assets/emoji/26.gif b/src/assets/emoji/26.gif new file mode 100644 index 00000000..793b2ac0 Binary files /dev/null and b/src/assets/emoji/26.gif differ diff --git a/src/assets/emoji/27.gif b/src/assets/emoji/27.gif new file mode 100644 index 00000000..b78a02bf Binary files /dev/null and b/src/assets/emoji/27.gif differ diff --git a/src/assets/emoji/28.gif b/src/assets/emoji/28.gif new file mode 100644 index 00000000..4074630a Binary files /dev/null and b/src/assets/emoji/28.gif differ diff --git a/src/assets/emoji/29.gif b/src/assets/emoji/29.gif new file mode 100644 index 00000000..166f2520 Binary files /dev/null and b/src/assets/emoji/29.gif differ diff --git a/src/assets/emoji/3.gif b/src/assets/emoji/3.gif new file mode 100644 index 00000000..3b15c537 Binary files /dev/null and b/src/assets/emoji/3.gif differ diff --git a/src/assets/emoji/30.gif b/src/assets/emoji/30.gif new file mode 100644 index 00000000..13499b90 Binary files /dev/null and b/src/assets/emoji/30.gif differ diff --git a/src/assets/emoji/31.gif b/src/assets/emoji/31.gif new file mode 100644 index 00000000..b4ec1d8f Binary files /dev/null and b/src/assets/emoji/31.gif differ diff --git a/src/assets/emoji/32.gif b/src/assets/emoji/32.gif new file mode 100644 index 00000000..ca863991 Binary files /dev/null and b/src/assets/emoji/32.gif differ diff --git a/src/assets/emoji/33.gif b/src/assets/emoji/33.gif new file mode 100644 index 00000000..8ec811a8 Binary files /dev/null and b/src/assets/emoji/33.gif differ diff --git a/src/assets/emoji/34.gif b/src/assets/emoji/34.gif new file mode 100644 index 00000000..2a3c006f Binary files /dev/null and b/src/assets/emoji/34.gif differ diff --git a/src/assets/emoji/35.gif b/src/assets/emoji/35.gif new file mode 100644 index 00000000..7fc7f947 Binary files /dev/null and b/src/assets/emoji/35.gif differ diff --git a/src/assets/emoji/36.gif b/src/assets/emoji/36.gif new file mode 100644 index 00000000..f0d46d0c Binary files /dev/null and b/src/assets/emoji/36.gif differ diff --git a/src/assets/emoji/37.gif b/src/assets/emoji/37.gif new file mode 100644 index 00000000..2c9c084b Binary files /dev/null and b/src/assets/emoji/37.gif differ diff --git a/src/assets/emoji/38.gif b/src/assets/emoji/38.gif new file mode 100644 index 00000000..b6b4e09c Binary files /dev/null and b/src/assets/emoji/38.gif differ diff --git a/src/assets/emoji/39.gif b/src/assets/emoji/39.gif new file mode 100644 index 00000000..cfb75c68 Binary files /dev/null and b/src/assets/emoji/39.gif differ diff --git a/src/assets/emoji/4.gif b/src/assets/emoji/4.gif new file mode 100644 index 00000000..fd60e4e3 Binary files /dev/null and b/src/assets/emoji/4.gif differ diff --git a/src/assets/emoji/40.gif b/src/assets/emoji/40.gif new file mode 100644 index 00000000..c5d7a8b6 Binary files /dev/null and b/src/assets/emoji/40.gif differ diff --git a/src/assets/emoji/41.gif b/src/assets/emoji/41.gif new file mode 100644 index 00000000..cf1c0a1c Binary files /dev/null and b/src/assets/emoji/41.gif differ diff --git a/src/assets/emoji/42.gif b/src/assets/emoji/42.gif new file mode 100644 index 00000000..cc87f9e8 Binary files /dev/null and b/src/assets/emoji/42.gif differ diff --git a/src/assets/emoji/43.gif b/src/assets/emoji/43.gif new file mode 100644 index 00000000..46153bc7 Binary files /dev/null and b/src/assets/emoji/43.gif differ diff --git a/src/assets/emoji/44.gif b/src/assets/emoji/44.gif new file mode 100644 index 00000000..dd451188 Binary files /dev/null and b/src/assets/emoji/44.gif differ diff --git a/src/assets/emoji/45.gif b/src/assets/emoji/45.gif new file mode 100644 index 00000000..a3e86d66 Binary files /dev/null and b/src/assets/emoji/45.gif differ diff --git a/src/assets/emoji/46.gif b/src/assets/emoji/46.gif new file mode 100644 index 00000000..b3fb6814 Binary files /dev/null and b/src/assets/emoji/46.gif differ diff --git a/src/assets/emoji/47.gif b/src/assets/emoji/47.gif new file mode 100644 index 00000000..d24bdbb1 Binary files /dev/null and b/src/assets/emoji/47.gif differ diff --git a/src/assets/emoji/48.gif b/src/assets/emoji/48.gif new file mode 100644 index 00000000..ab98b2b6 Binary files /dev/null and b/src/assets/emoji/48.gif differ diff --git a/src/assets/emoji/49.gif b/src/assets/emoji/49.gif new file mode 100644 index 00000000..19a7e72b Binary files /dev/null and b/src/assets/emoji/49.gif differ diff --git a/src/assets/emoji/5.gif b/src/assets/emoji/5.gif new file mode 100644 index 00000000..85cd3738 Binary files /dev/null and b/src/assets/emoji/5.gif differ diff --git a/src/assets/emoji/50.gif b/src/assets/emoji/50.gif new file mode 100644 index 00000000..51e40937 Binary files /dev/null and b/src/assets/emoji/50.gif differ diff --git a/src/assets/emoji/51.gif b/src/assets/emoji/51.gif new file mode 100644 index 00000000..9bf82a8a Binary files /dev/null and b/src/assets/emoji/51.gif differ diff --git a/src/assets/emoji/52.gif b/src/assets/emoji/52.gif new file mode 100644 index 00000000..18391ea3 Binary files /dev/null and b/src/assets/emoji/52.gif differ diff --git a/src/assets/emoji/53.gif b/src/assets/emoji/53.gif new file mode 100644 index 00000000..0f584b5b Binary files /dev/null and b/src/assets/emoji/53.gif differ diff --git a/src/assets/emoji/54.gif b/src/assets/emoji/54.gif new file mode 100644 index 00000000..5ab6d250 Binary files /dev/null and b/src/assets/emoji/54.gif differ diff --git a/src/assets/emoji/55.gif b/src/assets/emoji/55.gif new file mode 100644 index 00000000..3d75ad7a Binary files /dev/null and b/src/assets/emoji/55.gif differ diff --git a/src/assets/emoji/56.gif b/src/assets/emoji/56.gif new file mode 100644 index 00000000..25259709 Binary files /dev/null and b/src/assets/emoji/56.gif differ diff --git a/src/assets/emoji/6.gif b/src/assets/emoji/6.gif new file mode 100644 index 00000000..a49c862a Binary files /dev/null and b/src/assets/emoji/6.gif differ diff --git a/src/assets/emoji/7.gif b/src/assets/emoji/7.gif new file mode 100644 index 00000000..3a847b8f Binary files /dev/null and b/src/assets/emoji/7.gif differ diff --git a/src/assets/emoji/8.gif b/src/assets/emoji/8.gif new file mode 100644 index 00000000..eb6db6a1 Binary files /dev/null and b/src/assets/emoji/8.gif differ diff --git a/src/assets/emoji/9.gif b/src/assets/emoji/9.gif new file mode 100644 index 00000000..52562dc0 Binary files /dev/null and b/src/assets/emoji/9.gif differ diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 3f93d1a9..99ffd3ca 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -113,6 +113,10 @@ export enum DICT_TYPE { TERMINAL = 'terminal', // 终端 DATE_INTERVAL = 'date_interval', // 数据间隔 + // ========== CHAT 模块 ========== + // 聊天消息状态 + CHAT_MSG_STATUS = 'chat_msg_status', + // ========== SYSTEM 模块 ========== SYSTEM_USER_SEX = 'system_user_sex', SYSTEM_MENU_TYPE = 'system_menu_type', diff --git a/src/utils/str.ts b/src/utils/str.ts new file mode 100644 index 00000000..ffe9756a --- /dev/null +++ b/src/utils/str.ts @@ -0,0 +1,11 @@ +export const html2Escape = (strText: any) => { + if (!strText) return '' + return strText.replace(/[<>&"]/g, function(c) { + return { + '<': '<', + '>': '>', + '&': '&', + '"': '"' + } [c]; + }); +} \ No newline at end of file diff --git a/src/utils/url.ts b/src/utils/url.ts new file mode 100644 index 00000000..4fae577a --- /dev/null +++ b/src/utils/url.ts @@ -0,0 +1,11 @@ +export const replaceURLWithHTMLLinks = (content) => { + // 使用正则表达式匹配更广泛的URL格式(此正则由deepseek生成) + const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]|\bwww\.[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return content.replace(urlRegex, (url) => { + // 如果URL不以http(s)://开头,则添加http://前缀 + if (!url.startsWith("http")) { + url = "http://" + url; + } + return `${url}`; + }); +} diff --git a/src/views/chat/private-msg/cmp/msg-content.vue b/src/views/chat/private-msg/cmp/msg-content.vue new file mode 100644 index 00000000..8ac62f95 --- /dev/null +++ b/src/views/chat/private-msg/cmp/msg-content.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/views/chat/private-msg/index.vue b/src/views/chat/private-msg/index.vue index 3ba57021..fec995a6 100644 --- a/src/views/chat/private-msg/index.vue +++ b/src/views/chat/private-msg/index.vue @@ -1,24 +1,50 @@ @@ -26,29 +52,27 @@ \ No newline at end of file diff --git a/src/views/chat/private-msg/tool/emotion.ts b/src/views/chat/private-msg/tool/emotion.ts new file mode 100644 index 00000000..1a15653c --- /dev/null +++ b/src/views/chat/private-msg/tool/emotion.ts @@ -0,0 +1,41 @@ +const emoTextList = ['憨笑', '媚眼', '开心', '坏笑', '可怜', '爱心', '笑哭', '拍手', '惊喜', '打气', + '大哭', '流泪', '饥饿', '难受', '健身', '示爱', '色色', '眨眼', '暴怒', '惊恐', + '思考', '头晕', '大吐', '酷笑', '翻滚', '享受', '鼻涕', '快乐', '雀跃', '微笑', + '贪婪', '红心', '粉心', '星星', '大火', '眼睛', '音符', "叹号", "问号", "绿叶", + "燃烧", "喇叭", "警告", "信封", "房子", "礼物", "点赞", "举手", "喝彩", "点头", + "摇头", "偷瞄", "庆祝", "疾跑", "打滚", "惊吓", "起跳" +]; + + +// 预加载所有表情资源为 URL 映射(按文件名中的索引构建) +const emojiModules = import.meta.glob('../../../../assets/emoji/*.gif', { + eager: true, + import: 'default' +}) as Record + +const emojiUrlMap: Record = {} +Object.entries(emojiModules).forEach(([path, url]) => { + const m = path.match(/\/(\d+)\.gif$/) + if (m) { + emojiUrlMap[Number(m[1])] = url + } +}) + +// 将匹配结果替换表情图片 +const textToImg = (emoText: string) => { + const word = emoText.replace(/\#|\;/gi, '') + const idx = emoTextList.indexOf(word) + if (idx === -1) { + return emoText + } + const src = emojiUrlMap[idx] + if (!src) { + return emoText + } + return `` +} + + +export const transform = (content: string) => { + return content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, (text) => textToImg(text)) +} diff --git a/src/views/chat/sensitive/index.vue b/src/views/chat/sensitive/index.vue index 379fb5bd..75485bd4 100644 --- a/src/views/chat/sensitive/index.vue +++ b/src/views/chat/sensitive/index.vue @@ -3,8 +3,14 @@ - + + + + + + + @@ -60,7 +66,7 @@ const loading = ref(true) const list = ref([]) const total = ref(0) -const queryParams = reactive({ +const queryParams = reactive({ content: '', enabled: null, pageNum: 1,