提交 512cd6e7 作者: 翁进城

filter组件地区选择项开发

上级 eafdb469
...@@ -5,51 +5,15 @@ export interface FilterOptionResp { ...@@ -5,51 +5,15 @@ export interface FilterOptionResp {
name: string name: string
} }
export default { export interface RegionResp {
category: (): Promise<Response<Array<FilterOptionResp>>> => { "childInfo": RegionResp[] | null,
return request('/pms/webProductMall/category'); "id": number,
}, "level": number,
brand: (): Promise<Response<Array<FilterOptionResp>>> => { "name": string,
return request('/pms/webDevice/brand'); "pid": number
},
model: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/model');
},
part: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/parts');
},
quality: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/quality');
},
region: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/getSecondDistrictInfo');
},
}
//商城接口
export const mallApi = {
category: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/category');
},
brand: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/brand');
},
model: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/model');
},
part: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/parts');
},
quality: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/quality');
},
region: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/getSecondDistrictInfo');
},
} }
//设备租赁接口 export default {
export const leasingApi = {
category: (): Promise<Response<Array<FilterOptionResp>>> => { category: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/category'); return request('/pms/webProductMall/category');
}, },
...@@ -65,7 +29,7 @@ export const leasingApi = { ...@@ -65,7 +29,7 @@ export const leasingApi = {
quality: (): Promise<Response<Array<FilterOptionResp>>> => { quality: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/quality'); return request('/pms/webProductMall/quality');
}, },
region: (): Promise<Response<Array<FilterOptionResp>>> => { region: (): Promise<Response<Array<RegionResp>>> => {
return request('/pms/webDevice/getSecondDistrictInfo'); return request('/pms/webDevice/getSecondDistrictInfo');
}, },
} }
\ No newline at end of file
import { Space, Select } from 'antd'; import { Space, Select } from "antd";
import { useEffect, useState } from 'react'; import { useEffect, useState } from "react";
import styles from '../../index.module.scss'; import styles from "../../index.module.scss";
import api from '../../api'; import api, { RegionResp } from "../../api";
export default function RegionItem(){ type Props = {
const [productList, setProductList] = useState(Array<{}>); onChange: (item: RegionResp) => void;
};
export default function RegionItem(props: Props) {
const [provinceList, setProvinceList] = useState<RegionResp[]>([]);
const [cityList, setCityList] = useState<RegionResp[]>([]);
useEffect(() => { useEffect(() => {
setProductList([{}, {}, {}, {}, {}, {}]); api.region().then((res) => {
setProvinceList(res?.result || []);
});
}, []); }, []);
const onProvinceChange = (value: string) => { const onProvinceChange = (value: number, item: any) => {
console.log("省", value); console.log("省", value, item);
setCityList(item.childInfo || []);
}; };
const onCityChange = (value: string) => { const onCityChange = (value: number, item: any) => {
console.log("市", value); console.log("市", value);
props.onChange(item);
}; };
return ( return (
<div className={styles.filterItem}> <div className={styles.filterItem}>
...@@ -27,27 +35,29 @@ export default function RegionItem(){ ...@@ -27,27 +35,29 @@ export default function RegionItem(){
dropdownMatchSelectWidth={false} dropdownMatchSelectWidth={false}
placeholder="选择省" placeholder="选择省"
onChange={onProvinceChange} onChange={onProvinceChange}
options={[ options={provinceList.map((item) => {
{ value: "jack", label: "Jack" }, return {
{ value: "lucy", label: "Lucy" }, ...item,
{ value: "Yiminghe", label: "yiminghe" }, value: item.id,
{ value: "disabled", label: "Disabled", disabled: true }, label: item.name,
]} };
})}
/> />
<Select <Select
bordered={false} bordered={false}
dropdownMatchSelectWidth={false} dropdownMatchSelectWidth={false}
placeholder="选择市" placeholder="选择市"
onChange={onCityChange} onChange={onCityChange}
options={[ options={cityList.map((item) => {
{ value: "jack", label: "Jack" }, return {
{ value: "lucy", label: "Lucy" }, ...item,
{ value: "Yiminghe", label: "yiminghe" }, value: item.id,
{ value: "disabled", label: "Disabled", disabled: true }, label: item.name,
]} };
})}
/> />
</Space> </Space>
</div> </div>
</div> </div>
); );
} }
...@@ -47,7 +47,9 @@ export default function Filter(props: Props) { ...@@ -47,7 +47,9 @@ export default function Filter(props: Props) {
marginBottom: 18, marginBottom: 18,
}} }}
> >
<RegionItem></RegionItem> <RegionItem
onChange={(item: FilterOptionResp) => onChange(item, "region")}
></RegionItem>
</div> </div>
)} )}
<div className={styles.filterWrap}> <div className={styles.filterWrap}>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论