|
|
|
@ -1,7 +1,7 @@ |
|
|
|
<template> |
|
|
|
<div class="chat-page"> |
|
|
|
<!-- 顶部导航栏 --> |
|
|
|
<van-nav-bar |
|
|
|
<!-- <van-nav-bar |
|
|
|
title="在线联系" |
|
|
|
left-text="关闭" |
|
|
|
left-arrow |
|
|
|
@ -10,7 +10,7 @@ |
|
|
|
<template #right> |
|
|
|
<van-icon name="ellipsis" size="20" @click="onMoreClick" /> |
|
|
|
</template> |
|
|
|
</van-nav-bar> |
|
|
|
</van-nav-bar> --> |
|
|
|
|
|
|
|
<!-- 聊天对象信息 --> |
|
|
|
<!-- <div class="chat-header"> |
|
|
|
@ -87,10 +87,10 @@ |
|
|
|
class="context-menu" |
|
|
|
:style="{ top: menuPosition.y + 'px', left: menuPosition.x + 'px' }" |
|
|
|
> |
|
|
|
<div class="menu-item" @click.stop="onEdit"> |
|
|
|
<!-- <div class="menu-item" @click.stop="onEdit"> |
|
|
|
<van-icon name="edit" size="16" /> |
|
|
|
<span>编辑</span> |
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
<div class="menu-divider"></div> |
|
|
|
<div class="menu-item" @click.stop="onRecall"> |
|
|
|
<van-icon name="revoke" size="16" /> |
|
|
|
@ -122,14 +122,16 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script setup name="enforcementChat"> |
|
|
|
import { ref, nextTick } from 'vue'; |
|
|
|
import { ref, nextTick, onMounted } from 'vue'; |
|
|
|
import { showToast } from 'vant'; |
|
|
|
import 'vant/es/toast/style'; |
|
|
|
import { getLawNoticeMessageList } from '@/api/enterprise/planNotice'; |
|
|
|
|
|
|
|
const router = useRouter(); |
|
|
|
const route = useRoute(); |
|
|
|
|
|
|
|
// ========== 从路由参数获取信息 ========== |
|
|
|
const noticeId = ref(route.query.id || ''); |
|
|
|
const bureauDeptName = ref(route.query.bureauDeptName || '深圳司法局'); |
|
|
|
const contactPerson = ref(route.query.contactPerson || '付明明 周昂'); |
|
|
|
const noticeTitle = ref(route.query.title || '安全生产检查'); |
|
|
|
@ -139,24 +141,43 @@ const selfAvatar = 'https://placehold.co/40x40/447bf5/fff?text=我'; |
|
|
|
const otherAvatar = 'https://placehold.co/40x40/999/fff?text=官'; |
|
|
|
|
|
|
|
// ========== 消息列表 ========== |
|
|
|
const messageList = ref([ |
|
|
|
{ |
|
|
|
id: 1, |
|
|
|
sender: 'self', |
|
|
|
content: `你好,预告的执法时间${route.query.enforcementTime || '2026-04-07'}检查,无法正常迎检,可否调整到2026-04-10下午?`, |
|
|
|
time: '2026-03-31 10:20', |
|
|
|
avatar: selfAvatar, |
|
|
|
isRecalled: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 2, |
|
|
|
sender: 'other', |
|
|
|
content: '好的', |
|
|
|
time: '2026-03-31 18:32', |
|
|
|
avatar: otherAvatar, |
|
|
|
isRecalled: false, |
|
|
|
const messageList = ref([]); |
|
|
|
|
|
|
|
// ========== 加载消息列表 ========== |
|
|
|
const fetchMessageList = () => { |
|
|
|
if (!noticeId.value) { |
|
|
|
showToast('缺少通知ID'); |
|
|
|
return; |
|
|
|
} |
|
|
|
getLawNoticeMessageList( |
|
|
|
{ noticeId: noticeId.value }, |
|
|
|
(res) => { |
|
|
|
if (res.code === 200) { |
|
|
|
const rows = res.rows || res.data?.rows || res.data?.list || res.data || []; |
|
|
|
messageList.value = rows.map(item => ({ |
|
|
|
id: item.id || item.messageId, |
|
|
|
sender: item.sender === 'self' || item.senderType === 1 || item.isSelf ? 'self' : 'other', |
|
|
|
content: item.content || item.message || item.messageContent, |
|
|
|
time: item.time || item.createTime || item.sendMessageTime || '', |
|
|
|
avatar: item.sender === 'self' || item.senderType === 1 || item.isSelf ? selfAvatar : otherAvatar, |
|
|
|
isRecalled: item.isRecalled || item.recallStatus || false, |
|
|
|
})); |
|
|
|
nextTick(() => { |
|
|
|
scrollToBottom(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
showToast(res.msg || '加载失败'); |
|
|
|
} |
|
|
|
}, |
|
|
|
]); |
|
|
|
() => { |
|
|
|
showToast('网络请求失败'); |
|
|
|
} |
|
|
|
); |
|
|
|
}; |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
fetchMessageList(); |
|
|
|
}); |
|
|
|
|
|
|
|
const inputMessage = ref(''); |
|
|
|
const messageListRef = ref(null); |
|
|
|
|