| | |
| | | import React, { useState } from 'react'; |
| | | import { Input, DatePicker, Button, Pagination, Spin } from 'antd'; |
| | | import { Input, DatePicker, Button, Pagination, Spin, Modal } from 'antd'; |
| | | import { SearchOutlined, RedoOutlined } from '@ant-design/icons'; |
| | | import LawDetailContent from './LawDetailContent'; |
| | | import './LawSearchContent.css'; |
| | | |
| | | // Mock数据 - 按原型格式 |
| | |
| | | const [activeId, setActiveId] = useState('law-001'); |
| | | const [filters, setFilters] = useState(filterConfig); |
| | | const [currentPage, setCurrentPage] = useState(1); |
| | | const [detailVisible, setDetailVisible] = useState(false); |
| | | const [selectedLawId, setSelectedLawId] = useState(null); |
| | | const pageSize = 10; |
| | | const total = 256; |
| | | |
| | |
| | | }; |
| | | |
| | | const toggleFilter = (category, index) => { |
| | | setFilters(prev => { |
| | | setFilters((prev) => { |
| | | const newFilters = { ...prev }; |
| | | newFilters[category] = [...prev[category]]; |
| | | newFilters[category][index] = { |
| | |
| | | }; |
| | | return newFilters; |
| | | }); |
| | | }; |
| | | |
| | | const handleLawItemClick = (lawId) => { |
| | | if (activeId === lawId) { |
| | | // 如果已经是激活状态,再次点击弹出详情 |
| | | setSelectedLawId(lawId); |
| | | setDetailVisible(true); |
| | | } else { |
| | | setActiveId(lawId); |
| | | } |
| | | }; |
| | | |
| | | return ( |
| | |
| | | <div className={`law-search-filter-checkbox ${item.checked ? 'checked' : ''}`}> |
| | | {item.checked && <i className="fas fa-check"></i>} |
| | | </div> |
| | | <span>{item.label} ({item.count})</span> |
| | | <span> |
| | | {item.label} ({item.count}) |
| | | </span> |
| | | </div> |
| | | ))} |
| | | </div> |
| | |
| | | <h3 className="law-search-filter-title">制定机关</h3> |
| | | <div className="law-search-filter-list"> |
| | | {filters.org.map((item, index) => ( |
| | | <div |
| | | key={index} |
| | | className="law-search-filter-item" |
| | | onClick={() => toggleFilter('org', index)} |
| | | > |
| | | <div key={index} className="law-search-filter-item" onClick={() => toggleFilter('org', index)}> |
| | | <div className={`law-search-filter-checkbox ${item.checked ? 'checked' : ''}`}> |
| | | {item.checked && <i className="fas fa-check"></i>} |
| | | </div> |
| | | <span>{item.label} ({item.count})</span> |
| | | <span> |
| | | {item.label} ({item.count}) |
| | | </span> |
| | | </div> |
| | | ))} |
| | | </div> |
| | |
| | | <div className={`law-search-filter-checkbox ${item.checked ? 'checked' : ''}`}> |
| | | {item.checked && <i className="fas fa-check"></i>} |
| | | </div> |
| | | <span>{item.label} ({item.count})</span> |
| | | <span> |
| | | {item.label} ({item.count}) |
| | | </span> |
| | | </div> |
| | | ))} |
| | | </div> |
| | |
| | | <div |
| | | key={law.id} |
| | | className={`law-search-law-item ${activeId === law.id ? 'active' : ''}`} |
| | | onClick={() => setActiveId(law.id)} |
| | | onClick={() => handleLawItemClick(law.id)} |
| | | > |
| | | <h3 className="law-search-law-title">{law.lawName}</h3> |
| | | <div className="law-search-law-meta"> |
| | |
| | | /> |
| | | </div> |
| | | </div> |
| | | |
| | | {/* 详情弹窗 */} |
| | | <Modal |
| | | title={ |
| | | <div style={{ fontSize: '1.2rem', fontWeight: 600 }}> |
| | | <i className="fas fa-book" style={{ marginRight: 10, color: '#1a6fb8' }}></i> |
| | | 法律条文详情 |
| | | </div> |
| | | } |
| | | visible={detailVisible} |
| | | onCancel={() => setDetailVisible(false)} |
| | | footer={null} |
| | | width={1000} |
| | | bodyStyle={{ padding: 0, height: '80vh', overflow: 'hidden' }} |
| | | centered |
| | | destroyOnClose |
| | | > |
| | | <LawDetailContent lawId={selectedLawId} /> |
| | | </Modal> |
| | | </div> |
| | | ); |
| | | }; |