diff --git a/public/images/educoder/project_packagesHead.png b/public/images/educoder/project_packagesHead.png new file mode 100644 index 00000000..1f51b863 Binary files /dev/null and b/public/images/educoder/project_packagesHead.png differ diff --git a/public/react/src/common/UnitUtil.js b/public/react/src/common/UnitUtil.js index 08794a00..8b115dff 100644 --- a/public/react/src/common/UnitUtil.js +++ b/public/react/src/common/UnitUtil.js @@ -1,6 +1,6 @@ export function bytesToSize(bytes) { - var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; - if (bytes == 0) return '0 Byte'; - var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); - return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i]; + var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; + if (bytes == 0) return '0 Byte'; + var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); + return parseFloat(bytes / Math.pow(1024, i), 2).toFixed(1) + ' ' + sizes[i]; } \ No newline at end of file diff --git a/public/react/src/index.js b/public/react/src/index.js index 60cffac0..77946ce0 100644 --- a/public/react/src/index.js +++ b/public/react/src/index.js @@ -40,7 +40,7 @@ window.__useKindEditor = false; var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" // proxy = "http://testbdweb.educoder.net" - proxy = 'http://192.168.2.63:3001' +// proxy = 'http://192.168.2.63:3001' // proxy='https://www.educoder.net' const requestMap={}; // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; diff --git a/public/react/src/modules/projectPackages/PackageIndex/PackageBanner.js b/public/react/src/modules/projectPackages/PackageIndex/PackageBanner.js index 18c5ec20..bc5aee52 100644 --- a/public/react/src/modules/projectPackages/PackageIndex/PackageBanner.js +++ b/public/react/src/modules/projectPackages/PackageIndex/PackageBanner.js @@ -16,7 +16,7 @@ class PackageBanner extends Component { render() { return ( -
+
) } } diff --git a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js index bac7b71f..8e5bc4bd 100644 --- a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js +++ b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js @@ -197,7 +197,7 @@ class PackageConcent extends Component { {project_packages&&project_packages.map((item,key)=>{ return( -
+
@@ -257,6 +257,11 @@ class PackageConcent extends Component {
) })} + {project_packages&&project_packages.length===0?
+
+ +

暂无数据哦~

+
:""}
diff --git a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/NEITaskDetailsModel.js b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/NEITaskDetailsModel.js new file mode 100644 index 00000000..16e22dae --- /dev/null +++ b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/NEITaskDetailsModel.js @@ -0,0 +1,41 @@ +import React, { Component } from 'react'; +import { Spin, Icon , Modal,Input,Button} from 'antd'; +class NEITaskDetailsModel extends Component { + + constructor(props) { + super(props); + this.state = { + + } + } + + render() { + + return( + +
+

+

{this.props.applyvalue}
+
{this.props.applybottom}
+

+
+ 取消 + 确定 +
+ +
+
+ ) + } +} + +export default NEITaskDetailsModel; \ No newline at end of file diff --git a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js index b9ea18cc..9e45f351 100644 --- a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js +++ b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js @@ -2,148 +2,155 @@ import React, {Component} from 'react'; import {Link} from "react-router-dom"; import axios from 'axios'; import { Input ,Icon,Button,Pagination,DatePicker,Breadcrumb} from 'antd'; -import { handleDateString,markdownToHTML} from 'educoder'; -import locale from 'antd/lib/date-picker/locale/zh_CN'; -import MDEditors from '../MDEditors'; -import PhoneModel from '../PackageIndexNewandEdit/PhoneModel'; +import { handleDateString,markdownToHTML,bytesToSize} from 'educoder'; +import NEITaskDetailsModel from './NEITaskDetailsModel'; +import moment from 'moment'; import '../packageconcnet.css'; import './pds.css' import gouxuan from './img/gouxuan.png' import weigouxuan from './img/weigouxuan.png' const { Search } = Input; +let categorylist=[ + {name:"全部",value:undefined}, + {name:"前端开发",value:"front"}, + {name:"后端开发",value:"backend"}, + {name:"移动开发",value:"mobile"}, + {name:"数据库",value:"database"}, + {name:"云计算和大数据",value:"cloud_compute_and_big_data"}, + {name:"人工智能",value:"ai"}, + {name:"其他",value:"other"}, +] + +function setcategorylist(val){ + let vals="" + categorylist.some((item,key)=> { + if (item.value === val) { + vals=item.name + return true + } + } + ) + + return vals +} class PackageIndexNEITaskDetails extends Component { constructor(props) { super(props) this.contentMdRef = React.createRef(); this.state = { + data:undefined, modalCancel: false, overtype:false, - gouxuans1: [{id: 1, name: "前端开发", bool: false, url: ""}, {id: 2, name: "后端开发", bool: false, url: ""}, { - id: 3, - name: "移动开发", - bool: false, - url: "" - }, {id: 4, name: "数据库", bool: false, url: ""}, {id: 5, name: "云计算和大数据", bool: false, url: ""}, { - id: 6, - name: "运维与测试", - bool: false, - url: "" - }, {id: 7, name: "人工智能", bool: false, url: ""}, {id: 8, name: "其他", bool: false, url: ""}, { - id: 9, - name: "人工智能9", - bool: false, - url: "" - }, {id: 10, name: "其他10", bool: false, url: ""}, {id: 1, name: "其他10", bool: false, url: ""}], - gouxuans2: [{id: 1, name: "前端开发", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 2, - name: "后端开发", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 3, name: "移动开发", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 4, - name: "数据库", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 5, name: "云计算和大数据", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 6, - name: "运维与测试", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 7, name: "人工智能", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 8, - name: "其他", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 9, name: "人工智能9", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 10, - name: "其他10", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 11, name: "其他10", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id:12, - name: "前端开发", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 13, name: "后端开发", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 14, - name: "移动开发", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 15, name: "数据库", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 16, - name: "云计算和大数据", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 17, name: "运维与测试", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 18, - name: "人工智能", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 19, name: "其他", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 20, - name: "人工智能9", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1" - }, {id: 21, name: "其他10", bool: false, url: "https://www.educoder.net/images/avatars/User/1"}, { - id: 22, - name: "其他10", - bool: false, - url: "https://www.educoder.net/images/avatars/User/1"},], - - - + setbiddingmantype:false, + datalist:[] } } -; + componentDidMount() { + let url =`/api/v1/project_packages/${this.props.match.params.id}.json`; + axios.get(url).then((response) => { + this.setState({ + data:response.data + }) + }).catch((error) => { + console.log(error); - } + }) - setclick=()=>{ - const mdContnet = this.contentMdRef.current.getValue().trim(); - console.log(mdContnet) } - onChangeTimePicker = (value, dateString) => { - this.setState({ - TimePickervalue: dateString + + + setbiddingman=()=>{ + this.setState({ + setbiddingmantype:true }) } - setPublication=()=>{ - this.props.setPublicationfun() + notsetbiddingman=()=>{ + let {data} =this.state; + let gouxuans2=data.bidding_users + for (var i=0;i{ this.setState({ modalCancel:false }) } - editmodels=()=>{ + setbiddingusers=()=>{ + let{datalist}=this.state; + if(datalist.length>0){ + this.setState({ + applytype:true, + applyvalue:`选择的${datalist.length}个竞标者将被设定为“中标”`, + applybottom:"是否确认执行?", + applycancel:this.setApplycancel, + applyconfirm:this.setApplysumbit + }) + } + + } + + setApplysumbit=()=>{ this.setState({ - modalCancel:true + applytype:false, + }) + let{datalist}=this.state; + let newlist=[]; + datalist.map((item,key)=>{ + newlist.push(item.id) + }) + + + let url=`/api/v1/project_packages/${this.props.match.params.id}/bidding_users/win.json`; + axios.post(url,{ + user_ids:newlist + }).then((response) => { + if(response.data.status===0){ + this.props.showSnackbar("提交成功"); + } + }).catch((error) => { + console.log(error) }) + } + + Clickteacher2=(e)=>{ - let {gouxuans2} =this.state; + let {data} =this.state; + let newlist=[] + let gouxuans2=data.bidding_users for (var i=0;i{ + this.setState({ + applytype:true, + applyvalue:"是否确认删除?", + applycancel:this.setApplycancel, + applyconfirm:this.setApplydelect + }) + } + + setApplydelect=()=>{ + this.setState({ + applytype:false, + }) + let url=`/project_packages/${this.props.match.params.id}.json`; + axios.delete(url ).then((response) => { + // const status = response.data.status + console.log(response) + this.props.showSnackbar('删除成功'); + }).catch((error) => { + console.log(error) + }) + } + + setBiddingApply=()=>{ + this.setState({ + applytype:true, + applyvalue:"是否确认报名?", + applycancel:this.setApplycancel, + applyconfirm:this.setApplyconfirm + }) + } + + setApplycancel=()=>{ + this.setState({ + applytype:false, + }) + } + + setApplyconfirm=()=>{ + this.setState({ + applytype:false, + }) + let url=`/api/v1/project_packages/${this.props.match.params.id}/bidding_users.json`; + axios.post(url).then((response) => { + if(response.data.status===0){ + this.props.showSnackbar(response.data.message); + } + }).catch((error) => { + console.log(error) + }) + + } + goback = () => { + window.history.go(-1) + } + render() { - let {overtype}=this.state; - // console.log(overtype) - let {gouxuans2}=this.state; + let {overtype,data}=this.state; + console.log(data) + console.log(this.props) return (
+
- '}> - admin + '} className={"fl"}> + {this.props.current_user.login} 任务大厅 详情 - + + 返回

@@ -183,37 +255,34 @@ class PackageIndexNEITaskDetails extends Component {

-
+ {data&&data.status==="pending"?
未申请 -
- - {/*
*/} - {/*
*/} - {/**/} - {/* 待发布 */} - {/*
*/} +
:data&&data.status==="applying"?
+
+ + 待发布 +
:""}
-
- 张三 + {data&&data.creator.name}
-
- {overtype===false? 头像联系TA: - 头像 头像联系TA: + 头像联系TA} -
+
:""}
@@ -224,29 +293,28 @@ class PackageIndexNEITaskDetails extends Component { -
-
人工智能
+
+
{setcategorylist(data&&data.category)}
- 发布时间:2019-03-05 12:23 + 发布时间:{moment(data&&data.published_at).format("YYYY-MM-DD HH:mm")}
- 竞标截止时间:2019-09-12 24:00 + 竞标截止时间:{moment(data&&data.deadline_at).format("YYYY-MM-DD HH:mm")}
@@ -263,40 +331,37 @@ class PackageIndexNEITaskDetails extends Component {
需求详情: - 编辑 - 删除 + + {data&&data.status==="pending"&&data&&data.operation.can_select_bidding_user===true?
+ 编辑 + 删除 +
:""} +
- 每天电视上都有好多产品在电视上卖,有美白,减肥,健身腰带,面膜,还有让头发变黑的产品,**产品,这些都是怎样在电视上打广告的,是和电视台分成还是直接付广告 - 费,要是想做电视购物应该做哪些准备 应该找哪些负责任人 一个产品想做电视购物在电视上卖,大概需要投资多少钱,请知道的朋友说详细些越详细越好。 +
- {/*
*/} +
-
+ {data&&data.attachments.length>0? + {data&&data.attachments.map((item,key)=>{ + return( + + )})} +
:""}
{/*发布者和竞选者状态show*/} -
+ {this.state.setbiddingmantype===false?
{/*下面是头像*/}
@@ -304,8 +369,10 @@ class PackageIndexNEITaskDetails extends Component { 报名列表(12)
- - + {data&&data.operation.can_bidding===true?:""} + {data&&data.operation.can_select_bidding_user===true?:""} + +
@@ -314,26 +381,23 @@ class PackageIndexNEITaskDetails extends Component {
- {gouxuans2&&gouxuans2.map((item,key)=>{ + + {data&&data.bidding_users.map((item,key)=>{ return( ) })}
-
- - - - {/*发布人选择状态*/} -
+
: -
+
}

@@ -381,3 +445,53 @@ class PackageIndexNEITaskDetails extends Component { } export default PackageIndexNEITaskDetails; + + +// let data ={ +// id:1, +// title:"卡巴的审批服务", +// content:"年品牌将案件的步伐我就能发就爱看你的是否", +// category:"ai", +// status:"published", +// published_at:"2019-07-09T01:49:19Z", +// deadline_at:"2019-07-09T01:49:19Z", +// min_price:"1000.00", +// max_price:"2000.00", +// contact_name:"张三", //自己或者管理员才返回 +// contact_phone:"13111111111", //自己或者管理员才返回 +// creator:{ +// id:1, +// login:"xxx", +// name:"xxx", +// avatar_url:"/axxx" +// }, +// attachments:[ +// { +// id: 206525, +// title: "412420b57ed8c141963d4c548bde551f", +// filesize: 18523, +// description: null, +// url: "/api/attachments/206525" +// } +// ], +// bidding_users: [ +// { +// id: 1, +// login: "xxx", +// name: "xxx", +// avatar_url: "/axxx", +// status: "pendding" +// } +// ], +// operation:{ +// can_bidding: false, +// can_select_bidding_user: false, +// can_edit: false, +// can_delete: false, +// } +// } +// +// this.setState({ +// data:data +// }) + diff --git a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/pds.css b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/pds.css index 031d617c..7d699763 100644 --- a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/pds.css +++ b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/pds.css @@ -8,7 +8,7 @@ .ysllogin_register_contents{ display: flex; margin-top: 20px; - justify-content: center; + /*justify-content: center;*/ background: #fff; } diff --git a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js index ae1d98ce..b8449bd7 100644 --- a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js +++ b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js @@ -1,8 +1,8 @@ import React, {Component} from 'react'; import {Link} from "react-router-dom"; import axios from 'axios'; -import { Input ,Icon,Button,Pagination,DatePicker} from 'antd'; -import { handleDateString,getUrl} from 'educoder'; +import { Input , Spin, Icon ,Button,Pagination,DatePicker} from 'antd'; +import { handleDateString,getUrl,bytesToSize} from 'educoder'; import locale from 'antd/lib/date-picker/locale/zh_CN'; import MDEditors from '../MDEditors'; import PhoneModel from './PhoneModel'; @@ -20,6 +20,15 @@ if (!window.postUpMsg) { }); } + + +function checkPhone(phone){ + + if(!(/^1[3456789]\d{9}$/.test(phone))){ + // alert("手机号码有误,请重填"); + return false; + } +} class PackageIndexNEIBannerConcent extends Component { constructor(props) { super(props) @@ -28,7 +37,7 @@ class PackageIndexNEIBannerConcent extends Component { modalCancel:false, getverificationcodes:true, seconds:35, - + springtype:false, category:undefined, title:undefined, content:undefined, @@ -40,11 +49,42 @@ class PackageIndexNEIBannerConcent extends Component { contact_phone:undefined, code:undefined, publish:false, + attachments:[ + { + id: 206525, + title: "412420b57ed8c141963d4c548bde551f", + filesize: 18523, + description: null, + url: "/api/attachments/206525" + } + ] } } componentDidMount() { + if(this.props.match.params.id!=undefined){ + + let url=`/api/v1/project_packages/${this.props.match.params.id}.json` + axios.get((url)).then((response) => { + console.log(response) + let data=response.data + this.setState({ + category:data.category, + title:data.title, + content:data.content, + deadline_at:moment(data.deadline_at), + min_price:data.min_price, + max_price:data.max_price, + contact_name:data.contact_name, + contact_phone:data.contact_phone, + attachments:data.attachments, + }) + }).catch((error) => { + console.log(error); + + }) + } // this.contentMdRef.current.setValue("测试赋值") } @@ -135,29 +175,205 @@ class PackageIndexNEIBannerConcent extends Component { publish:type }) let types=type; - let {category,title,attachment_ids,deadline_at,min_price,max_price,contact_name,contact_phone,code}=this.state; - const url = `/api/v1/project_packages.json`; - - axios.post(url, { - category: category, - title: title, - content: content, - attachment_ids: attachment_ids, - deadline_at:deadline_at._i, - min_price:min_price, - max_price:max_price, - contact_name: contact_name, - contact_phone: contact_phone, - code:code, - publish:types + let {category,title,attachment_ids,deadline_at,min_price,max_price,contact_name,contact_phone,code,modalCancel}=this.state; + + if(category===undefined||category===null||category===""){ + this.setState({ + categorytypes:true + }) + this.scrollToAnchor("publishtimestart"); + return + } + + if(title===undefined||title===null||title===""){ + this.setState({ + titletypes:true + }) + this.scrollToAnchor("publishtimestart"); + return + } + + if(content===undefined||content===null||content===""){ + this.setState({ + contenttypes:true + }) + this.scrollToAnchor("publishtimestart"); + return + } + + if(deadline_at===undefined||deadline_at===null||deadline_at===""){ + this.setState({ + deadline_attypes:true + }) + this.scrollToAnchor("publishtime"); + return + } + + + if(moment(deadline_at) { - if(response.data.status===0){ - this.props.setPublicationfun(response.data.id) + + if(checkPhone(contact_phone)===false){ + this.setState({ + contact_phonetypes:true + }) + return } - }).catch((error) => { - console.log(error) + + if(code===undefined||code===""||code===null){ + this.setState({ + codeypes:true + }) + return + } + } + + this.setState({ + springtype:true }) + if(this.props.match.params.id===undefined){ + const url = `/api/v1/project_packages.json`; + + axios.post(url, { + category: category, + title: title, + content: content, + attachment_ids: attachment_ids, + deadline_at:deadline_at._i, + min_price:parseInt(min_price), + max_price:parseInt(max_price), + contact_name: contact_name, + contact_phone: contact_phone, + code:code, + publish:types + } + ).then((response) => { + if(response.data.status===0){ + if(type===true){ + this.props.setPublicationfun(response.data.id) + }else{ + window.location.href="/project_packages/"+response.data.id + } + this.setState({ + springtype:false + }) + }else if(response.data.status===-1){ + if(response.data.message==="无效的验证码"){ + this.setState({ + codeypesno:true, + springtype:false + }) + } + } + this.setState({ + springtype:false + }) + }).catch((error) => { + console.log(error) + this.setState({ + springtype:false + }) + }) + + + }else{ + + // edit + + const url = `/api/v1/project_packages/${this.props.match.params.id}.json`; + + axios.put(url, { + category: category, + title: title, + content: content, + attachment_ids: attachment_ids, + deadline_at:deadline_at._i, + min_price:parseInt(min_price), + max_price:parseInt(max_price), + contact_name: contact_name, + contact_phone: contact_phone, + code:code, + publish:types + } + ).then((response) => { + if(response.data.status===0){ + if(type===true){ + this.props.setPublicationfun(response.data.id) + }else{ + window.location.href="/project_packages/"+response.data.id + } + + }else if(response.data.status===-1){ + if(response.data.message==="无效的验证码"){ + this.setState({ + codeypesno:true + }) + } + } + }).catch((error) => { + console.log(error) + }) + + + } @@ -221,8 +437,18 @@ class PackageIndexNEIBannerConcent extends Component { }) } + //跳转道描点的地方 + scrollToAnchor = (anchorName) => { + if (anchorName) { + // 找到锚点 + let anchorElement = document.getElementById(anchorName); + // 如果对应id的锚点存在,就跳转到锚点 + if(anchorElement) { anchorElement.scrollIntoView(); } + } + } + render() { - let {modalCancel,seconds,getverificationcodes,attachments_url, + let {modalCancel,seconds,getverificationcodes,attachments, category,title}=this.state; let categorylist=[ {name:"前端开发",value:"front"}, @@ -233,22 +459,23 @@ class PackageIndexNEIBannerConcent extends Component { {name:"人工智能",value:"ai"}, {name:"其他",value:"other"}, ] - console.log(this.props) return ( -
+ +
{/**/} -

+ +

-

+
-

+

{categorylist.map((item,key)=>{ return( @@ -257,7 +484,7 @@ class PackageIndexNEIBannerConcent extends Component { })}

-
请选择类型
+ {this.state.categorytypes===true?
请选择类型
:""}
-
+
@@ -330,9 +562,9 @@ class PackageIndexNEIBannerConcent extends Component { onChange={this.onChangeTimePicker} /> -
不能为空
+ {this.state.deadline_attypes===true?
不能为空
:""} -
不能早于当前时间
+ {this.state.deadline_attypexy===true?
不能早于当前时间
:""}

支付费用: @@ -358,9 +590,9 @@ class PackageIndexNEIBannerConcent extends Component { ¥ } /> -

不能为空
-
不能小于零
-
最高费用不能小于最低费用
+ {this.state.min_pricetype===true?
不能为空
:""} + {this.state.smallstype===true?
不能小于零
:""} + {this.state.minmaxtype===true?
最高费用不能小于最低费用
:""}

@@ -374,14 +606,14 @@ class PackageIndexNEIBannerConcent extends Component { placeholder="请输入姓名" onInput={this.onChangeContact_name} /> -
不能为空
+ {this.state.contact_nametype===true?
不能为空
:""}

{modalCancel===false?

手机号: @@ -389,7 +621,7 @@ class PackageIndexNEIBannerConcent extends Component { this.editmodels()}>

:""} - + {this.state.current_userphonetype===true?
不能为空
:""} {modalCancel===true?

@@ -403,8 +635,8 @@ class PackageIndexNEIBannerConcent extends Component { placeholder="请输入手机号码" onInput={this.onChangeContact_phone} /> -

不能为空
-
请输入正确的手机号
+ {this.state.contact_phonetype===true?
不能为空
:""} + {this.state.contact_phonetypes===true?
请输入正确的手机号
:""} @@ -419,8 +651,8 @@ class PackageIndexNEIBannerConcent extends Component { onSearch={()=>this.getverificationcode()} onInput={this.onChangeCode} /> -
验证码不能为空
-
验证码不正确
+ {this.state.codeypes===true?
验证码不能为空
:""} + {this.state.codeypesno===true?
验证码不正确
:""}
{/**/} @@ -440,7 +672,9 @@ class PackageIndexNEIBannerConcent extends Component { this.setPublication(false)}>保存
+
+ ) } } diff --git a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js index 2e66bf7d..1059bc34 100644 --- a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js +++ b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js @@ -18,7 +18,7 @@ class PackageIndexNewandEditIndex extends Component{ } componentDidMount(){ - console.log(this.props) + } setPublicationfun=(ids)=>{ this.setState({ @@ -34,7 +34,8 @@ class PackageIndexNewandEditIndex extends Component{ {setPublication===false?

- 新建 + + {this.props.match.params.id!=undefined?"编辑":"新建"}

diff --git a/public/react/src/modules/projectPackages/ProjectPackageIndex.js b/public/react/src/modules/projectPackages/ProjectPackageIndex.js index 43b02a66..73dd1719 100644 --- a/public/react/src/modules/projectPackages/ProjectPackageIndex.js +++ b/public/react/src/modules/projectPackages/ProjectPackageIndex.js @@ -32,13 +32,13 @@ class ProjectPackageIndex extends Component { } render() { - console.log(this.props) + return (
{/*众包首页*/} - + () diff --git a/public/react/src/modules/projectPackages/packageconcnet.css b/public/react/src/modules/projectPackages/packageconcnet.css index 8f4086ea..019554a6 100644 --- a/public/react/src/modules/projectPackages/packageconcnet.css +++ b/public/react/src/modules/projectPackages/packageconcnet.css @@ -85,15 +85,15 @@ background:rgba(76,172,255,1); } -.upload_filename{ +.newFormbox .upload_filename{ line-height: 32px; } -.attachment span{ +.newFormbox .attachment span{ line-height: 23px; } -.attachment .remove-upload{ +.newFormbox .attachment .remove-upload{ line-height: 28px; } @@ -101,9 +101,10 @@ padding: 30px 30px 0 30px; } -.attachment .icon-fujian{ - font-size: 12px !important; +.newFormbox .attachment .icon-fujian{ + font-size: 14px !important; line-height: 14px; + margin-top: 9px; } .newFormbox{ @@ -280,7 +281,7 @@ position: relative; } -.homehove:hover span{ +.homehove:hover .ptext{ color: #4CACFF!important; } @@ -295,4 +296,7 @@ .bottomsj{ position: absolute; bottom: -4px; +} +.touchSelect .ant-spin-dot-spin{ + margin-top: 30% !important; } \ No newline at end of file diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css index fa322449..ade4b028 100644 --- a/public/stylesheets/educoder/edu-all.css +++ b/public/stylesheets/educoder/edu-all.css @@ -464,7 +464,8 @@ li.li-width7{width: 7%;text-align: left} .top-black-trangle{display: block;border-width: 8px;position: absolute;top: -16px;right: 4px;border-style: dashed solid dashed dashed;border-color: transparent transparent rgba(5,16,26,0.6) transparent;font-size: 0;line-height: 0;} .right-black-trangle{display: block;border-width: 8px;position: absolute;top: 10px;right: -16px;border-style: dashed solid dashed dashed;border-color: transparent transparent transparent rgba(5,16,26,0.6);font-size: 0;line-height: 0;} .activity-nav.active{color: #4CACFF!important;} - +.project_packagesHead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/project_packagesHead.png");height: 240px; + justify-content: center;align-items: center;display: -webkit-flex;} .courseNewNum{display: block;background: #FF6800;border-radius:30px;padding:0px 2px;color: #fff!important;font-size: 11px; height: 16px;line-height: 15px;min-width: 12px;text-align: center;margin-top: 17px;}