diff --git a/src/components/base/Avatar.vue b/src/components/base/Avatar.vue
index 8a23450..6bb32d0 100644
--- a/src/components/base/Avatar.vue
+++ b/src/components/base/Avatar.vue
@@ -23,9 +23,8 @@ defineProps({
 </script>
 
 <template>
-  <n-avatar v-if="src.length" round :src="src" :size="size" :fallback-src="defAvatar" />
-
-  <n-avatar
+  <tm-image :width="80" :height="80" :round="12" :src="src"></tm-image>
+  <!-- <n-avatar
     v-else
     round
     :style="{
@@ -36,6 +35,6 @@ defineProps({
     :size="size"
   >
     {{ username && username.substring(0, 1) }}
-  </n-avatar>
+  </n-avatar> -->
 </template>
 <style lang="less" scoped></style>
diff --git a/src/components/talk/message/TextMessage.vue b/src/components/talk/message/TextMessage.vue
index 023241b..e4a4ce4 100644
--- a/src/components/talk/message/TextMessage.vue
+++ b/src/components/talk/message/TextMessage.vue
@@ -41,19 +41,19 @@ textContent = textReplaceEmoji(textContent)
 .im-message-text {
   min-width: 30px;
   min-height: 30px;
-  padding: 3px;
-  color: var(--im-message-left-text-color);
-  background: var(--im-message-left-bg-color);
+  padding: 22rpx 30rpx;
+  color: #1A1A1A;
+  background: #FFFFFF;
   border-radius: 0px 10px 10px 10px;
 
   &.right {
-    background-color: var(--im-message-right-bg-color);
-    color: var(--im-message-right-text-color);
+    background-color: #46299D;
+    color: #FFFFFF;
     border-radius: 10px 0px 10px 10px;
   }
 
   &.maxwidth {
-    max-width: 70%;
+    max-width: 486rpx;
   }
 
   &.radius-reset {
@@ -65,14 +65,15 @@ textContent = textReplaceEmoji(textContent)
     overflow: hidden;
     word-break: break-word;
     word-wrap: break-word;
-    font-size: 14px;
-    padding: 3px 5px;
+    font-size: 32rpx;
     font-family: 'PingFang SC', 'Microsoft YaHei', 'Alibaba PuHuiTi 2.0 45';
-    line-height: 25px;
+    line-height: 44rpx;
 
     :deep(.emoji) {
       vertical-align: text-bottom;
-      margin: 0 5px;
+      margin: 0 10rpx;
+      width: 44rpx;
+      height: 44rpx;
     }
 
     :deep(a) {
diff --git a/src/pages/dialog/index.vue b/src/pages/dialog/index.vue
index cc39684..d473edc 100644
--- a/src/pages/dialog/index.vue
+++ b/src/pages/dialog/index.vue
@@ -1,58 +1,102 @@
 <template>
   <div class="outer-layer">
     <div>
-      <tm-navbar :hideBack="false" hideHome title="" :leftWidth="220" >
-        <div class="flex flex-col items-center justify-center" >
-          <div class="text-[34rpx] font-bold" >{{ talkParams.username }}</div>
-          <div v-if="true" class="text-[24rpx] text-[#999999]" >公司群</div>
+      <tm-navbar :hideBack="false" hideHome title="" :leftWidth="220">
+        <div class="flex flex-col items-center justify-center">
+          <div class="text-[34rpx] font-bold">{{ talkParams.username }}</div>
+          <div v-if="true" class="text-[24rpx] text-[#999999]">公司群</div>
         </div>
         <template v-slot:right>
           <div class="mr-[36rpx]">
             <tm-icon color="rgb(51, 51, 51)" :font-size="36" name="tmicon-gengduo"></tm-icon>
           </div>
-			</template>
+        </template>
       </tm-navbar>
     </div>
     <div class="root">
-      <div class="dialogBox" >
+      <div class="dialogBox">
         <!-- <div v-if="loadConfig.status == 0" class="h-[240rpx] flex items-center justify-center flex-col" >
           <wd-loading />
           <div class="text-[#959598] mt-[20rpx] text-[28rpx]" > 正在加载中... </div>
         </div>
         <div v-else-if="loadConfig.status == 1"  @click="onRefreshLoad" >查看更多消息 ...</div>
         <span v-else class="no-more"> 没有更多消息了 </span> -->
-        <div
-          class="message-item"
-          v-for="(item, index) in records"
-          :key="item.msg_id"
-          :id="item.msg_id"
-        >
+        <!-- 数据加载状态栏 -->
+        <div class="load-toolbar pointer">
+          <span v-if="loadConfig.status == 0"> 正在加载数据中 ... </span>
+          <span v-else-if="loadConfig.status == 1" @click="onRefreshLoad"> 查看更多消息 ... </span>
+          <span v-else class="no-more"> 没有更多消息了 </span>
+        </div>
+        <div class="message-item" v-for="(item, index) in records" :key="item.msg_id" :id="item.msg_id">
           <!-- 系统消息 -->
           <div v-if="item.msg_type >= 1000" class="message-box">
-            <component
-              :is="MessageComponents[item.msg_type] || 'unknown-message'"
-              :extra="item.extra"
-              :data="item"
-            />
+            <component :is="MessageComponents[item.msg_type] || 'unknown-message'" :extra="item.extra" :data="item" />
           </div>
           <!-- 撤回消息 -->
-        <div v-else-if="item.is_revoke == 1" class="message-box">
-          <revoke-message
-            :login_uid="uid"
-            :user_id="item.user_id"
-            :nickname="item.nickname"
-            :talk_type="item.talk_type"
-            :datetime="item.created_at"
-          />
-        </div>
+          <div v-else-if="item.is_revoke == 1" class="message-box">
+            <revoke-message :login_uid="uid" :user_id="item.user_id" :nickname="item.nickname"
+              :talk_type="item.talk_type" :datetime="item.created_at" />
+          </div>
+
+          <div v-else class="message-box record-box" :class="{
+            'direction-rt': item.float == 'right',
+            'multi-select': dialogueStore.isOpenMultiSelect,
+            'multi-select-check': item.isCheck
+          }">
+            <!-- 多选按钮 -->
+            <aside v-if="dialogueStore.isOpenMultiSelect" class="checkbox-column">
+              <n-checkbox size="small" :checked="item.isCheck" @update:checked="item.isCheck = !item.isCheck" />
+            </aside>
+
+            <!-- 头像信息 -->
+            <aside class="avatar-column">
+              <im-avatar class="pointer" :src="item.avatar" :size="80" :username="item.nickname"
+                @click="showUserInfoModal(item.user_id)" />
+            </aside>
+
+            <!-- 主体信息 -->
+            <main class="main-column">
+              <div class="talk-title">
+                <span class="nickname pointer" v-show="talk_type == 2 && item.float == 'left'"
+                  @click="onClickNickname(item)">
+                  <span class="at">@</span>{{ item.nickname }}
+                </span>
+                <span>{{ parseTime(item.created_at, '{m}/{d} {h}:{i}') }}</span>
+              </div>
+
+              <div class="talk-content" :class="{ pointer: dialogueStore.isOpenMultiSelect }" @click="onRowClick(item)">
+                <component :is="MessageComponents[item.msg_type] || 'unknown-message'" :extra="item.extra" :data="item"
+                  :max-width="true" :source="'panel'" @contextmenu.prevent="onContextMenu($event, item)" />
+
+                <div class="talk-tools">
+                  <template v-if="talk_type == 1 && item.float == 'right'">
+                    <loading theme="outline" size="19" fill="#000" :strokeWidth="1" class="icon-rotate"
+                      v-show="item.send_status == 1" />
+
+                    <span v-show="item.send_status == 1"> 正在发送... </span>
+                    <!-- <span v-show="item.send_status != 1"> 已送达 </span> -->
+                  </template>
+
+                </div>
+              </div>
+
+              <div v-if="item.extra.reply" class="talk-reply pointer" @click="onJumpMessage(item.extra?.reply?.msg_id)">
+                <n-icon :component="ToTop" size="14" class="icon-top" />
+                <span class="ellipsis">
+                  回复 {{ item.extra?.reply?.nickname }}:
+                  {{ item.extra?.reply?.content }}
+                </span>
+              </div>
+            </main>
+          </div>
 
         </div>
       </div>
     </div>
-    <div class="footBox" >
-      <div class="mt-[16rpx] ml-[32rpx] mr-[32rpx] flex items-center justify-between" >
-        <div class="w-[534rpx]" >
-          <tm-input :height="72" placeholder=""    ></tm-input>
+    <div class="footBox">
+      <div class="mt-[16rpx] ml-[32rpx] mr-[32rpx] flex items-center justify-between">
+        <div class="w-[534rpx]">
+          <tm-input :height="72" placeholder=""></tm-input>
         </div>
         <tm-image :width="52" :height="52" :round="12" :src="smile"></tm-image>
         <tm-image :width="52" :height="52" :round="12" :src="addCircleGray"></tm-image>
@@ -61,12 +105,13 @@
   </div>
 </template>
 <script setup>
-import { ref,reactive,watch,computed,onMounted } from 'vue';
+import { ref, reactive, watch, computed, onMounted } from 'vue';
 import { useChatList } from "@/store/chatList/index.js";
-import {useAuth} from "@/store/auth";
+import { useAuth } from "@/store/auth";
 import { useUserStore, useDialogueStore, useUploadsStore } from '@/store'
 import addCircleGray from "@/static/image/chatList/addCircleGray.png";
 import { MessageComponents, ForwardableMessageType } from '@/constant/message'
+import { formatTime, parseTime } from '@/utils/datetime'
 import smile from "@/static/image/chatList/smile@2x.png";
 import { useInject, useTalkRecord } from '@/hooks'
 
@@ -88,7 +133,7 @@ const { loadConfig, records, onLoad, onRefreshLoad, onJumpMessage } = useTalkRec
 watch(() => records, (newValue, oldValue) => {
   console.log(newValue);
 
-},{deep:true,immediate:true})
+}, { deep: true, immediate: true })
 
 watch(() => talkParams.uid, (newValue, oldValue) => {
   let objT = {
@@ -98,7 +143,7 @@ watch(() => talkParams.uid, (newValue, oldValue) => {
     index_name: talkParams.index_name
   }
   onLoad({ ...objT, limit: 30 })
-},{immediate:true})
+}, { immediate: true })
 
 onMounted(() => {
   let objT = {
@@ -111,7 +156,7 @@ onMounted(() => {
 })
 
 </script>
-<style scoped lang="scss">
+<style scoped lang="less">
 .outer-layer {
   overflow-y: auto;
   flex: 1;
@@ -120,24 +165,231 @@ onMounted(() => {
   display: flex;
   flex-direction: column;
 }
+
 .root {
   flex: 1;
   padding: 20rpx 32rpx;
 }
+
 .searchRoot {
   background-color: #fff;
   padding: 22rpx 18rpx;
 }
+
 .contentRoot {
   margin-top: 20rpx;
   background-color: #fff;
 }
+
 .footBox {
   height: 162rpx;
   background-color: #fff;
 }
-.dialogBox{
+
+.dialogBox {
   height: 100%;
 }
 
+.load-toolbar {
+  height: 38px;
+  color: #409eff;
+  text-align: center;
+  line-height: 38px;
+  font-size: 13px;
+
+  .no-more {
+    color: #b9b3b3;
+  }
+}
+
+.message-item {
+  &.border {
+    border-radius: 10px;
+    border: 1px solid var(--im-primary-color);
+  }
+}
+
+.message-box {
+  width: 100%;
+  min-height: 30px;
+  margin-bottom: 5px;
+}
+
+.datetime {
+  height: 30px;
+  line-height: 30px;
+  color: #ccc9c9;
+  font-size: 12px;
+  text-align: center;
+  margin: 5px 0;
+}
+
+.record-box {
+  display: flex;
+  flex-direction: row;
+  align-items: flex-start;
+  .checkbox-column {
+    display: flex;
+    justify-content: center;
+    width: 35px;
+    order: 1;
+    user-select: none;
+    padding-top: 12px;
+  }
+
+  .avatar-column {
+    width: 80rpx;
+    display: flex;
+    align-items: center;
+    order: 2;
+    user-select: none;
+    margin-top: 16rpx;
+    flex-direction: column;
+  }
+
+  .main-column {
+    flex: 1 auto;
+    order: 3;
+    position: relative;
+    box-sizing: border-box;
+    padding: 16rpx 20rpx 14rpx 20rpx;
+    overflow: hidden;
+    min-height: 30px;
+
+    .talk-title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 6rpx;
+      font-size: 24rpx;
+      user-select: none;
+      color: #BABABA;
+      opacity: 1;
+
+      &.show {
+        opacity: 1;
+      }
+
+      .nickname {
+        color: var(--im-text-color);
+        margin-right: 5px;
+
+        .at {
+          display: none;
+        }
+
+        &:hover {
+          color: var(--im-primary-color);
+
+          .at {
+            display: inline-block;
+          }
+        }
+      }
+
+      span {
+        transform: scale(0.88);
+        transform-origin: left center;
+      }
+    }
+
+    .talk-content {
+      display: flex;
+      justify-content: flex-start;
+      align-items: flex-end;
+
+      box-sizing: border-box;
+      width: 100%;
+
+      .talk-tools {
+        display: flex;
+        margin: 0 8px;
+        color: #a79e9e;
+        font-size: 12px;
+        user-select: none;
+        align-items: center;
+        justify-content: space-around;
+
+        .more-tools {
+          visibility: hidden;
+          margin-left: 5px;
+        }
+      }
+    }
+
+    .talk-reply {
+      display: flex;
+      align-items: flex-start;
+      align-items: center;
+      width: fit-content;
+      padding: 4px;
+      margin-top: 3px;
+      margin-right: auto;
+      font-size: 12px;
+      color: #8f8f8f;
+      word-break: break-all;
+      background-color: var(--im-message-left-bg-color);
+      border-radius: 5px;
+      max-width: 300px;
+      overflow: hidden;
+      user-select: none;
+
+      .icon-top {
+        margin-right: 3px;
+      }
+
+      .ellipsis {
+        display: -webkit-inline-box;
+        text-overflow: ellipsis;
+        -webkit-line-clamp: 3;
+        -webkit-box-orient: vertical;
+      }
+    }
+
+    &:hover {
+      .talk-title {
+        opacity: 1;
+      }
+
+      .more-tools {
+        visibility: visible !important;
+      }
+    }
+  }
+
+  &.direction-rt {
+    .avatar-column {
+      order: 3;
+    }
+
+    .main-column {
+      order: 2;
+
+      .talk-title {
+        justify-content: flex-end;
+
+        span {
+          transform-origin: right center;
+        }
+      }
+
+      .talk-content {
+        flex-direction: row-reverse;
+      }
+
+      .talk-reply {
+        margin-right: 0;
+        margin-left: auto;
+      }
+    }
+  }
+
+  &.multi-select {
+    border-radius: 5px;
+
+    &:hover,
+    &.multi-select-check {
+      background-color: var(--im-active-bg-color);
+    }
+  }
+}
 </style>
diff --git a/src/static/image/emoji/001_微笑.png b/src/static/image/emoji/001_微笑.png
new file mode 100644
index 0000000..029528d
Binary files /dev/null and b/src/static/image/emoji/001_微笑.png differ
diff --git a/src/static/image/emoji/002_撇嘴.png b/src/static/image/emoji/002_撇嘴.png
new file mode 100644
index 0000000..aa94a43
Binary files /dev/null and b/src/static/image/emoji/002_撇嘴.png differ
diff --git a/src/static/image/emoji/003_色.png b/src/static/image/emoji/003_色.png
new file mode 100644
index 0000000..c6ed319
Binary files /dev/null and b/src/static/image/emoji/003_色.png differ
diff --git a/src/static/image/emoji/004_发呆.png b/src/static/image/emoji/004_发呆.png
new file mode 100644
index 0000000..d0c50d7
Binary files /dev/null and b/src/static/image/emoji/004_发呆.png differ
diff --git a/src/static/image/emoji/005_得意.png b/src/static/image/emoji/005_得意.png
new file mode 100644
index 0000000..277ebac
Binary files /dev/null and b/src/static/image/emoji/005_得意.png differ
diff --git a/src/static/image/emoji/006_流泪.png b/src/static/image/emoji/006_流泪.png
new file mode 100644
index 0000000..4ba8813
Binary files /dev/null and b/src/static/image/emoji/006_流泪.png differ
diff --git a/src/static/image/emoji/007_害羞.png b/src/static/image/emoji/007_害羞.png
new file mode 100644
index 0000000..a7e93f5
Binary files /dev/null and b/src/static/image/emoji/007_害羞.png differ
diff --git a/src/static/image/emoji/008_闭嘴.png b/src/static/image/emoji/008_闭嘴.png
new file mode 100644
index 0000000..803c38e
Binary files /dev/null and b/src/static/image/emoji/008_闭嘴.png differ
diff --git a/src/static/image/emoji/009_睡.png b/src/static/image/emoji/009_睡.png
new file mode 100644
index 0000000..131010e
Binary files /dev/null and b/src/static/image/emoji/009_睡.png differ
diff --git a/src/static/image/emoji/010_大哭.png b/src/static/image/emoji/010_大哭.png
new file mode 100644
index 0000000..796bf70
Binary files /dev/null and b/src/static/image/emoji/010_大哭.png differ
diff --git a/src/static/image/emoji/011_尴尬.png b/src/static/image/emoji/011_尴尬.png
new file mode 100644
index 0000000..7014a5b
Binary files /dev/null and b/src/static/image/emoji/011_尴尬.png differ
diff --git a/src/static/image/emoji/012_发怒.png b/src/static/image/emoji/012_发怒.png
new file mode 100644
index 0000000..e6345f8
Binary files /dev/null and b/src/static/image/emoji/012_发怒.png differ
diff --git a/src/static/image/emoji/013_调皮.png b/src/static/image/emoji/013_调皮.png
new file mode 100644
index 0000000..6d0513b
Binary files /dev/null and b/src/static/image/emoji/013_调皮.png differ
diff --git a/src/static/image/emoji/014_呲牙.png b/src/static/image/emoji/014_呲牙.png
new file mode 100644
index 0000000..5017b0b
Binary files /dev/null and b/src/static/image/emoji/014_呲牙.png differ
diff --git a/src/static/image/emoji/015_惊讶.png b/src/static/image/emoji/015_惊讶.png
new file mode 100644
index 0000000..79b64f8
Binary files /dev/null and b/src/static/image/emoji/015_惊讶.png differ
diff --git a/src/static/image/emoji/016_难过.png b/src/static/image/emoji/016_难过.png
new file mode 100644
index 0000000..f859bc7
Binary files /dev/null and b/src/static/image/emoji/016_难过.png differ
diff --git a/src/static/image/emoji/017_囧.png b/src/static/image/emoji/017_囧.png
new file mode 100644
index 0000000..79fa422
Binary files /dev/null and b/src/static/image/emoji/017_囧.png differ
diff --git a/src/static/image/emoji/018_抓狂.png b/src/static/image/emoji/018_抓狂.png
new file mode 100644
index 0000000..251d857
Binary files /dev/null and b/src/static/image/emoji/018_抓狂.png differ
diff --git a/src/static/image/emoji/019_吐.png b/src/static/image/emoji/019_吐.png
new file mode 100644
index 0000000..aa396d3
Binary files /dev/null and b/src/static/image/emoji/019_吐.png differ
diff --git a/src/static/image/emoji/020_偷笑.png b/src/static/image/emoji/020_偷笑.png
new file mode 100644
index 0000000..91a9033
Binary files /dev/null and b/src/static/image/emoji/020_偷笑.png differ
diff --git a/src/static/image/emoji/021_愉快.png b/src/static/image/emoji/021_愉快.png
new file mode 100644
index 0000000..2e07fbc
Binary files /dev/null and b/src/static/image/emoji/021_愉快.png differ
diff --git a/src/static/image/emoji/022_白眼.png b/src/static/image/emoji/022_白眼.png
new file mode 100644
index 0000000..b4cc86d
Binary files /dev/null and b/src/static/image/emoji/022_白眼.png differ
diff --git a/src/static/image/emoji/023_傲慢.png b/src/static/image/emoji/023_傲慢.png
new file mode 100644
index 0000000..23e6456
Binary files /dev/null and b/src/static/image/emoji/023_傲慢.png differ
diff --git a/src/static/image/emoji/024_困.png b/src/static/image/emoji/024_困.png
new file mode 100644
index 0000000..47b19a4
Binary files /dev/null and b/src/static/image/emoji/024_困.png differ
diff --git a/src/static/image/emoji/025_惊恐.png b/src/static/image/emoji/025_惊恐.png
new file mode 100644
index 0000000..fc3afc8
Binary files /dev/null and b/src/static/image/emoji/025_惊恐.png differ
diff --git a/src/static/image/emoji/026_憨笑.png b/src/static/image/emoji/026_憨笑.png
new file mode 100644
index 0000000..77d1978
Binary files /dev/null and b/src/static/image/emoji/026_憨笑.png differ
diff --git a/src/static/image/emoji/027_悠闲.png b/src/static/image/emoji/027_悠闲.png
new file mode 100644
index 0000000..6ee78f9
Binary files /dev/null and b/src/static/image/emoji/027_悠闲.png differ
diff --git a/src/static/image/emoji/028_咒骂.png b/src/static/image/emoji/028_咒骂.png
new file mode 100644
index 0000000..367a2f4
Binary files /dev/null and b/src/static/image/emoji/028_咒骂.png differ
diff --git a/src/static/image/emoji/029_疑问.png b/src/static/image/emoji/029_疑问.png
new file mode 100644
index 0000000..d3070d3
Binary files /dev/null and b/src/static/image/emoji/029_疑问.png differ
diff --git a/src/static/image/emoji/030_嘘.png b/src/static/image/emoji/030_嘘.png
new file mode 100644
index 0000000..adc2ce6
Binary files /dev/null and b/src/static/image/emoji/030_嘘.png differ
diff --git a/src/static/image/emoji/031_晕.png b/src/static/image/emoji/031_晕.png
new file mode 100644
index 0000000..beb03a8
Binary files /dev/null and b/src/static/image/emoji/031_晕.png differ
diff --git a/src/static/image/emoji/032_衰.png b/src/static/image/emoji/032_衰.png
new file mode 100644
index 0000000..08d967a
Binary files /dev/null and b/src/static/image/emoji/032_衰.png differ
diff --git a/src/static/image/emoji/033_骷髅.png b/src/static/image/emoji/033_骷髅.png
new file mode 100644
index 0000000..cd665f8
Binary files /dev/null and b/src/static/image/emoji/033_骷髅.png differ
diff --git a/src/static/image/emoji/034_敲打.png b/src/static/image/emoji/034_敲打.png
new file mode 100644
index 0000000..5a235e5
Binary files /dev/null and b/src/static/image/emoji/034_敲打.png differ
diff --git a/src/static/image/emoji/035_再见.png b/src/static/image/emoji/035_再见.png
new file mode 100644
index 0000000..4027e2b
Binary files /dev/null and b/src/static/image/emoji/035_再见.png differ
diff --git a/src/static/image/emoji/036_擦汗.png b/src/static/image/emoji/036_擦汗.png
new file mode 100644
index 0000000..0d36510
Binary files /dev/null and b/src/static/image/emoji/036_擦汗.png differ
diff --git a/src/static/image/emoji/037_抠鼻.png b/src/static/image/emoji/037_抠鼻.png
new file mode 100644
index 0000000..721be54
Binary files /dev/null and b/src/static/image/emoji/037_抠鼻.png differ
diff --git a/src/static/image/emoji/038_鼓掌.png b/src/static/image/emoji/038_鼓掌.png
new file mode 100644
index 0000000..299571f
Binary files /dev/null and b/src/static/image/emoji/038_鼓掌.png differ
diff --git a/src/static/image/emoji/039_坏笑.png b/src/static/image/emoji/039_坏笑.png
new file mode 100644
index 0000000..0dcd3df
Binary files /dev/null and b/src/static/image/emoji/039_坏笑.png differ
diff --git a/src/static/image/emoji/040_右哼哼.png b/src/static/image/emoji/040_右哼哼.png
new file mode 100644
index 0000000..3d7ed2f
Binary files /dev/null and b/src/static/image/emoji/040_右哼哼.png differ
diff --git a/src/static/image/emoji/041_鄙视.png b/src/static/image/emoji/041_鄙视.png
new file mode 100644
index 0000000..8c5b524
Binary files /dev/null and b/src/static/image/emoji/041_鄙视.png differ
diff --git a/src/static/image/emoji/042_委屈.png b/src/static/image/emoji/042_委屈.png
new file mode 100644
index 0000000..3a53be3
Binary files /dev/null and b/src/static/image/emoji/042_委屈.png differ
diff --git a/src/static/image/emoji/043_快哭了.png b/src/static/image/emoji/043_快哭了.png
new file mode 100644
index 0000000..18cc67d
Binary files /dev/null and b/src/static/image/emoji/043_快哭了.png differ
diff --git a/src/static/image/emoji/044_阴险.png b/src/static/image/emoji/044_阴险.png
new file mode 100644
index 0000000..2e9af31
Binary files /dev/null and b/src/static/image/emoji/044_阴险.png differ
diff --git a/src/static/image/emoji/045_亲亲.png b/src/static/image/emoji/045_亲亲.png
new file mode 100644
index 0000000..7511964
Binary files /dev/null and b/src/static/image/emoji/045_亲亲.png differ
diff --git a/src/static/image/emoji/046_可怜.png b/src/static/image/emoji/046_可怜.png
new file mode 100644
index 0000000..e754902
Binary files /dev/null and b/src/static/image/emoji/046_可怜.png differ
diff --git a/src/static/image/emoji/047_笑脸.png b/src/static/image/emoji/047_笑脸.png
new file mode 100644
index 0000000..fd2d9b2
Binary files /dev/null and b/src/static/image/emoji/047_笑脸.png differ
diff --git a/src/static/image/emoji/048_生病.png b/src/static/image/emoji/048_生病.png
new file mode 100644
index 0000000..ee867ab
Binary files /dev/null and b/src/static/image/emoji/048_生病.png differ
diff --git a/src/static/image/emoji/049_脸红.png b/src/static/image/emoji/049_脸红.png
new file mode 100644
index 0000000..39cb713
Binary files /dev/null and b/src/static/image/emoji/049_脸红.png differ
diff --git a/src/static/image/emoji/050_破涕为笑.png b/src/static/image/emoji/050_破涕为笑.png
new file mode 100644
index 0000000..8e8cac7
Binary files /dev/null and b/src/static/image/emoji/050_破涕为笑.png differ
diff --git a/src/static/image/emoji/051_恐惧.png b/src/static/image/emoji/051_恐惧.png
new file mode 100644
index 0000000..fb78a62
Binary files /dev/null and b/src/static/image/emoji/051_恐惧.png differ
diff --git a/src/static/image/emoji/052_失望.png b/src/static/image/emoji/052_失望.png
new file mode 100644
index 0000000..607bc19
Binary files /dev/null and b/src/static/image/emoji/052_失望.png differ
diff --git a/src/static/image/emoji/053_无语.png b/src/static/image/emoji/053_无语.png
new file mode 100644
index 0000000..40f7124
Binary files /dev/null and b/src/static/image/emoji/053_无语.png differ
diff --git a/src/static/image/emoji/054_嘿哈.png b/src/static/image/emoji/054_嘿哈.png
new file mode 100644
index 0000000..ea5a518
Binary files /dev/null and b/src/static/image/emoji/054_嘿哈.png differ
diff --git a/src/static/image/emoji/055_捂脸.png b/src/static/image/emoji/055_捂脸.png
new file mode 100644
index 0000000..45f475e
Binary files /dev/null and b/src/static/image/emoji/055_捂脸.png differ
diff --git a/src/static/image/emoji/056_奸笑.png b/src/static/image/emoji/056_奸笑.png
new file mode 100644
index 0000000..98ea534
Binary files /dev/null and b/src/static/image/emoji/056_奸笑.png differ
diff --git a/src/static/image/emoji/057_机智.png b/src/static/image/emoji/057_机智.png
new file mode 100644
index 0000000..fb65d4a
Binary files /dev/null and b/src/static/image/emoji/057_机智.png differ
diff --git a/src/static/image/emoji/058_皱眉.png b/src/static/image/emoji/058_皱眉.png
new file mode 100644
index 0000000..44f0ad2
Binary files /dev/null and b/src/static/image/emoji/058_皱眉.png differ
diff --git a/src/static/image/emoji/059_耶.png b/src/static/image/emoji/059_耶.png
new file mode 100644
index 0000000..b5a2e76
Binary files /dev/null and b/src/static/image/emoji/059_耶.png differ
diff --git a/src/static/image/emoji/060_吃瓜.png b/src/static/image/emoji/060_吃瓜.png
new file mode 100644
index 0000000..8728329
Binary files /dev/null and b/src/static/image/emoji/060_吃瓜.png differ
diff --git a/src/static/image/emoji/061_加油.png b/src/static/image/emoji/061_加油.png
new file mode 100644
index 0000000..0e35e64
Binary files /dev/null and b/src/static/image/emoji/061_加油.png differ
diff --git a/src/static/image/emoji/062_汗.png b/src/static/image/emoji/062_汗.png
new file mode 100644
index 0000000..0393ed5
Binary files /dev/null and b/src/static/image/emoji/062_汗.png differ
diff --git a/src/static/image/emoji/063_天啊.png b/src/static/image/emoji/063_天啊.png
new file mode 100644
index 0000000..2c1f285
Binary files /dev/null and b/src/static/image/emoji/063_天啊.png differ
diff --git a/src/static/image/emoji/064_Emm.png b/src/static/image/emoji/064_Emm.png
new file mode 100644
index 0000000..51c329c
Binary files /dev/null and b/src/static/image/emoji/064_Emm.png differ
diff --git a/src/static/image/emoji/065_社会社会.png b/src/static/image/emoji/065_社会社会.png
new file mode 100644
index 0000000..097fcfe
Binary files /dev/null and b/src/static/image/emoji/065_社会社会.png differ
diff --git a/src/static/image/emoji/066_旺柴.png b/src/static/image/emoji/066_旺柴.png
new file mode 100644
index 0000000..2dc5e2c
Binary files /dev/null and b/src/static/image/emoji/066_旺柴.png differ
diff --git a/src/static/image/emoji/067_好的.png b/src/static/image/emoji/067_好的.png
new file mode 100644
index 0000000..a62c71d
Binary files /dev/null and b/src/static/image/emoji/067_好的.png differ
diff --git a/src/static/image/emoji/068_打脸.png b/src/static/image/emoji/068_打脸.png
new file mode 100644
index 0000000..4103e73
Binary files /dev/null and b/src/static/image/emoji/068_打脸.png differ
diff --git a/src/static/image/emoji/069_哇.png b/src/static/image/emoji/069_哇.png
new file mode 100644
index 0000000..aaa947f
Binary files /dev/null and b/src/static/image/emoji/069_哇.png differ
diff --git a/src/static/image/emoji/070_翻白眼.png b/src/static/image/emoji/070_翻白眼.png
new file mode 100644
index 0000000..d63e6ca
Binary files /dev/null and b/src/static/image/emoji/070_翻白眼.png differ
diff --git a/src/static/image/emoji/071_666.png b/src/static/image/emoji/071_666.png
new file mode 100644
index 0000000..cb7912c
Binary files /dev/null and b/src/static/image/emoji/071_666.png differ
diff --git a/src/static/image/emoji/072_让我看看.png b/src/static/image/emoji/072_让我看看.png
new file mode 100644
index 0000000..73c5fae
Binary files /dev/null and b/src/static/image/emoji/072_让我看看.png differ
diff --git a/src/static/image/emoji/073_叹气.png b/src/static/image/emoji/073_叹气.png
new file mode 100644
index 0000000..31a5eac
Binary files /dev/null and b/src/static/image/emoji/073_叹气.png differ
diff --git a/src/static/image/emoji/074_苦涩.png b/src/static/image/emoji/074_苦涩.png
new file mode 100644
index 0000000..e0df9e0
Binary files /dev/null and b/src/static/image/emoji/074_苦涩.png differ
diff --git a/src/static/image/emoji/075_裂开.png b/src/static/image/emoji/075_裂开.png
new file mode 100644
index 0000000..43c7850
Binary files /dev/null and b/src/static/image/emoji/075_裂开.png differ
diff --git a/src/static/image/emoji/076_嘴唇.png b/src/static/image/emoji/076_嘴唇.png
new file mode 100644
index 0000000..758554e
Binary files /dev/null and b/src/static/image/emoji/076_嘴唇.png differ
diff --git a/src/static/image/emoji/077_爱心.png b/src/static/image/emoji/077_爱心.png
new file mode 100644
index 0000000..69e0c7c
Binary files /dev/null and b/src/static/image/emoji/077_爱心.png differ
diff --git a/src/static/image/emoji/078_心碎.png b/src/static/image/emoji/078_心碎.png
new file mode 100644
index 0000000..993bbc9
Binary files /dev/null and b/src/static/image/emoji/078_心碎.png differ
diff --git a/src/static/image/emoji/079_拥抱.png b/src/static/image/emoji/079_拥抱.png
new file mode 100644
index 0000000..3498f37
Binary files /dev/null and b/src/static/image/emoji/079_拥抱.png differ
diff --git a/src/static/image/emoji/080_强.png b/src/static/image/emoji/080_强.png
new file mode 100644
index 0000000..0ffeb3f
Binary files /dev/null and b/src/static/image/emoji/080_强.png differ
diff --git a/src/static/image/emoji/081_弱.png b/src/static/image/emoji/081_弱.png
new file mode 100644
index 0000000..eb97785
Binary files /dev/null and b/src/static/image/emoji/081_弱.png differ
diff --git a/src/static/image/emoji/082_握手.png b/src/static/image/emoji/082_握手.png
new file mode 100644
index 0000000..3eed15b
Binary files /dev/null and b/src/static/image/emoji/082_握手.png differ
diff --git a/src/static/image/emoji/083_胜利.png b/src/static/image/emoji/083_胜利.png
new file mode 100644
index 0000000..ab9939b
Binary files /dev/null and b/src/static/image/emoji/083_胜利.png differ
diff --git a/src/static/image/emoji/084_抱拳.png b/src/static/image/emoji/084_抱拳.png
new file mode 100644
index 0000000..0bec2c9
Binary files /dev/null and b/src/static/image/emoji/084_抱拳.png differ
diff --git a/src/static/image/emoji/085_勾引.png b/src/static/image/emoji/085_勾引.png
new file mode 100644
index 0000000..20282a6
Binary files /dev/null and b/src/static/image/emoji/085_勾引.png differ
diff --git a/src/static/image/emoji/086_拳头.png b/src/static/image/emoji/086_拳头.png
new file mode 100644
index 0000000..0815a53
Binary files /dev/null and b/src/static/image/emoji/086_拳头.png differ
diff --git a/src/static/image/emoji/087_OK.png b/src/static/image/emoji/087_OK.png
new file mode 100644
index 0000000..b48648c
Binary files /dev/null and b/src/static/image/emoji/087_OK.png differ
diff --git a/src/static/image/emoji/088_合十.png b/src/static/image/emoji/088_合十.png
new file mode 100644
index 0000000..1ab9de0
Binary files /dev/null and b/src/static/image/emoji/088_合十.png differ
diff --git a/src/static/image/emoji/089_啤酒.png b/src/static/image/emoji/089_啤酒.png
new file mode 100644
index 0000000..bcf95ca
Binary files /dev/null and b/src/static/image/emoji/089_啤酒.png differ
diff --git a/src/static/image/emoji/090_咖啡.png b/src/static/image/emoji/090_咖啡.png
new file mode 100644
index 0000000..6ff8079
Binary files /dev/null and b/src/static/image/emoji/090_咖啡.png differ
diff --git a/src/static/image/emoji/091_蛋糕.png b/src/static/image/emoji/091_蛋糕.png
new file mode 100644
index 0000000..e9793bd
Binary files /dev/null and b/src/static/image/emoji/091_蛋糕.png differ
diff --git a/src/static/image/emoji/092_玫瑰.png b/src/static/image/emoji/092_玫瑰.png
new file mode 100644
index 0000000..6ad9241
Binary files /dev/null and b/src/static/image/emoji/092_玫瑰.png differ
diff --git a/src/static/image/emoji/093_凋谢.png b/src/static/image/emoji/093_凋谢.png
new file mode 100644
index 0000000..afb937b
Binary files /dev/null and b/src/static/image/emoji/093_凋谢.png differ
diff --git a/src/static/image/emoji/094_菜刀.png b/src/static/image/emoji/094_菜刀.png
new file mode 100644
index 0000000..979155f
Binary files /dev/null and b/src/static/image/emoji/094_菜刀.png differ
diff --git a/src/static/image/emoji/095_炸弹.png b/src/static/image/emoji/095_炸弹.png
new file mode 100644
index 0000000..5a7a6b7
Binary files /dev/null and b/src/static/image/emoji/095_炸弹.png differ
diff --git a/src/static/image/emoji/096_便便.png b/src/static/image/emoji/096_便便.png
new file mode 100644
index 0000000..e23f808
Binary files /dev/null and b/src/static/image/emoji/096_便便.png differ
diff --git a/src/static/image/emoji/097_月亮.png b/src/static/image/emoji/097_月亮.png
new file mode 100644
index 0000000..c44c125
Binary files /dev/null and b/src/static/image/emoji/097_月亮.png differ
diff --git a/src/static/image/emoji/098_太阳.png b/src/static/image/emoji/098_太阳.png
new file mode 100644
index 0000000..8ed679c
Binary files /dev/null and b/src/static/image/emoji/098_太阳.png differ
diff --git a/src/static/image/emoji/099_庆祝.png b/src/static/image/emoji/099_庆祝.png
new file mode 100644
index 0000000..d83feb0
Binary files /dev/null and b/src/static/image/emoji/099_庆祝.png differ
diff --git a/src/static/image/emoji/100_礼物.png b/src/static/image/emoji/100_礼物.png
new file mode 100644
index 0000000..a286ac2
Binary files /dev/null and b/src/static/image/emoji/100_礼物.png differ
diff --git a/src/static/image/emoji/101_红包.png b/src/static/image/emoji/101_红包.png
new file mode 100644
index 0000000..b814d2f
Binary files /dev/null and b/src/static/image/emoji/101_红包.png differ
diff --git a/src/static/image/emoji/102_發.png b/src/static/image/emoji/102_發.png
new file mode 100644
index 0000000..1d2a136
Binary files /dev/null and b/src/static/image/emoji/102_發.png differ
diff --git a/src/static/image/emoji/103_福.png b/src/static/image/emoji/103_福.png
new file mode 100644
index 0000000..43b282c
Binary files /dev/null and b/src/static/image/emoji/103_福.png differ
diff --git a/src/static/image/emoji/104_烟花.png b/src/static/image/emoji/104_烟花.png
new file mode 100644
index 0000000..b13c1a9
Binary files /dev/null and b/src/static/image/emoji/104_烟花.png differ
diff --git a/src/static/image/emoji/105_爆竹.png b/src/static/image/emoji/105_爆竹.png
new file mode 100644
index 0000000..4622039
Binary files /dev/null and b/src/static/image/emoji/105_爆竹.png differ
diff --git a/src/static/image/emoji/106_猪头.png b/src/static/image/emoji/106_猪头.png
new file mode 100644
index 0000000..af15998
Binary files /dev/null and b/src/static/image/emoji/106_猪头.png differ
diff --git a/src/static/image/emoji/107_跳跳.png b/src/static/image/emoji/107_跳跳.png
new file mode 100644
index 0000000..08788c5
Binary files /dev/null and b/src/static/image/emoji/107_跳跳.png differ
diff --git a/src/static/image/emoji/108_发抖.png b/src/static/image/emoji/108_发抖.png
new file mode 100644
index 0000000..a356963
Binary files /dev/null and b/src/static/image/emoji/108_发抖.png differ
diff --git a/src/static/image/emoji/109_转圈.png b/src/static/image/emoji/109_转圈.png
new file mode 100644
index 0000000..a455441
Binary files /dev/null and b/src/static/image/emoji/109_转圈.png differ
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 612ddb1..5f468f8 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -5,7 +5,7 @@ import { ServeGroupApplyUnread } from '@/api/group'
 // import { delAccessToken } from '@/utils/auth'
 // import { storage } from '@/utils/storage'
 
-export const useUserStore = defineStore('user', {
+export const useUserStore = defineStore('chatUser', {
   persist: true,
   state: () => {
     return {
diff --git a/src/utils/emojis.js b/src/utils/emojis.js
new file mode 100644
index 0000000..0eabced
--- /dev/null
+++ b/src/utils/emojis.js
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+/**
+ * 动态表情
+ */
+export const emojis = {
+  '[微笑]':
+    `<img class='emoji' src='${wx001}'>`,
+  '[撇嘴]':
+    `<img class='emoji' src='${pz002}'>`,
+  '[色]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/2.gif'>",
+  '[发呆]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/3.gif'>",
+  '[得意]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/4.gif'>",
+  '[流泪]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/5.gif'>",
+  '[害羞]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/6.gif'>",
+  '[闭嘴]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/7.gif'>",
+  '[睡]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/8.gif'>",
+  '[大哭]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/9.gif'>",
+  '[尴尬]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/10.gif'>",
+  '[发怒]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/11.gif'>",
+  '[调皮]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/12.gif'>",
+  '[呲牙]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/13.gif'>",
+  '[惊讶]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/14.gif'>",
+  '[难过]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/15.gif'>",
+  '[酷]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/16.gif'>",
+  '[冷汗]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/17.gif'>",
+  '[抓狂]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/18.gif'>",
+  '[吐]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/19.gif'>",
+  '[偷笑]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/20.gif'>",
+  '[可爱]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/21.gif'>",
+  '[白眼]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/22.gif'>",
+  '[傲慢]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/23.gif'>",
+  '[饥饿]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/24.gif'>",
+  '[困]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/25.gif'>",
+  '[惊恐]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/26.gif'>",
+  '[流汗]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/27.gif'>",
+  '[憨笑]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/28.gif'>",
+  '[大兵]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/29.gif'>",
+  '[奋斗]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/30.gif'>",
+  '[咒骂]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/31.gif'>",
+  '[疑问]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/32.gif'>",
+  '[嘘]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/33.gif'>",
+  '[晕]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/34.gif'>",
+  '[折磨]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/35.gif'>",
+  '[衰]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/36.gif'>",
+  '[骷髅]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/37.gif'>",
+  '[敲打]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/38.gif'>",
+  '[再见]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/39.gif'>",
+  '[擦汗]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/40.gif'>",
+  '[抠鼻]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/41.gif'>",
+  '[鼓掌]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/42.gif'>",
+  '[糗大了]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/43.gif'>",
+  '[坏笑]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/44.gif'>",
+  '[左哼哼]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/45.gif'>",
+  '[右哼哼]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/46.gif'>",
+  '[哈欠]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/47.gif'>",
+  '[鄙视]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/48.gif'>",
+  '[委屈]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/49.gif'>",
+  '[快哭了]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/50.gif'>",
+  '[阴险]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/51.gif'>",
+  '[亲亲]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/52.gif'>",
+  '[吓]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/53.gif'>",
+  '[可怜]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/54.gif'>",
+  '[菜刀]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/55.gif'>",
+  '[西瓜]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/56.gif'>",
+  '[啤酒]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/57.gif'>",
+  '[篮球]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/58.gif'>",
+  '[咖啡]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/60.gif'>",
+  '[饭]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/61.gif'>",
+  '[玫瑰]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/63.gif'>",
+  '[凋谢]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/64.gif'>",
+  '[示爱]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/65.gif'>",
+  '[爱心]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/66.gif'>",
+  '[心碎]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/67.gif'>",
+  '[蛋糕]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/68.gif'>",
+  '[炸弹]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/70.gif'>",
+  '[刀]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/71.gif'>",
+  '[足球]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/72.gif'>",
+  '[礼物]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/77.gif'>",
+  '[拥抱]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/78.gif'>",
+  '[强]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/79.gif'>",
+  '[弱]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/80.gif'>",
+  '[握手]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/81.gif'>",
+  '[胜利]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/82.gif'>",
+  '[抱拳]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/83.gif'>",
+  '[勾引]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/84.gif'>",
+  '[拳头]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/85.gif'>",
+  '[差劲]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/86.gif'>",
+  '[爱你]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/87.gif'>",
+  '[NO]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/88.gif'>",
+  '[OK]':
+    "<img class='emoji' src='https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/89.gif'>"
+}
+
+const emojisKeys = Object.keys(emojis)
+
+const regEmoji = emojisKeys
+  .map((value) => '|\\' + value)
+  .join('')
+  .replace('|', '')
+
+/**
+ * 替换表情文字
+ *
+ * @param {String} content 需要替换的字符串
+ */
+export function textReplaceEmoji(content) {
+  return content.replace(new RegExp(`(${regEmoji})`, 'gi'), ($0, $1) => {
+    return emojis[$1]
+  })
+}
diff --git a/src/utils/strings.js b/src/utils/strings.js
new file mode 100644
index 0000000..51f6758
--- /dev/null
+++ b/src/utils/strings.js
@@ -0,0 +1,80 @@
+/**
+ * 去除字符串控制
+ *
+ * @param {String} str
+ */
+export function trim(str, type = null) {
+  if (type) {
+    return str.replace(/(^\s*)|(\s*$)/g, '')
+  } else if (type == 'l') {
+    return str.replace(/(^\s*)/g, '')
+  } else {
+    return str.replace(/(\s*$)/g, '')
+  }
+}
+
+/**
+ * 隐藏用户手机号中间四位
+ *
+ * @param {String} phone  手机号
+ */
+export function hidePhone(phone) {
+  return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
+}
+
+/**
+ * Url 替换超链接
+ *
+ * @param {String} text 文本
+ * @param {String} color 超链接颜色
+ */
+export function textReplaceLink(text, color = '#409eff') {
+  let exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gi
+  return text.replace(
+    exp,
+    `<a href='$1' alt='link' style="color:${color};text-decoration: revert;">$1</a >`
+  )
+}
+
+/**
+ * 文本 替换@信息
+ *
+ * @param {String} text 文本
+ * @param {String} color 超链接颜色
+ */
+export function textReplaceMention(text, color = '#2196F3') {
+  return text.replace(new RegExp(/@\S+/, 'g'), ($0, $1) => {
+    return `<span style="color:${color};">${$0}</span>`
+  })
+}
+
+/**
+ * 格式化文件大小
+ *
+ * @param {string|number} value 文件大小(字节)
+ */
+export function fileFormatSize(value) {
+  if (null == value || value == '') {
+    return '0'
+  }
+
+  let unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
+  let index = 0
+  let srcsize = parseFloat(value)
+  index = Math.floor(Math.log(srcsize) / Math.log(1000))
+
+  let size = srcsize / Math.pow(1000, index)
+  size = size.toFixed(2) //保留的小数位数
+  return size + unitArr[index]
+}
+
+/**
+ * 获取文件后缀名
+ *
+ * @param {String} fileName
+ */
+export function fileSuffix(fileName) {
+  let ext = fileName.split('.')
+
+  return ext[ext.length - 1]
+}