提交 918b9bdf 作者: 18928357778

改-首页-左侧模块图片

改-跳转之后参数请求为number
上级 58b10ac3
...@@ -61,8 +61,12 @@ type Props = { ...@@ -61,8 +61,12 @@ type Props = {
export default function Filter(props: Props) { export default function Filter(props: Props) {
const [result, setResult] = useState<FilterResult>({}); const [result, setResult] = useState<FilterResult>({});
const onChange = (item: FilterOptionResp, type: string) => { const onChange = (item: FilterOptionResp, type: string) => {
console.log(item, type);
let data: { [key: string]: FilterOptionResp } = {}; let data: { [key: string]: FilterOptionResp } = {};
data[type] = item; data[type] = item;
console.log(data);
setResult({ ...result, ...data }); setResult({ ...result, ...data });
}; };
......
import request, { Response } from '~/api/request'; import request, { Response } from "~/api/request";
export interface AllType { export interface AllType {
type?: string; type?: string;
id?: number, id?: number;
name?: string, name?: string;
appName?: string, appName?: string;
createTime?: string, createTime?: string;
industryIcon?: string, industryIcon?: string;
shortName?: null, shortName?: null;
industryType?: null, industryType?: null;
propagate1?: string, propagate1?: string;
propagate2?: string, propagate2?: string;
image?: string, image?: string;
video?: string, video?: string;
newsTitle?: string, newsTitle?: string;
newsAuthor?: string, newsAuthor?: string;
userAccountId?: number, userAccountId?: number;
surfaceImg?:string, surfaceImg?: string;
newsContents?: string, newsContents?: string;
updateTime?: string | null updateTime?: string | null;
tenderNewsId?: number, tenderNewsId?: number;
tenderInfoNo?: string, tenderInfoNo?: string;
tenderContent?: string, tenderContent?: string;
tenderPrice?: number, tenderPrice?: number;
apply?: number, apply?: number;
skillsName?: string skillsName?: string;
} }
export interface FilterOptionResp { export interface FilterOptionResp {
type: string; type: string;
id: number, id: number;
name: string name: string;
} }
export interface RegionResp { export interface RegionResp {
childInfo: RegionResp[] | null, childInfo: RegionResp[] | null;
id: number, id: number;
level: number, level: number;
name: string, name: string;
pid: number pid: number;
} }
export const equipmentLeasingApi = { export const equipmentLeasingApi = {
deviceCategory: (): Promise<Response<Array<FilterOptionResp>>> => { deviceCategory: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/category'); return request("/pms/webProductMall/category");
}, },
deviceBrand: (): Promise<Response<Array<FilterOptionResp>>> => { deviceBrand: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/deviceBrand'); return request("/pms/webDevice/deviceBrand");
}, },
deviceModel: (): Promise<Response<Array<FilterOptionResp>>> => { deviceModel: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webDevice/deviceModel'); return request("/pms/webDevice/deviceModel");
}, },
} };
export interface AppType { export interface AppType {
id: number, id: number;
appName: string, appName: string;
createTime: string, createTime: string;
type:string type: string;
} }
export interface IndustryType { export interface IndustryType {
id: number, id: number;
industryIcon: string, industryIcon: string;
name: string, name: string;
shortName: null, shortName: null;
industryType: null, industryType: null;
propagate1: string, propagate1: string;
propagate2: string, propagate2: string;
image: string, image: string;
video: string, video: string;
type:string type: string;
} }
export const jobServicesApi = { export const jobServicesApi = {
listAllAppType: (): Promise<Response<Array<AppType>>> => { listAllAppType: (): Promise<Response<Array<AppType>>> => {
return request('/release/work/listAllAppType'); return request("/release/work/listAllAppType");
}, },
listAllIndustry: (): Promise<Response<Array<IndustryType>>> => { listAllIndustry: (): Promise<Response<Array<IndustryType>>> => {
return request('/release/work/listAllIndustry'); return request("/release/work/listAllIndustry");
}, },
} };
export const mallApi = { export const mallApi = {
listAllCategory: (): Promise<Response<Array<FilterOptionResp>>> => { listAllCategory: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/category'); return request("/pms/webProductMall/category");
}, },
listAllParts: (): Promise<Response<Array<FilterOptionResp>>> => { listAllParts: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/parts'); return request("/pms/webProductMall/parts");
}, },
listAllQuality: (): Promise<Response<Array<FilterOptionResp>>> => { listAllQuality: (): Promise<Response<Array<FilterOptionResp>>> => {
return request('/pms/webProductMall/quality'); return request("/pms/webProductMall/quality");
}, },
} };
export interface SkillsType { export interface SkillsType {
type: string; type: string;
id: 1, id: 1;
skillsName: string skillsName: string;
} }
export const flightSkillsApi = { export const flightSkillsApi = {
IndustryFlightSkills: (): Promise<Response<Array<SkillsType>>> => { IndustryFlightSkills: (): Promise<Response<Array<SkillsType>>> => {
return request('/release/curriculum/getIndustryFlightSkills'); return request("/release/curriculum/getIndustryFlightSkills");
}, },
} };
export interface NewsPageType { export interface NewsPageType {
id: number, id: number;
newsTitle: string, newsTitle: string;
newsAuthor: string, newsAuthor: string;
userAccountId: number, userAccountId: number;
surfaceImg:string, surfaceImg: string;
newsContents: string, newsContents: string;
createTime: string, createTime: string;
updateTime: string | null updateTime: string | null;
} }
export interface NewsTenderType { export interface NewsTenderType {
id: number, id: number;
tenderNewsId: number, tenderNewsId: number;
tenderInfoNo: string, tenderInfoNo: string;
tenderContent: string, tenderContent: string;
tenderPrice: number, tenderPrice: number;
createTime: string, createTime: string;
apply: number apply: number;
} }
export interface ListPageNewsInfoResp { export interface ListPageNewsInfoResp {
pageNo: 1, pageNo: 1;
pageSize: 10, pageSize: 10;
list: Array<NewsPageType>, list: Array<NewsPageType>;
totalCount: 0, totalCount: 0;
totalPage: 0 totalPage: 0;
} }
export interface ListTenderNewsInfoResp { export interface ListTenderNewsInfoResp {
pageNo: 1, pageNo: 1;
pageSize: 10, pageSize: 10;
list: Array<NewsTenderType>, list: Array<NewsTenderType>;
totalCount: 0, totalCount: 0;
totalPage: 0 totalPage: 0;
} }
interface ListPageNewsInfoParams { interface ListPageNewsInfoParams {
pageNo: number, pageNo: number;
pageSize: number, pageSize: number;
cityCode?: number, cityCode?: number;
date?: string, date?: string;
districtCode?: number, districtCode?: number;
provinceCode?: number provinceCode?: number;
} }
interface ListTenderNewsInfoParams { interface ListTenderNewsInfoParams {
pageNo: number, pageNo: number;
pageSize: number, pageSize: number;
cityCode?: number, cityCode?: number;
date?: string, date?: string;
districtCode?: number, districtCode?: number;
provinceCode?: number provinceCode?: number;
} }
export const listNewsApi = { export const listNewsApi = {
listNewsPage: (params:ListPageNewsInfoParams): Promise<Response<ListPageNewsInfoResp>> => { listNewsPage: (
return request('/release/industry-news/listNewsPage',"post",params); params: ListPageNewsInfoParams
): Promise<Response<ListPageNewsInfoResp>> => {
return request("/release/industry-news/listNewsPage", "post", params);
}, },
listNewTenderInfo: (params:ListTenderNewsInfoParams): Promise<Response<ListTenderNewsInfoResp>> => { listNewTenderInfo: (
return request('/release/tender/listNewTenderInfo','post',params); params: ListTenderNewsInfoParams
): Promise<Response<ListTenderNewsInfoResp>> => {
return request("/release/tender/listNewTenderInfo", "post", params);
}, },
} };
\ No newline at end of file
...@@ -6,7 +6,14 @@ import { Box } from "./styled"; ...@@ -6,7 +6,14 @@ import { Box } from "./styled";
import ContentBox from "~/components/contentBox"; import ContentBox from "~/components/contentBox";
import RotationChart from "./components/rotationChart"; import RotationChart from "./components/rotationChart";
import Map from "./components/map"; import Map from "./components/map";
import icon from "./assets/图标.png";
import tubiao from "./assets/tubiao.png";
import fuwu from "./assets/fuwu.png";
import xiaoshou from "./assets/xiaoshou.png";
import baoxian from "./assets/baoxian.png";
import peixun from "./assets/peixun.png";
import gongju from "./assets/gongju.png";
const icon = [tubiao, fuwu, xiaoshou, baoxian, peixun, gongju];
import { import {
FilterOptionResp, FilterOptionResp,
RegionResp, RegionResp,
...@@ -230,7 +237,7 @@ export default function WaterfallFlowBody() { ...@@ -230,7 +237,7 @@ export default function WaterfallFlowBody() {
<div className="item-title"> <div className="item-title">
<div className="item-left"> <div className="item-left">
<div className="item-left-icon"> <div className="item-left-icon">
<Image src={icon} alt="#" /> <Image src={icon[index]} alt="#" />
</div> </div>
<div className="item-left-label">{item.title}</div> <div className="item-left-label">{item.title}</div>
</div> </div>
......
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import {Box} from './styled'; import { Box } from "./styled";
import { Pagination } from "antd"; import { Pagination } from "antd";
import Layout from "~/components/layout"; import Layout from "~/components/layout";
import ContentBox from '~/components/contentBox'; import ContentBox from "~/components/contentBox";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import Filter, { FilterResult , AdapterResult} from "~/components/filter"; import Filter, { FilterResult, AdapterResult } from "~/components/filter";
import api , {Job} from "./api"; import api, { Job } from "./api";
import Image from 'next/image'; import Image from "next/image";
// 此函数在构建时被调用 // 此函数在构建时被调用
export async function getServerSideProps() { export async function getServerSideProps() {
return { return {
...@@ -14,39 +14,56 @@ export async function getServerSideProps() { ...@@ -14,39 +14,56 @@ export async function getServerSideProps() {
}; };
} }
interface ImageListType { interface ImageListType {}
}
export default function JobServices() { export default function JobServices() {
const router = useRouter(); const router = useRouter();
const [list,setList] = useState(["https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/90a52d3e-1ffa-4347-886e-a1c4535cf8b3.jpg","https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/665512fd-12e6-49a9-93c1-f9dcd0e82083.jpg"]) const [list, setList] = useState([
const [productList, setProductList] = useState(Array<{element:JSX.Element}>); "https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/90a52d3e-1ffa-4347-886e-a1c4535cf8b3.jpg",
const [rightDomList, setRightDomList] = useState(Array<{element:JSX.Element}>) "https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/665512fd-12e6-49a9-93c1-f9dcd0e82083.jpg",
const leftDom = (item:Job) => { ]);
return (<div key={item.id} className='item' onClick={() => router.push(`/jobServices/detail/${item.id}`)}> const [productList, setProductList] = useState(
<div className="item-top"> Array<{ element: JSX.Element }>
<div className="value"> );
<div className="value-left"> const [rightDomList, setRightDomList] = useState(
<div className="label">{item.serviceName}</div> Array<{ element: JSX.Element }>
<div className="com">{item.teamName}</div> );
</div> const leftDom = (item: Job) => {
<div className="value-right"><span className="money">{item.price}</span> <span className="unit">/平</span></div> return (
<div
key={item.id}
className="item"
onClick={() => router.push(`/jobServices/detail/${item.id}`)}
>
<div className="item-top">
<div className="value">
<div className="value-left">
<div className="label">{item.serviceName}</div>
<div className="com">{item.teamName}</div>
</div>
<div className="value-right">
<span className="money">{item.price}</span>{" "}
<span className="unit">/平</span>
</div>
</div>
</div> </div>
</div> <div className="item-bottom">
<div className="item-bottom"> <div className="bottom-left">
<div className="bottom-left">{ Math.round( Math.random()*(150-100)+100) }条评价</div> {Math.round(Math.random() * (150 - 100) + 100)}条评价
</div>
<div className="bottom-right">专业飞手团队,精通巡航业务</div> <div className="bottom-right">专业飞手团队,精通巡航业务</div>
</div> </div>
</div>) </div>
} );
};
const rightDom = (item:string) => { const rightDom = (item: string) => {
return (<div className="right-box-item advertisement" key={item}> return (
<Image src={item} alt="error" width={260} height={420}/> <div className="right-box-item advertisement" key={item}>
</div>) <Image src={item} alt="error" width={260} height={420} />
} </div>
);
};
const [filterResult, setFilterResult] = useState<AdapterResult>({}); //筛选结果 const [filterResult, setFilterResult] = useState<AdapterResult>({}); //筛选结果
...@@ -71,75 +88,91 @@ export default function JobServices() { ...@@ -71,75 +88,91 @@ export default function JobServices() {
setAbort(new AbortController()); setAbort(new AbortController());
}, [filterResult, pageParams]); }, [filterResult, pageParams]);
//端口列表请求 //端口列表请求
useEffect(() => { useEffect(() => {
api let queryVal = JSON.parse(JSON.stringify(router.query));
.listPageJobServicesInfo( for (const key in queryVal) {
{ queryVal[key] = Number(queryVal[key]);
...filterResult, }
...pageParams, api
...router.query .listPageJobServicesInfo(
}, {
{ ...filterResult,
signal: abort?.signal, ...pageParams,
} ...queryVal,
) },
.then((res) => { {
setProductList(res.result?.list.map(item=>{return { element:leftDom(item) }}) || []); signal: abort?.signal,
setCount(res.result?.totalCount || 0); }
}); )
}, [abort]); .then((res) => {
setProductList(
res.result?.list?.map((item) => {
return { element: leftDom(item) };
}) || []
);
setCount(res.result?.totalCount || 0);
});
}, [abort]);
const onFilterChange = (
filterResult: FilterResult,
adapterFilterResult: AdapterResult
) => {
console.log("filterResult", filterResult, adapterFilterResult);
setFilterResult(adapterFilterResult);
};
const onFilterChange = (
filterResult: FilterResult,
adapterFilterResult: AdapterResult
) => {
console.log("filterResult", filterResult, adapterFilterResult);
setFilterResult(adapterFilterResult);
};
const [query, setQuery] = useState<string | string[]>(); const [query, setQuery] = useState<string | string[]>();
useEffect(() => { useEffect(() => {
console.log(router.query); setRightDomList(
// if(router.query) setQuery(router.query) list.map((item) => {
setRightDomList(list.map(item=>{return {element:rightDom(item)}})) return { element: rightDom(item) };
})
);
}, []); }, []);
useEffect(()=>{ useEffect(() => {
if (router.query) { if (router.query && Object.keys(router.query).length) {
setFilterResult({...router.query}); let queryVal = JSON.parse(JSON.stringify(router.query));
for (const key in queryVal) {
queryVal[key] = Number(queryVal[key]);
}
setFilterResult({ ...queryVal });
} }
},[router]) }, [router]);
return ( return (
<Layout> <Layout>
<Box> <Box>
<Filter <Filter
types={[ "地域", "行业", "应用"]} types={["地域", "行业", "应用"]}
showResultItem showResultItem
onChange={onFilterChange} onChange={onFilterChange}
></Filter> ></Filter>
<div style={{marginTop:18}}> <div style={{ marginTop: 18 }}>
<ContentBox boxIndex={2} <ContentBox
leftRenderDom={{columns:productList}} boxIndex={2}
rightRenderDom={{columns:rightDomList}} leftRenderDom={{ columns: productList }}
leftcontentstyle={{width:"924px",margin:{top:0,right:"16px",bottom:"16px",left:0}}} rightRenderDom={{ columns: rightDomList }}
/> leftcontentstyle={{
<Pagination width: "924px",
current={pageParams.pageNo} margin: { top: 0, right: "16px", bottom: "16px", left: 0 },
pageSize={pageParams.pageSize} }}
showSizeChanger={false} />
showQuickJumper <Pagination
total={count} current={pageParams.pageNo}
onChange={onPageChange} pageSize={pageParams.pageSize}
hideOnSinglePage={true} showSizeChanger={false}
style={{ marginTop: 20 }} showQuickJumper
/> total={count}
onChange={onPageChange}
hideOnSinglePage={true}
style={{ marginTop: 20 }}
/>
</div> </div>
</Box> </Box>
</Layout> </Layout>
) );
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论