提交 975d3c41 作者: 翁进城

商城页增加空数据展示优化

上级 86a69d99
...@@ -35,7 +35,7 @@ export interface ListPageGoodsInfoResp { ...@@ -35,7 +35,7 @@ export interface ListPageGoodsInfoResp {
export default { export default {
//web-商品信息-分页 //web-商品信息-分页
listPageGoodsInfo: (params: ListPageGoodsInfoParams): Promise<Response<ListPageGoodsInfoResp>> => { listPageGoodsInfo: (params: ListPageGoodsInfoParams, options = {}): Promise<Response<ListPageGoodsInfoResp>> => {
return request('/pms/webProductMall/listPageGoodsInfo', 'post', params) return request('/pms/webProductMall/listPageGoodsInfo', 'post', params, options)
} }
} }
\ No newline at end of file
...@@ -24,11 +24,15 @@ ...@@ -24,11 +24,15 @@
} }
} }
.listContent{
width: 100%;
}
.listWrap { .listWrap {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 12px; gap: 12px;
height: fit-content; height: 856px;
.item { .item {
cursor: pointer; cursor: pointer;
......
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Button, Pagination, Select, Space, Tag } from "antd"; import { Button, Empty, Pagination, Select, Space, Tag } from "antd";
import Layout from "~/components/layout"; import Layout from "~/components/layout";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
...@@ -25,10 +25,18 @@ export default function Mall(props: Props) { ...@@ -25,10 +25,18 @@ export default function Mall(props: Props) {
pageSize: 16, pageSize: 16,
}); });
const [count, setCount] = useState(0); const [count, setCount] = useState(0);
const [abort, setAbort] = useState<AbortController | null>(null);
useEffect(() => {
//中断前一次请求
abort?.abort();
setAbort(new AbortController());
}, [filterResult, pageParams]);
useEffect(() => { useEffect(() => {
api api
.listPageGoodsInfo({ .listPageGoodsInfo(
{
brandId: filterResult.brand?.id, brandId: filterResult.brand?.id,
districtId: filterResult.region?.id, districtId: filterResult.region?.id,
modelId: filterResult.model?.id, modelId: filterResult.model?.id,
...@@ -36,12 +44,16 @@ export default function Mall(props: Props) { ...@@ -36,12 +44,16 @@ export default function Mall(props: Props) {
productCategoryId: filterResult.category?.id, productCategoryId: filterResult.category?.id,
qualityId: filterResult.quality?.id, qualityId: filterResult.quality?.id,
...pageParams, ...pageParams,
}) },
{
signal: abort?.signal,
}
)
.then((res) => { .then((res) => {
setProductList(res.result?.list || []); setProductList(res.result?.list || []);
setCount(res.result?.totalCount); setCount(res.result?.totalCount);
}); });
}, [filterResult, pageParams]); }, [abort]);
const onFilterChange = (filterResult: FilterResult) => { const onFilterChange = (filterResult: FilterResult) => {
console.log("filterResult", filterResult); console.log("filterResult", filterResult);
...@@ -52,8 +64,8 @@ export default function Mall(props: Props) { ...@@ -52,8 +64,8 @@ export default function Mall(props: Props) {
setPageParams({ setPageParams({
...pageParams, ...pageParams,
pageNo: page, pageNo: page,
}) });
} };
return ( return (
<Layout> <Layout>
<div className="page" style={{ paddingTop: "18px" }}> <div className="page" style={{ paddingTop: "18px" }}>
...@@ -65,6 +77,7 @@ export default function Mall(props: Props) { ...@@ -65,6 +77,7 @@ export default function Mall(props: Props) {
<div className={styles.productList}> <div className={styles.productList}>
<div className={styles.title}>四旋翼无人机</div> <div className={styles.title}>四旋翼无人机</div>
<div className={styles.main}> <div className={styles.main}>
<div className={styles.listContent}>
<ul className={styles.listWrap}> <ul className={styles.listWrap}>
{productList.map((item, i) => { {productList.map((item, i) => {
return ( return (
...@@ -83,18 +96,28 @@ export default function Mall(props: Props) { ...@@ -83,18 +96,28 @@ export default function Mall(props: Props) {
></Image> ></Image>
</div> </div>
<div className={styles.title}>{item.goodsName}</div> <div className={styles.title}>{item.goodsName}</div>
<div className={styles.sellCount}>半年售{(Math.floor(Math.random() * 901) + 100).toFixed(0)}</div> <div className={styles.sellCount}>
半年售
{(Math.floor(Math.random() * 901) + 100).toFixed(0)}
</div>
</li> </li>
); );
})} })}
{productList.length === 0 && (
<Empty style={{ paddingTop: 20, width: '100%', textAlign: "center" }}></Empty>
)}
</ul>
<Pagination <Pagination
current={pageParams.pageNo} current={pageParams.pageNo}
showSizeChanger={false} showSizeChanger={false}
showQuickJumper showQuickJumper
total={count} total={count}
onChange={onPageChange} onChange={onPageChange}
hideOnSinglePage={true}
style={{marginTop: 20}}
/> />
</ul> </div>
<div className={styles.adList}> <div className={styles.adList}>
<div className={styles.ad}></div> <div className={styles.ad}></div>
<div className={styles.ad}></div> <div className={styles.ad}></div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论