From 68d5718b2635e67cdd328fb6f4f164b3e5e6fd52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com> Date: Mon, 13 Mar 2023 17:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=9B=BE=E7=89=87=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/resource/images/index.module.less | 35 ++++-- src/pages/resource/images/index.tsx | 131 +++++++++++++------- 2 files changed, 107 insertions(+), 59 deletions(-) diff --git a/src/pages/resource/images/index.module.less b/src/pages/resource/images/index.module.less index 30c678d..817d212 100644 --- a/src/pages/resource/images/index.module.less +++ b/src/pages/resource/images/index.module.less @@ -42,9 +42,9 @@ .checked { width: 20px; height: 20px; - background: #fff2f0; + background: #ff4d4f; border-radius: 3px; - border: 2px solid #fff2f0; + border: 2px solid #ff4d4f; position: absolute; left: 10px; top: 10px; @@ -52,18 +52,27 @@ display: flex; align-items: center; justify-content: center; - color: #ff4d4f; + color: #ffffff; cursor: pointer; } -.imageItem { - position: relative; - width: 150px; - height: 150px; - overflow: hidden; - display: flex; - align-items: center; - justify-content: center; - background: #f4fafe; - border-radius: 6px; +.images-box { + display: grid; + gap: 24px; + grid-template-columns: repeat(8, minmax(0, 1fr)); + .imageItem { + width: 100%; + height: 150px; + background-repeat: no-repeat; + background-size: contain; + background-position: center center; + background-color: #f6f6f6; + border-radius: 6px; + overflow: hidden; + position: relative; + cursor: pointer; + &:hover { + opacity: 0.8; + } + } } diff --git a/src/pages/resource/images/index.tsx b/src/pages/resource/images/index.tsx index 0095ded..205d28f 100644 --- a/src/pages/resource/images/index.tsx +++ b/src/pages/resource/images/index.tsx @@ -38,6 +38,8 @@ export const ResourceImagesPage = () => { const [total, setTotal] = useState(0); const [category_ids, setCategoryIds] = useState([]); const [selectKey, setSelectKey] = useState([]); + const [visibleArr, setVisibleArr] = useState([]); + const [hoverArr, setHoverArr] = useState([]); // 删除图片 const removeResource = () => { @@ -71,6 +73,13 @@ export const ResourceImagesPage = () => { .then((res: any) => { setTotal(res.data.result.total); setImageList(res.data.result.data); + let data = res.data.result.data; + let arr = []; + for (let i = 0; i < data.length; i++) { + arr.push(false); + } + setVisibleArr(arr); + setHoverArr(arr); }) .catch((err: any) => { console.log("错误,", err); @@ -88,7 +97,9 @@ export const ResourceImagesPage = () => { getImageList(); }, [category_ids, refresh, page, size]); - const onChange = (id: number) => { + const onChange = (e: any, id: number) => { + e.preventDefault(); + e.stopPropagation(); const arr = [...selectKey]; if (arr.indexOf(id) === -1) { arr.push(id); @@ -110,6 +121,21 @@ export const ResourceImagesPage = () => { setSelectKey([]); }; + const showImage = (index: number, value: boolean) => { + const arr = [...visibleArr]; + arr[index] = value; + setVisibleArr(arr); + }; + + const showHover = (index: number, value: boolean) => { + const arr = [...hoverArr]; + for (let i = 0; i < arr.length; i++) { + arr[i] = false; + } + arr[index] = value; + setHoverArr(arr); + }; + return ( <>
@@ -135,7 +161,7 @@ export const ResourceImagesPage = () => {
{selectKey.length > 0 && ( )}
- - {imageList.length === 0 && ( + {imageList.length === 0 && ( +
- )} - - {imageList.map((item: any) => ( - -
- onChange(item.id)} - > - {selectKey.indexOf(item.id) !== -1 && } - - -
- - ))} - - {imageList.length > 0 && ( - + )} +
+ {imageList.map((item: any, index: number) => ( +
showImage(index, true)} + onMouseOver={() => showHover(index, true)} + onMouseOut={() => showHover(index, false)} > - { - setPage(currentPage); - setSize(currentSize); + {hoverArr[index] && ( + onChange(e, item.id)} + > + )} + {selectKey.indexOf(item.id) !== -1 && ( + onChange(e, item.id)} + > + + + )} + { + showImage(index, value); + }, }} - defaultCurrent={page} - total={total} - pageSize={size} /> - - )} - +
+ ))} +
+ {imageList.length > 0 && ( + + { + setPage(currentPage); + setSize(currentSize); + }} + defaultCurrent={page} + total={total} + pageSize={size} + /> + + )}