consumer模块完成90%,前端完成supabase对接

This commit is contained in:
2026-02-03 17:11:50 +08:00
parent b6200cda28
commit 8a535e3f38
69 changed files with 5020 additions and 33273 deletions

View File

@@ -120,6 +120,7 @@
<script setup lang="uts">
import { ref, reactive, onMounted, nextTick } from 'vue'
import { supabaseService, type ChatMessage } from '@/utils/supabaseService.uts'
// 响应式数据
const messages = ref<any[]>([])
@@ -168,16 +169,25 @@ const mockMessages = [
// 生命周期
onMounted(() => {
loadChatHistory()
// 模拟客服自动回复
setTimeout(() => {
addReceivedMessage('查询到您的订单正在打包中,预计今天下午发货')
}, 3000)
})
// 加载聊天记录
const loadChatHistory = () => {
messages.value = [...mockMessages]
const loadChatHistory = async () => {
const rawMsgs = await supabaseService.getUserChatMessages()
messages.value = rawMsgs.reverse().map((m: ChatMessage) => {
const date = new Date(m.created_at || new Date().toISOString())
const timeStr = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`
// Use explicit 'as' casting to avoid type errors if needed, though map handles it
const msg : any = {
id: m.id,
type: m.is_from_user ? 'sent' : 'received',
content: m.content,
time: timeStr
}
return msg
})
// 滚动到底部
setTimeout(() => {
@@ -186,7 +196,7 @@ const loadChatHistory = () => {
}
// 发送消息
const sendMessage = () => {
const sendMessage = async () => {
const content = inputMessage.value.trim()
if (!content) return
@@ -203,6 +213,9 @@ const sendMessage = () => {
// 滚动到底部
scrollToBottom()
// Backend Save
await supabaseService.sendChatMessage(content)
// 模拟客服回复2秒后
setTimeout(() => {
@@ -211,7 +224,7 @@ const sendMessage = () => {
}
// 模拟客服回复
const simulateCustomerReply = () => {
const simulateCustomerReply = async () => {
const replies = [
'好的,已为您记录',
'这个问题需要进一步核实',
@@ -221,6 +234,9 @@ const simulateCustomerReply = () => {
]
const randomReply = replies[Math.floor(Math.random() * replies.length)]
await supabaseService.simulateServiceReply(randomReply)
addReceivedMessage(randomReply)
}