Просмотр исходного кода

Merge branch 'master' of http://192.168.0.115:3000/lanxin/Chengzhebei into master

shaogen1995 недель назад: 3
Родитель
Сommit
6523cd1d42
92 измененных файлов с 1990 добавлено и 534 удалено
  1. BIN
      public/myData/img/10.png
  2. BIN
      public/myData/img/21.png
  3. BIN
      public/myData/img/24.png
  4. BIN
      public/myData/img/25.png
  5. BIN
      public/myData/img/26.png
  6. BIN
      public/myData/img/3.png
  7. BIN
      public/myData/knowledgeImg/bcfjzxdzgh--bwwq-hngxskdyk.jpg
  8. BIN
      public/myData/knowledgeImg/bcfjzxdzgh--bwzwq-bwygskd6kzxtzxsps.jpg
  9. BIN
      public/myData/knowledgeImg/bcfjzxdzgh--dwbq-bqbxtskd4kpsx.jpg
  10. BIN
      public/myData/knowledgeImg/bcfjzxdzgh--dwbq-bqbxtsskdskyb.jpg
  11. BIN
      public/myData/knowledgeImg/bcfjzxdzgh--dwbq-dwtlsskd2kbbk.jpg
  12. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-bwzwq-bwygskd6kdbncfk.jpg
  13. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-bwzwq-lmskbyzd.jpg
  14. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-bwygskd19kybxsps.jpg
  15. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-gy420nbls169k.jpg
  16. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-ygskd20kfx.jpg
  17. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-dwbq-bqbxtskzxfzzdkpsx.jpg
  18. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-dwbq-bqnxtskd1kzxzzbk.jpg
  19. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-xwbz-xwmjsskd135kzb.jpg
  20. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-xwbz-xwmjsskd44k.jpg
  21. BIN
      public/myData/knowledgeImg/bcfjzxdzgh-xwbzbzxxmd51khbsdk.jpg
  22. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-ezxmz-1.png
  23. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-ezxmz-2.png
  24. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-hgmz.png
  25. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-lxmz-1.png
  26. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-lxmz-2.png
  27. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-lxmz-3.png
  28. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-lxmz-4.png
  29. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-rhmz.jpg
  30. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-shzmzm-1.jpg
  31. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-shzmzm-2.jpg
  32. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-smjlmb-1.png
  33. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-smjlmb-2.png
  34. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-yhmz-1.png
  35. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-yhmz-2.png
  36. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-ymmz.jpg
  37. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-ytmmz-1.jpg
  38. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-ytmmz-2.png
  39. BIN
      public/myData/knowledgeImg/bjzcyczb-bc-yymz.png
  40. BIN
      public/myData/knowledgeImg/bjzcyczb-djsq-wxzffmz-1.png
  41. BIN
      public/myData/knowledgeImg/bjzcyczb-djsq-wxzffmz-2.jpg
  42. BIN
      public/myData/knowledgeImg/bjzcyczb-djsq-xkmz-1.png
  43. BIN
      public/myData/knowledgeImg/bjzcyczb-djsq-xkmz-2.jpg
  44. BIN
      public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-1.png
  45. BIN
      public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-2.jpg
  46. BIN
      public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-3.jpg
  47. BIN
      public/myData/knowledgeImg/bjzcyczb-lhzj-yab-1.png
  48. BIN
      public/myData/knowledgeImg/bjzcyczb-lhzj-yab-2.png
  49. BIN
      public/myData/knowledgeImg/bjzcyczb-nc-xdb.jpg
  50. BIN
      public/myData/knowledgeImg/bjzcyczb-xjsq-chmz.jpg
  51. BIN
      public/myData/knowledgeImg/bjzcyczb-xjsq-xyzm-1.png
  52. BIN
      public/myData/knowledgeImg/bjzcyczb-xjsq-xyzm-2.png
  53. BIN
      public/myData/knowledgeImg/ckb-1.png
  54. BIN
      public/myData/knowledgeImg/ckb-2.png
  55. BIN
      public/myData/knowledgeImg/czbszys-fyw-bqtbsnfyw.png
  56. BIN
      public/myData/knowledgeImg/czbszys-fyw-ypsnfyw.png
  57. BIN
      public/myData/knowledgeImg/czbszys-mzw-gfmz.png
  58. BIN
      public/myData/knowledgeImg/czbszys-mzw-lzhmz.png
  59. BIN
      public/myData/knowledgeImg/czbzxys-cthhyxk-1.jpg
  60. BIN
      public/myData/knowledgeImg/czbzxys-cthhyxk-2.jpg
  61. BIN
      public/myData/knowledgeImg/czbzxys-dfsgyr.jpg
  62. BIN
      public/myData/knowledgeImg/czbzxys-fdfggfd.jpg
  63. BIN
      public/myData/knowledgeImg/czbzxys-zxrh-ft.png
  64. BIN
      public/myData/knowledgeImg/dyb-1.png
  65. BIN
      public/myData/knowledgeImg/dyb-2.png
  66. BIN
      public/myData/knowledgeImg/gssdb.png
  67. BIN
      public/myData/knowledgeImg/hyb.png
  68. BIN
      public/myData/knowledgeImg/tp-bw.png
  69. BIN
      public/myData/knowledgeImg/tp-tx.png
  70. BIN
      public/myData/knowledgeImg/xt-bw.png
  71. BIN
      public/myData/knowledgeImg/xt-tx.png
  72. 171 125
      public/myData/myData.js
  73. BIN
      src/assets/img/A6_arrow_right.png
  74. BIN
      src/assets/img/A6_sinicize_bg2.png
  75. BIN
      src/assets/img/A6_sinicize_bwwq_line.png
  76. 222 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bq/index.module.scss
  77. 55 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bq/index.tsx
  78. 256 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwwq/index.module.scss
  79. 61 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwwq/index.tsx
  80. 225 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwzwq/index.module.scss
  81. 64 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwzwq/index.tsx
  82. 213 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwzzq/index.module.scss
  83. 114 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bwzzq/index.tsx
  84. 227 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bz/index.module.scss
  85. 63 0
      src/pages/A6ybwx/A6_2_zxzgh/components/Bz/index.tsx
  86. 71 0
      src/pages/A6ybwx/A6_2_zxzgh/components/InfoCard/index.module.scss
  87. 40 0
      src/pages/A6ybwx/A6_2_zxzgh/components/InfoCard/index.tsx
  88. 53 0
      src/pages/A6ybwx/A6_2_zxzgh/components/InfoPoint/index.module.scss
  89. 30 0
      src/pages/A6ybwx/A6_2_zxzgh/components/InfoPoint/index.tsx
  90. 0 247
      src/pages/A6ybwx/A6_2_zxzgh/index.module.scss
  91. 111 158
      src/pages/A6ybwx/A6_2_zxzgh/index.tsx
  92. 14 4
      src/types/declaration.d.ts

BIN
public/myData/img/10.png


BIN
public/myData/img/21.png


BIN
public/myData/img/24.png


BIN
public/myData/img/25.png


BIN
public/myData/img/26.png


BIN
public/myData/img/3.png


BIN
public/myData/knowledgeImg/bcfjzxdzgh--bwwq-hngxskdyk.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh--bwzwq-bwygskd6kzxtzxsps.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh--dwbq-bqbxtskd4kpsx.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh--dwbq-bqbxtsskdskyb.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh--dwbq-dwtlsskd2kbbk.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-bwzwq-bwygskd6kdbncfk.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-bwzwq-lmskbyzd.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-bwygskd19kybxsps.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-gy420nbls169k.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-bwzzq-ygskd20kfx.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-dwbq-bqbxtskzxfzzdkpsx.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-dwbq-bqnxtskd1kzxzzbk.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-xwbz-xwmjsskd135kzb.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-xwbz-xwmjsskd44k.jpg


BIN
public/myData/knowledgeImg/bcfjzxdzgh-xwbzbzxxmd51khbsdk.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-ezxmz-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-ezxmz-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-hgmz.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-lxmz-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-lxmz-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-lxmz-3.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-lxmz-4.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-rhmz.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-shzmzm-1.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-shzmzm-2.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-smjlmb-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-smjlmb-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-yhmz-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-yhmz-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-ymmz.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-ytmmz-1.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-bc-ytmmz-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-bc-yymz.png


BIN
public/myData/knowledgeImg/bjzcyczb-djsq-wxzffmz-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-djsq-wxzffmz-2.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-djsq-xkmz-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-djsq-xkmz-2.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-2.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-lhzj-jjb-3.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-lhzj-yab-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-lhzj-yab-2.png


