提交 1241f57a 作者: 翁进城

项目资讯开发

上级 03660a06
export default {
}
\ No newline at end of file
import request, { Response } from '~/api/request';
export interface ListNewTenderInfoParams {
cityCode?: number;
date?: string;
districtCode?: number;
pageNo: number;
pageSize: number;
provinceCode?: number;
}
export interface ListNewTenderInfoResp {
pageNo: number;
pageSize: number;
list: Item[];
totalCount: number;
totalPage: number;
}
export interface Item {
id: number;
tenderNewsId: number;
tenderInfoNo: string;
tenderContent: string;
tenderPrice: number;
createTime: string;
apply: 0 | 1;
}
export default {
/**
* 招投标列表
* @param params
* @returns
*/
listNewTenderInfo(params: ListNewTenderInfoParams, options = {}): Promise<Response<ListNewTenderInfoResp>> {
return request('/release/tender/listNewTenderInfo', 'post', params, options);
}
}
\ No newline at end of file
import { Button } from "antd";
import { useState, useEffect } from "react";
import api, { Item } from "./api";
import styles from "./index.module.scss";
const list = [
{
isApply: false,
},
{
isApply: true,
},
];
export default function Bids() {
const [list, setList] = useState<Array<Item>>([]);
const [pageParams, setPageParams] = useState({
pageNo: 1,
pageSize: 5,
});
const [count, setCount] = useState(0);
const [abort, setAbort] = useState<AbortController | null>(null);
useEffect(() => {
//中断前一次请求
abort?.abort();
setAbort(new AbortController());
}, [pageParams]);
useEffect(() => {
api
.listNewTenderInfo(
{
...pageParams,
},
{
signal: abort?.signal,
}
)
.then((res) => {
setList(res.result?.list || []);
setCount(res.result?.totalCount || 0);
});
}, [abort]);
export default function requirements() {
return (
<div className={styles.bids}>
{list.map((item, i) => {
return (
<div className={styles.item} key={i}>
<div className={styles.info}>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div>
<div className={styles.title}>项目需求:{item.tenderContent}</div>
</div>
{item.isApply ? (
{item.apply ? (
<Button
type="primary"
disabled
className={`${styles.btn} ${styles.disabled}`}
>
<div className={styles.text1}>155W</div>
<div className={styles.text1}>{item.tenderPrice}</div>
<div className={styles.text2}>已申请</div>
</Button>
) : (
<Button type="primary" className={styles.btn}>
<div className={styles.text1}>155W</div>
<div className={styles.text1}>{item.tenderPrice}</div>
<div className={styles.text2}>申请合作</div>
</Button>
)}
......
import request, { Response } from '~/api/request';
export interface ListCasePageParams {
cityCode?: number;
date?: string;
districtCode?: number;
pageNo: number;
pageSize: number;
provinceCode?: number;
}
export interface ListCasePageResp {
pageNo: number;
pageSize: number;
list: Item[];
totalCount: number;
totalPage: number;
}
export interface Item {
id: number;
newsTitle: string;
newsAuthor: string;
userAccountId: number;
surfaceImg: string;
newsContents: string;
createTime: string;
updateTime: string;
isApply: 0 | 1
}
export default {
/**
* 案例列表
* @param params
* @returns
*/
listCasePage(params: ListCasePageParams, options = {}): Promise<Response<ListCasePageResp>> {
return request('/release/industry-case/listCasePage', 'post', params, options);
}
}
\ No newline at end of file
import { Button } from "antd";
import { useState, useEffect } from "react";
import api, { Item } from "./api";
import styles from "./index.module.scss";
const list = [
......@@ -10,24 +12,46 @@ const list = [
},
];
export default function requirements() {
export default function Cases() {
const [list, setList] = useState<Array<Item>>([]);
const [pageParams, setPageParams] = useState({
pageNo: 1,
pageSize: 5,
});
const [count, setCount] = useState(0);
const [abort, setAbort] = useState<AbortController | null>(null);
useEffect(() => {
//中断前一次请求
abort?.abort();
setAbort(new AbortController());
}, [pageParams]);
useEffect(() => {
api
.listCasePage(
{
...pageParams,
},
{
signal: abort?.signal,
}
)
.then((res) => {
setList(res.result?.list || []);
setCount(res.result?.totalCount || 0);
});
}, [abort]);
return (
<div className={styles.casas}>
{list.map((item, i) => {
return (
<div className={styles.item} key={i}>
<div className={styles.info}>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div>
<div className={styles.title}>{item.newsTitle}</div>
</div>
{item.isApply ? (
<Button disabled className={styles.btnDisabled}>
已申请
</Button>
) : (
<Button className={styles.btn}>
申请合作
</Button>
)}
<Button className={styles.btn}>查看案例</Button>
</div>
);
})}
......
import request, { Response } from '~/api/request';
export interface ListNewsPageParams {
cityCode?: number;
date?: string;
districtCode?: number;
pageNo: number;
pageSize: number;
provinceCode?: number;
}
export interface ListNewsPageResp {
pageNo: number;
pageSize: number;
list: Item[];
totalCount: number;
totalPage: number;
}
export interface Item {
id: number;
newsTitle: string;
newsAuthor: string;
userAccountId: number;
surfaceImg: string;
newsContents: string;
createTime: string;
updateTime?: any;
}
export default {
/**
* 新闻列表
* @param params
* @returns
*/
listNewsPage(params: ListNewsPageParams, options = {}): Promise<Response<ListNewsPageResp>> {
return request('/release/industry-news/listNewsPage', 'post', params, options);
}
}
\ No newline at end of file
......@@ -2,8 +2,40 @@ import { RightOutlined } from "@ant-design/icons";
import { Col, Row } from "antd";
import styles from "./index.module.scss";
import Image from "next/image";
import { useState, useEffect } from "react";
import api, { Item } from "./api";
export default function News() {
const [rightList, setRightList] = useState<Array<Item>>([]);
const [pageParams, setPageParams] = useState({
pageNo: 1,
pageSize: 5,
});
const [count, setCount] = useState(0);
const [abort, setAbort] = useState<AbortController | null>(null);
useEffect(() => {
//中断前一次请求
abort?.abort();
setAbort(new AbortController());
}, [pageParams]);
useEffect(() => {
api
.listNewsPage(
{
...pageParams,
},
{
signal: abort?.signal,
}
)
.then((res) => {
setRightList(res.result?.list || []);
setCount(res.result?.totalCount || 0);
});
}, [abort]);
export default function requirements() {
return (
<Row justify="space-between">
<Col className={styles.new}>
......@@ -20,12 +52,20 @@ export default function requirements() {
<RightOutlined style={{ fontSize: 16 }} />
</div>
<ul className={styles.newList}>
<li className={styles.newItem}>
<div className={styles.newItemTitle}>
中国超音速无人机雨燕试飞成功好棒呀
</div>
<Image className={styles.newItemImg} src="" alt=""></Image>
</li>
{rightList.map((item) => {
return (
<li className={styles.newItem}>
<div className={styles.newItemTitle}>{item.newsTitle}</div>
<Image
className={styles.newItemImg}
src={item.surfaceImg}
alt=""
width={90}
height={60}
></Image>
</li>
);
})}
</ul>
</Col>
</Row>
......
import request, { Response } from '~/api/request';
export interface ListPublishPageParams {
cityCode?: number;
date?: string;
districtCode?: number;
pageNo: number;
pageSize: number;
provinceCode?: number;
}
export interface ListPublishPageResp {
pageNo: number;
pageSize: number;
list: Item[];
totalCount: number;
totalPage: number;
}
export interface Item {
id: number;
requirementTypeId: number;
userAccountId: number;
publishName: string;
publishPhone: string;
requireDescription: string;
solved?: 0 | 1;
createTime: string;
updateTime?: string;
}
export default {
/**
* 需求发布列表
* @param params
* @returns
*/
listPublishPage(params: ListPublishPageParams, options = {}): Promise<Response<ListPublishPageResp>> {
return request('/release/requirements/listPublishPage', 'post', params, options);
}
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import api, { Item } from "./api";
import styles from './index.module.scss';
export default function requirements(){
export default function Requirements(){
const [list, setList] = useState<Array<Item>>([]);
const [pageParams, setPageParams] = useState({
pageNo: 1,
pageSize: 5,
});
const [count, setCount] = useState(0);
const [abort, setAbort] = useState<AbortController | null>(null);
useEffect(() => {
//中断前一次请求
abort?.abort();
setAbort(new AbortController());
}, [pageParams]);
useEffect(() => {
api
.listPublishPage(
{
...pageParams,
},
{
signal: abort?.signal,
}
)
.then((res) => {
setList(res.result?.list || []);
setCount(res.result?.totalCount || 0);
});
}, [abort]);
return (
<div className={styles.requirements}>
<div className={styles.item}>
<div className={styles.logo}></div>
<div className={styles.info}>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div>
<div className={styles.desc}>
具体需求:电力巡检需要5名飞手,山东临沂
</div>
</div>
</div>
<div className={`${styles.item} ${styles.noResolve}`}>
<div className={styles.logo}></div>
<div className={styles.info}>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div>
<div className={styles.desc}>
具体需求:电力巡检需要5名飞手,山东临沂
{list.map(item => {
return (
<div
className={`${styles.item} ${!item.solved && styles.noResolve}`}
key={item.id}
>
<div className={styles.logo}></div>
<div className={styles.info}>
<div className={styles.title}>项目需求:电力巡检需要5名飞手</div>
<div className={styles.desc}>
具体需求:{item.requireDescription}
</div>
</div>
</div>
</div>
</div>
);
})}
</div>
);
}
\ No newline at end of file
......@@ -9,10 +9,10 @@ import {
} from "antd";
import styles from "./index.module.scss";
import Layout from "~/components/layout";
import requirements from "./components/requirements"; //项目需求
import bids from "./components/bids"; //招投标项目
import cases from "./components/cases"; //业务案例
import news from "./components/news"; //行业新闻
import Requirements from "./components/requirements"; //项目需求
import Bids from "./components/bids"; //招投标项目
import Cases from "./components/cases"; //业务案例
import News from "./components/news"; //行业新闻
interface Option {
value: string | number;
......@@ -84,19 +84,19 @@ const items = ["项目需求", "招投标项目", "业务案例", "行业新闻"
switch (value) {
case "项目需求":
children = requirements();
children = <Requirements></Requirements>;
break;
case "招投标项目":
children = bids();
children = <Bids></Bids>;
break;
case "业务案例":
children = cases();
children = <Cases></Cases>;
break;
case "行业新闻":
children = news();
children = <News></News>;
break;
}
return {
......@@ -107,7 +107,7 @@ const items = ["项目需求", "招投标项目", "业务案例", "行业新闻"
}
);
export default function Mall() {
export default function ProjectInfo() {
return (
<Layout layoutStyle={{ backgroundColor: "#fff" }}>
<div style={{ backgroundColor: "#fff", minHeight: 820 }}>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论