提交 dd94b9e5 作者: 余乾开

Merge branch 'master' into feature/chuck

...@@ -83,7 +83,12 @@ export default function request(url: string, method: String = 'get', data?: any, ...@@ -83,7 +83,12 @@ export default function request(url: string, method: String = 'get', data?: any,
} }
if (data.code !== '200') { if (data.code !== '200') {
errMsg(data.message || '请求出错'); //未登录判断
if(data.code === '5008'){
errMsg('请先登录');
}else{
errMsg(data.message || '请求出错');
}
} }
return data; return data;
......
...@@ -136,7 +136,7 @@ export default function NavHeader() { ...@@ -136,7 +136,7 @@ export default function NavHeader() {
) : ( ) : (
<Button <Button
type="text" type="text"
onClick={() => testLogin()} onClick={() => setOpenLoginModal(true)}
style={{ fontWeight: "bold", fontSize: 16 }} style={{ fontWeight: "bold", fontSize: 16 }}
> >
登录 登录
......
...@@ -6,7 +6,6 @@ export interface TypeResp { ...@@ -6,7 +6,6 @@ export interface TypeResp {
} }
export interface PublishParams { export interface PublishParams {
userAccountId: number; //账号id
publishPhone: number; //手机号 publishPhone: number; //手机号
publishName: string; //发布名称 publishName: string; //发布名称
requirementTypeId: number; //需求类型 requirementTypeId: number; //需求类型
......
...@@ -11,7 +11,6 @@ type Props = { ...@@ -11,7 +11,6 @@ type Props = {
export default function PublishModal(props: Props) { export default function PublishModal(props: Props) {
const [types, setTypes] = useState<Array<TypeResp>>([]); //需求类型 const [types, setTypes] = useState<Array<TypeResp>>([]); //需求类型
const [params, setParams] = useState<PublishParams>({ const [params, setParams] = useState<PublishParams>({
userAccountId: -1,
publishName: "", publishName: "",
publishPhone: -1, publishPhone: -1,
requireDescription: "", requireDescription: "",
......
...@@ -62,14 +62,15 @@ export default function LoginModal(props: Props) { ...@@ -62,14 +62,15 @@ export default function LoginModal(props: Props) {
}) })
.then((res) => { .then((res) => {
if (res.code === "200") { if (res.code === "200") {
setUserInfo({
...res.result,
id: res.result?.userAccountId,
});
window.messageApi.success("登录成功");
clearInterval(handle); clearInterval(handle);
setTimeHandle(null); setTimeHandle(null);
props.onCancel();
window.localStorage.setItem("token", res.result.token);
api.userInfo().then((res) => {
setUserInfo(res.result || "");
window.messageApi.success("登录成功");
props.onCancel();
});
} }
}); });
}, 1000); }, 1000);
......
...@@ -6,11 +6,23 @@ export interface CooperationApplyParams { ...@@ -6,11 +6,23 @@ export interface CooperationApplyParams {
remark?: string, remark?: string,
userAccountId: number, userAccountId: number,
cooperationTagId: number cooperationTagId: number
} }
export interface GetTagIdResp {
id: number,
tagName: string,
tagImg: string,
tagDescription: string,
createTime: string
}
export default { export default {
//请加盟 //请加盟
cooperationApply(params: CooperationApplyParams):Promise<Response<string>>{ cooperationApply(params: CooperationApplyParams): Promise<Response<string>> {
return request('/userapp/cooperation/apply', 'post', params) return request('/userapp/cooperation/apply', 'post', params)
},
//加盟标签相关内容
getTagById(params: { id: number }): Promise<Response<GetTagIdResp>> {
return request('/userapp/cooperation/getTagById', 'get', params)
} }
} }
\ No newline at end of file
import { Button, Col, Divider, Form, Input, Row } from "antd"; import { Button, Col, Divider, Form, Input, Row } from "antd";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import LayoutView from "~/components/layout"; import LayoutView from "~/components/layout";
import api from "./api"; import api from "./api";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
export default function JoinPolicy() { export default function JoinPolicy() {
const router = useRouter(); const router = useRouter();
const [content, setContent] = useState(""); //福利内容
const tagId = Number(router.query.tagId);
useEffect(() => {
if (tagId) {
api
.getTagById({
id: tagId,
})
.then((res) => {
setContent(res.result?.tagDescription.replace("\n", "<br/>") || "");
});
}
}, []);
//提交 //提交
const onFinish = (values: any) => { const onFinish = (values: any) => {
console.log(values); console.log(values);
api api
.cooperationApply({ .cooperationApply({
...values, ...values,
userAccountId: 1, cooperationTagId: tagId,
cooperationTagId: router.query.tagId,
}) })
.then((res) => { .then((res) => {
console.log("提交结果", res); console.log("提交结果", res);
if (res.result === "已通过") { if (res.code === "200") {
window.messageApi.success(res.result); window.messageApi.success(res.result);
setTimeout(() => { setTimeout(() => {
router.push("/"); router.push("/");
}, 1500); }, 1500);
} else {
window.messageApi.error(res.message);
} }
}); });
}; };
...@@ -50,24 +62,8 @@ export default function JoinPolicy() { ...@@ -50,24 +62,8 @@ export default function JoinPolicy() {
<div <div
className={styles.font2} className={styles.font2}
style={{ paddingLeft: 50, paddingRight: 50 }} style={{ paddingLeft: 50, paddingRight: 50 }}
> dangerouslySetInnerHTML={{ __html: content }}
1.每月自动获取一张高额度优惠券 ></div>
<br /> 2.流量扶持和店铺曝光度
<br />
3成为科比特指定官方生态合作伙伴
<br /> 4.享受不低于1亿制造采购补贴
<br /> 5.无人机产业链资源共享
<br /> 6.享受价值5亿产业链订单
<br /> 7.享受一对一代运营服务
<br /> 8.享受无人机生态圈资源
<br /> 9.成为科比特指定官方生态
<br />
10.享受无人机生态圈资源合作伙伴
<br />
11.受价值5亿产业链订单
<br />
12.成为科比特指定官方生态合作伙伴
</div>
<Divider /> <Divider />
<div <div
className={styles.font1} className={styles.font1}
......
...@@ -27,6 +27,11 @@ export interface Item { ...@@ -27,6 +27,11 @@ export interface Item {
apply: 0 | 1; apply: 0 | 1;
} }
export interface ApplyParams {
tenderInfoId?: number; //招标详情id
tenderNewsId?: number; //招标id
}
export default { export default {
/** /**
...@@ -36,5 +41,9 @@ export default { ...@@ -36,5 +41,9 @@ export default {
*/ */
listNewTenderInfo(params: ListNewTenderInfoParams, options = {}): Promise<Response<ListNewTenderInfoResp>> { listNewTenderInfo(params: ListNewTenderInfoParams, options = {}): Promise<Response<ListNewTenderInfoResp>> {
return request('/release/tender/listNewTenderInfo', 'post', params, options); return request('/release/tender/listNewTenderInfo', 'post', params, options);
},
//合作申请提交
apply(params: ApplyParams){
return request('/release/tender/apply', 'post', params);
} }
} }
\ No newline at end of file
...@@ -57,6 +57,18 @@ export default function Bids(props: Props) { ...@@ -57,6 +57,18 @@ export default function Bids(props: Props) {
}); });
}; };
const onApply = (item: Item) => {
api
.apply({
tenderNewsId: item.id,
})
.then((res) => {
if (res.code === "200") {
window.messageApi.success("申请成功");
}
});
};
return ( return (
<Spin spinning={loading} delay={500}> <Spin spinning={loading} delay={500}>
<div className={styles.bids} style={{ height: 610 }}> <div className={styles.bids} style={{ height: 610 }}>
...@@ -64,9 +76,7 @@ export default function Bids(props: Props) { ...@@ -64,9 +76,7 @@ export default function Bids(props: Props) {
return ( return (
<div className={styles.item} key={item.id}> <div className={styles.item} key={item.id}>
<div className={styles.info}> <div className={styles.info}>
<div className={styles.title}> <div className={styles.title}>{item.tenderContent}</div>
{item.tenderContent}
</div>
</div> </div>
{item.apply ? ( {item.apply ? (
<Button <Button
...@@ -80,7 +90,9 @@ export default function Bids(props: Props) { ...@@ -80,7 +90,9 @@ export default function Bids(props: Props) {
) : ( ) : (
<Button type="primary" className={styles.btn}> <Button type="primary" className={styles.btn}>
<div className={styles.text1}>{item.tenderPrice}</div> <div className={styles.text1}>{item.tenderPrice}</div>
<div className={styles.text2}>申请合作</div> <div className={styles.text2} onClick={() => onApply(item)}>
申请合作
</div>
</Button> </Button>
)} )}
</div> </div>
......
...@@ -67,15 +67,19 @@ export default function Cases(props: Props) { ...@@ -67,15 +67,19 @@ export default function Cases(props: Props) {
return ( return (
<div className={styles.item} key={item.id}> <div className={styles.item} key={item.id}>
<div className={styles.info}> <div className={styles.info}>
<div className={styles.title}>{item.caseTitle}</div> <div className={styles.title}>
<Button
type="link"
style={{ padding: "0 0" }}
onClick={() =>
Router.push("/projectInfo/caseArticle/" + item.id)
}
>
{item.caseTitle}
</Button>
</div>
</div> </div>
<Button <Button type="primary" className={styles.btn}>
type="primary"
className={styles.btn}
onClick={() =>
Router.push("/projectInfo/caseArticle/" + item.id)
}
>
申请合作 申请合作
</Button> </Button>
</div> </div>
......
...@@ -23,9 +23,6 @@ ...@@ -23,9 +23,6 @@
flex: auto; flex: auto;
.title { .title {
white-space: nowrap; /* 防止换行 */
overflow: hidden; /* 隐藏溢出部分 */
text-overflow: ellipsis; /* 使用省略号代替溢出部分 */
font-size: 16px; font-size: 16px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI; font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold; font-weight: bold;
...@@ -35,9 +32,6 @@ ...@@ -35,9 +32,6 @@
} }
.desc { .desc {
white-space: nowrap; /* 防止换行 */
overflow: hidden; /* 隐藏溢出部分 */
text-overflow: ellipsis; /* 使用省略号代替溢出部分 */
font-size: 14px; font-size: 14px;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
color: RGBA(135, 135, 135, 0.4); color: RGBA(135, 135, 135, 0.4);
......
...@@ -66,20 +66,20 @@ export default function Requirements(props: Props) { ...@@ -66,20 +66,20 @@ export default function Requirements(props: Props) {
/** /**
* 确认解决 * 确认解决
* @param e * @param e
*/ */
const confirmSolved = ( const confirmSolved = (item: Item) => {
item: Item api
) => { .solveRequire({
api.solveRequire({ requirementsInfoId: item.id,
requirementsInfoId: item.id, userAccountId: userId,
userAccountId: userId })
}).then(res => { .then((res) => {
if(res.code === '200'){ if (res.code === "200") {
window.messageApi.success('提交完成'); window.messageApi.success("提交完成");
setReload(!reload); setReload(!reload);
} }
}) });
}; };
return ( return (
...@@ -94,13 +94,14 @@ export default function Requirements(props: Props) { ...@@ -94,13 +94,14 @@ export default function Requirements(props: Props) {
<div className={styles.logo}></div> <div className={styles.logo}></div>
<div className={styles.info}> <div className={styles.info}>
<div className={styles.title}> <div className={styles.title}>
项目需求:电力巡检需要5名飞手 项目需求:{item.requireDescription}
</div> </div>
{/*
<div className={styles.desc}> <div className={styles.desc}>
具体需求:{item.requireDescription} 具体需求:{item.requireDescription}
</div> </div> */}
</div> </div>
{item.userAccountId === userId && ( {item.userAccountId === userId ? (
<Popconfirm <Popconfirm
title="提示" title="提示"
description="确认该需求已经解决了吗?" description="确认该需求已经解决了吗?"
...@@ -117,6 +118,8 @@ export default function Requirements(props: Props) { ...@@ -117,6 +118,8 @@ export default function Requirements(props: Props) {
已解决 已解决
</Button> </Button>
</Popconfirm> </Popconfirm>
) : (
<div style={{ width: 120, flexShrink: 0 }}></div>
)} )}
</div> </div>
); );
......
...@@ -20,6 +20,8 @@ const withTheme = (node: JSX.Element) => ( ...@@ -20,6 +20,8 @@ const withTheme = (node: JSX.Element) => (
theme={{ theme={{
token: { token: {
borderRadius: 6, borderRadius: 6,
colorLink: "#333",
colorLinkHover: "#ff552d",
}, },
}} }}
> >
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论