Sfoglia il codice sorgente

更新添加聊天功能

lex 1 anno fa
parent
commit
4a49a5aa5e

+ 5 - 4
src/App.vue

@@ -16,13 +16,13 @@
                 "
               >
                 <n-tab-pane name="message" tab="聊天"></n-tab-pane>
-                <n-tab-pane name="group" tab="群聊"></n-tab-pane>
-                <n-tab-pane name="contact" tab="联系人"></n-tab-pane>
+                <n-tab-pane name="group" tab="群聊" v-if="platform != 'orchestra'"></n-tab-pane>
+                <n-tab-pane name="contact" tab="联系人" v-if="platform != 'orchestra'"></n-tab-pane>
               </n-tabs>
 
               <TUIConversation v-show="currentModel === 'message'" @current="handleCurrentConversation" :displayOnlineStatus="displayOnlineStatus" />
-              <TUIGroup v-show="currentModel === 'group'" @current="handleCurrentConversation" :displayOnlineStatus="displayOnlineStatus" />
-              <TUIPerson v-show="currentModel === 'contact'" @current="handleCurrentConversation" :displayOnlineStatus="displayOnlineStatus" />
+              <TUIGroup v-if="platform != 'orchestra'" v-show="currentModel === 'group'" @current="handleCurrentConversation" :displayOnlineStatus="displayOnlineStatus" />
+              <TUIPerson v-if="platform != 'orchestra'" v-show="currentModel === 'contact'" @current="handleCurrentConversation" :displayOnlineStatus="displayOnlineStatus" />
             </div>
             <div class="chat">
               <TUIChat :isMsgNeedReadReceipt="isMsgNeedReadReceipt" :isNeedTyping="true" :isNeedEmojiReact="true">
