import React, { useState, useEffect } from 'react' import { View, Text, ScrollView } from '@tarojs/components' import Taro from '@tarojs/taro' import { getShopMessage, deleteShopMessage } from '@/api/shop/shopMessage' import type { ShopMessage, MessageType } from '@/api/shop/shopMessage/model' definePageConfig({ navigationBarTitleText: '消息详情', }) const MessageDetailPage: React.FC = () => { const { id } = Taro.getCurrentInstance().router?.params || {} const [message, setMessage] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { if (id) { fetchMessage(id) } }, [id]) const fetchMessage = async (msgId: string) => { try { const res = await getShopMessage(msgId) if (res?.code === 0 && res.data) { setMessage(res.data) } } catch (err: any) { Taro.showToast({ title: err.message || '加载失败', icon: 'none' }) } finally { setLoading(false) } } // 获取类型图标 const getTypeIcon = (type: MessageType) => { const iconMap: Record = { system: '🔔', order: '📦', activity: '🎁', } return iconMap[type] || '📋' } // 获取类型名称 const getTypeName = (type: MessageType) => { const nameMap: Record = { system: '系统通知', order: '订单通知', activity: '活动通知', } return nameMap[type] || '其他' } // 格式化时间 const formatTime = (timeStr: string) => { const date = new Date(timeStr) const year = date.getFullYear() const month = (date.getMonth() + 1).toString().padStart(2, '0') const day = date.getDate().toString().padStart(2, '0') const hour = date.getHours().toString().padStart(2, '0') const minute = date.getMinutes().toString().padStart(2, '0') return `${year}-${month}-${day} ${hour}:${minute}` } // 删除消息 const handleDelete = () => { if (!message) return Taro.showModal({ title: '提示', content: '确定删除该消息吗?', confirmColor: '#0e932e', success: async (res) => { if (res.confirm) { try { await deleteShopMessage(message.id) Taro.showToast({ title: '删除成功', icon: 'success' }) setTimeout(() => Taro.navigateBack(), 1500) } catch (err: any) { Taro.showToast({ title: err.message || '删除失败', icon: 'none' }) } } } }) } if (loading) { return ( 加载中... ) } if (!message) { return ( 消息不存在 ) } return ( {/* 消息头部 */} {getTypeIcon(message.type)} {message.title} {formatTime(message.createdAt)} {getTypeName(message.type)} {/* 消息内容 */} {message.content} {/* 相关操作 */} 相关操作 Taro.navigateTo({ url: '/pages/user/user' })} > 查看个人中心 Taro.switchTab({ url: '/pages/index/index' })} > 返回首页 删除此消息 ) } export default MessageDetailPage