forked from Gitlink/forgeplus-react
Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC2
This commit is contained in:
commit
bc37fa68af
|
@ -18,7 +18,7 @@ import moment from 'moment'
|
|||
import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles';
|
||||
import SiderBar from './forge/Component/SiderBar';
|
||||
import SiderBarHelp from './glcc/siderBarHelp';
|
||||
import GlccModal from './modules/glccModal';
|
||||
// import GlccModal from './modules/glccModal';
|
||||
|
||||
import { SnackbarHOC } from 'educoder';
|
||||
import { initAxiosInterceptors } from './AppConfig'
|
||||
|
@ -293,7 +293,7 @@ class App extends Component {
|
|||
<ConfigProvider locale={zhCN}>
|
||||
<MuiThemeProvider theme={theme}>
|
||||
<LoginDialog {...this.props} {...this.state} Modifyloginvalue={() => this.Modifyloginvalue()}></LoginDialog>
|
||||
<GlccModal />
|
||||
{/* <GlccModal /> */}
|
||||
{!pathName || (pathName && pathName.indexOf("glcc") === -1) ? <SiderBar /> : <SiderBarHelp/>}
|
||||
{/* <Router> */}
|
||||
<Switch>
|
||||
|
|
|
@ -92,7 +92,8 @@ function AddMember({getID,login,showNotification}){
|
|||
onClick={addCollaborator}
|
||||
className="ml15"
|
||||
>
|
||||
<Icon type="plus" size="16"></Icon>
|
||||
{/* <Icon type="plus" size="16"></Icon> */}
|
||||
<i className="iconfont icon-tianjiafangda mr3"></i>
|
||||
添加成员
|
||||
</Button>
|
||||
</div>
|
||||
|
|
|
@ -190,11 +190,11 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user:
|
|||
className='hoverNotice-body' // 外部添加className加以区分
|
||||
onPullRefresh={() => { setNoticePage(noticePage + 1); }} //触发加载ajax的function
|
||||
// type={2} // 传送加载组件的状态
|
||||
count={noticeUnreadList.length} // 数据当前的总数量
|
||||
count={noticeUnreadList&¬iceUnreadList.length} // 数据当前的总数量
|
||||
pageSize={10} //
|
||||
>
|
||||
{
|
||||
noticeUnreadList.map(item => {
|
||||
Array.isArray(noticeUnreadList)&& noticeUnreadList.map(item => {
|
||||
return (
|
||||
<div key={item.id + Math.random()} className="noticeCont-back" onClick={() => { readItem(item) }}>
|
||||
<div className={`noticeCont ${item.notification_url?'pointer':''}`}>
|
||||
|
|
|
@ -58,6 +58,8 @@ function CollaboratorMemberByLink({ projectsId, owner, project_id, author, showN
|
|||
if (document.execCommand('copy')) {
|
||||
document.execCommand('copy');
|
||||
setCopy(true);
|
||||
// copyEle.blur();
|
||||
document.getSelection().removeAllRanges();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,13 +79,14 @@ function CollaboratorMemberByLink({ projectsId, owner, project_id, author, showN
|
|||
id="inviteUrl"
|
||||
value={inviteUrl}
|
||||
readOnly
|
||||
addonAfter={<Button type='primary' onClick={inviteClick}>{copy ? '复制成功' : '复制链接'}</Button>} className='linkBox'
|
||||
addonAfter={<Button type='primary' className={`${copy?'success':''}`} onClick={inviteClick}>{copy ? '复制成功' : '复制链接'}</Button>} className='linkBox'
|
||||
/>
|
||||
<div className='tipBox mt25'>
|
||||
<div>注: </div>
|
||||
{/* <div>注: </div> */}
|
||||
<div className='ml5'>
|
||||
1、管理员可通过分享邀请链接的方式,邀请其他成员加入项目<br />
|
||||
2、若已勾选管理员审核选项,用户接收邀请后管理员可在个人主页中“待办事项”窗口审核成员审核信息,若不需要管理员审核,成员接收邀请后,将直接加入项目
|
||||
2、若已勾选管理员审核选项,用户接收邀请后管理员可在个人主页中“待办事项”窗口审核成员审核信息,若不需要管理员审核,成员接收邀请后,将直接加入项目<br />
|
||||
3、当前邀请链接有效期为三天
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -65,6 +65,15 @@
|
|||
}
|
||||
.addPanel{
|
||||
display: flex;
|
||||
|
||||
.icon-tianjiafangda{
|
||||
font-size: 16px !important;
|
||||
font-weight: bold;
|
||||
&+span{
|
||||
position: relative;
|
||||
top:-1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.red_btn{
|
||||
display: block;
|
||||
|
@ -255,11 +264,15 @@
|
|||
color:#151d40;
|
||||
}
|
||||
.tipBox{
|
||||
background-color:rgba(199, 209, 255, 0.17);
|
||||
// background-color:rgba(199, 209, 255, 0.17);
|
||||
color:#7e849e;
|
||||
padding: 20px 150px 20px 25px;
|
||||
// padding: 20px 150px 20px 25px;
|
||||
display: flex;
|
||||
}
|
||||
.success{
|
||||
background-color: #36cacf;
|
||||
border-color: #36cacf;
|
||||
}
|
||||
.linkBox{
|
||||
width: 55%;
|
||||
.ant-input-group-addon{
|
||||
|
|
|
@ -28,16 +28,19 @@ function Apply(props) {
|
|||
// 可用于开发时不同账号报名
|
||||
// current_user && (current_user.user_id = 6)
|
||||
// current_user && (current_user.userName = "创新使者")
|
||||
const isStudentApplyDate = new Date().getTime() > new Date('2022-05-26').getTime() && new Date().getTime() < new Date('2022-06-25 0:0').getTime();
|
||||
const studentApplyEnd = new Date().getTime() > new Date('2022-06-25 0:0').getTime();
|
||||
const isStudentApplyDate = new Date().getTime() > new Date('2022-06-29 01:00:00').getTime() && new Date().getTime() < new Date('2022-07-01 01:00:00').getTime();
|
||||
const studentApplyEnd = new Date().getTime() > new Date('2022-07-01 01:00:00').getTime();
|
||||
const { getFieldDecorator, validateFields, setFieldsValue, validateFieldsAndScroll } = form;
|
||||
const [imageUrl, setImageUrl] = useState(undefined);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [reload, setReload] = useState();
|
||||
const [locked, setLocked] = useState(false);
|
||||
const [userApplyInfo, setUserApplyInfo] = useState(undefined);
|
||||
const [editable, setEditable] = useState(isStudentApplyDate);
|
||||
const [files, setFiles] = useState([]);
|
||||
const [files1, setFiles1] = useState([]);
|
||||
const [files2, setFiles2] = useState([]);
|
||||
console.log('isStudentApplyDate:' + isStudentApplyDate)
|
||||
const initTask = {
|
||||
taskId,
|
||||
memo: '',
|
||||
|
@ -102,31 +105,40 @@ function Apply(props) {
|
|||
if (Array.isArray(data.registrationStudentTaskList)) {
|
||||
if (data.registrationStudentTaskList.length) {
|
||||
let initTaskList = [];
|
||||
let lockedCurrent = false;
|
||||
for (const [i, item] of data.registrationStudentTaskList.entries()) {
|
||||
applyInfo['memo' + i] = item.memo;
|
||||
applyInfo['taskId' + i] = item.taskId;
|
||||
applyInfo['memoAttachmentId' + i] = item.memoAttachmentId;
|
||||
|
||||
if (item.locked) {
|
||||
lockedCurrent = item.locked;
|
||||
}
|
||||
if (i == 0) {
|
||||
item.memoAttachment && setFiles([{
|
||||
name: item.memoAttachment && item.memoAttachment.fileName || '已上传文件',
|
||||
id: item.memoAttachmentId,
|
||||
uid: item.memoAttachmentId
|
||||
}]);
|
||||
} else {
|
||||
} else if(i==1) {
|
||||
item.memoAttachment && setFiles1([{
|
||||
name: item.memoAttachment && item.memoAttachment.fileName || '已上传文件',
|
||||
id: item.memoAttachmentId,
|
||||
uid: item.memoAttachmentId,
|
||||
}]);
|
||||
} else {
|
||||
item.memoAttachment && setFiles2([{
|
||||
name: item.memoAttachment && item.memoAttachment.fileName || '已上传文件',
|
||||
id: item.memoAttachmentId,
|
||||
uid: item.memoAttachmentId,
|
||||
}]);
|
||||
}
|
||||
|
||||
if(item.enrollFirst){
|
||||
applyInfo.enrollFirst=i;
|
||||
}
|
||||
// if (item.enrollFirst) {
|
||||
// applyInfo.enrollFirst = i;
|
||||
// }
|
||||
|
||||
if(item.status==2){
|
||||
item.status==2
|
||||
if (item.status == 2) {
|
||||
item.status == 2
|
||||
}
|
||||
|
||||
initTaskList.push(item);
|
||||
|
@ -138,9 +150,10 @@ function Apply(props) {
|
|||
// });
|
||||
}
|
||||
setMyTaskList(initTaskList);
|
||||
|
||||
// 如果只有一条报名数据,且课题id与当前id不一致,那么新增一条默认数据
|
||||
if (data.registrationStudentTaskList.length === 1 && data.registrationStudentTaskList[0].taskId != taskId) {
|
||||
setLocked(lockedCurrent);
|
||||
// 如果未被锁定,且小于3条报名数据,且课题id与当前id不一致,那么新增一条默认数据
|
||||
let taskIdArr=data.registrationStudentTaskList.map(i=>{return i.taskId});
|
||||
if (!lockedCurrent && data.registrationStudentTaskList.length < 3 && !taskIdArr.includes(taskId)) {
|
||||
addTask(data.registrationStudentTaskList);
|
||||
}
|
||||
} else {
|
||||
|
@ -183,15 +196,15 @@ function Apply(props) {
|
|||
validateFieldsAndScroll((err, values) => {
|
||||
if (!err) {
|
||||
setLoading(true);
|
||||
if (myTaskList.length === 2) {
|
||||
if(values.enrollFirst==1){
|
||||
myTaskList[1].enrollFirst = true;
|
||||
myTaskList[0].enrollFirst = false;
|
||||
}else{
|
||||
myTaskList[1].enrollFirst = false;
|
||||
myTaskList[0].enrollFirst = true;
|
||||
}
|
||||
}
|
||||
// if (myTaskList.length === 2) {
|
||||
// if (values.enrollFirst == 1) {
|
||||
// myTaskList[1].enrollFirst = true;
|
||||
// myTaskList[0].enrollFirst = false;
|
||||
// } else {
|
||||
// myTaskList[1].enrollFirst = false;
|
||||
// myTaskList[0].enrollFirst = true;
|
||||
// }
|
||||
// }
|
||||
const params = {
|
||||
grade: values.grade,
|
||||
location: Array.isArray(values.location) && values.location.join(),
|
||||
|
@ -205,6 +218,7 @@ function Apply(props) {
|
|||
registrationStudentTaskList: myTaskList
|
||||
}
|
||||
|
||||
|
||||
if (userApplyInfo) {
|
||||
params.id = userApplyInfo.id;
|
||||
studentApplyEdit(params).then(response => {
|
||||
|
@ -293,8 +307,10 @@ function Apply(props) {
|
|||
changeTaskItem('memoAttachmentId', '', i);
|
||||
}
|
||||
console.log(info.fileList);
|
||||
if (i) {
|
||||
if (i==1) {
|
||||
setFiles1(appendFileSizeToUploadFileAll(info.fileList).slice(-1));
|
||||
}else if (i==2) {
|
||||
setFiles2(appendFileSizeToUploadFileAll(info.fileList).slice(-1));
|
||||
} else {
|
||||
setFiles(appendFileSizeToUploadFileAll(info.fileList).slice(-1));
|
||||
}
|
||||
|
@ -315,46 +331,47 @@ function Apply(props) {
|
|||
let taskListNew = List ? [...List] : [...myTaskList];
|
||||
if (taskId != taskListNew[0].taskId) {
|
||||
taskListNew.push(initTask);
|
||||
let newTask = 'taskId' + (taskListNew.length - 1);
|
||||
// 先增加数据再给选择框赋默认值,否则不生效
|
||||
new Promise((resove) => {
|
||||
setMyTaskList(() => {
|
||||
resove();
|
||||
return taskListNew
|
||||
});
|
||||
}).then(res => setFieldsValue({ 'taskId1': taskId }))
|
||||
}).then(res => setFieldsValue({ [newTask]: taskId }))
|
||||
} else {
|
||||
taskListNew.push({ ...initTask, taskId: '' });
|
||||
setMyTaskList(taskListNew);
|
||||
}
|
||||
}
|
||||
|
||||
function deleteTask(i) {
|
||||
let taskListNew = myTaskList.slice();
|
||||
let reWriteInfo;
|
||||
if (i) {
|
||||
reWriteInfo = {
|
||||
taskId1: '',
|
||||
memo1: '',
|
||||
memoAttachmentId1: ''
|
||||
}
|
||||
setFiles1([]);
|
||||
} else {
|
||||
reWriteInfo = {
|
||||
taskId0: taskListNew[1].taskId,
|
||||
memo0: taskListNew[1].memo,
|
||||
memoAttachmentId0: taskListNew[1].memoAttachmentId,
|
||||
taskId1: '',
|
||||
memo1: '',
|
||||
memoAttachmentId1: ''
|
||||
}
|
||||
setFiles(files1);
|
||||
setFiles1([]);
|
||||
}
|
||||
// function deleteTask(i) {
|
||||
// let taskListNew = myTaskList.slice();
|
||||
// let reWriteInfo;
|
||||
// if (i) {
|
||||
// reWriteInfo = {
|
||||
// taskId1: '',
|
||||
// memo1: '',
|
||||
// memoAttachmentId1: ''
|
||||
// }
|
||||
// setFiles1([]);
|
||||
// } else {
|
||||
// reWriteInfo = {
|
||||
// taskId0: taskListNew[1].taskId,
|
||||
// memo0: taskListNew[1].memo,
|
||||
// memoAttachmentId0: taskListNew[1].memoAttachmentId,
|
||||
// taskId1: '',
|
||||
// memo1: '',
|
||||
// memoAttachmentId1: ''
|
||||
// }
|
||||
// setFiles(files1);
|
||||
// setFiles1([]);
|
||||
// }
|
||||
|
||||
taskListNew.splice(i, 1);
|
||||
setMyTaskList(taskListNew);
|
||||
setFieldsValue(reWriteInfo);
|
||||
}
|
||||
// taskListNew.splice(i, 1);
|
||||
// setMyTaskList(taskListNew);
|
||||
// setFieldsValue(reWriteInfo);
|
||||
// }
|
||||
|
||||
function changeTaskItem(field, val, i) {
|
||||
let taskListNew = [...myTaskList];
|
||||
|
@ -390,31 +407,32 @@ function Apply(props) {
|
|||
<div className="form-tit">申请课题</div>
|
||||
<Form className="glcc_info_form" onSubmit={handleSubmit}>
|
||||
<h4 className="item-tit">基本信息</h4>
|
||||
{/* className={editable ? "" : "disabledInput"} disabled={editable ?false : true} */}
|
||||
{helper('学生姓名',
|
||||
'',
|
||||
'studentName',
|
||||
[{ required: true, message: "请正确输入学生姓名" },
|
||||
{ max: 32, message: '超出限制长度32位字符,请重新编辑' }],
|
||||
<Input placeholder="请输入学生姓名" onBlur={() => { verify("studentName") }} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Input placeholder="请输入学生姓名" onBlur={() => { verify("studentName") }} className={"disabledInput"} disabled />
|
||||
)}
|
||||
{helper('所在高校',
|
||||
'',
|
||||
'school',
|
||||
[{ required: true, message: "请正确输入所在高校" },
|
||||
{ max: 32, message: '超出限制长度32位字符,请重新编辑' }],
|
||||
<Input placeholder="请输入所在高校" onBlur={() => { verify("school") }} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Input placeholder="请输入所在高校" onBlur={() => { verify("school") }} className={"disabledInput"} disabled />
|
||||
)}
|
||||
{helper('所学专业',
|
||||
'',
|
||||
'profession',
|
||||
[{ max: 32, message: '超出限制长度32位字符,请重新编辑' }],
|
||||
<Input placeholder="请输入所学专业" onBlur={() => { verify("profession") }} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Input placeholder="请输入所学专业" onBlur={() => { verify("profession") }} className={"disabledInput"} disabled />
|
||||
)}
|
||||
<Form.Item label="地区">
|
||||
{getFieldDecorator("location", {
|
||||
rules: []
|
||||
})(
|
||||
<Cascader expandTrigger="hover" popupClassName="glcc_cascader" placeholder="请选择省份城市" options={locData} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Cascader expandTrigger="hover" popupClassName="glcc_cascader" placeholder="请选择省份城市" options={locData} className={"disabledInput"} disabled />
|
||||
)}
|
||||
</Form.Item>
|
||||
{helper('所在年级',
|
||||
|
@ -431,7 +449,7 @@ function Apply(props) {
|
|||
[{ required: true, message: "请正确输入联系电话" },
|
||||
{ max: 14, message: '超出限制长度14位字符,请重新编辑' },
|
||||
{ pattern: /(^(\d{3,4}-)?\d{7,8})$|([1][3,4,5,6,7,8,9][0-9]{9})/, message: '请正确输入联系电话' }],
|
||||
<Input placeholder="请输入联系电话" onBlur={() => { verify("phone") }} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Input placeholder="请输入联系电话" onBlur={() => { verify("phone") }} className={"disabledInput"} disabled />
|
||||
)}
|
||||
{helper('邮箱地址',
|
||||
'',
|
||||
|
@ -441,7 +459,7 @@ function Apply(props) {
|
|||
{ required: true, message: "请输入邮箱地址" },
|
||||
{ max: 50, message: '超出限制长度50位字符,请重新编辑' },
|
||||
],
|
||||
<Input placeholder="请输入邮箱地址" onBlur={() => { verify("mail") }} className={editable ? "" : "disabledInput"} disabled={editable ? false : true} />
|
||||
<Input placeholder="请输入邮箱地址" onBlur={() => { verify("mail") }} className={"disabledInput"} disabled />
|
||||
)}
|
||||
|
||||
<div className='introArea update_item'>{helper('学生证明',
|
||||
|
@ -456,7 +474,7 @@ function Apply(props) {
|
|||
accept=".png,.jpg,.jpeg"
|
||||
beforeUpload={beforeUpload}
|
||||
onChange={handleChange}
|
||||
disabled={studentApplyEnd}
|
||||
disabled
|
||||
>
|
||||
{imageUrl ? <img src={imageUrl} alt="avatar" style={{ maxWidth: '100px', maxHeight: '100px' }} /> : userApplyInfo && userApplyInfo.proveAttachmentId ?
|
||||
<div><img src={`${getUrl()}/api/attachments/${userApplyInfo.proveAttachmentId}`} alt='' style={{ maxWidth: '100px' }} /></div> : <div>
|
||||
|
@ -470,12 +488,12 @@ function Apply(props) {
|
|||
myTaskList.map((item, i) => {
|
||||
return (
|
||||
<Fragment key={item.taskId + '' + i}>
|
||||
<h4 className="item-tit">课题信息(<span className="item-tit-num">{i + 1}</span>/2)
|
||||
<h4 className="item-tit">课题信息(<span className="item-tit-num">{i + 1}</span>)
|
||||
{/* {myTaskList.length > 1 && <span className="delete" onClick={() => { deleteTask(i) }}><i className="iconfont icon-shanchu mr5"></i>删除</span>} */}
|
||||
</h4>
|
||||
{item.status == 1 && item.auditRemark && <div className="reject-reason">
|
||||
<div className="mb5"><i className="iconfont icon-shanchudiao"></i>欢迎您报名CCF GitLink开源编程夏令营,感谢您对GLCC项目及课题的关注和支持!本次您的报名信息未通过初审,原因如下:</div>
|
||||
<div className="mb5 ml20" dangerouslySetInnerHTML={{__html:item.auditRemark}}></div>
|
||||
<div className="mb5 ml20" dangerouslySetInnerHTML={{ __html: item.auditRemark }}></div>
|
||||
<div className="mb5 ml20">希望您尽快修改并重新提交报名信息,我们将再次审核,万分感谢!</div>
|
||||
</div>}
|
||||
{helper('课题名称',
|
||||
|
@ -495,6 +513,7 @@ function Apply(props) {
|
|||
{allTaskList.map(item => { return <Option value={item.id} disabled={chooseArr.includes(item.id)} key={item.id + ''}>{item.taskName}</Option> })}
|
||||
</Select>
|
||||
)}
|
||||
{item.locked && item.passStatus && <div className="task-checked"><i className='iconfont icon-chenggongicon'></i>您已通过审核,成功入选该课题</div>}
|
||||
<div className='introArea'>{helper('自荐书',
|
||||
<div className="memoExtra">如何写课题申请书:<a href="https://forum.gitlink.org.cn/forums/7299/detail" target="_black">https://forum.gitlink.org.cn/forums/7299/detail</a></div>,
|
||||
'memo' + i,
|
||||
|
@ -507,7 +526,10 @@ function Apply(props) {
|
|||
4、课题实施规划:课题实施拆解、工作规划以及时间安排;
|
||||
5、个人简介:编程技能、过往经验;
|
||||
6、提示:文本框表达内容有限,建议您提供内容的pdf或url链接方式展示更精彩的陈述"
|
||||
onBlur={(e) => { verify("memo" + i); changeTaskItem("memo", e.currentTarget.value, i) }} rows={7} className={editable ? "memoText disabledInput" : "memoText disabledInput"} disabled={studentApplyEnd} />
|
||||
onBlur={(e) => { verify("memo" + i); changeTaskItem("memo", e.currentTarget.value, i) }}
|
||||
rows={7}
|
||||
className={editable ? "memoText disabledInput" : "memoText disabledInput"}
|
||||
disabled={!(isStudentApplyDate && !item.id)} />
|
||||
)}</div>
|
||||
|
||||
<div className='introArea'>{helper('附件',
|
||||
|
@ -517,7 +539,7 @@ function Apply(props) {
|
|||
<Upload
|
||||
// action={getUploadActionUrl()}
|
||||
action={httpUrl + `/busiAttachments/upload`}
|
||||
fileList={i ? files1 : files}
|
||||
fileList={i ? i == 1 ? files1 : files2 : files}
|
||||
onChange={(info) => { bookChange(info, i) }}
|
||||
onDownload={download}
|
||||
beforeUpload={beforeUpload2}
|
||||
|
@ -526,9 +548,9 @@ function Apply(props) {
|
|||
downloadIcon: <i className="iconfont icon-xiazai-icon"></i>,
|
||||
showRemoveIcon: true
|
||||
}}
|
||||
disabled={studentApplyEnd}
|
||||
disabled={!(isStudentApplyDate && !item.id)}
|
||||
>
|
||||
<div className="glcc_btn">上传自荐书</div>
|
||||
<div className="glcc_btn" >上传自荐书</div>
|
||||
</Upload>
|
||||
)}</div>
|
||||
</Fragment>
|
||||
|
@ -541,24 +563,24 @@ function Apply(props) {
|
|||
}
|
||||
|
||||
{
|
||||
myTaskList.length === 2 && <Form.Item className="priority"
|
||||
label={<Fragment>对您而言,哪个课题的优先级更高?<span className="note">注:优先级将决定您申请课题的入选顺序,若申请的2个课题同时通过审核,将以高优先级的课题作为入选标准</span></Fragment>}
|
||||
>
|
||||
{getFieldDecorator("enrollFirst", {
|
||||
rules: [{ required: true, message: "请选择课题优先级" },]
|
||||
})(
|
||||
<Radio.Group disabled={studentApplyEnd}>
|
||||
<Radio value={0}>课题一</Radio>
|
||||
<Radio value={1}>课题二</Radio>
|
||||
</Radio.Group>
|
||||
)}
|
||||
</Form.Item>
|
||||
// myTaskList.length >= 2 && <Form.Item className="priority"
|
||||
// label={<Fragment>对您而言,哪个课题的优先级更高?<span className="note">注:优先级将决定您申请课题的入选顺序,若申请的2个课题同时通过审核,将以高优先级的课题作为入选标准</span></Fragment>}
|
||||
// >
|
||||
// {getFieldDecorator("enrollFirst", {
|
||||
// rules: [{ required: true, message: "请选择课题优先级" },]
|
||||
// })(
|
||||
// <Radio.Group disabled={studentApplyEnd}>
|
||||
// <Radio value={0}>课题一</Radio>
|
||||
// <Radio value={1}>课题二</Radio>
|
||||
// <Radio value={2}>课题三</Radio>
|
||||
// </Radio.Group>
|
||||
// )}
|
||||
// </Form.Item>
|
||||
}
|
||||
|
||||
{/* 记得注释 */}
|
||||
<Form.Item className='subInfo introArea'>
|
||||
<Button type="primary" htmlType="submit" className='sub' disabled={!editable}>提交</Button>
|
||||
</Form.Item>
|
||||
{!studentApplyEnd && <Form.Item className='subInfo introArea'>
|
||||
<Button type="primary" htmlType="submit" className='sub' disabled={!(editable && !locked)}>提交</Button>
|
||||
</Form.Item>}
|
||||
</Form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,18 +12,6 @@
|
|||
.has-error .ant-form-split {
|
||||
position: absolute;
|
||||
}
|
||||
.ant-btn-primary {
|
||||
background-color: #466aff;
|
||||
border-color: #466aff;
|
||||
&:hover {
|
||||
background-color: #5d7cff;
|
||||
border-color: #5d7cff;
|
||||
}
|
||||
&:active {
|
||||
background-color: #1140ff;
|
||||
border-color: #1140ff;
|
||||
}
|
||||
}
|
||||
.apply {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
|
@ -196,16 +184,6 @@
|
|||
.sub {
|
||||
width: 200px;
|
||||
height: 36px;
|
||||
background-color: #466aff;
|
||||
border-color: #466aff;
|
||||
&:hover {
|
||||
background-color: #5d7cff;
|
||||
border-color: #5d7cff;
|
||||
}
|
||||
&:active {
|
||||
background-color: #1140ff;
|
||||
border-color: #1140ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.explain {
|
||||
|
@ -249,12 +227,19 @@
|
|||
font-size: 14px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
cursor: not-allowed;
|
||||
// cursor: not-allowed;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-upload-disabled {
|
||||
.glcc_btn {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
.add_task {
|
||||
margin-left: 90px;
|
||||
}
|
||||
|
@ -317,6 +302,25 @@
|
|||
background-color: #466aff;
|
||||
}
|
||||
}
|
||||
|
||||
.task-checked {
|
||||
display: inline-block;
|
||||
width: 287px;
|
||||
height: 32px;
|
||||
margin-left: 32px;
|
||||
background-color: rgba(0, 223, 185, 0.1);
|
||||
border: 1px solid #00be4c;
|
||||
border-radius: 4px;
|
||||
color: #00be4c;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
line-height: 28px;
|
||||
margin-top: 4px;
|
||||
|
||||
.iconfont {
|
||||
margin: 0 9px 0 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.reject-reason {
|
||||
width: 100%;
|
||||
|
@ -326,12 +330,12 @@
|
|||
border: 1px solid #df4c4c;
|
||||
color: #595e82;
|
||||
font-size: 15px;
|
||||
padding-left:22px;
|
||||
padding-left: 22px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
.icon-shanchudiao{
|
||||
.icon-shanchudiao {
|
||||
position: relative;
|
||||
top:1px;
|
||||
top: 1px;
|
||||
color: #e21b1b;
|
||||
margin-right: 5px;
|
||||
font-weight: 600;
|
||||
|
|
Loading…
Reference in New Issue