1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import React, { useState, useEffect } from 'react';
import { mockLawDetail } from '../../mocks/lawMocks';
import './LawDetailContent.css';
 
const LawDetailContent = ({ lawId }) => {
  const [activeChapter, setActiveChapter] = useState('chapter1');
  const [lawDetail, setLawDetail] = useState(null);
 
  useEffect(() => {
    // 模拟根据 lawId 获取详情
    setLawDetail(mockLawDetail);
  }, [lawId]);
 
  if (!lawDetail) return <div className="law-detail-loading">加载中...</div>;
 
  const handleChapterClick = (chapterId) => {
    setActiveChapter(chapterId);
    const element = document.getElementById(chapterId);
    if (element) {
      element.scrollIntoView({ behavior: 'smooth', block: 'start' });
    }
  };
 
  return (
    <div className="law-detail-modal-body">
      {/* 章节导航 */}
      <div className="law-detail-chapter-nav">
        <h3 className="law-detail-chapter-nav-title">
          <i className="fas fa-list-ol"></i>
          章节导航
        </h3>
        <div className="law-detail-chapter-list">
          {lawDetail.chapters.map((chapter) => (
            <a
              key={chapter.id}
              href={`#${chapter.id}`}
              className={`law-detail-chapter-link ${activeChapter === chapter.id ? 'active' : ''}`}
              onClick={(e) => {
                e.preventDefault();
                handleChapterClick(chapter.id);
              }}
            >
              {chapter.title}
            </a>
          ))}
        </div>
      </div>
 
      {/* 法律详情容器 */}
      <div className="law-detail-main-container">
        <div className="law-detail-header">
          <h2 className="law-detail-title">{lawDetail.lawName}</h2>
          <div className="law-detail-meta-grid">
            <div className="law-detail-meta-item">
              <span className="law-detail-meta-label">时效性:</span>
              <span className="law-detail-meta-value status-effective">{lawDetail.status}</span>
            </div>
            <div className="law-detail-meta-item">
              <span className="law-detail-meta-label">法律效力位阶:</span>
              <span className="law-detail-meta-value">{lawDetail.effectLevel}</span>
            </div>
            <div className="law-detail-meta-item">
              <span className="law-detail-meta-label">制定机关:</span>
              <span className="law-detail-meta-value">{lawDetail.org}</span>
            </div>
            <div className="law-detail-meta-item">
              <span className="law-detail-meta-label">公布日期:</span>
              <span className="law-detail-meta-value">{lawDetail.publishDate}</span>
            </div>
            <div className="law-detail-meta-item">
              <span className="law-detail-meta-label">实施日期:</span>
              <span className="law-detail-meta-value">{lawDetail.effectiveDate}</span>
            </div>
          </div>
        </div>
 
        <div className="law-detail-content-area">
          {lawDetail.chapters.map((chapter) => (
            <div className="law-detail-chapter-section" id={chapter.id} key={chapter.id}>
              <h3 className="law-detail-chapter-title">
                <i className="fas fa-bookmark"></i>
                {chapter.title}
              </h3>
              <div className="law-detail-articles-container">
                {chapter.articles.map((article, index) => (
                  <div className="law-detail-article-item" key={index}>
                    <div className="law-detail-article-number">{article.number}</div>
                    <div className="law-detail-article-content">
                      {article.content.split('\n').map((line, i) => (
                        <React.Fragment key={i}>
                          {line}
                          {i < article.content.split('\n').length - 1 && <br />}
                        </React.Fragment>
                      ))}
                    </div>
                  </div>
                ))}
              </div>
            </div>
          ))}
        </div>
      </div>
    </div>
  );
};
 
export default LawDetailContent;