提交 e24a6d20 作者: 18928357778

Merge branch 'master' into caoyun

const config = {
const dev = {
baseUrl: ''
}
const prod = {
baseUrl: 'http://120.77.247.178'
}
export default config;
\ No newline at end of file
export default process.env.NODE_ENV === 'development' ? dev : prod;
\ No newline at end of file
......@@ -4,6 +4,28 @@ export interface FilterOptionResp {
id: number,
name: string
}
export default {
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 const mallApi = {
category: (): Promise<Response<Array<FilterOptionResp>>> => {
......
import { Space, Button, Select } from 'antd';
import styles from '../../index.module.scss';
import { FilterOptionResp } from "../../api";
import api, { FilterOptionResp } from "../../api";
import { useEffect, useState } from "react";
type Props = {
data: Array<FilterOptionResp>;
onChange: (id: FilterOptionResp) => void;
};
export default function BrandItem(props: Props) {
const [data, setData] = useState<FilterOptionResp[]>([])
useEffect(() => {
api.brand().then(res => {
setData(res?.result || []);
});
}, [])
const onClick = (item: FilterOptionResp) => {
props.onChange({
id: item.id,
......@@ -21,7 +29,7 @@ export default function BrandItem(props: Props) {
<div className={styles.filterItemMain}>
<Space size={40}>
{
props?.data?.map(item => {
data.map(item => {
return <Button type="link" key={item.id} onClick={(e) => onClick(item)}>{item.name}</Button>;
})
}
......
import { Space, Button, Select } from 'antd';
import styles from '../../index.module.scss';
import { FilterOptionResp } from "../../api";
import api, { FilterOptionResp } from "../../api";
import { useState, useEffect } from 'react';
type Props = {
data: Array<FilterOptionResp>;
onChange: (id: FilterOptionResp) => void;
};
export default function CategoryItem(props: Props) {
const [data, setData] = useState<FilterOptionResp[]>([]);
useEffect(() => {
api.category().then((res) => {
setData(res?.result || []);
});
}, []);
const onClick = (item: FilterOptionResp) => {
props.onChange({
id: item.id,
......@@ -21,7 +29,7 @@ export default function CategoryItem(props: Props) {
<div className={styles.filterItemMain}>
<Space size={40}>
{
props?.data?.map(item => {
data.map(item => {
return <Button type="link" key={item.id} onClick={(e) => onClick(item)}>{item.name}</Button>;
})
}
......
import { Space, Button, Select } from 'antd';
import styles from '../../index.module.scss';
import { FilterOptionResp } from "../../api";
import api, { FilterOptionResp } from "../../api";
import { useEffect, useState } from 'react';
type Props = {
data: Array<FilterOptionResp>;
onChange: (id: FilterOptionResp) => void;
};
export default function ModelItem(props: Props) {
const [data, setData] = useState<FilterOptionResp[]>([]);
useEffect(() => {
api.model().then((res) => {
setData(res?.result || []);
});
}, []);
const onClick = (item: FilterOptionResp) => {
props.onChange({
id: item.id,
......@@ -21,7 +29,7 @@ export default function ModelItem(props: Props) {
<div className={styles.filterItemMain}>
<Space size={40}>
{
props?.data?.map(item => {
data?.map(item => {
return <Button type="link" key={item.id} onClick={(e) => onClick(item)}>{item.name}</Button>;
})
}
......
import { Space, Button, Select } from 'antd';
import styles from '../../index.module.scss';
import { FilterOptionResp } from "../../api";
import api, { FilterOptionResp } from "../../api";
import { useState, useEffect } from 'react';
type Props = {
data: Array<FilterOptionResp>;
onChange: (id: FilterOptionResp) => void;
};
export default function PartItem(props: Props) {
const [data, setData] = useState<FilterOptionResp[]>([]);
useEffect(() => {
api.part().then((res) => {
setData(res?.result || []);
});
}, []);
const onClick = (item: FilterOptionResp) => {
props.onChange({
id: item.id,
......@@ -20,7 +28,7 @@ export default function PartItem(props: Props) {
<div className={styles.filterItemTitle}>部件:</div>
<div className={styles.filterItemMain}>
<Space size={40}>
{props?.data?.map((item) => {
{data?.map((item) => {
return (
<Button type="link" key={item.id} onClick={(e) => onClick(item)}>
{item.name}
......
import { Space, Button, Select } from 'antd';
import styles from '../../index.module.scss';
import { FilterOptionResp } from "../../api";
import api, { FilterOptionResp } from "../../api";
import { useState, useEffect } from 'react';
type Props = {
data: Array<FilterOptionResp>;
onChange: (id: FilterOptionResp) => void;
};
export default function QualityItem(props: Props) {
const [data, setData] = useState<FilterOptionResp[]>([]);
useEffect(() => {
api.quality().then((res) => {
setData(res?.result || []);
});
}, []);
const onClick = (item: FilterOptionResp) => {
props.onChange({
id: item.id,
......@@ -20,7 +28,7 @@ export default function QualityItem(props: Props) {
<div className={styles.filterItemTitle}>成色:</div>
<div className={styles.filterItemMain}>
<Space size={40}>
{props?.data?.map((item) => {
{data?.map((item) => {
return (
<Button type="link" key={item.id} onClick={(e) => onClick(item)}>
{item.name}
......
import { Space, Select } from 'antd';
import { useEffect, useState } from 'react';
import styles from '../../index.module.scss';
import api from '../../api';
export default function RegionItem(){
const [productList, setProductList] = useState(Array<{}>);
......
......@@ -13,7 +13,7 @@ export default function ResultItem({data, onDel}: Props) {
<div className={styles.filterItemMain}>
<Space size={10}>
{data &&
Object.keys(data).map((key, i) => {
Object.keys(data).map((key) => {
//@ts-ignore
let item = data[key];
return (
......@@ -22,7 +22,7 @@ export default function ResultItem({data, onDel}: Props) {
onClose={(e: React.MouseEvent<HTMLElement, MouseEvent>) => {
onDel(key);
}}
key={i}
key={key}
>
{item?.name}
</Tag>
......
......@@ -16,14 +16,8 @@ export type FilterResult = {
type itemType = "类目" | "地域" | "品牌" | "部件" | "型号" | "成色";
type Props = {
types: [itemType, itemType, itemType, itemType, itemType, itemType]; //需要包含的筛选条件项
types: itemType[]; //需要包含的筛选条件项
showResultItem: Boolean; //显示结果栏
categoryData?: Array<FilterOptionResp>;
regionData?: Array<FilterOptionResp>;
brandData?: Array<FilterOptionResp>;
modelData?: Array<FilterOptionResp>;
partData?: Array<FilterOptionResp>;
qualityData?: Array<FilterOptionResp>;
onChange: (filterResult: FilterResult) => void; //筛选条件更改事件
};
export default function Filter(props: Props) {
......@@ -59,31 +53,26 @@ export default function Filter(props: Props) {
<div className={styles.filterWrap}>
{props.types.includes("品牌") && (
<BrandItem
data={props.brandData || []}
onChange={(item: FilterOptionResp) => onChange(item, "brand")}
></BrandItem>
)}
{props.types.includes("类目") && (
<CategoryItem
data={props.categoryData || []}
onChange={(item: FilterOptionResp) => onChange(item, "category")}
></CategoryItem>
)}
{props.types.includes("部件") && (
<PartItem
data={props.partData || []}
onChange={(item: FilterOptionResp) => onChange(item, "part")}
></PartItem>
)}
{props.types.includes("型号") && (
<ModelItem
data={props.modelData || []}
onChange={(item: FilterOptionResp) => onChange(item, "model")}
></ModelItem>
)}
{props.types.includes("成色") && (
<QualityItem
data={props.qualityData || []}
onChange={(item: FilterOptionResp) => onChange(item, "quality")}
></QualityItem>
)}
......
......@@ -11,6 +11,14 @@ const nextConfig = {
},
];
},
async rewrites() {
return [
{
source: "/pms/:path*",
destination: "http://120.77.247.178/pms/:path*",
},
];
},
pageExtensions: ["page.tsx", "page.ts", "page.jsx", "page.js"],
};
......
......@@ -9,32 +9,13 @@ import { FilterOptionResp, mallApi } from "~/components/filter/api";
// 此函数在构建时被调用
export async function getServerSideProps() {
//获取筛选数据,进行静态渲染
const brand = Filter.mallApi.brand();
const category = Filter.mallApi.category();
const model = Filter.mallApi.model();
const part = Filter.mallApi.part();
const quality = Filter.mallApi.quality();
const res = await Promise.all([brand, category, part, model, quality]);
return {
props: {
brandData: res[0].result || [],
categoryData: res[1].result || [],
partData: res[2].result || [],
modelData: res[3].result || [],
qualityData: res[4].result || [],
},
};
}
type Props = {
brandData: Array<FilterOptionResp>;
categoryData: Array<FilterOptionResp>;
partData: Array<FilterOptionResp>;
modelData: Array<FilterOptionResp>;
qualityData: Array<FilterOptionResp>;
};
export default function Mall(props: Props) {
......@@ -49,11 +30,6 @@ export default function Mall(props: Props) {
<Filter
types={["类目", "地域", "品牌", "部件", "型号", "成色"]}
showResultItem
brandData={props.brandData}
categoryData={props.categoryData}
partData={props.partData}
modelData={props.modelData}
qualityData={props.qualityData}
onChange={onFilterChange}
></Filter>
<div className={styles.productList}>
......
pages/projectInfo/assets/banner.png

91.2 KB | W: | H:

pages/projectInfo/assets/banner.png

83.2 KB | W: | H:

pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
  • 2-up
  • Swipe
  • Onion skin
.bannerWrap{
height: 180px;
height: 160px;
position: relative;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论