Răsfoiți Sursa

0.0.30

完成发送文件,发送图片
Sean 4 luni în urmă
părinte
comite
935a386308
1 a modificat fișierele cu 120 adăugiri și 16 ștergeri
  1. 120 16
      src/views/chat/hall.vue

+ 120 - 16
src/views/chat/hall.vue

@@ -106,7 +106,7 @@
             </div> -->
             <div v-for="item in chatrecords" :key="item.id">
               <!--文字消息类型 对方-->
-              <div class="otherUserMessage" v-if="item.action=='recieved'">
+              <div class="otherUserMessage" v-if="item.action=='recieved'&&item.msg_type==1">
                 <div class="otherUserIcon">
                   <img :src="item.receiver_avatar">
                 </div>
@@ -115,7 +115,7 @@
                 </div>
               </div>
               <!--文字消息类型 我-->
-              <div class="meUserMessage" v-if="item.action=='said'">
+              <div class="meUserMessage" v-if="item.action=='said'&&item.msg_type==1">
                 <div class="meUserMessageText">
                   {{item.content}}
                 </div>
@@ -123,6 +123,75 @@
                   <img :src="item.user_avatar">
                 </div>
               </div>
+              <!-- 图片类型 对方-->
+              <div class="otherUserMessage" v-if="item.action=='recieved'&&item.msg_type==2">
+                <div class="otherUserIcon">
+                  <img :src="item.receiver_avatar">
+                </div>
+                <div class="otherUserMessageText">
+                  <div class="messageTypeImage">
+                    <img :src="item.content">
+                  </div>
+                </div>
+              </div>
+              <!-- 图片类型 我-->
+              <div class="meUserMessage" v-if="item.action=='said'&&item.msg_type==2">
+                <div class="meUserMessageText">
+                  <div class="messageTypeImage">
+                    <img :src="item.content">
+                  </div>
+                </div>
+                <div class="meUserIcon">
+                  <img :src="item.user_avatar">
+                </div>
+              </div>
+              <!--文件类型 对方-->
+              <div class="otherUserMessage" v-if="item.action=='recieved'&&item.msg_type==3">
+                <div class="otherUserIcon">
+                  <img :src="item.receiver_avatar">
+                </div>
+                <div class="otherUserMessageText">
+                  <div class="messageTypeFile">
+                    <div class="messageTypeFileTop">
+                      <div class="messageTypeFileInfo">
+                        <div class="messageTypeFileTitle">
+                          {{ JSON.parse(item.content).oldFileName }}
+                        </div>
+                        <div class="messageTypeFileIcon">
+                          <img src="@/assets/chat/file.png"/>
+                        </div>
+                      </div>
+                      <!-- <div class="messageTypeFileSize">20kb</div> -->
+                    </div>
+                    <div class="messageTypeFileLogo">恒星管理平台</div>
+                  </div>
+                </div>
+              </div>
+              <!--文件类型 我-->
+              <div class="meUserMessage" v-if="item.action=='said'&&item.msg_type==3">
+                <div class="meUserMessageText">
+                  <div class="messageTypeFile">
+                    <div class="messageTypeFileTop">
+                      <div class="messageTypeFileInfo">
+                        <div class="messageTypeFileTitle">
+                          {{ JSON.parse(item.content).oldFileName }}
+                        </div>
+                        <div class="messageTypeFileIcon">
+                          <img src="@/assets/chat/file.png"/>
+                        </div>
+                      </div>
+                      <!-- <div class="messageTypeFileSize">20kb</div> -->
+                    </div>
+                    <div class="messageTypeFileLogo">恒星管理平台</div>
+                  </div>
+                </div>
+                <div class="meUserIcon">
+                  <img :src="item.user_avatar" />
+                </div>
+              </div>
+
+
+
             </div>
             <!-- 文件类型
             <div class="meUserMessage">
@@ -145,17 +214,7 @@
               </div>
             </div> -->
 
-            <!-- 图片类型
-            <div class="meUserMessage">
-              <div class="meUserMessageText">
-                <div class="messageTypeImage">
-                  <img src="@/assets/chat/user/user.png" alt="">
-                </div>
-              </div>
-              <div class="meUserIcon">
-                <img src="@/assets/chat/user/user.png" alt="">
-              </div>
-            </div> -->
+            
 
             <!--发名片
             <div class="meUserMessage">
@@ -247,7 +306,8 @@
               </el-input>
             </div>
             <div class="sendMessageButton">
-              <el-button type="primary" size="medium" @click="sendUserMessage">发送 <i class="el-icon-position"></i></el-button>
+              <el-button v-if="sendMessage.img.imgUrl!=''||sendMessage.file.fileUrl!=''" type="primary" size="medium" @click="sendUserMessageToFile">发送文件 <i class="el-icon-position"></i></el-button>
+              <el-button v-else type="primary" size="medium" @click="sendUserMessage">发送 <i class="el-icon-position"></i></el-button>
             </div>
           </div>
           <!--右侧菜单 start------------------------------------------------------------>
@@ -1686,6 +1746,50 @@ export default {
         this.$message.error('消息不能为空!')
       }
     },
+    // 5.3 发送图片或者文字
+    sendUserMessageToFile() {
+      if(this.sendMessage.img.imgUrl!=''){
+        const message = { 
+          talk_type:this.receiverType,//当前的会话类型
+          receiver_id:this.receiverId,//当前的会话id
+          content:this.sendMessage.img.imgUrl,//用户发发送的消息
+          msg_type:2,//消息类型 1:文本 2:图片 3:文件 4:好友卡片 5:系统消息;6:加群卡片
+        };
+        if (this.ws && this.ws.readyState === WebSocket.OPEN) {
+          this.ws.send(JSON.stringify(message));
+          //发送完毕清除选择的图片
+          this.sendMessage.img.imgUrl='';
+        }
+        //如果文本框不为空,把文本框内的消息也提交过去
+        if(this.userMessage.trim()!=''){
+          this.sendUserMessage();
+        }
+      }
+      if(this.sendMessage.file.fileUrl!=''){
+        //把名称和地址打包成一个对象
+        const fileInfo = {
+          file_url:this.sendMessage.file.fileUrl,
+          oldFileName:this.sendMessage.file.oldFileName
+        }
+        const fileInfoString = JSON.stringify(fileInfo);
+        //发送消息
+        const message = { 
+          talk_type:this.receiverType,//当前的会话类型
+          receiver_id:this.receiverId,//当前的会话id
+          content:fileInfoString,//用户发发送的消息
+          msg_type:3,//消息类型 1:文本 2:图片 3:文件 4:好友卡片 5:系统消息;6:加群卡片
+        };
+        if (this.ws && this.ws.readyState === WebSocket.OPEN) {
+          this.ws.send(JSON.stringify(message));
+          //发送完毕清除选择的文件
+          this.sendMessage.file.fileUrl='';
+        }
+        //如果文本框不为空,把文本框内的消息也提交过去
+        if(this.userMessage.trim()!=''){
+          this.sendUserMessage();
+        }
+      }
+    },
     //5.websocket会话 end---------------------------------------->
   },
   mounted() {
@@ -2540,7 +2644,7 @@ export default {
       .messageTypeFileInfo {
         display: flex;
         align-items: center;
-        padding:20px 20px 0 20px;
+        padding:20px 20px 20px 20px;
         .messageTypeFileTitle {
           font-size: 16px;
           color: #333;
@@ -2609,7 +2713,7 @@ export default {
   //发送图片
   .messageTypeImage {
     width: 200px;
-    height: 200px;
+    //height: 200px;
     img {
       max-width: 200px;
       border-radius: 16px;