Selaa lähdekoodia

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

Xiao_123 10 kuukautta sitten
vanhempi
commit
a3e2d1c367

+ 13 - 12
src/hooks/web/useIM.js

@@ -193,20 +193,21 @@ async function getKey () {
   }
 }
 
-export const useIM = async () => {
+export const useIM = () => {
   const IM = useIMStore()
   const unreadCount = ref(0)
   const connected = ref(0)
-  // 通过自身userId和企业id获取token和uid
-  const { uid, wsUrl, token } = await getKey()
-  IM.setUid(uid)
-  // 单机模式可以直接设置地址
-  WKSDK.shared().config.addr = 'ws://' + wsUrl // 默认端口为5200
-  // 认证信息
-  WKSDK.shared().config.uid = uid // 用户uid(需要在悟空通讯端注册过)
-  WKSDK.shared().config.token = token // 用户token (需要在悟空通讯端注册过)
   
-  // onMounted(() => {
+  onMounted( async () => {
+    
+    // 通过自身userId和企业id获取token和uid
+    const { uid, wsUrl, token } = await getKey()
+    IM.setUid(uid)
+    // 单机模式可以直接设置地址
+    WKSDK.shared().config.addr = 'ws://' + wsUrl // 默认端口为5200
+    // 认证信息
+    WKSDK.shared().config.uid = uid // 用户uid(需要在悟空通讯端注册过)
+    WKSDK.shared().config.token = token // 用户token (需要在悟空通讯端注册过)
     // console.log('1')
     // 连接状态监听
     WKSDK.shared().connectManager.addConnectStatusListener(connectStatusListener)
@@ -216,7 +217,7 @@ export const useIM = async () => {
     // 连接
     // console.log('连接')
     WKSDK.shared().connectManager.connect()
-  // })
+  })
   onUnmounted(() => {
     WKSDK.shared().connectManager.removeConnectStatusListener(connectStatusListener)
     // 常规消息监听移除
@@ -224,7 +225,7 @@ export const useIM = async () => {
     // 连接状态监听移除
     WKSDK.shared().connectManager.disconnect()
   })
-
+  
   async function messageListen (message) {
     console.log('收到消息', message)
     IM.setFromChannel(message.channel.channelID)

+ 10 - 2
src/layout/company/navBar.vue

@@ -27,7 +27,7 @@
           <div class="line"></div>
           
           <!-- 头像用户名 -->
-          <div class="d-flex align-center" v-if="getToken()">
+          <div class="d-flex align-center" v-if="showBall">
             <v-menu open-on-hover>
               <template v-slot:activator="{ props }">
                 <div class="d-flex ml-5 pl-2 align-center cursor-pointer" v-bind="props">
@@ -92,7 +92,7 @@ import {
   getUserBindEnterpriseList,
   getUserRegisterEnterpriseApply
 } from '@/api/personal/user'
-import { computed, ref } from 'vue'
+import { computed, ref, onMounted } from 'vue'
 import { getToken } from '@/utils/auth'
 import { useUserStore } from '@/store/user'; const userStore = useUserStore()
 // import { useLocaleStore } from '@/store/locale'; const localeStore = useLocaleStore()
@@ -108,6 +108,14 @@ defineProps({
   }
 })
 
+const showBall = ref(false)
+
+onMounted(() => {
+  if (getToken()) {
+    showBall.value = true
+  }
+})
+
 const handleLogoClick = () => { router.push({ path: '/recruit/enterprise'}) }
 
 const enterpriseClick = (tabKey = 1) => {

+ 12 - 3
src/layout/personal/navBar.vue

@@ -83,7 +83,7 @@
               </v-list-item>
             </v-list>
           </v-menu> -->
-          <div class="d-flex align-center" v-if="getToken()">
+          <div class="d-flex align-center" v-if="showBall">
             <!-- <span class="cursor-pointer mx-5" @click="router.push({ path: '/recruit/personal/TaskCenter' })">{{ $t('sys.signIn') }}</span> -->
             <!-- <span class="cursor-pointer" @click="router.push({ path: '/recruit/personal/message' })">{{ $t('sys.news') }}</span> -->
             <!-- <v-badge
@@ -93,7 +93,7 @@
             >
               <v-btn class="ml-1" size="small" icon="mdi-bell-outline" @click="router.push({ path: '/recruit/personal/message' })"></v-btn>
             </v-badge> -->
-            <message-notification v-if="getToken()"></message-notification>
+            <message-notification v-if="showBall"></message-notification>
             
           </div>
         </div>
@@ -110,7 +110,7 @@
 </template>
 
 <script setup>
-import { ref } from 'vue'
+import { onMounted, ref } from 'vue'
 import { getToken } from '@/utils/auth'
 import { useUserStore } from '@/store/user'
 // import { useLocaleStore } from '@/store/locale'
@@ -119,6 +119,7 @@ import CtDialog from '@/components/CtDialog'
 import { useRouter } from 'vue-router'; const router = useRouter()
 import { getUserBindEnterpriseList, getUserRegisterEnterpriseApply } from '@/api/personal/user'
 import MessageNotification from './message.vue'
+
 // import { useIMStore } from '@/store/im'
 defineOptions({ name: 'personal-navbar' })
 
@@ -129,6 +130,14 @@ defineProps({
   }
 })
 
+const showBall = ref(false)
+
+onMounted(() => {
+  if (getToken()) {
+    showBall.value = true
+  }
+})
+
 // const useIM = useIMStore()
 
 const { t } = useI18n()

+ 2 - 2
src/store/user.js

@@ -37,7 +37,7 @@ export const useUserStore = defineStore('user',
       handleSmsLogin (data) {
         return new Promise((resolve, reject) => {
           const loginApi = data.loginType === 330 ? smsLoginOfEnterprise : smsLogin
-          loginApi(data).then(res => {
+          loginApi(data).then(async res => {
             // this.loginType = data.loginType
             setToken(res.accessToken)
             setRefreshToken(res.refreshToken)
@@ -45,7 +45,7 @@ export const useUserStore = defineStore('user',
             localStorage.setItem('accountInfo', JSON.stringify(res))
             localStorage.setItem('expiresTime', res.expiresTime) // token过期时间
             localStorage.setItem('loginType', 'personal')
-            this.getUserInfos()
+            await this.getUserInfos()
             this.getUserBaseInfos()
             resolve()
           }).catch(err => { reject(err) })

+ 20 - 10
src/views/recruit/components/message/components/chatting.vue

@@ -60,7 +60,7 @@
                 ></v-img>
               </v-avatar>
             </div>
-            <div class="message-text">{{ val.payload.content }}</div>
+            <div class="message-text" :class="{ active: val.from_uid === IM.uid}">{{ val.payload.content }}</div>
           </div>
         </div>
       </div>
@@ -71,12 +71,13 @@
         <v-textarea
           v-model="inputVal"
           label="请输入消息"
-          placeholder="请输入消息"
+          placeholder="请输入消息 按Ctrl+Enter换行"
           hide-details
           no-resize
           bg-color="white"
           variant="plain"
           :disabled="Object.keys(info).length === 0"
+          @keydown="handleKeyDown"
         >
           <!-- @keydown.stop.prevent="handleKeyDown" -->
           <template #append-inner>
@@ -130,7 +131,7 @@ const loading = ref(false)
 const mAvatar = userStore.baseInfo?.avatar || 'https://minio.citupro.com/dev/menduner/7.png'
 
 const chatRef = ref()
-const inputVal = ref()
+const inputVal = ref('')
 const pullDowning = ref(false) // 下拉中
 const pulldownFinished = ref(false) // 下拉完成
 
@@ -215,12 +216,18 @@ const changeOverlay = (val) => {
 const changeLoading = (val) => {
   loading.value = val
 }
-// const handleKeyDown = (event) => {
-//   if (event.keyCode === 13) {
-    
-//     console.log(event)
-//   } 
-// }
+const handleKeyDown = (event) => {
+  if (event.keyCode === 13) {
+    event.preventDefault()
+    if(event.ctrlKey) {
+      // 换行
+      inputVal.value += '\n'
+      return
+    }
+    // 发送
+    emits('handleSend', inputVal)
+  } 
+}
 const reset = () => {
   inputVal.value = ''
 }
@@ -295,7 +302,7 @@ defineExpose({
   .message-view_item {
     display: flex;
     flex-direction: row;
-    align-items: center;
+    align-items: flex-start;
     margin: 8px 0;
     position: relative;
     .message-text {
@@ -303,6 +310,9 @@ defineExpose({
       border-radius: 6px;
       max-width: 85%;
       padding: 10px;
+      &.active {
+        background: #d5e6e8;
+      }
     }
   }
   .is-self {