From 0a23d09ce455ab846787ee2824f03a2d42aace28 Mon Sep 17 00:00:00 2001 From: pan <1029559041@qq.com> Date: Wed, 27 May 2020 22:05:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=8A=A5=E5=90=8D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 26 ++++++-- src/Main.tsx | 37 +++++++---- src/account/PropCookie.ts | 1 + src/account/Register.tsx | 6 +- src/entity.ts | 11 ++++ src/interface.ts | 9 ++- src/my/MyHelp.tsx | 73 +-------------------- src/my/MyLeaveWord.tsx | 15 +++-- src/my/SeekHelp.tsx | 27 ++++---- src/result.ts | 133 +++++++++++++++----------------------- src/sub/IndexMenu.tsx | 49 ++++++++++---- src/sub/SendHelp.tsx | 10 +-- src/sub/Volunteer.tsx | 8 +-- src/ui/TestData.ts | 27 ++++++++ 14 files changed, 215 insertions(+), 217 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 979ba54..72a855d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,11 +5,18 @@ import {Login} from './account/Login'; import {Cookies, withCookies} from 'react-cookie'; import {Main} from "./Main"; import {Register} from "./account/Register"; -import {user_cookie, user_type_cookie} from "./account/PropCookie"; +import {user_cookie, user_type_cookie, welcome_cookie} from "./account/PropCookie"; import {UserType} from "./entity"; -class App extends React.Component<{ allCookies:any;cookies:Cookies }, - { page?:JSX.Element;}> { +class App extends React.Component< + { + allCookies:any; + cookies:Cookies + }, + { + page?:JSX.Element; + welcome?:boolean; + }> { constructor(props: Readonly) { @@ -20,10 +27,13 @@ class App extends React.Component<{ allCookies:any;cookies:Cookies }, } componentDidMount() { - const { cookies } = this.props - if((cookies.get(user_cookie)||"").length>0){ + if((this.props.cookies.get(user_cookie)||"").length>0){ this.setState({ - page:
this.logout()} /> + welcome:this.props.cookies.get(welcome_cookie)!==undefined + }) + + this.setState({ + page:
this.logout()}/> }) }else{ this.toLogin() @@ -33,6 +43,7 @@ class App extends React.Component<{ allCookies:any;cookies:Cookies }, //注销登录 logout(){ this.props.cookies.remove(user_cookie) + this.props.cookies.remove(user_type_cookie) this.toLogin() } @@ -53,8 +64,9 @@ class App extends React.Component<{ allCookies:any;cookies:Cookies }, page:this.toRegister()} onLoginSuccess={(userId:string,userType:UserType)=> { this.props.cookies.set(user_cookie,userId) this.props.cookies.set(user_type_cookie,userType) + this.props.cookies.set(welcome_cookie,userId) this.setState({ - page:
this.logout()} user={userId} userType={userType}/> + page:
this.logout()} cookies={this.props.cookies}/> }) }}/> }) diff --git a/src/Main.tsx b/src/Main.tsx index 1382f56..e9f41d6 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -8,6 +8,8 @@ import {MyDialog} from "./ui/MyDialog"; import {MyLeaveWord} from "./my/MyLeaveWord"; import {MyMessage} from "./my/MyMessage"; import {User, UserEdit, UserType} from "./entity"; +import {Cookies} from "react-cookie"; +import {user_cookie, user_type_cookie, welcome_cookie} from "./account/PropCookie"; /** * 菜单标记 @@ -31,10 +33,12 @@ enum DialogType { * 主菜单 */ export class Main extends React.Component< + { + logout:Function; + // + cookies:Cookies; + }, - { user:string; - userType?:string; - logout:Function;}, { //菜单 menu:Menu; @@ -49,7 +53,8 @@ export class Main extends React.Component< }, //用户身份 userType?:string; - result:boolean + //显示欢迎信息 + result:boolean; } >{ @@ -57,15 +62,15 @@ export class Main extends React.Component< super(props); //默认菜单 this.state={ - result: true, //一级菜单 menu:Menu.index, //二级菜单 - subMenu:, + subMenu:, //我的好友信息 friendList:[], //我的菜单 - my:{menuName: "",content:null,open:false} + my:{menuName: "",content:null,open:false}, + result:Boolean(this.props.cookies.get(welcome_cookie)) } } @@ -96,7 +101,7 @@ export class Main extends React.Component< switch (menu) { case Menu.index: this.setState({ - subMenu: + subMenu: });break; case Menu.volunteer: this.setState({ @@ -131,17 +136,18 @@ export class Main extends React.Component< switch (dialogType) { case DialogType.friend: this.setState({ - my:{menuName:dialogType,content:,open:true} + my:{menuName:dialogType,content:,open:true} }) break; case DialogType.leaveWord: this.setState({ - my:{menuName:dialogType,content:,open:true} + my:{menuName:dialogType,content:,open:true} }) break; case DialogType.message: this.setState({ - my:{menuName:dialogType,content:this.setState({userType:user.userType})} user={this.props.user}/>,open:true} + my:{menuName:dialogType,content:this.setState({userType:user.userType})} + user={this.props.cookies.get(user_cookie)}/>,open:true} }) break; } @@ -166,7 +172,7 @@ export class Main extends React.Component< - {this.props.user} + {this.props.cookies.get(user_cookie)} @@ -178,14 +184,17 @@ export class Main extends React.Component< - {(this.state.userType||this.props.userType)?{(this.state.userType||this.props.userType)===UserType.help.toString()?"等待接受帮助":"等待前往帮助"}:null} + {(this.state.userType||this.props.cookies.get(user_type_cookie))?{(this.state.userType||this.props.cookies.get(user_type_cookie))===UserType.help.toString()?"等待接受帮助":"等待前往帮助"}:null} this.closeDialog()}/> - 欢迎用户{this.props.user}登录本系统} open={this.state.result} titleId="login-tip" menuName="登录提示" onClose={()=>this.setState({result:false})}/> + 欢迎用户{this.props.cookies.get(user_cookie)}登录本系统} open={this.state.result} titleId="login-tip" menuName="登录提示" onClose={()=>{ + this.setState({result:false}) + this.props.cookies.remove(welcome_cookie) + }}/> {this.state.subMenu} diff --git a/src/account/PropCookie.ts b/src/account/PropCookie.ts index 8995245..59dc36c 100644 --- a/src/account/PropCookie.ts +++ b/src/account/PropCookie.ts @@ -4,3 +4,4 @@ */ export const user_cookie="user_cookie" export const user_type_cookie="user_type_cookie" +export const welcome_cookie="welcome_cookie" diff --git a/src/account/Register.tsx b/src/account/Register.tsx index a336d6e..9b10368 100644 --- a/src/account/Register.tsx +++ b/src/account/Register.tsx @@ -4,8 +4,8 @@ import {Button, Form} from 'react-bootstrap' import {RegisterProps, RegisterState, UserType} from "../entity"; import {UploadImg} from "../ui/UploadImg"; import {Address} from "../ui/Address"; -import {API, Method, request} from "../interface" -import {RegisterMessage, RegisterRes, RegisterTransform} from "../result"; +import {API, JSONResponse, Method, request} from "../interface" +import {RegisterMessage, RegisterTransform} from "../result"; import {MyDialog} from "../ui/MyDialog"; /** @@ -57,7 +57,7 @@ export class Register extends React.Component{ email:this.state.email, info:this.state.info - },new RegisterTransform(),function(res:RegisterRes){ + },new RegisterTransform(),function(res:JSONResponse){ let message switch (res.customResult) { case RegisterMessage.ok:message="注册成功"; diff --git a/src/entity.ts b/src/entity.ts index 84c4747..55e216f 100644 --- a/src/entity.ts +++ b/src/entity.ts @@ -63,6 +63,8 @@ export interface ActivityId { //活动详情 export interface ActivityDetail extends BaseHelp,ActivityId{ + //用户id + userId:string; //活动开始时间 activityStartTime:number; //活动结束时间 @@ -308,3 +310,12 @@ export interface LoginState{ // result:JSX.Element|null } + +/** + * 志愿者状态 + */ +export enum VolunteerStatus { + apply = "apply", + join = "join", + complete = "complete" +} diff --git a/src/interface.ts b/src/interface.ts index 40f0674..2755bcc 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -22,7 +22,9 @@ export const API={ //发布求助信息 help: prefix.activity + "/sendHelp", //查找活动列表 - find: prefix.activity + "/find" + find: prefix.activity + "/find", + //报名活动 + apply:prefix.activity+ "/apply" } } } @@ -42,7 +44,7 @@ export enum Result { /** * 响应数据 */ -export abstract class JSONResponse { +export class JSONResponse { result?:Result customResult?:Q } @@ -93,7 +95,8 @@ export function request,T extends TransformData } fetch(server+api,{ method:method, - body:formData + body:formData, + credentials: 'include', }) .then( response=>{if(response.status===200){ diff --git a/src/my/MyHelp.tsx b/src/my/MyHelp.tsx index 5256c8f..34ad1ea 100644 --- a/src/my/MyHelp.tsx +++ b/src/my/MyHelp.tsx @@ -2,6 +2,7 @@ import React from "react"; import {Button, Col, Container, Image, Row} from "react-bootstrap"; import {MyHelpState} from "../entity"; import moment from "moment"; +import {myActivityObj} from "../ui/TestData"; const classList="border-info border d-flex justify-content-center align-items-center" @@ -69,77 +70,7 @@ export class MyHelp extends React.Component<{ undefined?:undefined }, { data:Arr loadMyHelp(){ this.setState({ - data:[{ - //活动Id - activityId:123, - //活动标题 - title:"活动标题", - //活动内容 - content:"活动内容", - //活动背景图 - activityImg: "logo512.png", - //求助时间 - seekHelpTime:new Date().getTime(), - //活动开始时间 - activityStartTime:new Date().getTime(), - //活动结束时间 - activityEndTime:new Date().getTime(), - //报名时间 - applyTime:new Date().getTime(), - //参与时间 - joinTime:new Date().getTime(), - //完成时间 - completeTime:new Date().getTime(), - //活动评价分 - score: Math.ceil(Math.random()*10), - }, - { - //活动Id - activityId:123, - //活动标题 - title:"活动标题", - //活动内容 - content:"活动内容", - //活动背景图 - activityImg: "logo512.png", - //求助时间 - seekHelpTime:new Date().getTime(), - //活动开始时间 - activityStartTime:new Date().getTime(), - //活动结束时间 - activityEndTime:new Date().getTime(), - //报名时间 - applyTime:new Date().getTime(), - //参与时间 - joinTime:null, - //完成时间 - completeTime:new Date().getTime(), - //活动评价分 - score: Math.ceil(Math.random()*10), - },{ - //活动Id - activityId:123, - //活动标题 - title:"活动标题", - //活动内容 - content:"活动内容", - //活动背景图 - activityImg: "logo512.png", - //求助时间 - seekHelpTime:new Date().getTime(), - //活动开始时间 - activityStartTime:new Date().getTime(), - //活动结束时间 - activityEndTime:new Date().getTime(), - //报名时间 - applyTime:new Date().getTime(), - //参与时间 - joinTime:new Date().getTime(), - //完成时间 - completeTime:null, - //活动评价分 - score: Math.ceil(Math.random()*10), - }] + data:[myActivityObj,myActivityObj,myActivityObj] }) } diff --git a/src/my/MyLeaveWord.tsx b/src/my/MyLeaveWord.tsx index 057fe4a..0fa0de3 100644 --- a/src/my/MyLeaveWord.tsx +++ b/src/my/MyLeaveWord.tsx @@ -8,11 +8,16 @@ import {Activity} from "../ui/Activity"; import {activityObj, userObj} from "../ui/TestData"; enum LeaveWordType { - recommend, - apply, - join, - complete, - friend + //推荐 + recommend="recommend", + //报名 + apply="apply", + //参与 + join="join", + //完成 + complete="complete", + //好友验证 + friend="friend" } interface Type1{ diff --git a/src/my/SeekHelp.tsx b/src/my/SeekHelp.tsx index 6e74e1e..3cd7842 100644 --- a/src/my/SeekHelp.tsx +++ b/src/my/SeekHelp.tsx @@ -1,6 +1,6 @@ import React from "react"; import {Button, ButtonGroup, Col, Container, Image, ListGroup, Row} from "react-bootstrap"; -import {SeekHelpState, User} from "../entity"; +import {SeekHelpState, User, VolunteerStatus} from "../entity"; import moment from "moment"; import Dialog from "@material-ui/core/Dialog"; import {CloseDialog} from "../ui/CloseDialog"; @@ -10,15 +10,6 @@ import {MyDialog} from "../ui/MyDialog"; import {MyInfo} from "./MyInfo"; import {userObj} from "../ui/TestData"; -/** - * 志愿者状态 - */ -enum VolunteerStatus { - apply="报名", - join="参加", - complete="完成" -} - const titleId="seek-help-dialog" /** @@ -28,7 +19,7 @@ export class SeekHelp extends React.Component<{ user:string }, { data:Array; open:boolean; - status?:VolunteerStatus; + status?:string; volunteerList?:Array; openUserInfo:boolean; userId?:string; @@ -93,6 +84,14 @@ export class SeekHelp extends React.Component<{ user:string }, } + getStatus(status:VolunteerStatus){ + switch (status) { + case VolunteerStatus.apply:return "报名" + case VolunteerStatus.join:return "参加" + case VolunteerStatus.complete:return "完成" + } + } + render() { return (
@@ -114,9 +113,9 @@ export class SeekHelp extends React.Component<{ user:string }, - - - + + + diff --git a/src/result.ts b/src/result.ts index ddd8b40..7ca4a34 100644 --- a/src/result.ts +++ b/src/result.ts @@ -4,6 +4,27 @@ import {JSONResponse, Result, TransformData} from "./interface"; import {ActivityDetail, PageProps, User, UserType} from "./entity"; +/** + * 空body响应 + */ +export enum SimpleMessage { + //操作失败 + ok="ok", + //操作成功 + fail="fail" +} + +/** + * 空body响应 + */ +export class EmptyBodyTransform extends TransformData>{ + protected newObject(): JSONResponse { + return new JSONResponse(); + } +} + +export abstract class EmptyBodyDiffMsg extends TransformData>{} + /** * 注册响应信息 */ @@ -18,21 +39,13 @@ export enum RegisterMessage { form_parse_error = "form_parse_error" } -/** - * 注册响应实体 - */ -export class RegisterRes implements JSONResponse { - customResult?: RegisterMessage; - result?: Result; - -} /** * 注册响应结果转换 */ -export class RegisterTransform extends TransformData { - protected newObject(): RegisterRes { - return new RegisterRes(); +export class RegisterTransform extends EmptyBodyDiffMsg{ + protected newObject(): JSONResponse { + return new JSONResponse(); } } @@ -74,59 +87,24 @@ export class LoginTransform extends TransformData{ } } -/** - * 发布求助信息结果 - */ -export enum ActivityMessage { - //发布成功 - ok="ok", - //发布失败请联系管理员 - fail="fail" -} - -/** - * 发布求助信息响应实体 - */ -export class SendHelpRes extends JSONResponse{ - -} - -/** - * 发布求助信息响应结果转换 - */ -export class SendHelpTransform extends TransformData{ - protected newObject(): SendHelpRes { - return new SendHelpRes(); - } -} /** - * 查询活动列表结果 + * 分页数据转换 */ -export enum FindActivityMessage { +export enum PageDataMessage { ok="ok", fail="fail", - // 空数据 + //空数据 empty="empty" } -/** - * 查询活动列表响应实体 - */ -export class FindActivityRes extends JSONResponse{ - dataList?:Array> - page?:PageProps +export abstract class PageDataRes extends JSONResponse{ + dataList?:any; + page?:PageProps; } -/** - * 活动列表数据转换 - */ -export class FindActivityTransform extends TransformData{ - protected newObject(): FindActivityRes { - return new FindActivityRes(); - } - +export abstract class PageDataTransform extends TransformData{ protected transformBody(data: any) { if(data.body!==null){ @@ -141,19 +119,29 @@ export class FindActivityTransform extends TransformData> + page?:PageProps } +/** + * 活动列表数据转换 + */ +export class FindActivityTransform extends PageDataTransform{ + protected newObject(): FindActivityRes { + return new FindActivityRes(); + } +} + + /** * 用户信息实体 */ -export class FindUserRes extends JSONResponse{ +export class FindUserRes extends PageDataRes{ dataList?:Array> page?:PageProps } @@ -161,42 +149,27 @@ export class FindUserRes extends JSONResponse{ /** * 用户数据转换 */ -export class FindUserTransform extends TransformData{ +export class FindUserTransform extends PageDataTransform{ protected newObject(): FindUserRes { return new FindUserRes(); } - - protected transformBody(data: any) { - if(data.body!==null){ - this.target.dataList=data.body.body - this.target.page={ - currentPage:data.body.currentPage, - totalPage:data.body.totalPage, - pageSize:data.body.pageSize - } - } - - } -} - -export enum ActivityDetailMessage { - ok="ok", - fail="fail" } -export class ActivityDetailRes extends JSONResponse{ +export class ActivityDetailRes extends JSONResponse{ activity?:ActivityDetail } -export class ActivityDetailTransform extends TransformData{ +export class ActivityDetailTransform extends TransformData{ protected newObject(): ActivityDetailRes { return new ActivityDetailRes(); } - protected transformBody(data: any) { this.target.activity=data.body } } + + + diff --git a/src/sub/IndexMenu.tsx b/src/sub/IndexMenu.tsx index d938831..a77c95f 100644 --- a/src/sub/IndexMenu.tsx +++ b/src/sub/IndexMenu.tsx @@ -2,18 +2,19 @@ import React from "react"; import {Button, Card, Col, Container, Image, ListGroup, Row} from "react-bootstrap"; import {Page} from "../ui/Page"; -import {ActivityDetail, PageProps} from "../entity"; +import {ActivityDetail, PageProps, VolunteerStatus} from "../entity"; import {MyDialog} from "../ui/MyDialog"; import {Activity} from "../ui/Activity"; import {Input} from "../ui/InputGroup"; -import {API, Method, prefix, request} from "../interface"; +import {API, JSONResponse, Method, prefix, request} from "../interface"; import { - ActivityDetailMessage, ActivityDetailRes, ActivityDetailTransform, - FindActivityMessage, + EmptyBodyTransform, FindActivityRes, - FindActivityTransform + FindActivityTransform, + PageDataMessage, + SimpleMessage } from "../result"; /** @@ -57,6 +58,32 @@ export class IndexMenu extends React.Component<{ user:string }, console.debug("报名活动"+activityId) } + /** + * 报名活动 + * @param activityId 活动id + */ + apply(activityId:number){ + console.debug("报名id"+activityId) + + let that=this + + request(API.main.activity.apply,Method.POST,{ + activityId:activityId+"", + activityStatus:VolunteerStatus.join.toString() + },new EmptyBodyTransform(),function (res:JSONResponse) { + switch (res.customResult) { + case SimpleMessage.ok: + that.setState({ + result:

报名成功

+ });break + case SimpleMessage.fail: + that.setState({ + result:

报名失败,请联系管理员

+ });break + } + }) + } + /** * 查找活动 * @param activityId @@ -67,11 +94,11 @@ export class IndexMenu extends React.Component<{ user:string }, let that=this request(API.main.activity.find+"/"+activityId,Method.GET,{},new ActivityDetailTransform(),function(res:ActivityDetailRes){ switch (res.customResult) { - case ActivityDetailMessage.fail: + case SimpleMessage.fail: that.setState({ result:

活动详情加载失败,请联系管理员

});break; - case ActivityDetailMessage.ok: + case SimpleMessage.ok: that.setState({ openActivity:true, activity:res.activity @@ -91,16 +118,16 @@ export class IndexMenu extends React.Component<{ user:string }, switch(res.customResult){ - case FindActivityMessage.fail: + case PageDataMessage.fail: that.setState({ result:

活动加载失败,请联系管理员

});break; - case FindActivityMessage.ok: + case PageDataMessage.ok: that.setState({ activityList:res.dataList, page:res.page });break - case FindActivityMessage.empty: + case PageDataMessage.empty: that.setState({ page:res.page, result:

当前没有活动记录!!!

@@ -130,7 +157,7 @@ export class IndexMenu extends React.Component<{ user:string }, - + )} diff --git a/src/sub/SendHelp.tsx b/src/sub/SendHelp.tsx index 45995bd..75be812 100644 --- a/src/sub/SendHelp.tsx +++ b/src/sub/SendHelp.tsx @@ -8,8 +8,8 @@ import moment from 'moment'; import {Address} from "../ui/Address"; import {UploadImg} from "../ui/UploadImg"; import {userObj} from "../ui/TestData"; -import {API, Method, request} from "../interface" -import {ActivityMessage, SendHelpRes, SendHelpTransform} from "../result"; +import {API, JSONResponse, Method, request} from "../interface" +import {EmptyBodyTransform, SimpleMessage} from "../result"; import {MyDialog} from "../ui/MyDialog"; /** @@ -91,13 +91,13 @@ export class SendHelp extends React.Component<{ onSendActivityOK:Function }, Sen activityEndTime:this.state.activityEndTime, activityImgFile:this.state.activityImgFile, serviceAddress:this.state.serviceAddress - },new SendHelpTransform(),function (res:SendHelpRes) { + },new EmptyBodyTransform(),function (res:JSONResponse) { switch (res.customResult) { - case ActivityMessage.ok: + case SimpleMessage.ok: that.setState({ result:
});break - case ActivityMessage.fail: + case SimpleMessage.fail: that.setState({ result:

发布失败

});break diff --git a/src/sub/Volunteer.tsx b/src/sub/Volunteer.tsx index 5843815..1dde750 100644 --- a/src/sub/Volunteer.tsx +++ b/src/sub/Volunteer.tsx @@ -5,7 +5,7 @@ import {PageProps, User} from "../entity"; import {Page} from "../ui/Page"; import {Address} from "../ui/Address"; import {API, Method, request} from "../interface" -import {FindUserMessage, FindUserRes, FindUserTransform} from "../result"; +import {FindUserRes, FindUserTransform, PageDataMessage} from "../result"; import {MyDialog} from "../ui/MyDialog"; /** @@ -48,7 +48,7 @@ export class Volunteer extends React.Component<{ undefined?:undefined }, request(API.account.find+'?info='+this.state.form.keyword+'&serviceAddress='+this.state.form.serviceAddress +'¤tPage='+page+'&userTypes=seekHelp',Method.GET,{},new FindUserTransform(),function(res:FindUserRes){ switch (res.customResult) { - case FindUserMessage.ok: + case PageDataMessage.ok: that.setState({ volunteerList:res.dataList, form:{ @@ -57,7 +57,7 @@ export class Volunteer extends React.Component<{ undefined?:undefined }, } }) break - case FindUserMessage.fail: + case PageDataMessage.fail: that.setState({ form:{ keyword:that.state.form.keyword, @@ -65,7 +65,7 @@ export class Volunteer extends React.Component<{ undefined?:undefined }, }, result:

志愿者搜索失败,请联系管理员

});break - case FindUserMessage.empty: + case PageDataMessage.empty: that.setState({ result:

当前没有任何志愿者!!!

});break diff --git a/src/ui/TestData.ts b/src/ui/TestData.ts index 87d0074..6c32070 100644 --- a/src/ui/TestData.ts +++ b/src/ui/TestData.ts @@ -24,9 +24,36 @@ export const userObj={ export const activityObj={ activityId:0, + userId:"123", title:"活动标题1", content:"活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动活动内容活动内容活动", activityImg:"logo512.png", activityStartTime:new Date().getTime(), activityEndTime:new Date().getTime() } + +export const myActivityObj={ + //活动Id + activityId:123, + userId:"123", + //活动标题 + title:"活动标题", + //活动内容 + content:"活动内容", + //活动背景图 + activityImg: "logo512.png", + //求助时间 + seekHelpTime:new Date().getTime(), + //活动开始时间 + activityStartTime:new Date().getTime(), + //活动结束时间 + activityEndTime:new Date().getTime(), + //报名时间 + applyTime:new Date().getTime(), + //参与时间 + joinTime:new Date().getTime(), + //完成时间 + completeTime:new Date().getTime(), + //活动评价分 + score: Math.ceil(Math.random()*10), +}