BIN
public/myData/knowledgeImg/bjzcyczb-nc-xdb.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-xjsq-chmz.jpg


BIN
public/myData/knowledgeImg/bjzcyczb-xjsq-xyzm-1.png


BIN
public/myData/knowledgeImg/bjzcyczb-xjsq-xyzm-2.png


BIN
public/myData/knowledgeImg/ckb-1.png


BIN
public/myData/knowledgeImg/ckb-2.png


BIN
public/myData/knowledgeImg/czbszys-fyw-bqtbsnfyw.png


BIN
public/myData/knowledgeImg/czbszys-fyw-ypsnfyw.png


BIN
public/myData/knowledgeImg/czbszys-mzw-gfmz.png


BIN
public/myData/knowledgeImg/czbszys-mzw-lzhmz.png


BIN
public/myData/knowledgeImg/czbzxys-cthhyxk-1.jpg


BIN
public/myData/knowledgeImg/czbzxys-cthhyxk-2.jpg


BIN
public/myData/knowledgeImg/czbzxys-dfsgyr.jpg


BIN
public/myData/knowledgeImg/czbzxys-fdfggfd.jpg


BIN
public/myData/knowledgeImg/czbzxys-zxrh-ft.png


BIN
public/myData/knowledgeImg/dyb-1.png


BIN
public/myData/knowledgeImg/dyb-2.png


BIN
public/myData/knowledgeImg/gssdb.png


BIN
public/myData/knowledgeImg/hyb.png


BIN
public/myData/knowledgeImg/tp-bw.png


BIN
public/myData/knowledgeImg/tp-tx.png


BIN
public/myData/knowledgeImg/xt-bw.png


BIN
public/myData/knowledgeImg/xt-tx.png


Разница между файлами не показана из-за своего большого размера
+ 171 - 125
public/myData/myData.js


BIN
src/assets/img/A6_arrow_right.png


BIN
src/assets/img/A6_sinicize_bg2.png


BIN
src/assets/img/A6_sinicize_bwwq_line.png


+ 222 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bq/index.module.scss