@@ -62,6 +62,7 @@ export default defineComponent({
     const data = reactive({
       currentConversationID: "",
       currentModel: "message",
+      platform: sessionStorage.getItem("platform"), // 平台
       // env: TUIKit.TUIEnv
     });
 

+ 14 - 0
src/TUIKit/TUIComponents/container/TUIConversation/index.vue

@@ -105,6 +105,19 @@ const TUIConversation = defineComponent({
     };
 
     onMounted(() => {
+      window.addEventListener("message", (params?: any) => {
+        console.log(params, "message");
+        if (!params.data?.imUserId) return;
+
+        TUIServer.getConversationProfile(`C2C${params?.data.imUserId}`)
+          .then((imResponse: any) => {
+            // 通知 TUIConversation 添加当前会话
+            TUIServer.handleCurrentConversation(imResponse.data.conversation);
+          })
+          .catch((error: any) => {
+            console.log(error, "error");
+          });
+      });
       TUIServer.TUICore.tim.on(TUIServer.TUICore.TIM.EVENT.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED, onUpdateCount);
     });
     onBeforeMount(() => {
@@ -153,6 +166,7 @@ const TUIConversation = defineComponent({
         debouncedRequest(data.keyword);
       }
     };
+
     return {
       ...toRefs(data),
       handleCurrentConversation,

+ 8 - 6
src/TUIKit/api.ts

@@ -1,10 +1,12 @@
 import request from "../request";
 
+const platform = sessionStorage.getItem("platform") || "classroom";
+const api = platform == "classroom" ? "/edu-app" : "/api-backend";
 /**
  * 即时通讯 - 群组列表
  */
 export const imGroupPage = (params?: object) => {
-  return request.post("/edu-app/imGroup/page", {
+  return request.post(api + "/imGroup/page", {
     data: params,
   });
 };
@@ -13,7 +15,7 @@ export const imGroupPage = (params?: object) => {
  * 即时通讯 - 好友列表
  */
 export const imUserFriendPage = (params?: object) => {
-  return request.post("/edu-app/imUserFriend/page", {
+  return request.post(api + "/imUserFriend/page", {
     data: params,
   });
 };
@@ -22,7 +24,7 @@ export const imUserFriendPage = (params?: object) => {
  * 即时通讯 - 转让群组
  */
 export const imGroupChangeGroupOwner = (params?: object) => {
-  return request.post("/edu-app/imGroup/changeGroupOwner", {
+  return request.post(api + "/imGroup/changeGroupOwner", {
     data: params,
   });
 };
@@ -31,7 +33,7 @@ export const imGroupChangeGroupOwner = (params?: object) => {
  * 即时通讯 - 群公告列表
  */
 export const imGroupNoticePage = (params?: object) => {
-  return request.post("/edu-app/imGroupNotice/page", {
+  return request.post(api + "/imGroupNotice/page", {
     data: params,
   });
 };
@@ -40,7 +42,7 @@ export const imGroupNoticePage = (params?: object) => {
  * 即时通讯 - 新增公告
  */
 export const imGroupNoticeSave = (params?: object) => {
-  return request.post("/edu-app/imGroupNotice/save", {
+  return request.post(api + "/imGroupNotice/save", {
     data: params,
   });
 };
@@ -49,7 +51,7 @@ export const imGroupNoticeSave = (params?: object) => {
  * 即时通讯 - 修改群公告
  */
 export const imGroupNoticeUpdate = (params?: object) => {
-  return request.post("/edu-app/imGroupNotice/update", {
+  return request.post(api + "/imGroupNotice/update", {
     data: params,
   });
 };

+ 9 - 4
src/main.ts

@@ -25,16 +25,21 @@ import qs from "query-string";
 const parseSearch: any = qs.parse(location.search);
 const hashSearch = qs.parse(location.hash.split("?")[1]);
 const Authorization: string = parseSearch.Authorization || hashSearch.Authorization || "";
-// const subjectId: string = parseSearch.subjectId || hashSearch.subjectId || "";
+// 授权
 sessionStorage.setItem("Authorization", Authorization);
-// sessionStorage.setItem("subjectId", subjectId);
+/**
+ * 平台
+ * classroom 课堂乐器
+ * orchestra 管乐团
+ */
+sessionStorage.setItem("platform", parseSearch.platform || hashSearch.platform || "");
 
 import { TUIComponents, TUICore, genTestUserSig } from "./TUIKit";
 // import TUICallKit
 // import { TUICallKit } from "@tencentcloud/call-uikit-vue";
 
-const SDKAppID = 1400805079; // Your SDKAppID
-const secretKey = "c5f4ea6140128a36c842990446a2c89249ab886b5e1ea6893555aa635a0b3c30"; // Your secretKey
+const SDKAppID = parseSearch.appId || hashSearch.appId || 1400805079; // Your SDKAppID
+const secretKey = parseSearch.secretKey || hashSearch.secretKey || "c5f4ea6140128a36c842990446a2c89249ab886b5e1ea6893555aa635a0b3c30"; // Your secretKey
 const userID = parseSearch.userID || "KT:140:TEACHER"; // User ID
 
 // init TUIKit

+ 26 - 0
src/storex/index.ts

@@ -41,6 +41,8 @@ const taskList = [
 const state: any = {
   taskList,
   userInfo: {},
+  platform: "classroom", // 平台
+  token: "", //
   isMsgNeedReadReceipt: true,
   displayOnlineStatus: true,
   allowNotification: true,
@@ -83,6 +85,26 @@ if (sessionStorage.getItem("allowNotification")) {
   }
 }
 
+// 平台
+if (sessionStorage.getItem("platform")) {
+  const platform: string = sessionStorage.getItem("platform") || "";
+  try {
+    state.platform = JSON.parse(platform);
+  } catch (error) {
+    state.platform = false;
+  }
+}
+
+// 平台
+if (sessionStorage.getItem("token")) {
+  const token: string = sessionStorage.getItem("token") || "";
+  try {
+    state.token = JSON.parse(token);
+  } catch (error) {
+    state.token = false;
+  }
+}
+
 export default createStore({
   state,
   mutations: {
@@ -105,6 +127,10 @@ export default createStore({
       state.allowNotification = allowNotification;
       sessionStorage.setItem("allowNotification", JSON.stringify(allowNotification));
     },
+    setPlatform(state: any, platform: string) {
+      state.platform = platform;
+      sessionStorage.setItem("platform", platform);
+    },
   },
   actions: {},
   modules: {},