|
@@ -1,10 +1,11 @@
|
|
-import React, { useEffect, useState } from "react";
|
|
|
|
|
|
+import React, { useEffect, useMemo, useState } from "react";
|
|
import styles from "./index.module.scss";
|
|
import styles from "./index.module.scss";
|
|
import { baseUrl } from "@/index";
|
|
import { baseUrl } from "@/index";
|
|
import history from "@/utils/history";
|
|
import history from "@/utils/history";
|
|
import { useSelector } from "react-redux";
|
|
import { useSelector } from "react-redux";
|
|
import { RootState } from "@/store";
|
|
import { RootState } from "@/store";
|
|
import classNames from "classnames";
|
|
import classNames from "classnames";
|
|
|
|
+import { InfoRowType } from "@/types";
|
|
function D1BuildM() {
|
|
function D1BuildM() {
|
|
// 看下是 新页面直接进来 还是通过路由进来
|
|
// 看下是 新页面直接进来 还是通过路由进来
|
|
const { isRouterPushBuild } = useSelector(
|
|
const { isRouterPushBuild } = useSelector(
|
|
@@ -16,9 +17,30 @@ function D1BuildM() {
|
|
(state: RootState) => state.A0Layout.dataAll.village
|
|
(state: RootState) => state.A0Layout.dataAll.village
|
|
);
|
|
);
|
|
|
|
|
|
- // 当前选中的id
|
|
|
|
|
|
+ // 获取全部列表数据
|
|
|
|
+ const dataAll = useSelector(
|
|
|
|
+ (state: RootState) => state.A0Layout.dataAll.build
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ // 当前选中的 村落 id ,默认0为全部
|
|
const [idAc, setIdAc] = useState(0);
|
|
const [idAc, setIdAc] = useState(0);
|
|
|
|
|
|
|
|
+ const data = useMemo(() => {
|
|
|
|
+ let arr = [] as InfoRowType[];
|
|
|
|
+ if (idAc === 0) arr = [...dataAll];
|
|
|
|
+ else {
|
|
|
|
+ // 从数据中筛选出 当前 村落 的数据
|
|
|
|
+ arr = dataAll.filter((v) => v.cid === idAc);
|
|
|
|
+ }
|
|
|
|
+ return arr;
|
|
|
|
+ }, [dataAll, idAc]);
|
|
|
|
+
|
|
|
|
+ // 切换村落的时候滚动到顶部
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ const dom = document.querySelector(".D1list") as HTMLDivElement;
|
|
|
|
+ if (dom) dom.scrollTop = 0;
|
|
|
|
+ }, [idAc]);
|
|
|
|
+
|
|
return (
|
|
return (
|
|
<div
|
|
<div
|
|
className={styles.D1BuildM}
|
|
className={styles.D1BuildM}
|
|
@@ -49,6 +71,32 @@ function D1BuildM() {
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ {/* 底部列表 */}
|
|
|
|
+ <div className="D1list">
|
|
|
|
+ {data.map((v) => (
|
|
|
|
+ <div
|
|
|
|
+ className="D1row"
|
|
|
|
+ key={v.id}
|
|
|
|
+ onClick={() => history.push(`/buildInfo?id=${v.id}`)}
|
|
|
|
+ >
|
|
|
|
+ {/* 背景盒子 */}
|
|
|
|
+ <div
|
|
|
|
+ className="D1row1"
|
|
|
|
+ style={{
|
|
|
|
+ backgroundImage: `url(${baseUrl}/D1Build/btn_subject.png)`,
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
|
|
+ <div>{v.name}</div>
|
|
|
|
+ <p>{v.title2}</p>
|
|
|
|
+ </div>
|
|
|
|
+ {/* 左侧图片 */}
|
|
|
|
+ <div className="D1row2">
|
|
|
|
+ <img src={`${baseUrl}/D1Build/pc/${v.id}Ac.png`} alt="" />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ ))}
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
);
|
|
);
|
|
}
|
|
}
|