@@ -0,0 +1,222 @@
+.Bq {
+  width: auto;
+  height: 100%;
+  background: url('../../../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
+  background-size: cover;
+  overflow: hidden;
+  transition: all 0.3s ease-in-out;
+  display: inline-block;
+  vertical-align: top;
+  &:global(.detailShow) {
+    :global {
+      .left,
+      .right {
+        opacity: 1;
+        transition: all 1s ease-in-out, opacity 0.3s ease-in-out;
+      }
+    }
+  }
+  &:global(.detailHide) {
+    :global {
+      .left,
+      .right {
+        width: 0;
+        opacity: 0;
+        transition: all 0.6s ease-in-out;
+      }
+    }
+  }
+
+  :global {
+    .point {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 225px;
+      height: 60px;
+      & > img {
+        position: absolute;
+        z-index: -1;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: auto;
+        height: 100%;
+        object-fit: contain;
+      }
+      .pPoint {
+        padding: 6px 0;
+        padding-left: 55px;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+
+        .pointTime,
+        .pointTitle {
+          padding-left: 10px;
+          width: fit-content;
+          height: 50%;
+          font-size: 20px;
+          font-weight: 500;
+          color: rgba(124, 75, 54, 1);
+          text-align: center;
+        }
+      }
+    }
+    .left {
+      width: 255px;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      position: relative;
+      white-space: normal;
+      .lTop {
+        text-align: justify;
+        padding: 40px;
+        padding-right: 0;
+        padding-bottom: 0;
+        width: 100%;
+        height: 160px;
+        font-size: 16px;
+        line-height: 24px;
+        letter-spacing: 2px;
+        font-weight: 400;
+        color: rgba(93, 96, 96, 1);
+      }
+      .lContent {
+        width: 100%;
+        height: calc(100% - 100px);
+        display: flex;
+        gap: 5px;
+        position: relative;
+        .lImgBox {
+          width: 550px;
+          height: 100%;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: top right;
+            background-size: contain;
+          }
+          & > img {
+            height: 100%;
+            object-fit: contain;
+          }
+        }
+        .lInfo {
+          padding-left: 40px;
+          padding-top: 30px;
+          width: 90%;
+          height: 48%;
+          display: flex;
+          align-items: center;
+          flex-direction: column;
+          gap: 20px;
+          overflow: auto;
+          &::-webkit-scrollbar {
+            width: 0px;
+            height: 0px;
+          }
+          .item {
+            width: 100%;
+            height: fit-content;
+            font-size: 13px;
+            font-weight: 500;
+            color: rgba(124, 75, 54, 1);
+
+            .lTitle {
+              width: 100%;
+              height: fit-content;
+              font-size: 17px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: bold;
+              color: rgba(124, 75, 54, 1);
+              position: relative;
+              z-index: 1;
+              &::after {
+                content: '';
+                width: 40px;
+                height: 4px;
+                position: absolute;
+                z-index: -1;
+                top: 50%;
+                left: 50%;
+                transform: translate(-480%, 65%);
+                background-color: rgb(197, 185, 144);
+                box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
+              }
+            }
+            .lText {
+              font-size: 16px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: 400;
+              color: #504e40;
+              height: fit-content;
+              margin-top: 5px;
+              max-height: 90px;
+              overflow: auto;
+              &::-webkit-scrollbar {
+                width: 0px;
+                height: 0px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .right {
+      width: fit-content;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      .RItems {
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        gap: 10px;
+        .item {
+          width: 400px;
+          height: 100%;
+          position: relative;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center center;
+            background-size: contain;
+          }
+          .bq1 {
+            transform: translate(-113%, -8%);
+            .main {
+              text-align: right;
+              white-space: normal;
+            }
+            .dotRight {
+              width: 120px;
+              top: 7%;
+              .card_arrowR {
+                .line {
+                  border-top: 1px dashed rgba(93, 96, 96, 1);
+                  border-bottom: 1px dashed rgba(93, 96, 96, 1);
+                }
+              }
+            }
+          }
+        }
+        .item:nth-child(1) {
+          width: 330px;
+        }
+      }
+    }
+  }
+}

+ 55 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bq/index.tsx

@@ -0,0 +1,55 @@
+import React from 'react'
+import styles from './index.module.scss'
+import { showLineType } from "../..";
+import InfoCard from '../InfoCard'
+import InfoPoint from '../InfoPoint'
+import { yearType } from '../Bwzzq';
+
+function Bq({ sItem, selectedTime, index, isShowLine, setIsShowLine }: yearType) {
+  return (
+    <div id='sinicizeDetail' className={`${styles.Bq} ${selectedTime === index ? 'detailShow' : 'detailHide'}`}>
+      {/* {selectedTime === index && ( */}
+      <>
+        <div className='left'>
+          <div className='lTop'>{sItem.desc}</div>
+        </div>
+        <div className='right'>
+          <div className='RItems'>
+            {sItem.imgItems
+              .map((i, index2) => (
+                <div className='item' key={index2}>
+                  <div
+                    style={{
+                      backgroundImage: `url(${isShowLine[index2]?.isShow ? i.srcLine : i.src})`
+                    }}
+                    onClick={() =>
+                      setIsShowLine(
+                        isShowLine.map(item => ({
+                          ...item,
+                          isShow: item.index === index2 ? !item.isShow : item.isShow
+                        }))
+                      )
+                    }
+                    className={`pic ${isShowLine[index2]?.isShow ? 'picLine' : ''}`}
+                  />
+                  {!isShowLine[index2]?.isShow ? (
+                    <InfoCard {...i} />
+                  ) : (
+                    <InfoPoint
+                      time={i.time}
+                      title={i.title}
+                    />
+                  )}
+                </div>
+              ))}
+          </div>
+        </div>
+      </>
+      {/* )} */}
+    </div>
+  )
+}
+
+const MemoBq = React.memo(Bq)
+
+export default MemoBq

+ 256 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwwq/index.module.scss

@@ -0,0 +1,256 @@
+.Bwwq {
+  width: auto;
+  height: 100%;
+  background: url('../../../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
+  background-size: cover;
+  overflow: hidden;
+  transition: all 0.3s ease-in-out;
+  display: inline-block;
+  vertical-align: top;
+  &:global(.detailShow) {
+    :global {
+      .left,
+      .right {
+        opacity: 1;
+        transition: all 1s ease-in-out, opacity 0.3s ease-in-out;
+      }
+    }
+  }
+  &:global(.detailHide) {
+    :global {
+      .left,
+      .right {
+        width: 0;
+        opacity: 0;
+        transition: all 0.6s ease-in-out;
+      }
+    }
+  }
+
+  :global {
+    .point {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 225px;
+      height: 60px;
+      & > img {
+        position: absolute;
+        z-index: -1;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: auto;
+        height: 100%;
+        object-fit: contain;
+      }
+      .pPoint {
+        padding: 6px 0;
+        padding-left: 55px;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+
+        .pointTime,
+        .pointTitle {
+          padding-left: 10px;
+          width: fit-content;
+          height: 50%;
+          font-size: 20px;
+          font-weight: 500;
+          color: rgba(124, 75, 54, 1);
+          text-align: center;
+        }
+      }
+    }
+    .left {
+      width: 255px;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      position: relative;
+      white-space: normal;
+      .lTop {
+        text-align: justify;
+        padding: 40px;
+        padding-right: 0;
+        padding-bottom: 0;
+        width: 100%;
+        height: 160px;
+        font-size: 16px;
+        line-height: 24px;
+        letter-spacing: 2px;
+        font-weight: 400;
+        color: rgba(93, 96, 96, 1);
+      }
+      .lContent {
+        width: 100%;
+        height: calc(100% - 100px);
+        display: flex;
+        gap: 5px;
+        position: relative;
+        .lImgBox {
+          width: 550px;
+          height: 100%;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: top right;
+            background-size: contain;
+          }
+          & > img {
+            height: 100%;
+            object-fit: contain;
+          }
+        }
+        .lInfo {
+          padding-left: 40px;
+          padding-top: 30px;
+          width: 90%;
+          height: 48%;
+          display: flex;
+          align-items: center;
+          flex-direction: column;
+          gap: 20px;
+          overflow: auto;
+          &::-webkit-scrollbar {
+            width: 0px;
+            height: 0px;
+          }
+          .item {
+            width: 100%;
+            height: fit-content;
+            font-size: 13px;
+            font-weight: 500;
+            color: rgba(124, 75, 54, 1);
+
+            .lTitle {
+              width: 100%;
+              height: fit-content;
+              font-size: 17px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: bold;
+              color: rgba(124, 75, 54, 1);
+              position: relative;
+              z-index: 1;
+              &::after {
+                content: '';
+                width: 40px;
+                height: 4px;
+                position: absolute;
+                z-index: -1;
+                top: 50%;
+                left: 50%;
+                transform: translate(-480%, 65%);
+                background-color: rgb(197, 185, 144);
+                box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
+              }
+            }
+            .lText {
+              font-size: 16px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: 400;
+              color: #504e40;
+              height: fit-content;
+              margin-top: 5px;
+              max-height: 90px;
+              overflow: auto;
+              &::-webkit-scrollbar {
+                width: 0px;
+                height: 0px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .right {
+      width: fit-content;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      .RItems {
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        gap: 10px;
+        .item {
+          width: 400px;
+          height: 100%;
+          position: relative;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center center;
+            background-size: contain;
+          }
+          .wq1 {
+            transform: translate(-113%, 24%);
+            width: 360px;
+            .main {
+              width: 230px;
+              text-align: right;
+              white-space: normal;
+            }
+            .dotRight {
+              width: 160px;
+              top: 7%;
+              .card_arrowR {
+                .line {
+                  border-top: 1px dashed rgba(93, 96, 96, 1);
+                  border-bottom: 1px dashed rgba(93, 96, 96, 1);
+                }
+              }
+            }
+          }
+        }
+        .itemHot {
+          width: 800px;
+          padding: 0 40px;
+          height: 100%;
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          justify-content: center;
+          .itemHot_title {
+            width: 100%;
+            height: 30px;
+            font-size: 26px;
+            color: rgba(124, 75, 54, 1);
+            text-align: center;
+          }
+          .itemHot_line {
+            width: 100%;
+            height: 30px;
+            margin: 14px 0;
+            & > img {
+              width: 100%;
+              height: 20px;
+              object-fit: contain;
+            }
+          }
+          .itemHot_content {
+            width: 100%;
+            height: 50%;
+            font-size: 16px;
+            line-height: 24px;
+            color: rgba(93, 96, 96, 1);
+            white-space: normal;
+            text-align: center;
+          }
+        }
+      }
+    }
+  }
+}

+ 61 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwwq/index.tsx

@@ -0,0 +1,61 @@
+import React from 'react'
+import styles from './index.module.scss'
+import { showLineType } from "../..";
+import InfoCard from '../InfoCard'
+import InfoPoint from '../InfoPoint'
+import { yearType } from '../Bwzzq';
+
+function Bwwq({ sItem, selectedTime, index, isShowLine, setIsShowLine }: yearType) {
+  return (
+    <div id='sinicizeDetail' className={`${styles.Bwwq} ${selectedTime === index ? 'detailShow' : 'detailHide'}`}>
+      {/* {selectedTime === index && ( */}
+      <>
+        <div className='left'>
+          <div className='lTop'>{sItem.desc}</div>
+        </div>
+        <div className='right'>
+          <div className='RItems'>
+            {sItem.imgItems
+              .map((i, index2) => (
+                <div className='item' key={index2}>
+                  <div
+                    style={{
+                      backgroundImage: `url(${isShowLine[index2]?.isShow ? i.srcLine : i.src})`
+                    }}
+                    onClick={() =>
+                      setIsShowLine(
+                        isShowLine.map(item => ({
+                          ...item,
+                          isShow: item.index === index2 ? !item.isShow : item.isShow
+                        }))
+                      )
+                    }
+                    className={`pic ${isShowLine[index2]?.isShow ? 'picLine' : ''}`}
+                  />
+                  {!isShowLine[index2]?.isShow ? (
+                    <InfoCard {...i} />
+                  ) : (
+                    <InfoPoint
+                      time={i.time}
+                      title={i.title}
+                    />
+                  )}
+                </div>
+              ))}
+
+            <div className='itemHot '>
+              <div className="itemHot_title songFont">{sItem.items[0].title}</div>
+              <div className="itemHot_line"><img src={require('@/assets/img/A6_sinicize_bwwq_line.png')} alt="" /></div>
+              <div className="itemHot_content" dangerouslySetInnerHTML={{ __html: sItem.items[0].txt }}></div>
+            </div>
+          </div>
+        </div>
+      </>
+      {/* )} */}
+    </div>
+  )
+}
+
+const MemoBwwq = React.memo(Bwwq)
+
+export default MemoBwwq

+ 225 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwzwq/index.module.scss

@@ -0,0 +1,225 @@
+.Bwzwq {
+  width: auto;
+  height: 100%;
+  background: url('../../../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
+  background-size: cover;
+  overflow: hidden;
+  transition: all 0.3s ease-in-out;
+  display: inline-block;
+  vertical-align: top;
+  &:global(.detailShow) {
+    :global {
+      .left,
+      .right {
+        opacity: 1;
+        transition: all 1s ease-in-out, opacity 0.3s ease-in-out;
+      }
+    }
+  }
+  &:global(.detailHide) {
+    :global {
+      .left,
+      .right {
+        width: 0;
+        opacity: 0;
+        transition: all 0.6s ease-in-out;
+      }
+    }
+  }
+
+  :global {
+    .point {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 225px;
+      height: 60px;
+      & > img {
+        position: absolute;
+        z-index: -1;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: auto;
+        height: 100%;
+        object-fit: contain;
+      }
+      .pPoint {
+        padding: 6px 0;
+        padding-left: 55px;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+
+        .pointTime,
+        .pointTitle {
+          padding-left: 10px;
+          width: fit-content;
+          height: 50%;
+          font-size: 20px;
+          font-weight: 500;
+          color: rgba(124, 75, 54, 1);
+          text-align: center;
+        }
+      }
+    }
+    .left {
+      width: 500px;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      position: relative;
+      white-space: normal;
+      .lTop {
+        text-align: justify;
+        padding: 40px;
+        padding-right: 0;
+        padding-bottom: 0;
+        width: 100%;
+        height: 160px;
+        font-size: 16px;
+        line-height: 22px;
+        letter-spacing: 2px;
+        font-weight: 400;
+        color: rgba(93, 96, 96, 1);
+      }
+      .lContent {
+        width: 100%;
+        height: calc(100% - 100px);
+        display: flex;
+        gap: 5px;
+        position: relative;
+        .lImgBox {
+          width: 550px;
+          height: 100%;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: top right;
+            background-size: contain;
+          }
+          & > img {
+            height: 100%;
+            object-fit: contain;
+          }
+        }
+        .lInfo {
+          padding-left: 40px;
+          padding-top: 10px;
+          width: 90%;
+          height: 48%;
+          display: flex;
+          align-items: center;
+          flex-direction: column;
+          gap: 20px;
+          overflow: auto;
+          &::-webkit-scrollbar {
+            width: 0px;
+            height: 0px;
+          }
+          .item {
+            width: 100%;
+            height: fit-content;
+            font-size: 13px;
+            font-weight: 500;
+            color: rgba(124, 75, 54, 1);
+
+            .lTitle {
+              width: 100%;
+              height: fit-content;
+              font-size: 17px;
+              line-height: 22px;
+              letter-spacing: 2px;
+              font-weight: bold;
+              color: rgba(124, 75, 54, 1);
+              position: relative;
+              z-index: 1;
+              &::after {
+                content: '';
+                width: 40px;
+                height: 4px;
+                position: absolute;
+                z-index: -1;
+                top: 50%;
+                left: 50%;
+                transform: translate(-480%, 65%);
+                background-color: rgb(197, 185, 144);
+                box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
+              }
+            }
+            .lText {
+              font-size: 16px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: 400;
+              color: #504e40;
+              height: fit-content;
+              margin-top: 5px;
+              max-height: 90px;
+              overflow: auto;
+              &::-webkit-scrollbar {
+                width: 0px;
+                height: 0px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .right {
+      width: fit-content;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      .RItems {
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        gap: 10px;
+
+        .item {
+          width: 500px;
+          height: 100%;
+          position: relative;
+
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center center;
+            background-size: contain;
+          }
+          .zwq1 {
+            transform: translate(-114%, 39%);
+            width: 420px;
+            .main {
+              text-align: right;
+              white-space: normal;
+            }
+            .dotRight {
+              width: 160px;
+              top: 5%;
+              .card_arrowR {
+                .line {
+                  border-top: 1px dashed rgba(93, 96, 96, 1);
+                  border-bottom: 1px dashed rgba(93, 96, 96, 1);
+                }
+              }
+            }
+          }
+        }
+        .item:nth-child(1) {
+          width: 310px;
+        }
+      }
+    }
+  }
+}

+ 64 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwzwq/index.tsx

@@ -0,0 +1,64 @@
+import React from 'react'
+import styles from './index.module.scss'
+import InfoCard from '../InfoCard'
+import InfoPoint from '../InfoPoint'
+
+import { yearType } from '../Bwzzq';
+
+function Bwzwq({ sItem, selectedTime, index, isShowLine, setIsShowLine }: yearType) {
+  return (
+    <div id='sinicizeDetail' className={`${styles.Bwzwq} ${selectedTime === index ? 'detailShow' : 'detailHide'}`}>
+      {/* {selectedTime === index && ( */}
+      <>
+        <div className='left'>
+          <div className='lTop'>{sItem.desc}</div>
+          <div className='lContent'>
+            <div className='lInfo'>
+              <div className='item' key={index}>
+                <div className='lTitle songFont'>{sItem.items[0].title}</div>
+                <div className='lText'>{sItem.items[0].txt}</div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div className='right'>
+          <div className='RItems'>
+            {sItem.imgItems
+              .map((i, index2) => (
+                <div className='item' key={index2}>
+                  <div
+                    style={{
+                      backgroundImage: `url(${isShowLine[index2]?.isShow ? i.srcLine : i.src})`
+                    }}
+                    onClick={() =>
+                      setIsShowLine(
+                        isShowLine.map(item => ({
+                          ...item,
+                          isShow: item.index === index2 ? !item.isShow : item.isShow
+                        }))
+                      )
+                    }
+                    className={`pic ${isShowLine[index2]?.isShow ? 'picLine' : ''}`}
+                  />
+                  {!isShowLine[index2]?.isShow ? (
+                    <InfoCard {...i} />
+                  ) : (
+                    <InfoPoint
+                      time={i.time}
+                      title={i.title}
+                      className={i?.classNamePoint}
+                    />
+                  )}
+                </div>
+              ))}
+          </div>
+        </div>
+      </>
+      {/* )} */}
+    </div>
+  )
+}
+
+const MemoBwzwq = React.memo(Bwzwq)
+
+export default MemoBwzwq

+ 213 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwzzq/index.module.scss

@@ -0,0 +1,213 @@
+.Bwzzq {
+  width: auto;
+  height: 100%;
+  background: url('../../../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
+  background-size: cover;
+  overflow: hidden;
+  transition: all 0.3s ease-in-out;
+  display: inline-block;
+  vertical-align: top;
+  &:global(.detailShow) {
+    :global {
+      .left,
+      .right {
+        opacity: 1;
+        transition: all 1s ease-in-out, opacity 0.3s ease-in-out;
+      }
+    }
+  }
+  &:global(.detailHide) {
+    :global {
+      .left,
+      .right {
+        width: 0;
+        opacity: 0;
+        transition: all 0.6s ease-in-out;
+      }
+    }
+  }
+
+  :global {
+    .point {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 225px;
+      height: 60px;
+      & > img {
+        position: absolute;
+        z-index: -1;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: auto;
+        height: 100%;
+        object-fit: contain;
+      }
+      .pPoint {
+        padding: 6px 0;
+        padding-left: 55px;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+
+        .pointTime,
+        .pointTitle {
+          padding-left: 10px;
+          width: fit-content;
+          height: 50%;
+          font-size: 20px;
+          font-weight: 500;
+          color: rgba(124, 75, 54, 1);
+          text-align: center;
+        }
+      }
+    }
+    .left {
+      width: 745px;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      position: relative;
+      white-space: normal;
+      .lTop {
+        text-align: justify;
+        padding: 20px;
+        padding-bottom: 0;
+        width: 100%;
+        height: 130px;
+        font-size: 16px;
+        line-height: 24px;
+        letter-spacing: 2px;
+        font-weight: 400;
+        color: rgba(93, 96, 96, 1);
+        position: absolute;
+        top: 0;
+        left: 0;
+      }
+      .lContent {
+        width: 100%;
+        height: calc(100% - 100px);
+        display: flex;
+        gap: 5px;
+        position: relative;
+        margin-top: 100px;
+        .lImgBox {
+          width: 550px;
+          height: 100%;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center;
+            background-size: contain;
+          }
+          & > img {
+            height: 100%;
+            object-fit: contain;
+          }
+
+          .zzq1 {
+            transform: translate(-83%, -2%);
+            width: 420px;
+            .dotRight {
+              width: 180px;
+            }
+          }
+        }
+        .lInfo {
+          padding-left: 20px;
+          padding-top: 30px;
+          width: 250px;
+          height: 48%;
+          display: flex;
+          align-items: center;
+          flex-direction: column;
+          gap: 20px;
+          overflow: auto;
+          &::-webkit-scrollbar {
+            width: 0px;
+            height: 0px;
+          }
+          .item {
+            width: 100%;
+            height: fit-content;
+            font-size: 13px;
+            font-weight: 500;
+            color: rgba(124, 75, 54, 1);
+
+            .lTitle {
+              width: 100%;
+              height: fit-content;
+              font-size: 17px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: bold;
+              color: rgba(124, 75, 54, 1);
+              position: relative;
+              z-index: 1;
+              &::after {
+                content: '';
+                width: 32px;
+                height: 4px;
+                position: absolute;
+                z-index: -1;
+                top: 50%;
+                left: 50%;
+                transform: translate(-341%, 65%);
+                background-color: rgb(197, 185, 144);
+                box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
+              }
+            }
+            .lText {
+              font-size: 16px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: 400;
+              color: #504e40;
+              height: fit-content;
+              margin-top: 5px;
+              max-height: 90px;
+              overflow: auto;
+              &::-webkit-scrollbar {
+                width: 0px;
+                height: 0px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .right {
+      width: fit-content;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      .RItems {
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        gap: 10px;
+        .item {
+          width: 500px;
+          height: 100%;
+          position: relative;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center center;
+            background-size: contain;
+          }
+        }
+      }
+    }
+  }
+}

+ 114 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bwzzq/index.tsx

@@ -0,0 +1,114 @@
+import React from 'react'
+import styles from './index.module.scss'
+import { showLineType } from "../..";
+import InfoCard from '../InfoCard'
+import InfoPoint from '../InfoPoint'
+
+export type yearItemType = {
+  time: string
+  bgPath: string
+  desc: string
+  items: { title: string; txt: string; inset: string }[]
+  imgItems: {
+    time: string
+    title: string
+    src: string
+    srcLine: string
+    txt: string
+    picfrom: string
+    direction?: string
+    classNameCard?: string
+    classNamePoint?: string
+  }[]
+}
+
+export type yearType = {
+  sItem: yearItemType
+  isShowLine: showLineType
+  setIsShowLine: (isShowLine: showLineType) => void
+  selectedTime: number
+  index: number
+}
+function Bwzzq({ sItem, selectedTime, index, isShowLine, setIsShowLine }: yearType) {
+  return (
+    <div id='sinicizeDetail' className={`${styles.Bwzzq} ${selectedTime === index ? 'detailShow' : 'detailHide'}`}>
+      {/* {selectedTime === index && ( */}
+      <>
+        <div className='left'>
+          <div className='lTop'>{sItem.desc}</div>
+          <div className='lContent'>
+            <div className='lInfo'>
+              <div className='item' key={index}>
+                <div className='lTitle songFont'>{sItem.items[0].title}</div>
+                <div className='lText'>{sItem.items[0].txt}</div>
+              </div>
+            </div>
+            <div className='lImgBox'>
+              <div
+                style={{
+                  backgroundImage: `url(${isShowLine[0]?.isShow ? sItem.imgItems[0].srcLine : sItem.imgItems[0].src
+                    })`
+                }}
+                className={`pic ${isShowLine[0]?.isShow ? 'picLine' : ''}`}
+                onClick={() =>
+                  setIsShowLine(
+                    isShowLine.map(item => ({
+                      ...item,
+                      isShow: item.index === index ? !item.isShow : item.isShow
+                    }))
+                  )
+                }
+              />
+              {!isShowLine[0]?.isShow ? (
+                <InfoCard {...sItem.imgItems[0]} />
+              ) : (
+                <InfoPoint
+                  direction={sItem.imgItems[0].direction}
+                  time={sItem.imgItems[0].time}
+                  title={sItem.imgItems[0].title}
+                />
+              )}
+            </div>
+          </div>
+        </div>
+        <div className='right'>
+          <div className='RItems'>
+            {sItem.imgItems
+              .filter((i, index) => index !== 0)
+              .map((i, index2) => (
+                <div className='item' key={index2}>
+                  <div
+                    style={{
+                      backgroundImage: `url(${isShowLine[index2 + 1]?.isShow ? i.srcLine : i.src})`
+                    }}
+                    onClick={() =>
+                      setIsShowLine(
+                        isShowLine.map(item => ({
+                          ...item,
+                          isShow: item.index === index + 1 ? !item.isShow : item.isShow
+                        }))
+                      )
+                    }
+                    className={`pic ${isShowLine[index2 + 1]?.isShow ? 'picLine' : ''}`}
+                  />
+                  {!isShowLine[index2 + 1]?.isShow ? (
+                    <InfoCard {...i} />
+                  ) : (
+                    <InfoPoint
+                      time={i.time}
+                      title={i.title}
+                    />
+                  )}
+                </div>
+              ))}
+          </div>
+        </div>
+      </>
+      {/* )} */}
+    </div>
+  )
+}
+
+const MemoBwzzq = React.memo(Bwzzq)
+
+export default MemoBwzzq

+ 227 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bz/index.module.scss

@@ -0,0 +1,227 @@
+.Bz {
+  width: auto;
+  height: 100%;
+  background: url('../../../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
+  background-size: cover;
+  overflow: hidden;
+  transition: all 0.3s ease-in-out;
+  display: inline-block;
+  vertical-align: top;
+  &:global(.detailShow) {
+    :global {
+      .left,
+      .right {
+        opacity: 1;
+        transition: all 1s ease-in-out, opacity 0.3s ease-in-out;
+      }
+    }
+  }
+  &:global(.detailHide) {
+    :global {
+      .left,
+      .right {
+        width: 0;
+        opacity: 0;
+        transition: all 0.6s ease-in-out;
+      }
+    }
+  }
+
+  :global {
+    .point {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 225px;
+      height: 60px;
+      & > img {
+        position: absolute;
+        z-index: -1;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: auto;
+        height: 100%;
+        object-fit: contain;
+      }
+      .pPoint {
+        padding: 6px 0;
+        padding-left: 55px;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+
+        .pointTime,
+        .pointTitle {
+          padding-left: 10px;
+          width: fit-content;
+          height: 50%;
+          font-size: 20px;
+          font-weight: 500;
+          color: rgba(124, 75, 54, 1);
+          text-align: center;
+        }
+      }
+    }
+    .left {
+      width: 300px;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      position: relative;
+      white-space: normal;
+      .lTop {
+        text-align: justify;
+        padding: 40px;
+        padding-right: 0;
+        padding-bottom: 0;
+        width: 100%;
+        height: 100px;
+        font-size: 16px;
+        line-height: 22px;
+        letter-spacing: 2px;
+        font-weight: 400;
+        color: rgba(93, 96, 96, 1);
+      }
+      .lContent {
+        width: 100%;
+        height: calc(100% - 100px);
+        display: flex;
+        gap: 5px;
+        position: relative;
+        .lImgBox {
+          width: 550px;
+          height: 100%;
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: top right;
+            background-size: contain;
+          }
+          & > img {
+            height: 100%;
+            object-fit: contain;
+          }
+        }
+        .lInfo {
+          padding-left: 40px;
+          padding-top: 10px;
+          width: 90%;
+          height: 48%;
+          display: flex;
+          align-items: center;
+          flex-direction: column;
+          gap: 20px;
+          overflow: auto;
+          &::-webkit-scrollbar {
+            width: 0px;
+            height: 0px;
+          }
+          .item {
+            width: 100%;
+            height: fit-content;
+            font-size: 13px;
+            font-weight: 500;
+            color: rgba(124, 75, 54, 1);
+
+            .lTitle {
+              width: 100%;
+              height: fit-content;
+              font-size: 17px;
+              line-height: 22px;
+              letter-spacing: 2px;
+              font-weight: bold;
+              color: rgba(124, 75, 54, 1);
+              position: relative;
+              z-index: 1;
+              &::after {
+                content: '';
+                width: 40px;
+                height: 4px;
+                position: absolute;
+                z-index: -1;
+                top: 50%;
+                left: 50%;
+                transform: translate(-480%, 65%);
+                background-color: rgb(197, 185, 144);
+                box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
+              }
+            }
+            .lText {
+              font-size: 16px;
+              line-height: 24px;
+              letter-spacing: 2px;
+              font-weight: 400;
+              color: #504e40;
+              height: fit-content;
+              margin-top: 5px;
+              max-height: 90px;
+              overflow: auto;
+              &::-webkit-scrollbar {
+                width: 0px;
+                height: 0px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .right {
+      width: fit-content;
+      height: 100%;
+      display: inline-block;
+      vertical-align: top;
+      .RItems {
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        gap: 10px;
+
+        .item {
+          width: 500px;
+          height: 100%;
+          position: relative;
+
+          .pic {
+            width: 100%;
+            height: 100%;
+            transition: all 0.3s ease-in-out;
+            background-repeat: no-repeat;
+            background-position: center center;
+            background-size: contain;
+          }
+          .bz1 {
+            transform: translate(-112%, 34%);
+            width: 320px;
+            height: 170px;
+            .main {
+              width: 165px;
+              text-align: right;
+              white-space: normal;
+            }
+            .dotRight {
+              width: 120px;
+              top: 5%;
+              .card_arrowR {
+                .line {
+                  border-top: 1px dashed rgba(93, 96, 96, 1);
+                  border-bottom: 1px dashed rgba(93, 96, 96, 1);
+                }
+              }
+            }
+          }
+        }
+        .item:nth-child(1) {
+          width: 310px;
+        }
+      }
+    }
+  }
+}

+ 63 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/Bz/index.tsx

@@ -0,0 +1,63 @@
+import React from 'react'
+import styles from './index.module.scss'
+import InfoCard from '../InfoCard'
+import InfoPoint from '../InfoPoint'
+
+import { yearType } from '../Bwzzq';
+
+function Bz({ sItem, selectedTime, index, isShowLine, setIsShowLine }: yearType) {
+  return (
+    <div id='sinicizeDetail' className={`${styles.Bz} ${selectedTime === index ? 'detailShow' : 'detailHide'}`}>
+      {/* {selectedTime === index && ( */}
+      <>
+        <div className='left'>
+          <div className='lTop'>{sItem.desc}</div>
+          <div className='lContent'>
+            <div className='lInfo'>
+              <div className='item' key={index}>
+                <div className='lTitle songFont'>{sItem.items[0].title}</div>
+                <div className='lText'>{sItem.items[0].txt}</div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div className='right'>
+          <div className='RItems'>
+            {sItem.imgItems
+              .map((i, index2) => (
+                <div className='item' key={index2}>
+                  <div
+                    style={{
+                      backgroundImage: `url(${isShowLine[index2]?.isShow ? i.srcLine : i.src})`
+                    }}
+                    onClick={() =>
+                      setIsShowLine(
+                        isShowLine.map(item => ({
+                          ...item,
+                          isShow: item.index === index2 ? !item.isShow : item.isShow
+                        }))
+                      )
+                    }
+                    className={`pic ${isShowLine[index2]?.isShow ? 'picLine' : ''}`}
+                  />
+                  {!isShowLine[index2]?.isShow ? (
+                    <InfoCard {...i} />
+                  ) : (
+                    <InfoPoint
+                      time={i.time}
+                      title={i.title}
+                    />
+                  )}
+                </div>
+              ))}
+          </div>
+        </div>
+      </>
+      {/* )} */}
+    </div>
+  )
+}
+
+const MemoBz = React.memo(Bz)
+
+export default MemoBz

+ 71 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/InfoCard/index.module.scss

@@ -0,0 +1,71 @@
+.InfoCard {
+  position: absolute;
+  z-index: 2;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 350px;
+  height: 200px;
+  display: flex;
+  pointer-events: none;
+  :global {
+    .dotLeft,
+    .dotRight {
+      width: 120px;
+      height: 20px;
+      position: relative;
+      top: 20%;
+      .name {
+        text-align: right;
+        height: 10px;
+        width: 100%;
+        color: rgba(255, 233, 182, 1);
+      }
+      .card_arrowR {
+        width: 100%;
+        height: 20px;
+        display: flex;
+        align-items: center;
+        .line {
+          width: 100%;
+          height: 0px;
+          border-top: 1px dashed rgba(255, 233, 182, 1);
+          border-bottom: 1px dashed rgba(255, 233, 182, 1);
+        }
+        & > img {
+          width: 12px;
+          height: 12px;
+          object-fit: contain;
+        }
+      }
+    }
+
+    .main {
+      padding: 4px;
+      width: 260px;
+      height: 100%;
+      font-size: 15px;
+      line-height: 20px;
+      .time {
+        color: rgba(124, 75, 54, 1);
+      }
+      .location {
+        color: rgba(175, 135, 100, 1);
+        font-weight: 500;
+      }
+      .Cardtext {
+        max-height: 80px;
+        margin-top: 10px;
+        color: rgba(93, 96, 96, 1);
+        overflow: auto;
+        &::-webkit-scrollbar {
+          width: 0px;
+          height: 0px;
+        }
+      }
+      .from {
+        color: rgba(151, 151, 151, 1);
+      }
+    }
+  }
+}

+ 40 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/InfoCard/index.tsx

@@ -0,0 +1,40 @@
+import React from "react";
+import styles from "./index.module.scss";
+
+type InfoCardProps = {
+  time: string
+  title: string
+  txt?: string
+  picfrom: string
+  name?: string
+  direction?: string
+  classNameCard?: string
+}
+function InfoCard({ time, title, txt, picfrom, name = '主尊', direction = 'left', classNameCard = '' }: InfoCardProps) {
+  return (
+    <div className={`${styles.InfoCard} ${classNameCard}`}>
+      {direction === 'left' && <div className='dotLeft'>
+        <div className="name">{name}</div>
+        <img src={require('@/assets/img/A6_arrow.png')} alt='' />
+      </div>}
+      <div className='main'>
+        <div className='time'>{time}</div>
+        <div className='location'>{title}</div>
+        <div className='Cardtext'>{txt}</div>
+        <div className='from'>{picfrom}</div>
+      </div>
+      {direction === 'right' && <div className='dotRight'>
+        <div className="name">{name}</div>
+        <div className="card_arrowR">
+          <div className="line"></div>
+          <img src={require('@/assets/img/icon_dot2.png')} alt='' />
+        </div>
+
+      </div>}
+    </div>
+  )
+}
+
+const MemoInfoCard = React.memo(InfoCard);
+
+export default MemoInfoCard;

+ 53 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/InfoPoint/index.module.scss

@@ -0,0 +1,53 @@
+.point {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 225px;
+  height: 60px;
+  pointer-events: none;
+  &:global(.pointright) {
+    :global {
+      .pointBg {
+        transform: translate(-50%, -50%) rotate(180deg);
+      }
+      .pPoint {
+        padding-left: 0;
+        padding-right: 55px;
+      }
+    }
+  }
+  :global {
+    .pointBg {
+      position: absolute;
+      z-index: -1;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: auto;
+      height: 100%;
+      object-fit: contain;
+    }
+    .pPoint {
+      padding: 6px 0;
+      padding-left: 55px;
+      width: 100%;
+      height: 100%;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+
+      .pointTime,
+      .pointTitle {
+        padding-left: 10px;
+        width: fit-content;
+        height: 50%;
+        font-size: 20px;
+        font-weight: 500;
+        color: rgba(124, 75, 54, 1);
+        text-align: center;
+      }
+    }
+  }
+}

+ 30 - 0
src/pages/A6ybwx/A6_2_zxzgh/components/InfoPoint/index.tsx

@@ -0,0 +1,30 @@
+import React from "react";
+import styles from './index.module.scss'
+
+type InfoPointProps = {
+  time: string
+  title: string
+  width?: number
+  direction?: string
+  className?: string
+}
+function InfoPoint({ time, title, width = 185, direction = 'right', className = '' }: InfoPointProps) {
+
+  return (
+    <div
+      className={`${styles.point} point${direction} ${className}`}
+    >
+      <img className="pointBg" src={require('@/assets/img/A6_pointBg.png')} alt="" />
+      <div className="pPoint" style={{ width: width + 'px' }}>
+
+        <div className='pointTime songFont'>{time}</div>
+        <div className='pointTitle songFont'>{title}</div>
+      </div>
+
+    </div>)
+}
+
+
+const MemoInfoPoint = React.memo(InfoPoint);
+
+export default MemoInfoPoint;

+ 0 - 247
src/pages/A6ybwx/A6_2_zxzgh/index.module.scss

@@ -341,253 +341,6 @@
             }
             }
           }
           }
         }
         }
-
-        .detailShow,
-        .detailHide {
-          width: auto;
-          height: 100%;
-          background: url('../../../assets/img/A6_sinicize_bg2.png') repeat-x center bottom;
-          background-size: auto 99%;
-          overflow: hidden;
-          transition: all 0.3s ease-in-out;
-          display: inline-block;
-          vertical-align: top;
-
-          .point {
-            position: absolute;
-            top: 50%;
-            left: 50%;
-            transform: translate(-50%, -50%);
-            width: 225px;
-            height: 60px;
-            & > img {
-              position: absolute;
-              z-index: -1;
-              top: 50%;
-              left: 50%;
-              transform: translate(-50%, -50%);
-              width: auto;
-              height: 100%;
-              object-fit: contain;
-            }
-            .pPoint {
-              padding: 6px 0;
-              width: 100%;
-              height: 100%;
-              display: flex;
-              flex-direction: column;
-              align-items: center;
-              justify-content: center;
-
-              .pointTime,
-              .pointTitle {
-                padding-left: 10px;
-                width: fit-content;
-                height: 50%;
-                font-size: 20px;
-                font-weight: 500;
-                color: rgba(124, 75, 54, 1);
-                text-align: center;
-              }
-            }
-          }
-          .left {
-            width: 800px;
-            height: 100%;
-            display: inline-block;
-            vertical-align: top;
-            position: relative;
-            white-space: normal;
-            .lTop {
-              text-align: justify;
-              padding: 20px;
-              padding-bottom: 0;
-              width: 100%;
-              height: 130px;
-              font-size: 16px;
-              line-height: 24px;
-              letter-spacing: 2px;
-              font-weight: 400;
-              color: rgba(93, 96, 96, 1);
-              position: absolute;
-              top: 0;
-              left: 0;
-            }
-            .lContent {
-              width: 100%;
-              height: calc(100% - 100px);
-              display: flex;
-              gap: 5px;
-              position: relative;
-              margin-top: 100px;
-              .lImgBox {
-                width: 550px;
-                height: 100%;
-                .pic {
-                  width: 100%;
-                  height: 100%;
-                  transition: all 0.3s ease-in-out;
-                  background-repeat: no-repeat;
-                  background-position: top right;
-                  background-size: contain;
-                }
-                & > img {
-                  height: 100%;
-                  object-fit: contain;
-                }
-              }
-              .lInfo {
-                padding-left: 20px;
-                padding-top: 30px;
-                width: 250px;
-                height: 100%;
-                display: flex;
-                align-items: center;
-                flex-direction: column;
-                gap: 20px;
-                .item {
-                  width: 100%;
-                  height: fit-content;
-                  font-size: 13px;
-                  font-weight: 500;
-                  color: rgba(124, 75, 54, 1);
-
-                  .lTitle {
-                    width: 100%;
-                    height: fit-content;
-                    font-size: 17px;
-                    line-height: 24px;
-                    letter-spacing: 2px;
-                    font-weight: bold;
-                    color: rgba(124, 75, 54, 1);
-                    position: relative;
-                    z-index: 1;
-                    &::after {
-                      content: '';
-                      width: 32px;
-                      height: 4px;
-                      position: absolute;
-                      z-index: -1;
-                      top: 50%;
-                      left: 50%;
-                      transform: translate(-341%, 65%);
-                      background-color: rgb(197, 185, 144);
-                      box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
-                    }
-                  }
-                  .lText {
-                    font-size: 16px;
-                    line-height: 24px;
-                    letter-spacing: 2px;
-                    font-weight: 400;
-                    color: #504e40;
-                    height: fit-content;
-                    margin-top: 5px;
-                    max-height: 90px;
-                    overflow: auto;
-                    &::-webkit-scrollbar {
-                      width: 0px;
-                      height: 0px;
-                    }
-                  }
-                }
-              }
-            }
-          }
-          .right {
-            width: fit-content;
-            height: 100%;
-            display: inline-block;
-            vertical-align: top;
-            .RItems {
-              width: fit-content;
-              height: 100%;
-              display: flex;
-              align-items: center;
-              gap: 10px;
-              .item {
-                width: 500px;
-                height: 100%;
-                position: relative;
-                .pic {
-                  width: 100%;
-                  height: 100%;
-                  transition: all 0.3s ease-in-out;
-                  background-repeat: no-repeat;
-                  background-size: contain;
-                }
-              }
-            }
-          }
-        }
-
-        .detailShow {
-          .left,
-          .right {
-            opacity: 1;
-            transition: all 0.6s ease-in-out, opacity 0.3s ease-in-out;
-          }
-        }
-
-        .detailHide {
-          .left,
-          .right {
-            width: 0;
-            opacity: 0;
-            transition: all 0.6s ease-in-out;
-          }
-        }
-      }
-    }
-  }
-}
-
-.InfoCard {
-  position: absolute;
-  z-index: 2;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  width: 350px;
-  height: 250px;
-  display: flex;
-  align-items: center;
-  :global {
-    .cardClose {
-      position: absolute;
-      z-index: 2;
-      top: 3%;
-      right: 3%;
-      width: 20px;
-      height: 20px;
-      font-weight: bold;
-      cursor: pointer;
-      & > img {
-        width: 100%;
-        height: 100%;
-        object-fit: contain;
-      }
-    }
-    .main {
-      padding: 10px;
-      width: 230px;
-      height: 100%;
-      border-radius: 10px;
-      background-color: rgba(255, 255, 255, 0.6);
-      backdrop-filter: blur(5px);
-      box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5);
-      font-size: 13px;
-      .time {
-        color: rgba(124, 75, 54, 1);
-      }
-      .location {
-        color: rgba(175, 135, 100, 1);
-      }
-      .Cardtext {
-        color: rgba(93, 96, 96, 1);
-      }
-      .from {
-        color: rgba(151, 151, 151, 1);
       }
       }
     }
     }
   }
   }

+ 111 - 158
src/pages/A6ybwx/A6_2_zxzgh/index.tsx

@@ -3,16 +3,14 @@ import styles from './index.module.scss'
 import { useSelector } from 'react-redux'
 import { useSelector } from 'react-redux'
 import { RootState } from '@/store'
 import { RootState } from '@/store'
 import iosTouch from '@/utils/iosTouch'
 import iosTouch from '@/utils/iosTouch'
+import Bwzzq from './components/Bwzzq'
+import Bwzwq from './components/Bwzwq'
+import Bwwq from './components/Bwwq'
+import Bq from './components/Bq'
+import Bz from './components/Bz'
 
 
-type InfoCardProps = {
-  time: string
-  location: string
-  text?: string
-  from: string
-  inset?: string
-  index: number
-}
-type showLineType = {
+
+export type showLineType = {
   index: number
   index: number
   isShow: boolean
   isShow: boolean
 }[]
 }[]
@@ -74,6 +72,7 @@ function Sinicize({ setGotopage }: { setGotopage: (page: number) => void }) {
       return
       return
     }
     }
     setSelectedTime(index)
     setSelectedTime(index)
+    console.log(selectedTime, 'selectedTime')
     setIsShowLine(
     setIsShowLine(
       myData.sinicizeData[index].imgItems.map((item, index) => ({
       myData.sinicizeData[index].imgItems.map((item, index) => ({
         index,
         index,
@@ -113,66 +112,14 @@ function Sinicize({ setGotopage }: { setGotopage: (page: number) => void }) {
   //   ori_touchStartX.current = e.touches[0].clientY
   //   ori_touchStartX.current = e.touches[0].clientY
   // }
   // }
 
 
-  const InfoCard = ({ time, location, text, from, inset, index }: InfoCardProps) => {
-    return (
-      <div className={styles.InfoCard} style={{ inset: inset }}>
-        <div
-          className='cardClose'
-          onClick={() =>
-            setIsShowLine(
-              isShowLine.map(item => ({
-                ...item,
-                isShow: item.index === index + 1 ? true : item.isShow
-              }))
-            )
-          }
-        >
-          ×
-        </div>
-        <div className='dotLeft'>
-          <img src={require('@/assets/img/A6_arrow.png')} alt='' />
-        </div>
-        <div className='main'>
-          <div className='time'>{time}</div>
-          <div className='location'>{location}</div>
-          <div className='Cardtext'>{text}</div>
-          <div className='from'>{from}</div>
-        </div>
-      </div>
-    )
-  }
-
-  const InfoPoint = ({ time, title, width = 150, direction = 'right', dx = 50, dy = 50 }: { time: string; title: string; width?: number; direction?: string; dx?: number; dy?: number }) => {
-    return (<div
-      className={`point point${direction}`}
-      style={{ transform: `translate(${dx}%, ${dy}%)` }}
-      onClick={() =>
-        setIsShowLine(
-          isShowLine.map(item => ({
-            ...item,
-            isShow: item.index === 0 ? false : item.isShow
-          }))
-        )
-      }
-    >
-      <img src={require('@/assets/img/A6_pointBg.png')} alt="" />
-      <div className="pPoint" style={{ width: width + 'px' }}>
-
-        <div className='pointTime songFont'>{time}</div>
-        <div className='pointTitle songFont'>{title}</div>
-      </div>
-
-    </div>)
-  }
-
   return (
   return (
     <>
     <>
       <div
       <div
         id='A7Sinicize'
         id='A7Sinicize'
         className={styles.Sinicize}
         className={styles.Sinicize}
         onWheel={handleWheel}
         onWheel={handleWheel}
-        // onTouchMove={handleOriTouchMove}
-        // onTouchStart={handleTouchStart}
+      // onTouchMove={handleOriTouchMove}
+      // onTouchStart={handleTouchStart}
       >
       >
         <div className='SinicizeScroll' ref={originRef}>
         <div className='SinicizeScroll' ref={originRef}>
           <div ref={sinicize1Ref} className={styles.Sinicize1}>
           <div ref={sinicize1Ref} className={styles.Sinicize1}>
@@ -246,106 +193,112 @@ function Sinicize({ setGotopage }: { setGotopage: (page: number) => void }) {
 
 
           <div className={styles.Sinicize2}>
           <div className={styles.Sinicize2}>
             <div className='scroll'>
             <div className='scroll'>
-              {myData.sinicizeData.map((sItem, index) => (
-                <div className='yearItem' key={index}>
-                  <div
-                    className='year'
-                    style={{ backgroundImage: `url(${sItem.bgPath})` }}
-                    onClick={() => handleYearItemClick(index)}
-                  >
-                    <div className='yearContainner'>
-                      <div className='txt songFont'>{sItem.time}</div>
-                      {/* <div className='front'>{sItem.desc}</div> */}
-                    </div>
+              {/* 北魏早中期 */}
+              <div className='yearItem' key={0}>
+                <div
+                  className='year'
+                  style={{ backgroundImage: `url(${myData.sinicizeData[0].bgPath})` }}
+                  onClick={() => handleYearItemClick(0)}
+                >
+                  <div className='yearContainner'>
+                    <div className='txt songFont'>{myData.sinicizeData[0].time}</div>
+                    {/* <div className='front'>{sItem.desc}</div> */}
                   </div>
                   </div>
+                </div>
+                <Bwzzq
+                  sItem={myData.sinicizeData[0]}
+                  index={0}
+                  selectedTime={selectedTime}
+                  isShowLine={isShowLine}
+                  setIsShowLine={setIsShowLine}
+                />
+              </div>
 
 
-                  <div
-                    id='sinicizeDetail'
-                    className={`${selectedTime === index ? 'detailShow' : 'detailHide'}`}
-                  >
-                    {/* {selectedTime === index && ( */}
-                    <>
-                      <div className='left'>
-                        <div className='lTop'>{sItem.desc}</div>
-                        <div className='lContent'>
-                          <div className='lInfo'>
-                            <div className='item' key={index}>
-                              <div className='lTitle songFont'>{sItem.items[0].title}</div>
-                              <div className='lText'>{sItem.items[0].txt}</div>
-                            </div>
-                          </div>
-                          <div className='lImgBox'>
-                            {/* <img
-                            src={isShowLine ? sItem.imgItems[0].srcLine : sItem.imgItems[0].src}
-                            alt=''
-                          /> */}
-                            <div
-                              style={{
-                                backgroundImage: `url(${
-                                  isShowLine[0]?.isShow
-                                    ? sItem.imgItems[0].srcLine
-                                    : sItem.imgItems[0].src
-                                })`
-                              }}
-                              className={`pic ${isShowLine[0]?.isShow ? 'picLine' : ''}`}
-                            />
-                            {!isShowLine[0]?.isShow ? (
-                              <InfoCard
-                                time={sItem.imgItems[0].time}
-                                location={sItem.imgItems[0].title}
-                                text={sItem.imgItems[0].txt}
-                                from={sItem.imgItems[0].title}
-                                index={0}
-                              />
-                            ) : (
-                              InfoPoint({
-                                time: sItem.imgItems[0].time,
-                                title: sItem.imgItems[0].title
-                              })
-                            )}
-                          </div>
+              {/* 北魏早晚期 */}
+              <div className='yearItem' key={1}>
+                <div
+                  className='year'
+                  style={{ backgroundImage: `url(${myData.sinicizeData[1].bgPath})` }}
+                  onClick={() => handleYearItemClick(1)}
+                >
+                  <div className='yearContainner'>
+                    <div className='txt songFont'>{myData.sinicizeData[1].time}</div>
+                    {/* <div className='front'>{sItem.desc}</div> */}
+                  </div>
+                </div>
+                <Bwzwq
+                  sItem={myData.sinicizeData[1]}
+                  index={1}
+                  selectedTime={selectedTime}
+                  isShowLine={isShowLine}
+                  setIsShowLine={setIsShowLine}
+                />
+              </div>
 
 
-                        </div>
-                      </div>
-                      <div className='right'>
-                        <div className='RItems'>
-                          {sItem.imgItems
-                            .filter((i, index) => index !== 0)
-                            .map((i, index2) => (
-                              <div className='item' key={index2}>
-                                {/* <div className='pic'>
-                              <img src={i.src} alt='' />
-                            </div> */}
-                                <div
-                                  style={{
-                                    backgroundImage: `url(${
-                                      isShowLine[index2 + 1]?.isShow ? i.srcLine : i.src
-                                    })`
-                                  }}
-                                  className={`pic ${
-                                    isShowLine[index2 + 1]?.isShow ? 'picLine' : ''
-                                  }`}
-                                />
-                                {!isShowLine[index2 + 1]?.isShow ? (
-                                  <InfoCard
-                                    time={i.time}
-                                    location={i.title}
-                                    text={i.txt}
-                                    from={i.title}
-                                    index={index2}
-                                  />
-                                ) : (
-                                  < InfoPoint time={i.time} title={i.title} />
-                                )}
-                              </div>
-                            ))}
-                        </div>
-                      </div>
-                    </>
-                    {/* )} */}
+              {/* 北魏晚期 */}
+              <div className='yearItem' key={2}>
+                <div
+                  className='year'
+                  style={{ backgroundImage: `url(${myData.sinicizeData[2].bgPath})` }}
+                  onClick={() => handleYearItemClick(2)}
+                >
+                  <div className='yearContainner'>
+                    <div className='txt songFont'>{myData.sinicizeData[2].time}</div>
+                    {/* <div className='front'>{sItem.desc}</div> */}
                   </div>
                   </div>
                 </div>
                 </div>
-              ))}
+                <Bwwq
+                  sItem={myData.sinicizeData[2]}
+                  index={2}
+                  selectedTime={selectedTime}
+                  isShowLine={isShowLine}
+                  setIsShowLine={setIsShowLine}
+                />
+              </div>
+
+              {/* 北齐 */}
+              <div className='yearItem' key={3}>
+                <div
+                  className='year'
+                  style={{ backgroundImage: `url(${myData.sinicizeData[3].bgPath})` }}
+                  onClick={() => handleYearItemClick(3)}
+                >
+                  <div className='yearContainner'>
+                    <div className='txt songFont'>{myData.sinicizeData[3].time}</div>
+                    {/* <div className='front'>{sItem.desc}</div> */}
+                  </div>
+                </div>
+                <Bq
+                  sItem={myData.sinicizeData[3]}
+                  index={3}
+                  selectedTime={selectedTime}
+                  isShowLine={isShowLine}
+                  setIsShowLine={setIsShowLine}
+                />
+              </div>
+
+              {/* 北周 */}
+              <div className='yearItem' key={4}>
+                <div
+                  className='year'
+                  style={{ backgroundImage: `url(${myData.sinicizeData[4].bgPath})` }}
+                  onClick={() => handleYearItemClick(4)}
+                >
+                  <div className='yearContainner'>
+                    <div className='txt songFont'>{myData.sinicizeData[4].time}</div>
+                    {/* <div className='front'>{sItem.desc}</div> */}
+                  </div>
+                </div>
+                <Bz
+                  sItem={myData.sinicizeData[4]}
+                  index={4}
+                  selectedTime={selectedTime}
+                  isShowLine={isShowLine}
+                  setIsShowLine={setIsShowLine}
+                />
+              </div>
+
+              {/* 结语 */}
               <div className='yearItem'>
               <div className='yearItem'>
                 <div className='year year-zongjie'>
                 <div className='year year-zongjie'>
                   <div className='yearContainner'>
                   <div className='yearContainner'>

+ 14 - 4
src/types/declaration.d.ts

@@ -58,7 +58,17 @@ type MyDataType = {
     bgPath: string
     bgPath: string
     desc: string
     desc: string
     items: { title: string; txt: string; inset: string }[]
     items: { title: string; txt: string; inset: string }[]
-    imgItems: { time: string; title: string; src: string; srcLine: string; txt: string }[]
+    imgItems: {
+      time: string
+      title: string
+      src: string
+      srcLine: string
+      txt: string
+      picfrom: string
+      direction?: string
+      classNameCard?: string
+      classNamePoint?: string
+    }[]
   }[]
   }[]
   zaoxiangDataDetail: {
   zaoxiangDataDetail: {
     type: string
     type: string
@@ -120,8 +130,8 @@ type MyDataType = {
     txt: string
     txt: string
   }[]
   }[]
   policy: {
   policy: {
-      title: string
-      bottomPic: string
+    title: string
+    bottomPic: string
     part1: {
     part1: {
       txt: string
       txt: string
       from: string
       from: string
@@ -138,4 +148,4 @@ type MyDataType = {
       name_ac: string
       name_ac: string
     }[]
     }[]
   }[]
   }[]
-  }
+}