import React, { useState, useEffect } from 'react' export default function Info() { const [activeTab, setActiveTab] = useState('publish') const [showPublish, setShowPublish] = useState(false) const [myList, setMyList] = useState([]) const [loading, setLoading] = useState(false) const [editingItem, setEditingItem] = useState(null) const [formData, setFormData] = useState({ edition: '龙钞', type: '标百', isGraded: true, category: '成交', source: '直播', title: '' }) // content使用原生DOM useEffect(() => { if (activeTab === 'manage') fetchMyList() }, [activeTab]) // 自动生成标题 useEffect(() => { const now = new Date() const date = `${now.getFullYear()}/${now.getMonth() + 1}/${now.getDate()}` const gradeNote = formData.isGraded ? '(评级币)' : '(裸钞)' const title = `「${date} ${formData.edition} ${formData.type} ${formData.category} 行情信息${gradeNote}」` setFormData(prev => ({...prev, title})) }, [formData.edition, formData.type, formData.isGraded, formData.category]) const API_BASE = localStorage.getItem('API_BASE') || '' const fetchMyList = async () => { setLoading(true) try { const token = localStorage.getItem('token') const res = await fetch(`${API_BASE}/api/information/my/list`, { headers: { Authorization: `Bearer ${token}` } }) setMyList(res.ok ? await res.json() : []) } catch (e) { console.error(e) } setLoading(false) } const handlePublish = async () => { if (!formData.title) { alert('请填写标题'); return } try { const token = localStorage.getItem('token') const res = await fetch(`${API_BASE}/api/information/`, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ title: formData.title, content: document.getElementById('publishContent')?.value || '', info_type: formData.category === '成交' ? 'deal' : 'seek' }) }) const data = await res.json() if (data.id || data.code === 0) { alert('发布成功!') setShowPublish(false) setFormData({ edition: '龙钞', type: '标百', isGraded: true, category: '成交', source: '直播', title: '' }) const el = document.getElementById('publishContent'); if(el) el.value = '' fetchMyList() } else { alert(data.message || '发布失败') } } catch (e) { alert('发布失败: ' + e.message) } } const handleDelete = async (id) => { if (!confirm('确定删除这条信息吗?')) return try { const token = localStorage.getItem('token') const res = await fetch(`${API_BASE}/api/information/${id}`, { method: 'DELETE', headers: { Authorization: `Bearer ${token}` } }) if (res.ok) { alert('删除成功'); fetchMyList() } else { alert('删除失败') } } catch (e) { alert('删除失败: ' + e.message) } } const handleEdit = (item) => setEditingItem({ id: item.id, title: item.title, content: item.content }) const handleSaveEdit = async () => { if (!editingItem) return try { const token = localStorage.getItem('token') const res = await fetch(`${API_BASE}/api/information/${editingItem.id}`, { method: 'PUT', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ title: editingItem.title, content: editingItem.content }) }) if (res.ok) { alert('保存成功'); setEditingItem(null); fetchMyList() } else { alert('保存失败') } } catch (e) { alert('保存失败: ' + e.message) } } const BtnGroup = ({ options, value, onChange, label }) => (
{label}
{options.map(opt => ( ))}
) const Card = ({ children, title, action }) => (
{title &&

{title}

{action}
} {children}
) const formatDate = (d) => d ? new Date(d).toLocaleString('zh-CN').slice(0, 16) : '-' return (
{/* 顶部标签 */}
{[{ key: 'publish', label: '📝 寻配号发布' }, { key: 'manage', label: '📋 发布管理' }].map(t => (
setActiveTab(t.key)} style={{ flex: 1, padding: '12px 16px', borderRadius: '10px', background: activeTab === t.key ? 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)' : 'transparent', color: activeTab === t.key ? '#fff' : '#9ca3af', cursor: 'pointer', textAlign: 'center', fontSize: '14px', fontWeight: '600', transition: 'all 0.3s' }}> {t.label}
))}
{/* 寻配号发布 - 提示页面 */} {activeTab === 'publish' && (
📝
寻配号发布
请到「发布管理」tab进行发布
)} {/* 发布管理 */} {activeTab === 'manage' && (
{/* 发布表单 */} {showPublish && (
setFormData({...formData, edition: v})} />
类型
{['标百', '标十', '单张'].map(t => ( ))}
是否评级
setFormData({...formData, category: v})} />
标题(自动生成)
正文