提交 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"],
};
......
import React from 'react';
import {Space,Select,Button} from 'antd';
import Image from 'next/image';
import {Box} from './styled';
import ContentBox from '~/components/contentBox';
import RotationChart from './components/rotationChart'
import Map from './components/map';
// import icon from './_assets/icon.png';
const icon = ''
import React from "react";
import { Space, Select, Button } from "antd";
import Image from "next/image";
import { Box } from "./styled";
import ContentBox from "~/components/contentBox";
import RotationChart from "./components/rotationChart";
import Map from "./components/map";
import icon from "./assets/icon.png";
// const icon = "error";
export default function WaterfallFlowBody() {
const onMoreChange = (value: string) => {
console.log("更多", value);
};
const title = [
{
name:"无人机出租"
}
]
const leftDom = <div className='item'>
<div className='item-title'>
<div className='item-left'>
<div className='item-left-icon'>
<Image src={icon} alt='#'/>
</div>
<div className='item-left-label'>
无人机出租
</div>
name: "无人机出租",
},
];
const leftDom = (
<div className="item">
<div className="item-title">
<div className="item-left">
<div className="item-left-icon">
<Image src={icon} alt="#" />
</div>
<div className="item-left-label">无人机出租</div>
</div>
<div>
<Select
placeholder="更多"
onChange={onMoreChange}
bordered={false}
popupMatchSelectWidth={false}
dropdownMatchSelectWidth={false}
options={[
{ value: "jack", label: "Jack" },
{ value: "lucy", label: "Lucy" },
......@@ -43,195 +41,199 @@ export default function WaterfallFlowBody() {
/>
</div>
</div>
<div className='item-body'>
<div className="item-body">
<Space size={[10, 8]} wrap>
<div className='item-bubble'>
123123
</div>
<div className='item-bubble active'>
123123
</div>
<div className='item-bubble'>
123123
</div>
<div className='item-bubble active'>
123123
</div>
<div className='item-bubble'>
123123
</div>
<div className='item-bubble'>
123123
</div>
<div className='item-bubble'>
123123
</div>
<div className='item-bubble'>
123123
</div>
<div className="item-bubble">123123</div>
<div className="item-bubble active">123123</div>
<div className="item-bubble">123123</div>
<div className="item-bubble active">123123</div>
<div className="item-bubble">123123</div>
<div className="item-bubble">123123</div>
<div className="item-bubble">123123</div>
<div className="item-bubble">123123</div>
</Space>
</div>
</div>
);
const rightDom = <div className='right-box-item right-item'>
<div className="title">
asdasdas
</div>
const rightDom = (
<div className="right-box-item right-item">
<div className="title">asdasdas</div>
<div className="body">
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className="body-item">
<div className="item-label">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='item-image'>
<Image className='item-image' src={icon} alt='#'/>
<div className="item-image">
<Image className="item-image" src={icon} alt="#" />
</div>
</div>
</div>
</div>
);
const rightDom2 = <div className='right-box-item right-item-second'>
<div className="title">
asdasdas
</div>
const rightDom2 = (
<div className="right-box-item right-item-second">
<div className="title">asdasdas</div>
<div className="body">
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
</div>
<div className="label-bottom">123123</div>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
<div className="label-bottom">123123</div>
</div>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
</div>
<div className="label-bottom">123123</div>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
</div>
<div className="label-bottom">123123</div>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
<div className="label-bottom">123123</div>
</div>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
</div>
<div className="label-bottom">123123</div>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
</div>
<div className='body-item'>
<div className='item-label'>
<div className='label-top'>
<div className="body-item">
<div className="item-label">
<div className="label-top">
asdasdasdasjhgdbjasjgdjashgdbjahsdgahjs
</div>
<div className='label-bottom'>
123123
<div className="label-bottom">123123</div>
</div>
<div className="item-right">
<Button className="btn" size="small" type="primary">
申请合作
</Button>
</div>
<div className='item-right'>
<Button className='btn' size='small' type="primary">申请合作</Button>
</div>
</div>
</div>
</div>
);
return (
<Box>
<ContentBox boxIndex={2} leftRenderDom={{columns:[{noFor:true,element:<RotationChart/>},{element:leftDom},{element:leftDom},{element:leftDom},{element:leftDom},{element:leftDom},{element:leftDom}]}} rightRenderDom={{columns:[{element:<Map/>},{element:rightDom},{element:rightDom2}]}}/>
<ContentBox
boxIndex={2}
leftRenderDom={{
columns: [
{ noFor: true, element: <RotationChart /> },
{ element: leftDom },
{ element: leftDom },
{ element: leftDom },
{ element: leftDom },
{ element: leftDom },
{ element: leftDom },
],
}}
rightRenderDom={{
columns: [
{ element: <Map /> },
{ element: rightDom },
{ element: rightDom2 },
],
}}
/>
</Box>
)
);
}
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论