活动详情组件优化

master
pan 4 years ago
parent 181677ff4e
commit 6e4ba4f201
  1. 2
      src/Main.tsx
  2. 6
      src/my/MyLeaveWord.tsx
  3. 19
      src/public.tsx
  4. 23
      src/sub/IndexMenu.tsx
  5. 11
      src/ui/Activity.tsx

@ -148,7 +148,7 @@ export class Main extends React.Component<
break; break;
case DialogType.leaveWord: case DialogType.leaveWord:
this.setState({ this.setState({
my:{menuName:dialogType,content:<MyLeaveWord user={this.state.userId}/>,open:true} my:{menuName:dialogType,content:<MyLeaveWord cookies={this.props.cookies} user={this.state.userId}/>,open:true}
}) })
break; break;
case DialogType.message: case DialogType.message:

@ -8,13 +8,15 @@ import {Activity} from "../ui/Activity";
import {API, JSONResponse, Method, prefix, request} from "../interface"; import {API, JSONResponse, Method, prefix, request} from "../interface";
import {EmptyBodyTransform, LeaveWordRes, LeaveWordTransform, PageDataMessage, SimpleMessage} from "../result"; import {EmptyBodyTransform, LeaveWordRes, LeaveWordTransform, PageDataMessage, SimpleMessage} from "../result";
import {changeActivity} from "../public"; import {changeActivity} from "../public";
import {Cookies} from "react-cookie";
/** /**
* *
*/ */
export class MyLeaveWord extends React.Component< export class MyLeaveWord extends React.Component<
{ {
user:string user:string,
cookies:Cookies
}, },
{ {
//留言信息 //留言信息
@ -197,7 +199,7 @@ export class MyLeaveWord extends React.Component<
content={<MyInfo isOwn={false} isAdd={false} userId={this.state.userId?this.state.userId:""}/>} content={<MyInfo isOwn={false} isAdd={false} userId={this.state.userId?this.state.userId:""}/>}
open={this.state.openUserInfo} onClose={()=>this.setState({openUserInfo:false})}/> open={this.state.openUserInfo} onClose={()=>this.setState({openUserInfo:false})}/>
<MyDialog content={<Activity activityId={this.state.activityId} hideButton={false} applyFunction={(activeId:number)=>{ <MyDialog content={<Activity cookies={this.props.cookies} activityId={this.state.activityId} hideButton={false} applyFunction={(activeId:number)=>{
changeActivity(activeId,ActivityStatus.apply, this,function () { changeActivity(activeId,ActivityStatus.apply, this,function () {
}) })
this.setState({activityId:null}) this.setState({activityId:null})

@ -1,6 +1,6 @@
// 一些组件公用函数 // 一些组件公用函数
import {API, Method, request} from "./interface"; import {API, Method, request} from "./interface";
import {ActivityStatus} from "./entity"; import {ActivityDetail, ActivityStatus, UserType} from "./entity";
import { import {
ChangeActivityRes, ChangeActivityRes,
ChangeActivityTransform, ChangeActivityTransform,
@ -10,6 +10,8 @@ import {
UserTransform UserTransform
} from "./result"; } from "./result";
import React from "react"; import React from "react";
import {user_cookie, user_type_cookie} from "./account/PropCookie";
import {Cookies} from "react-cookie";
/** /**
* *
@ -65,3 +67,18 @@ export function loadMyFriend(name:string,that:React.Component){
}) })
} }
//参与活动提示
export function showActivityTip(activity:ActivityDetail, that:React.Component<{ cookies:Cookies },any>,button:JSX.Element){
if(that.props.cookies.get(user_type_cookie)===UserType.seekHelp){
return null
}else if(activity.userId===that.props.cookies.get(user_cookie)){
return <span className="text-danger text-center"></span>
}else if(activity.hasApply){
return <span className="text-danger text-center"></span>
}else if(activity.hasStart){
return <span className="text-danger text-center"></span>
}else{
return button
}
}

@ -2,15 +2,14 @@ import React from "react";
import {Button, Card, Col, Container, Image, ListGroup, Row} from "react-bootstrap"; import {Button, Card, Col, Container, Image, ListGroup, Row} from "react-bootstrap";
import {Page} from "../ui/Page"; import {Page} from "../ui/Page";
import {ActivityDetail, ActivityStatus, PageProps, UserType} from "../entity"; import {ActivityDetail, ActivityStatus, PageProps} from "../entity";
import {MyDialog} from "../ui/MyDialog"; import {MyDialog} from "../ui/MyDialog";
import {Activity} from "../ui/Activity"; import {Activity} from "../ui/Activity";
import {Input} from "../ui/InputGroup"; import {Input} from "../ui/InputGroup";
import {API, Method, prefix, request} from "../interface"; import {API, Method, prefix, request} from "../interface";
import {FindActivityRes, FindActivityTransform, PageDataMessage} from "../result"; import {FindActivityRes, FindActivityTransform, PageDataMessage} from "../result";
import {Cookies} from "react-cookie"; import {Cookies} from "react-cookie";
import {user_cookie, user_type_cookie} from "../account/PropCookie"; import {changeActivity, showActivityTip} from "../public";
import {changeActivity} from "../public";
/** /**
* *
@ -46,6 +45,8 @@ export class IndexMenu extends React.Component<{ cookies:Cookies },
this.loadActivity(1) this.loadActivity(1)
} }
/** /**
* *
* @param page * @param page
@ -77,6 +78,7 @@ export class IndexMenu extends React.Component<{ cookies:Cookies },
render() { render() {
let that=this
const rowList=this.state.activityList?this.state.activityList.length===0?<h3 className="text-center text-info"></h3>:this.state.activityList.map((activities:Array<ActivityDetail>, index:number)=> const rowList=this.state.activityList?this.state.activityList.length===0?<h3 className="text-center text-info"></h3>:this.state.activityList.map((activities:Array<ActivityDetail>, index:number)=>
<Row className="p-3" key={"row"+index}>{activities.map((activity:ActivityDetail, subIndex:number)=> <Row className="p-3" key={"row"+index}>{activities.map((activity:ActivityDetail, subIndex:number)=>
<Col className="col-4" key={"col"+subIndex}> <Col className="col-4" key={"col"+subIndex}>
@ -95,18 +97,13 @@ export class IndexMenu extends React.Component<{ cookies:Cookies },
</ListGroup> </ListGroup>
</Card.Body> </Card.Body>
<Card.Footer> <Card.Footer>
<Button variant={"info"} onClick={()=>this.setState({activityId:activity.activityId,hideButton: <Button variant={"info"} onClick={()=>this.setState({activityId:activity.activityId})} className="mr-2"></Button>
this.props.cookies.get(user_type_cookie)===UserType.seekHelp
||activity.userId===this.props.cookies.get(user_cookie) {showActivityTip(activity,this,<Button variant="primary" onClick={()=> {
||activity.hasApply||activity.hasStart})} className="mr-2"></Button>
{this.props.cookies.get(user_type_cookie)===UserType.seekHelp
||activity.userId===this.props.cookies.get(user_cookie)
||activity.hasApply||activity.hasStart?null:<Button variant="primary" onClick={()=> {
let that=this
changeActivity(activity.activityId,ActivityStatus.apply, this,function(){ changeActivity(activity.activityId,ActivityStatus.apply, this,function(){
that.loadActivity(1) that.loadActivity(1)
}) })
}}></Button>} }}></Button>)}
</Card.Footer> </Card.Footer>
</Card> </Card>
</Col>)} </Col>)}
@ -128,7 +125,7 @@ export class IndexMenu extends React.Component<{ cookies:Cookies },
{this.state.page?<Page onClick={(page:number)=>this.loadActivity(page)} currentPage={this.state.page.currentPage} totalPage={this.state.page.totalPage} pageSize={this.state.page.pageSize}/>:null} {this.state.page?<Page onClick={(page:number)=>this.loadActivity(page)} currentPage={this.state.page.currentPage} totalPage={this.state.page.totalPage} pageSize={this.state.page.pageSize}/>:null}
<MyDialog content={<Activity activityId={this.state.activityId} hideButton={this.state.hideButton} applyFunction={(activeId:number)=>{ <MyDialog content={<Activity cookies={this.props.cookies} activityId={this.state.activityId} hideButton={this.state.hideButton} applyFunction={(activeId:number)=>{
let that=this let that=this
changeActivity(activeId,ActivityStatus.apply, this,function () { changeActivity(activeId,ActivityStatus.apply, this,function () {
that.loadActivity(1) that.loadActivity(1)

@ -4,6 +4,8 @@ import {ActivityDetail} from "../entity";
import moment from "moment"; import moment from "moment";
import {API, Method, prefix, request} from "../interface"; import {API, Method, prefix, request} from "../interface";
import {ActivityDetailRes, ActivityDetailTransform, SimpleMessage} from "../result"; import {ActivityDetailRes, ActivityDetailTransform, SimpleMessage} from "../result";
import {showActivityTip} from "../public";
import {Cookies} from "react-cookie";
/** /**
* *
@ -19,6 +21,7 @@ export class Activity extends React.Component<
* *
*/ */
applyFunction?:Function; applyFunction?:Function;
cookies:Cookies;
}, },
{ {
activity?:ActivityDetail , activity?:ActivityDetail ,
@ -26,7 +29,7 @@ export class Activity extends React.Component<
}>{ }>{
constructor(props: Readonly<{ activityId: number | null; hideButton: boolean; applyFunction?: Function }>) { constructor(props: Readonly<{ activityId: number | null; hideButton: boolean; applyFunction?: Function; cookies:Cookies }>) {
super(props); super(props);
this.state={ this.state={
@ -71,8 +74,10 @@ export class Activity extends React.Component<
<h3 className="text-center">{this.state.activity.title}</h3> <h3 className="text-center">{this.state.activity.title}</h3>
<p className="p-2">{this.state.activity.content}</p> <p className="p-2">{this.state.activity.content}</p>
<h5 className="text-center">{"活动开始时间:"+moment(this.state.activity.activityStartTime).format("YYYY-MM-DD HH:mm:ss")}</h5> <h5 className="text-center">{"活动开始时间:"+moment(this.state.activity.activityStartTime).format("YYYY-MM-DD HH:mm:ss")}</h5>
<h5 className="text-center mb-3">{"活动结束时间:"+moment(this.state.activity.activityStartTime).format("YYYY-MM-DD HH:mm:ss")}</h5> <h5 className="text-center mb-3">{"活动结束时间:"+moment(this.state.activity.activityEndTime).format("YYYY-MM-DD HH:mm:ss")}</h5>
{this.props.hideButton?null:<div className="text-center"><Button onClick={()=>this.props.applyFunction?this.props.applyFunction(this.props.activityId):null}></Button></div>}
{<div className="text-center ml-auto mr-auto">{showActivityTip(this.state.activity,this,
<Button onClick={()=>this.props.applyFunction?this.props.applyFunction(this.props.activityId):null}></Button>)}</div>}
</div> </div>
:this.state.result} :this.state.result}
</div> </div>

Loading…
Cancel
Save