)
})}
+ {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}
-
+
:""}
@@ -224,29 +293,28 @@ class PackageIndexNEITaskDetails extends Component {
- ¥8000.00~¥8000.00
+ ¥{data&&data.min_price}~¥{data&&data.max_price}
-
-
人工智能
+
+
{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(
)
})}
-
-
-
-
- {/*发布人选择状态*/}
-
+
:
+ {/*发布人选择状态*/}
{/*下面是头像*/}
@@ -343,10 +407,10 @@ class PackageIndexNEITaskDetails extends Component {
@@ -354,11 +418,11 @@ class PackageIndexNEITaskDetails extends Component {
- {gouxuans2&&gouxuans2.map((item,key)=>{
+ {data&&data.bidding_users.map((item,key)=>{
return(
this.Clickteacher2(item.id)}>
{item.bool===true?
:
}
-
+
{item.name}
)
@@ -366,7 +430,7 @@ class PackageIndexNEITaskDetails extends Component {
-
+
}
@@ -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?
请选择类型
:""}
@@ -265,11 +492,11 @@ class PackageIndexNEIBannerConcent extends Component {
-
不能为空
+ {this.state.titletypes===true?
不能为空
:""}
{/* 请求status 422 */}
-
不能为空
+ {this.state.contenttypes===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)}>保存 a>
+
+
)
}
}
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;}