提交 da4d1f6d 作者: 翁进城

项目资讯省市、日期筛选与项目需求加载时优化

上级 3524e2b9
import { Empty, Pagination, Spin } from "antd";
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import api, { Item } from "./api"; import api, { Item } from "./api";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
export default function Requirements() { type Props = {
params?: {
cityCode: number; //市编码
date: string; //时间 2023-05-19
districtCode: number; //区编码
provinceCode: number; //省编码
};
};
export default function Requirements(props: Props) {
const [loading, setLoading] = useState(false);
const [list, setList] = useState<Array<Item>>([]); const [list, setList] = useState<Array<Item>>([]);
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
...@@ -15,12 +26,13 @@ export default function Requirements() { ...@@ -15,12 +26,13 @@ export default function Requirements() {
//中断前一次请求 //中断前一次请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams]); }, [pageParams, props.params]);
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
} }
setLoading(true);
api api
.listPublishPage( .listPublishPage(
{ {
...@@ -33,27 +45,51 @@ export default function Requirements() { ...@@ -33,27 +45,51 @@ export default function Requirements() {
.then((res) => { .then((res) => {
setList(res.result?.list || []); setList(res.result?.list || []);
setCount(res.result?.totalCount || 0); setCount(res.result?.totalCount || 0);
setLoading(false);
}); });
}, [abort]); }, [abort]);
const onPageChange = (page: number, pageSize: number) => {
setPageParams({
...pageParams,
pageNo: page,
});
};
return ( return (
<div className={styles.requirements}> <Spin spinning={loading} delay={500}>
{list.map((item) => { <div className={styles.requirements} style={{ height: 557 }}>
return ( {list.map((item) => {
<div return (
className={`${styles.item} ${!item.solved && styles.noResolve}`} <div
key={item.id} className={`${styles.item} ${!item.solved && styles.noResolve}`}
> key={item.id}
<div className={styles.logo}></div> >
<div className={styles.info}> <div className={styles.logo}></div>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div> <div className={styles.info}>
<div className={styles.desc}> <div className={styles.title}>
具体需求:{item.requireDescription} 项目需求:电力巡检需要5名飞手
</div>
<div className={styles.desc}>
具体需求:{item.requireDescription}
</div>
</div> </div>
</div> </div>
</div> );
); })}
})}
</div> {list.length === 0 && <Empty></Empty>}
</div>
<Pagination
current={pageParams.pageNo}
defaultPageSize={pageParams.pageSize}
showSizeChanger={false}
showQuickJumper
total={count}
onChange={onPageChange}
hideOnSinglePage={true}
style={{ marginTop: 20 }}
/>
</Spin>
); );
} }
...@@ -13,70 +13,18 @@ import Requirements from "./components/requirements"; //项目需求 ...@@ -13,70 +13,18 @@ import Requirements from "./components/requirements"; //项目需求
import Bids from "./components/bids"; //招投标项目 import Bids from "./components/bids"; //招投标项目
import Cases from "./components/cases"; //业务案例 import Cases from "./components/cases"; //业务案例
import News from "./components/news"; //行业新闻 import News from "./components/news"; //行业新闻
import commonApi, { RegionResp } from "~/api";
interface Option { export interface Params {
value: string | number; cityCode?: number; //市编码
label: string; date?: string; //时间 2023-05-19
children?: Option[]; districtCode?: number; //区编码
provinceCode?: number; //省编码
} }
const options: Option[] = [ interface RegionOptions extends RegionResp {
{ value: string;
value: "zhejiang", }
label: "Zhejiang",
children: [
{
value: "hangzhou",
label: "Hangzhou",
children: [
{
value: "xihu",
label: "West Lake",
},
],
},
],
},
{
value: "jiangsu",
label: "Jiangsu",
children: [
{
value: "nanjing",
label: "Nanjing",
children: [
{
value: "zhonghuamen",
label: "Zhong Hua Men",
},
],
},
],
},
];
const onChange = (value: string) => {
console.log(value);
};
const onDateChange: DatePickerProps["onChange"] = (date, dateString) => {
console.log(date, dateString);
};
const operations = (
<Space size={8} style={{ marginRight: 25 }}>
{
<Cascader
options={options}
//@ts-ignore
onChange={onChange}
placeholder="Please select"
borderRadiusSM={6}
/>
}
<DatePicker onChange={onDateChange} />
</Space>
);
const items = ["项目需求", "招投标项目", "业务案例", "行业新闻"].map( const items = ["项目需求", "招投标项目", "业务案例", "行业新闻"].map(
(value) => { (value) => {
...@@ -108,6 +56,37 @@ const items = ["项目需求", "招投标项目", "业务案例", "行业新闻" ...@@ -108,6 +56,37 @@ const items = ["项目需求", "招投标项目", "业务案例", "行业新闻"
); );
export default function ProjectInfo() { export default function ProjectInfo() {
const [region, setRegion] = useState<Array<RegionOptions>>([]);
const [params, setParams] = useState<Params | null>({});
useEffect(() => {
commonApi.region().then((res) => {
let temp = res.result || [];
let temp1: Array<RegionOptions> = [];
if (res.result) {
temp1 = temp.map((item) => {
let t = {
...item,
value: item.id + "," + item.level,
};
return t;
});
}
setRegion(temp1);
});
}, []);
const onRegionChange = (value: string) => {
console.log(value);
};
const onDateChange: DatePickerProps["onChange"] = (date, dateString) => {
console.log(date, dateString);
setParams({
...params,
date: dateString,
});
};
return ( return (
<Layout layoutStyle={{ backgroundColor: "#fff" }}> <Layout layoutStyle={{ backgroundColor: "#fff" }}>
<div style={{ backgroundColor: "#fff", minHeight: 820 }}> <div style={{ backgroundColor: "#fff", minHeight: 820 }}>
...@@ -118,7 +97,26 @@ export default function ProjectInfo() { ...@@ -118,7 +97,26 @@ export default function ProjectInfo() {
<Tabs <Tabs
className={styles.tabs} className={styles.tabs}
tabBarExtraContent={operations} tabBarExtraContent={
<Space size={8} style={{ marginRight: 25 }}>
{
<Cascader
options={region}
//@ts-ignore
onChange={onRegionChange}
placeholder="选择省市"
borderRadiusSM={6}
fieldNames={{
label: "name",
value: "value",
children: "childInfo",
}}
changeOnSelect
/>
}
<DatePicker onChange={onDateChange} />
</Space>
}
items={items} items={items}
tabBarGutter={41} tabBarGutter={41}
/> />
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论