Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
7886f260d4 | |||
24c94a04ad | |||
56098b5699 | |||
c110dc9ad6 | |||
982c2221e2 | |||
7a269b0215 | |||
999df303ea | |||
85de430b09 | |||
|
6a94750c05 | ||
|
acc8aeed2c | ||
|
1894bee556 | ||
|
b101831c53 | ||
|
6791da7d8e | ||
|
4cf5e8ce18 | ||
ace9b39fe3 |
2
env/.env.test
vendored
2
env/.env.test
vendored
@ -7,6 +7,6 @@ VUE_APP_PREVIEW=false
|
|||||||
#VITE_SOCKET_API=ws://192.168.88.21:9504
|
#VITE_SOCKET_API=ws://192.168.88.21:9504
|
||||||
VITE_BASE_API=http://114.218.158.24:8503
|
VITE_BASE_API=http://114.218.158.24:8503
|
||||||
VITE_SOCKET_API=ws://114.218.158.24:8504
|
VITE_SOCKET_API=ws://114.218.158.24:8504
|
||||||
VITE_EPR_BASEURL=http://114.218.158.24:9020
|
VITE_EPR_BASEURL=http://172.16.100.93:8503
|
||||||
VITE_PAGE_URL=http://172.16.100.93:9032
|
VITE_PAGE_URL=http://172.16.100.93:9032
|
||||||
VUE_APP_WEBSITE_NAME=""
|
VUE_APP_WEBSITE_NAME=""
|
@ -31,14 +31,14 @@ function handle() {
|
|||||||
|
|
||||||
once = true
|
once = true
|
||||||
|
|
||||||
window['$dialog'].info({
|
// window['$dialog'].info({
|
||||||
title: '友情提示',
|
// title: '友情提示',
|
||||||
content: '当前登录已失效,请重新登录?',
|
// content: '当前登录已失效,请重新登录?',
|
||||||
positiveText: '立即登录?',
|
// positiveText: '立即登录?',
|
||||||
maskClosable: false,
|
// maskClosable: false,
|
||||||
onPositiveClick: () => {
|
// onPositiveClick: () => {
|
||||||
once = false
|
// once = false
|
||||||
useRouter().push('/auth/login')
|
// useRouter().push('/auth/login')
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ export function isLoggedIn() {
|
|||||||
*/
|
*/
|
||||||
export function getAccessToken() {
|
export function getAccessToken() {
|
||||||
// return storage.get(AccessToken) || ''
|
// return storage.get(AccessToken) || ''
|
||||||
return JSON.parse(localStorage.getItem('token'))||'46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644ce2108c311309f398ae8ea1b8200bfd490e5cb6e8c52c9e5d493cbabb163368f8351420451a631dbfa749829ee4cda49b77b5ed2d3dced5d0f2b7dd9ee76ba5465c84a17c23af040cd92b6b2a4ea48befbb5c729dcdad0a9c9668befe84074cc24f78899c1d947f8e7f94c7eda5325b8ed698df729e76febb98549ef3482ae942fb4f4a1c92d21836fa784728f0c5483aab2760a991b6b36e6b10c84f840a6433a6ecc31dee36e8f1c6158818bc89d2222dd6882c9bea84c2a8463737b8c2ebff9ca7c6d060fb963530bd14a2520dd9f2da63d38ec62765f787ba4ecad169369e97555f4f32b390f4cff376e30e2cb64f992f0f42a75cf0a559462e6c4e9cffe'
|
return JSON.parse(localStorage.getItem('token'))||'79b5c732d96d2b27a48a99dfd4a5566c43aaa5796242e854ebe3ffc198d6876b9628e7b764d9af65ab5dbb2d517ced88170491b74b048c0ba827c0d3741462cb89dc59ed46653a449af837a8262941caaef1334d640773710f8cd96473bacfb190cba595a5d6a9c87d70f0999a3ebb41147213b31b4bdccffca66a56acf3baab5af0154f0dce360079f37709f78e13711036899344bddb0fb4cf0f2890287cb62c3fcbe33368caa5e213624577be8b8420ab75b1f50775ee16142a4321c5d56995f37354a66a969da98d95ba6e65d142ed097e04b411c1ebad2f62866d0ec7e1838420530a9941dbbcd00490199f8b897a4f2416a772eacd03215226020e2e551cdac98368e42541ee3082dc07317d4ecc6a5dfbbe2a28f8c48ccfae7bc6046c3b9b79c0eb3a1ec4c25f5d766a2f8f01f64da8f70f7dbf63e124ffcf72398d86'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,15 +25,15 @@ const errorHandler = (error) => {
|
|||||||
|
|
||||||
if (!once) {
|
if (!once) {
|
||||||
once = true
|
once = true
|
||||||
window['$dialog'].info({
|
// window['$dialog'].info({
|
||||||
title: '友情提示',
|
// title: '友情提示',
|
||||||
content: '当前登录已失效,请重新登录?',
|
// content: '当前登录已失效,请重新登录?',
|
||||||
positiveText: '立即登录?',
|
// positiveText: '立即登录?',
|
||||||
maskClosable: false,
|
// maskClosable: false,
|
||||||
onPositiveClick: () => {
|
// onPositiveClick: () => {
|
||||||
location.reload()
|
// location.reload()
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ watch(
|
|||||||
ServeCheckFriend({ receiver_id: newValue.receiver_id, talk_type: 1 }).then((res) => {
|
ServeCheckFriend({ receiver_id: newValue.receiver_id, talk_type: 1 }).then((res) => {
|
||||||
if (res?.code === 200) {
|
if (res?.code === 200) {
|
||||||
console.log(res, 'ress')
|
console.log(res, 'ress')
|
||||||
isFriend.value = !res.data.is_friend
|
isFriend.value = res.data.is_friend
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -537,7 +537,7 @@ const clearSelectedDateTime = () => {
|
|||||||
<main class="el-main relative">
|
<main class="el-main relative">
|
||||||
<div
|
<div
|
||||||
class="p-[15px] pt-[10px] w-[100%] z-99 absolute"
|
class="p-[15px] pt-[10px] w-[100%] z-99 absolute"
|
||||||
v-if="isFriend && talkParams.type !== 2"
|
v-if="!isFriend && talkParams.type !== 2"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="bg-[#FFFFFF] w-[100%] p-[10px] text-[14px] flex justify-between"
|
class="bg-[#FFFFFF] w-[100%] p-[10px] text-[14px] flex justify-between"
|
||||||
|
@ -3,7 +3,7 @@ import { watch, onMounted, ref, nextTick, onUnmounted } from 'vue'
|
|||||||
import { NDropdown, NCheckbox, NPopover, NInfiniteScroll } from 'naive-ui'
|
import { NDropdown, NCheckbox, NPopover, NInfiniteScroll } from 'naive-ui'
|
||||||
import { Loading, MoreThree, ToTop } from '@icon-park/vue-next'
|
import { Loading, MoreThree, ToTop } from '@icon-park/vue-next'
|
||||||
import { bus } from '@/utils/event-bus'
|
import { bus } from '@/utils/event-bus'
|
||||||
import { useDialogueStore } from '@/store'
|
import { useDialogueStore, useTalkStore } from '@/store'
|
||||||
import { formatTime, parseTime } from '@/utils/datetime'
|
import { formatTime, parseTime } from '@/utils/datetime'
|
||||||
import { clipboard, htmlDecode, clipboardImage } from '@/utils/common'
|
import { clipboard, htmlDecode, clipboardImage } from '@/utils/common'
|
||||||
import { downloadImage } from '@/utils/functions'
|
import { downloadImage } from '@/utils/functions'
|
||||||
@ -19,8 +19,11 @@ import RevokeMessage from '@/components/talk/message/RevokeMessage.vue'
|
|||||||
import { voiceToText, ServeMessageReadDetail } from '@/api/chat.js'
|
import { voiceToText, ServeMessageReadDetail } from '@/api/chat.js'
|
||||||
import { confirmBox } from '@/components/confirm-box/service.js'
|
import { confirmBox } from '@/components/confirm-box/service.js'
|
||||||
import ws from '@/connect'
|
import ws from '@/connect'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
import avatarModule from '@/components/avatar-module/index.vue'
|
import avatarModule from '@/components/avatar-module/index.vue'
|
||||||
|
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
// 定义消息已读状态接口
|
// 定义消息已读状态接口
|
||||||
interface ReadStatus {
|
interface ReadStatus {
|
||||||
msg_ids: string[]
|
msg_ids: string[]
|
||||||
@ -86,11 +89,28 @@ const { dropdown, showDropdownMenu, closeDropdownMenu, isOneMonthBefore } = useM
|
|||||||
const { showUserInfoModal } = useInject()
|
const { showUserInfoModal } = useInject()
|
||||||
const dialogueStore = useDialogueStore()
|
const dialogueStore = useDialogueStore()
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
const talkStore = useTalkStore()
|
||||||
// const showUserInfoModal = (uid: number) => {
|
// const showUserInfoModal = (uid: number) => {
|
||||||
// userStore.getUserInfo(uid)
|
// userStore.getUserInfo(uid)
|
||||||
// }
|
// }
|
||||||
// 置底按钮
|
// 置底按钮
|
||||||
const skipBottom = ref(false)
|
const skipBottom = ref(false)
|
||||||
|
const goToMessage = (result) => {
|
||||||
|
const talk_type = props.talk_type
|
||||||
|
const receiver_id = props.receiver_id
|
||||||
|
dialogueStore.specifiedMsg = encodeURIComponent(
|
||||||
|
JSON.stringify({
|
||||||
|
talk_type,
|
||||||
|
receiver_id,
|
||||||
|
msg_id: result.msg_id,
|
||||||
|
cursor: result.sequence - 15 > 0 ? result.sequence - 15 : 0,
|
||||||
|
direction: 'down',
|
||||||
|
sort_sequence: 'asc',
|
||||||
|
create_time: result.created_at
|
||||||
|
})
|
||||||
|
)
|
||||||
|
talkStore.toTalk(talk_type, receiver_id, router)
|
||||||
|
}
|
||||||
// 是否显示消息时间
|
// 是否显示消息时间
|
||||||
const isShowTalkTime = (index: number, datetime: string) => {
|
const isShowTalkTime = (index: number, datetime: string) => {
|
||||||
if (datetime == undefined) {
|
if (datetime == undefined) {
|
||||||
@ -330,15 +350,16 @@ const onContextMenuHandle = (key: string) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onRowClick = (item: ITalkRecord) => {
|
const onRowClick = (item: ITalkRecord) => {
|
||||||
if (dialogueStore.isOpenMultiSelect && isOneMonthBefore(item.created_at.split(' ')[0])) {
|
if (dialogueStore.isOpenMultiSelect) {
|
||||||
|
if (!isOneMonthBefore(item.created_at.split(' ')[0])) {
|
||||||
|
return useMessage.info('只支持转发近一个月内的消息')
|
||||||
|
}
|
||||||
console.log('item.msg_type', item.msg_type)
|
console.log('item.msg_type', item.msg_type)
|
||||||
if (ForwardableMessageType.includes(item.msg_type)) {
|
if (ForwardableMessageType.includes(item.msg_type)) {
|
||||||
item.isCheck = !item.isCheck
|
item.isCheck = !item.isCheck
|
||||||
} else {
|
} else {
|
||||||
useMessage.info('此类消息不支持转发')
|
useMessage.info('此类消息不支持转发')
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
useMessage.info('只支持转发近一个月内的消息')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -907,11 +928,11 @@ const onCustomSkipBottomEvent = () => {
|
|||||||
<n-icon class="more-tools pointer" :component="MoreThree" @click="onContextMenu($event, item)" />
|
<n-icon class="more-tools pointer" :component="MoreThree" @click="onContextMenu($event, item)" />
|
||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
<!-- @click="onJumpMessage(item.extra?.reply?.msg_id)" -->
|
||||||
<div
|
<div
|
||||||
v-if="item.extra.reply"
|
v-if="item.extra.reply"
|
||||||
class="talk-reply pointer"
|
class="talk-reply pointer"
|
||||||
@click="onJumpMessage(item.extra?.reply?.msg_id)"
|
@click="goToMessage(item.extra?.reply)"
|
||||||
>
|
>
|
||||||
<n-icon :component="ToTop" size="14" class="icon-top" />
|
<n-icon :component="ToTop" size="14" class="icon-top" />
|
||||||
<span class="ellipsis">
|
<span class="ellipsis">
|
||||||
@ -1056,6 +1077,7 @@ const onCustomSkipBottomEvent = () => {
|
|||||||
&.border {
|
&.border {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border: 1px solid var(--im-primary-color);
|
border: 1px solid var(--im-primary-color);
|
||||||
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user