forked from Gitlink/forgeplus-react
新增我的任务,修改issue
This commit is contained in:
parent
ede5ab8957
commit
6fe3928a6e
|
@ -3,11 +3,12 @@ import { Table, Pagination } from 'antd';
|
|||
import './index.scss';
|
||||
|
||||
export default (props) => {
|
||||
const { loading, dataSource, columns, handleRow, total, setCurPage, current, rowSelection, expandedRowRender, expandIconColumnIndex } =props;
|
||||
const { loading, dataSource, columns, handleRow, total, setCurPage, current, rowSelection, expandedRowRender, expandIconColumnIndex, onShowSizeChange,showSizeChanger } = props;
|
||||
|
||||
return (
|
||||
<div className='pagination-table'>
|
||||
<Table
|
||||
{...props}
|
||||
loading={loading}
|
||||
rowKey={(row) => row.id}
|
||||
dataSource={dataSource}
|
||||
|
@ -17,14 +18,15 @@ export default (props) => {
|
|||
rowSelection={rowSelection}
|
||||
expandedRowRender={expandedRowRender}
|
||||
expandIconColumnIndex={expandIconColumnIndex}
|
||||
{...props}
|
||||
/>
|
||||
{total > 10 &&
|
||||
<Pagination
|
||||
showQuickJumper
|
||||
onShowSizeChange={onShowSizeChange}
|
||||
onChange={setCurPage}
|
||||
current={current}
|
||||
total={total}
|
||||
showSizeChanger
|
||||
/>}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -11,16 +11,6 @@ import { getUserInfo } from './expert/api';
|
|||
import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC";
|
||||
import './index.scss';
|
||||
|
||||
const Register = Loadable({
|
||||
loader: () => import("./expert/register"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const ExpertList = Loadable({
|
||||
loader: () => import("./expert/expertList"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const Review = Loadable({
|
||||
loader: () => import("./expert/review/review"),
|
||||
loading: Loading,
|
||||
|
@ -31,8 +21,12 @@ const AdminRouter = Loadable({
|
|||
loading: Loading,
|
||||
});
|
||||
|
||||
const ReviewTasks = Loadable({
|
||||
loader: () => import("./expert/reviewTasks"),
|
||||
// const ReviewTasks = Loadable({
|
||||
// loader: () => import("./expert/reviewTasks"),
|
||||
// loading: Loading,
|
||||
// })
|
||||
const ExpertUser = Loadable({
|
||||
loader: () => import("./expert/expertUser"),
|
||||
loading: Loading,
|
||||
})
|
||||
const Expert = (propsTransmit) => {
|
||||
|
@ -54,18 +48,14 @@ const Expert = (propsTransmit) => {
|
|||
return (
|
||||
<div className="newMain clearfix">
|
||||
<Switch {...propsF}>
|
||||
{/* 专家注册、专家评审任务 */}
|
||||
<Route
|
||||
path="/expert/register"
|
||||
path="/expert/user/:functional"
|
||||
render={(props) => (
|
||||
<Register {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/expert/tasks"
|
||||
render={(props) => (
|
||||
<ReviewTasks {...propsF} {...props} />
|
||||
<ExpertUser {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员管理 */}
|
||||
<Route
|
||||
path="/expert/admin/:admin"
|
||||
|
|
|
@ -65,10 +65,19 @@ export async function registerCheck(data){
|
|||
return res;
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
// 获取文件信息
|
||||
export function getFile(id) {
|
||||
return fetch({
|
||||
url: `/busiAttachments/${id}`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
// 获取评审任务列表
|
||||
export function getExpertTasks(params) {
|
||||
return fetch({
|
||||
url: `/api/taskExpert/getExpertTasksPageList`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
}
|
|
@ -16,19 +16,26 @@ const Option = Select.Option;
|
|||
function RegisterList({ showNotification }) {
|
||||
const [reload, setReload] = useState();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [downloading, setDownloading] = useState(false);
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
const [pageSize, setPageSize] = useState(10);
|
||||
const [dataList, setDataList] = useState([]);
|
||||
const [total, setTotal] = useState(0);
|
||||
|
||||
const [searchInput, setSearchInput] = useState('');
|
||||
const [searchReviewArea, setSearchReviewArea] = useState('');
|
||||
const [expertType, setExpertType] = useState('')
|
||||
const [pageSize, setPageSize] = useState(10);
|
||||
const [uploadExpertList, setUploadExpertList] = useState([]);
|
||||
const [uploadExpertIds, setUploadExpertIds] = useState([]);
|
||||
const [dataAll, setDataAll] = useState([]);
|
||||
const [download, setDownload] = useState();
|
||||
const [downloading, setDownloading] = useState(false);
|
||||
|
||||
function onShowSizeChange(current, pageSize){
|
||||
setCurPage(current);
|
||||
setPageSize(pageSize);
|
||||
}
|
||||
|
||||
console.log(pageSize);
|
||||
const columns = useMemo(() => {
|
||||
return [{
|
||||
title: '姓名',
|
||||
|
@ -114,7 +121,7 @@ function RegisterList({ showNotification }) {
|
|||
{
|
||||
title: '邮箱地址',
|
||||
dataIndex: 'expertEmail',
|
||||
width:200,
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '开户银行',
|
||||
|
@ -145,7 +152,7 @@ function RegisterList({ showNotification }) {
|
|||
];
|
||||
}, []);
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取列表
|
||||
useEffect(() => {
|
||||
|
@ -164,11 +171,11 @@ function RegisterList({ showNotification }) {
|
|||
setLoading(false);
|
||||
setTotal(data.total);
|
||||
});
|
||||
}, [curPage, reload, searchInput, searchReviewArea, expertType]);
|
||||
}, [curPage, reload, searchInput, searchReviewArea, expertType, pageSize]);
|
||||
|
||||
// 获取下载数据的列表
|
||||
useEffect(() => {
|
||||
if(!download){
|
||||
if (!download) {
|
||||
return;
|
||||
}
|
||||
setDownloading(true);
|
||||
|
@ -311,6 +318,8 @@ function RegisterList({ showNotification }) {
|
|||
setCurPage={setCurPage}
|
||||
current={curPage}
|
||||
scroll={{ x: 2300 }}
|
||||
onShowSizeChange={onShowSizeChange}
|
||||
showSizeChanger
|
||||
/>
|
||||
|
||||
<Table
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
import React from "react";
|
||||
|
||||
import { Route, Switch, Link } from "react-router-dom";
|
||||
import Loadable from "react-loadable";
|
||||
import Loading from "src/Loading";
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
|
||||
|
||||
const Register = Loadable({
|
||||
loader: () => import("../register"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const ReviewTasks = Loadable({
|
||||
loader: () => import("../reviewTasks"),
|
||||
loading: Loading,
|
||||
})
|
||||
|
||||
|
||||
const ExpertUser = (props) => {
|
||||
const functional = props.match.params.functional;
|
||||
return (
|
||||
<div className="centerbox detail">
|
||||
<div className="navigation">
|
||||
<span>专家评审系统</span> >
|
||||
{functional === 'register' && <Link to="/expert/user/register">登记专家资料</Link>}
|
||||
{functional === 'tasks' && <Link to="/expert/user/tasks">我的评审任务</Link>}
|
||||
</div>
|
||||
<div className='center_flex'>
|
||||
<div className='register_left'>
|
||||
<Link to="/expert/user/register" className={`${functional === 'register' && 'active'}`}>登记专家资料</Link>
|
||||
<Link to="/expert/user/tasks" className={`${functional === 'tasks' && 'active'}`}>我的评审任务</Link>
|
||||
</div>
|
||||
<Switch {...props}>
|
||||
|
||||
<Route
|
||||
path="/expert/user/register"
|
||||
render={(props) => (
|
||||
<Register {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
<Route
|
||||
path="/expert/user/tasks"
|
||||
render={(props) => (
|
||||
<ReviewTasks {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
</Switch>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default ExpertUser;
|
|
@ -0,0 +1,46 @@
|
|||
.centerbox.detail {
|
||||
font-size: 20px;
|
||||
.navigation {
|
||||
font-size: 0.6em;
|
||||
margin: -35px 0 15px;
|
||||
}
|
||||
|
||||
.center_flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.register_left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 10em;
|
||||
width: 10em;
|
||||
font-size: 0.7em;
|
||||
background-color: white;
|
||||
padding: 0.4vw;
|
||||
flex: none;
|
||||
a{
|
||||
padding: 0 1.3em;
|
||||
height: 2.55em;
|
||||
line-height: 2.55em;
|
||||
border-radius: 4px;
|
||||
&:hover{
|
||||
color: #4154f1;
|
||||
}
|
||||
&.active {
|
||||
color: white;
|
||||
background-color: #4154f1;
|
||||
&:hover{
|
||||
opacity: .8;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
.register_right {
|
||||
flex: auto;
|
||||
background-color: white;
|
||||
margin-left: 2em;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,6 +30,10 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
|
||||
const [reload, setReload] = useState();
|
||||
|
||||
const [reviewAreaOne, setReviewAreaOne] = useState();
|
||||
const [reviewAreaTwo, setReviewAreaTwo] = useState();
|
||||
const [reviewAreaThree, setReviewAreaThree] = useState();
|
||||
|
||||
// 获取列表
|
||||
useEffect(() => {
|
||||
let params = {};
|
||||
|
@ -60,7 +64,7 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
setFieldsValue(params);
|
||||
setExpertRegisterValues(params);
|
||||
setLastRegister(lastRegister);
|
||||
setForbidden(lastRegister&&lastRegister.status===-1);
|
||||
setForbidden(lastRegister && lastRegister.status === -1);
|
||||
|
||||
// 回写文件
|
||||
if (lastRegister.resume) {
|
||||
|
@ -87,7 +91,7 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
setHonorList(honors);
|
||||
setHonorIds(lastRegister.honors);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
setForbidden(false);
|
||||
}
|
||||
});
|
||||
|
@ -234,320 +238,332 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
|
||||
|
||||
return (
|
||||
<div className="centerbox detail">
|
||||
<div className="navigation">
|
||||
<span>专家评审系统</span> > <span>登记专家资料</span>
|
||||
</div>
|
||||
<div className='center_flex'>
|
||||
<div className='register_left'>
|
||||
<button className="but41_fill">登记专家资料</button>
|
||||
<div className='register_right'>
|
||||
{
|
||||
lastRegister && lastRegister.status === -1 && <p className='checking'>
|
||||
您的资料正在审核,请稍候
|
||||
</p>
|
||||
}
|
||||
{
|
||||
lastRegister && lastRegister.status === 2 && <p className='fail'>
|
||||
您提交的资料已被拒绝,请完善资料后重新提交
|
||||
</p>
|
||||
}
|
||||
{
|
||||
lastRegister && lastRegister.status === 1 && <p className='succeed'>
|
||||
您已经是专家了,如果修改资料,修改后的资料需要管理员重新审核,审核过程中不会影响您的专家身份
|
||||
</p>
|
||||
}
|
||||
{
|
||||
(!lastRegister || (lastRegister && lastRegister.status === 3)) && <p>专家资料</p>
|
||||
}
|
||||
|
||||
|
||||
<Form>
|
||||
<div className='expert_Register_form'>
|
||||
{
|
||||
helper('姓名',
|
||||
'expertName',
|
||||
[{ required: true, message: "姓名不能为空" },
|
||||
{ max: 20, message: '长度不能超过20个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的姓名"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('手机号码',
|
||||
'phone',
|
||||
[{ required: true, message: "手机号码不能为空" },
|
||||
{
|
||||
validator: (rule, val, callback) => {
|
||||
const pattern = /^((\+)?86|((\+)?86)?)0?1[3456789]\d{9}$/;
|
||||
if (pattern.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的手机号码!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的手机号码"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('单位类别',
|
||||
'workplaceType',
|
||||
[{ required: true, message: "请选择单位类别" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{unitType.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('专业职称',
|
||||
'professionalTitle',
|
||||
[{ required: true, message: "专业职称不能为空" },
|
||||
{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的专业职称"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('专家类别',
|
||||
'expertType',
|
||||
[{ required: true, message: "请选择专家类别" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{professionalType.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域2',
|
||||
'reviewAreaTwo', [],
|
||||
<Select
|
||||
disabled={forbidden}
|
||||
placeholder="请选择"
|
||||
dropdownClassName="expert_register"
|
||||
onChange={(value) => { setReviewAreaTwo(value) }}
|
||||
>
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}
|
||||
disabled={item.value === reviewAreaOne || item.value === reviewAreaThree}
|
||||
>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('毕业院校',
|
||||
'graduatedFrom', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的毕业院校"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('身份证号',
|
||||
'idNumber', [{
|
||||
validator: (rule, val, callback) => {
|
||||
let _IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
|
||||
let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
|
||||
// 校验身份证:
|
||||
if (_IDRe18.test(val) || _IDre15.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的身份证号码!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的身份证号码"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('开户银行',
|
||||
'bankName', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的开户银行"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
<Form.Item className="upload-form" label="个人简介">
|
||||
<Upload
|
||||
load={uploadResume}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={resumeList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item className="upload-form" label="学术成果">
|
||||
<Upload
|
||||
load={uploadAchievement}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={achievementList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
<div className='register_right'>
|
||||
{/* <p>
|
||||
{lastRegister && lastRegister.status === -1 ? "您的资料正在审核,请稍候" : lastRegister && lastRegister.status === 2 ? "您提交的资料已被拒绝,请完善资料后重新提交" : "专家资料"}
|
||||
</p> */}
|
||||
|
||||
<div className='expert_Register_form ml80'>
|
||||
{
|
||||
lastRegister && lastRegister.status === -1 && <p className='checking'>
|
||||
您的资料正在审核,请稍候
|
||||
</p>
|
||||
helper('最高学历',
|
||||
'highestDegree',
|
||||
[{ required: true, message: '请选择最高学历' }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{highestEducation.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
lastRegister && lastRegister.status === 2 && <p className='fail'>
|
||||
您提交的资料已被拒绝,请完善资料后重新提交
|
||||
</p>
|
||||
helper('工作单位',
|
||||
'workplace',
|
||||
[{ required: true, message: "工作单位不能为空" }],
|
||||
<Input
|
||||
placeholder="请输入您的工作单位"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
(!lastRegister || (lastRegister && lastRegister.status === 3)) && <p>专家资料</p>
|
||||
helper('工作性质',
|
||||
'workNature',
|
||||
[{ required: true, message: "请选择工作性质" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{natureOfWork.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
<Form>
|
||||
<div className='expert_Register_form'>
|
||||
{
|
||||
helper('姓名',
|
||||
'expertName',
|
||||
[{ required: true, message: "姓名不能为空" },
|
||||
{ max: 20, message: '长度不能超过20个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的姓名"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('手机号码',
|
||||
'phone',
|
||||
[{ required: true, message: "手机号码不能为空" },
|
||||
{
|
||||
validator: (rule, val, callback) => {
|
||||
const pattern = /^((\+)?86|((\+)?86)?)0?1[3456789]\d{9}$/;
|
||||
if (pattern.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的手机号码!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的手机号码"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('单位类别',
|
||||
'workplaceType',
|
||||
[{ required: true, message: "请选择单位类别" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{unitType.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('专业职称',
|
||||
'professionalTitle',
|
||||
[{ required: true, message: "专业职称不能为空" },
|
||||
{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的专业职称"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('专家类别',
|
||||
'expertType',
|
||||
[{ required: true, message: "请选择专家类别" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{professionalType.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域2',
|
||||
'reviewAreaTwo', [],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('毕业院校',
|
||||
'graduatedFrom', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的毕业院校"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('身份证号',
|
||||
'idNumber', [{
|
||||
validator: (rule, val, callback) => {
|
||||
let _IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
|
||||
let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
|
||||
// 校验身份证:
|
||||
if (_IDRe18.test(val) || _IDre15.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的身份证号码!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的身份证号码"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('开户银行',
|
||||
'bankName', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的开户银行"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
<Form.Item className="upload-form" label="个人简介">
|
||||
<Upload
|
||||
load={uploadResume}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={resumeList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item className="upload-form" label="学术成果">
|
||||
<Upload
|
||||
load={uploadAchievement}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={achievementList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
<div className='expert_Register_form ml80'>
|
||||
{
|
||||
helper('最高学历',
|
||||
'highestDegree',
|
||||
[{ required: true, message: '请选择最高学历' }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{highestEducation.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('工作单位',
|
||||
'workplace',
|
||||
[{ required: true, message: "工作单位不能为空" }],
|
||||
<Input
|
||||
placeholder="请输入您的工作单位"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('工作性质',
|
||||
'workNature',
|
||||
[{ required: true, message: "请选择工作性质" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{natureOfWork.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('职称职级',
|
||||
'titleRank',
|
||||
[{ required: true, message: "请选择职称职级" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{positionLevel.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域1',
|
||||
'reviewAreaOne',
|
||||
[{ required: true, message: "请选择评审领域" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域3',
|
||||
'reviewAreaThree', [],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('院校专业',
|
||||
'major', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的专业"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('邮箱地址',
|
||||
'expertEmail', [{
|
||||
validator: (rule, val, callback) => {
|
||||
const pattern = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
|
||||
if (pattern.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的邮箱地址!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的常用邮箱地址"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('银行账号',
|
||||
'bankAccount', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的银行卡号"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
<Form.Item className="upload-form" label="职称证明">
|
||||
<Upload
|
||||
load={uploadTitleCert}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={titleCertList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item className="upload-form" label="荣誉称号">
|
||||
<Upload
|
||||
load={uploadHonor}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={honorList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
</Form>
|
||||
<div className='buts'>
|
||||
{/* <button className="but41_fill mr20" disabled={forbidden} onClick={() => expertRegisterSubmit(true)}>提交资料</button>
|
||||
{
|
||||
helper('职称职级',
|
||||
'titleRank',
|
||||
[{ required: true, message: "请选择职称职级" }],
|
||||
<Select disabled={forbidden} placeholder="请选择" dropdownClassName="expert_register">
|
||||
{positionLevel.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域1',
|
||||
'reviewAreaOne',
|
||||
[{ required: true, message: "请选择评审领域" }],
|
||||
<Select
|
||||
disabled={forbidden}
|
||||
placeholder="请选择"
|
||||
dropdownClassName="expert_register"
|
||||
onChange={(value) => { setReviewAreaOne(value) }}
|
||||
>
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}
|
||||
disabled={item.value === reviewAreaTwo || item.value === reviewAreaThree}
|
||||
>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('评审领域3',
|
||||
'reviewAreaThree', [],
|
||||
<Select
|
||||
disabled={forbidden}
|
||||
placeholder="请选择"
|
||||
dropdownClassName="expert_register"
|
||||
onChange={(value) => { setReviewAreaThree(value) }}
|
||||
>
|
||||
{reviewArea.map(item => {
|
||||
return <Option key={item.value} value={item.value}
|
||||
disabled={item.value === reviewAreaTwo || item.value === reviewAreaOne}
|
||||
>{item.label}</Option>
|
||||
})}
|
||||
</Select>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('院校专业',
|
||||
'major', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的专业"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('邮箱地址',
|
||||
'expertEmail', [{
|
||||
validator: (rule, val, callback) => {
|
||||
const pattern = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
|
||||
if (pattern.test(val)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('请输入正确的邮箱地址!');
|
||||
}
|
||||
}
|
||||
}],
|
||||
<Input
|
||||
placeholder="请输入您的常用邮箱地址"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
helper('银行账号',
|
||||
'bankAccount', [{ max: 50, message: '长度不能超过50个字符' }],
|
||||
<Input
|
||||
placeholder="请输入您的银行卡号"
|
||||
disabled={forbidden}
|
||||
/>
|
||||
)
|
||||
}
|
||||
<Form.Item className="upload-form" label="职称证明">
|
||||
<Upload
|
||||
load={uploadTitleCert}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={titleCertList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item className="upload-form" label="荣誉称号">
|
||||
<Upload
|
||||
load={uploadHonor}
|
||||
size={100}
|
||||
showNotification={showNotification}
|
||||
fileList={honorList}
|
||||
disabled={forbidden}
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
</Form>
|
||||
<div className='buts'>
|
||||
{/* <button className="but41_fill mr20" disabled={forbidden} onClick={() => expertRegisterSubmit(true)}>提交资料</button>
|
||||
<button className="but41_border mr20" disabled={forbidden} onClick={draft}>保存资料</button>
|
||||
<button className="butE3_border" onClick={() => setCancelConfirmValue(true)}>取消</button> */}
|
||||
<Button className="but41_fill mr20" type="primary" disabled={forbidden} onClick={() => expertRegisterSubmit(true)}>提交资料</Button>
|
||||
<Button className="but41_border mr20" disabled={forbidden} onClick={draft}>保存资料</Button>
|
||||
<Button className="butE3_border" onClick={cancel}>取消</Button>
|
||||
<Button className="but41_fill mr20" type="primary" disabled={forbidden} onClick={() => expertRegisterSubmit(true)}>提交资料</Button>
|
||||
<Button className="but41_border mr20" disabled={forbidden} onClick={draft}>保存资料</Button>
|
||||
<Button className="butE3_border" onClick={cancel}>取消</Button>
|
||||
|
||||
<Modal
|
||||
title="提交资料"
|
||||
visible={submitConfirmValue}
|
||||
onOk={expertRegisterOk}
|
||||
onCancel={() => setSubmitConfirmValue(false)}
|
||||
wrapClassName="expert_modal submit"
|
||||
closeIcon={<Icon className='iconfont icon-guanbi1' />}
|
||||
>
|
||||
<p className='weight_bold'>资料提交后无法修改,将等待管理员审核,</p>
|
||||
<p className='ml30'>确认提交?</p>
|
||||
</Modal>
|
||||
<Modal
|
||||
title="提交资料"
|
||||
visible={submitConfirmValue}
|
||||
onOk={expertRegisterOk}
|
||||
onCancel={() => setSubmitConfirmValue(false)}
|
||||
wrapClassName="expert_modal submit"
|
||||
closeIcon={<Icon className='iconfont icon-guanbi1' />}
|
||||
>
|
||||
<p className='weight_bold'>资料提交后无法修改,将等待管理员审核,</p>
|
||||
<p className='ml30'>确认提交?</p>
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
title="提交资料"
|
||||
visible={cancelConfirmValue}
|
||||
onOk={() => { history.go(-1) }}
|
||||
onCancel={() => setCancelConfirmValue(false)}
|
||||
wrapClassName="expert_modal"
|
||||
>
|
||||
<p className='weight_bold warning'>有内容没有保存,确定退出编辑吗?</p>
|
||||
<p className='ml30'>退出编辑后,更新的内容不会自动保存</p>
|
||||
</Modal>
|
||||
</div>
|
||||
</div>
|
||||
<Modal
|
||||
title="提交资料"
|
||||
visible={cancelConfirmValue}
|
||||
onOk={() => { history.go(-1) }}
|
||||
onCancel={() => setCancelConfirmValue(false)}
|
||||
wrapClassName="expert_modal"
|
||||
>
|
||||
<p className='weight_bold warning'>有内容没有保存,确定退出编辑吗?</p>
|
||||
<p className='ml30'>退出编辑后,更新的内容不会自动保存</p>
|
||||
</Modal>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -1,111 +1,102 @@
|
|||
.iconfont2 {
|
||||
font-family: "svgtofont" !important;
|
||||
font-size: 26px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-webkit-text-stroke-width: 0.2px;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
.centerbox.detail {
|
||||
font-size: 20px;
|
||||
.navigation {
|
||||
font-size: 0.6em;
|
||||
margin: -35px 0 15px;
|
||||
.center_flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.register_left {
|
||||
height: 10em;
|
||||
font-size: 0.7em;
|
||||
background-color: white;
|
||||
padding: 0.4vw;
|
||||
}
|
||||
|
||||
.center_flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.register_left {
|
||||
height: 10em;
|
||||
font-size: 0.7em;
|
||||
background-color: white;
|
||||
padding: 0.4vw;
|
||||
.register_right {
|
||||
flex: auto;
|
||||
background-color: white;
|
||||
margin-left: 2em;
|
||||
& > p {
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
padding: 0.5em 2em;
|
||||
color: #181818;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.register_right {
|
||||
flex: auto;
|
||||
background-color: white;
|
||||
margin-left: 2em;
|
||||
& > p {
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
padding: 0.5em 2em;
|
||||
color: #181818;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fail{
|
||||
background: #FFEFEF;
|
||||
border: 1px solid #FF3838;
|
||||
color: #FF3838;
|
||||
}
|
||||
.fail {
|
||||
background: #ffefef;
|
||||
border: 1px solid #ff3838;
|
||||
color: #ff3838;
|
||||
}
|
||||
|
||||
.checking{
|
||||
background: #EDF2FF;
|
||||
border: 1px solid #4154F1;
|
||||
color: #4154F1;
|
||||
.checking {
|
||||
background: #edf2ff;
|
||||
border: 1px solid #4154f1;
|
||||
color: #4154f1;
|
||||
}
|
||||
.succeed {
|
||||
background: #edf2ff;
|
||||
border: 1px solid green;
|
||||
color: green;
|
||||
}
|
||||
.ant-form {
|
||||
display: flex;
|
||||
padding: 1em 2em 1.5em;
|
||||
}
|
||||
.expert_Register_form {
|
||||
width: 43.5%;
|
||||
&.ml80 {
|
||||
margin-left: 120px;
|
||||
}
|
||||
.ant-form{
|
||||
.ant-form-item {
|
||||
display: flex;
|
||||
padding: 1em 2em 1.5em;
|
||||
}
|
||||
.expert_Register_form {
|
||||
width: 43.5%;
|
||||
&.ml80{
|
||||
margin-left: 120px;
|
||||
}
|
||||
.ant-form-item{
|
||||
display: flex;
|
||||
}
|
||||
.ant-form-item-label {
|
||||
width: 6em;
|
||||
line-height: 2.8em;
|
||||
}
|
||||
.ant-form-item-required::before{
|
||||
position: relative;
|
||||
top: -1px;
|
||||
content: url('./image/required.svg');
|
||||
}
|
||||
.ant-form-item-control-wrapper{
|
||||
width: 70%;
|
||||
display: inline-block;
|
||||
}
|
||||
.ant-input, .ant-select-selection{
|
||||
// width: 30.1em;
|
||||
box-shadow: none;
|
||||
&:focus, &:hover{
|
||||
border: 1px solid #4154F1 !important;
|
||||
}
|
||||
}
|
||||
tr td:first-child .ant-row.ant-form-item{
|
||||
margin-right: 9em;
|
||||
}
|
||||
& .ant-input, .ant-input .ant-input-suffix {
|
||||
background-color: #FFFFFF !important;
|
||||
}
|
||||
& .ant-select-open .ant-select-selection{
|
||||
border: 1px solid #4154F1 !important;
|
||||
}
|
||||
& .ant-form-item{
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
& td>p{
|
||||
margin: 0.3em 0 0.6em !important;
|
||||
}
|
||||
& .but41_border{
|
||||
margin-bottom: 0.6em;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
& .ant-cascader-menu-item:hover {
|
||||
background: #f2f3ff;
|
||||
}
|
||||
|
||||
.ant-form-item-label {
|
||||
width: 6em;
|
||||
line-height: 2.8em;
|
||||
}
|
||||
& .buts {
|
||||
font-size: 0.7em;
|
||||
padding: 1.5em 2em;
|
||||
background-color: #f5f5f5;
|
||||
.ant-form-item-required::before {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
content: url("./image/required.svg");
|
||||
}
|
||||
.ant-form-item-control-wrapper {
|
||||
width: 70%;
|
||||
display: inline-block;
|
||||
}
|
||||
.ant-input,
|
||||
.ant-select-selection {
|
||||
// width: 30.1em;
|
||||
box-shadow: none;
|
||||
&:focus,
|
||||
&:hover {
|
||||
border: 1px solid #4154f1 !important;
|
||||
}
|
||||
}
|
||||
tr td:first-child .ant-row.ant-form-item {
|
||||
margin-right: 9em;
|
||||
}
|
||||
& .ant-input,
|
||||
.ant-input .ant-input-suffix {
|
||||
background-color: #ffffff !important;
|
||||
}
|
||||
& .ant-select-open .ant-select-selection {
|
||||
border: 1px solid #4154f1 !important;
|
||||
}
|
||||
& .ant-form-item {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
& td > p {
|
||||
margin: 0.3em 0 0.6em !important;
|
||||
}
|
||||
& .but41_border {
|
||||
margin-bottom: 0.6em;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
& .ant-cascader-menu-item:hover {
|
||||
background: #f2f3ff;
|
||||
}
|
||||
}
|
||||
& .buts {
|
||||
font-size: 0.7em;
|
||||
padding: 1.5em 2em;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -143,6 +143,11 @@ function RegisterList({ showNotification, form }) {
|
|||
];
|
||||
}, []);
|
||||
|
||||
function onShowSizeChange(current, pageSize){
|
||||
setCurPage(current);
|
||||
setPageSize(pageSize);
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
useEffect(() => {
|
||||
setLoading(true);
|
||||
|
@ -223,15 +228,13 @@ function RegisterList({ showNotification, form }) {
|
|||
|
||||
return (
|
||||
<div className="expert-list centerbox">
|
||||
<div className="center-screen" >
|
||||
<div className="center-right-but">
|
||||
<div className="center-screen mb30" >
|
||||
<Search
|
||||
maxLength={20}
|
||||
style={{ width: "300px" }}
|
||||
placeholder="请输入专家姓名或手机号"
|
||||
onSearch={(value) => { setSearchInput(value); setCurPage(1); }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Paginationtable
|
||||
loading={loading}
|
||||
|
@ -241,6 +244,8 @@ function RegisterList({ showNotification, form }) {
|
|||
setCurPage={setCurPage}
|
||||
current={curPage}
|
||||
scroll={{ x: 2300 }}
|
||||
onShowSizeChange={onShowSizeChange}
|
||||
showSizeChanger
|
||||
/>
|
||||
|
||||
<Modal
|
||||
|
|
|
@ -16,7 +16,7 @@ function Review(){
|
|||
<p className="ne_title">红山开源平台专家评审系统</p>
|
||||
<p className="ne_tips">您尚未被入选本平台专家团队,可提交专家资料进行注册申请加入专家团队</p>
|
||||
<p className="ne_bar"></p>
|
||||
<Link to='/expert/register'><button className="but41_fill">专家注册</button></Link>
|
||||
<Link to='/expert/user/register'><button className="but41_fill">专家注册</button></Link>
|
||||
</div>
|
||||
</div>)
|
||||
}
|
||||
|
|
|
@ -1,9 +1,161 @@
|
|||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import React, { useState, useCallback, useMemo, useEffect } from "react";
|
||||
import { Input, Select, Button, Form, DatePicker, Table, Pagination, Upload, Modal } from 'antd';
|
||||
import cookie from 'react-cookies';
|
||||
import { exportExcel } from '../components/exportExcel.js';
|
||||
import Paginationtable from "../../components/paginationTable";
|
||||
import { Info } from '../../components/ModalFun';
|
||||
import { getExpertTasks } from "../api";
|
||||
import { taskType } from "../static";
|
||||
import { httpUrl } from '../fetch';
|
||||
|
||||
import './index.scss';
|
||||
import '../index.scss';
|
||||
const { Search } = Input;
|
||||
const Option = Select.Option;
|
||||
|
||||
function ReviewTasks({ form, showNotification, match, history }) {
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
|
||||
|
||||
const [reload, setReload] = useState();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
const [pageSize, setPageSize] = useState(10);
|
||||
const [dataList, setDataList] = useState([]);
|
||||
const [total, setTotal] = useState(0);
|
||||
|
||||
const [searchObj, setSearchObj] = useState({
|
||||
containerName: '',
|
||||
containerType: 1
|
||||
});
|
||||
|
||||
|
||||
const columns = useMemo(() => {
|
||||
return [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: 'index',
|
||||
render: (text, record, index) => {
|
||||
return index + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '任务名称',
|
||||
dataIndex: 'expertName',
|
||||
width: 75,
|
||||
key: 'expertName',
|
||||
// render: (text, record) => {
|
||||
// return record.user ? record.user.nickname || record.user.login : ''
|
||||
// }
|
||||
},
|
||||
{
|
||||
title: '评审截止时间',
|
||||
dataIndex: 'highestDegree',
|
||||
key: 'highestDegree',
|
||||
},
|
||||
{
|
||||
title: '剩余评审时间',
|
||||
dataIndex: 'phone',
|
||||
key: 'phone',
|
||||
},
|
||||
{
|
||||
title: '评审状态',
|
||||
dataIndex: 'workplace',
|
||||
key: 'workplace',
|
||||
|
||||
},
|
||||
];
|
||||
}, []);
|
||||
|
||||
// 获取列表
|
||||
useEffect(() => {
|
||||
setLoading(true);
|
||||
let params = {
|
||||
...searchObj,
|
||||
pageSize,
|
||||
curPage,
|
||||
statusString: '1,-1',
|
||||
};
|
||||
getExpertTasks(params).then(data => {
|
||||
setDataList(data.rows || []);
|
||||
setLoading(false);
|
||||
setTotal(data.total);
|
||||
});
|
||||
}, [curPage, reload, pageSize]);
|
||||
|
||||
|
||||
function onSearch() {
|
||||
let values = getFieldsValue(['nameInput', 'endTime', 'startTime', 'enterpriseNameInput']);
|
||||
if (values.checkStatus === '0,1,2') values.checkStatus = '';
|
||||
setSearchObj(values);
|
||||
}
|
||||
|
||||
function clearSearch() {
|
||||
setFieldsValue({
|
||||
containerName: '',
|
||||
containerType: 1,
|
||||
});
|
||||
setSearchObj({
|
||||
containerName: '',
|
||||
containerType: 1,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const helper = useCallback(
|
||||
(label, name, rules, widget, initialValue) => (
|
||||
<Form.Item label={label}>
|
||||
{getFieldDecorator(name, { rules, initialValue, validateFirst: true, })(widget)}
|
||||
</Form.Item>
|
||||
), []);
|
||||
|
||||
function ReviewTasks() {
|
||||
return (
|
||||
<div>aaa</div>
|
||||
<div className='register_right'>
|
||||
<p>
|
||||
我的评审任务
|
||||
</p>
|
||||
<div className="search-screen" >
|
||||
{helper(
|
||||
"任务名称",
|
||||
"containerName",
|
||||
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||
<Input
|
||||
placeholder="输入任务名称进行检索"
|
||||
/>
|
||||
)}
|
||||
|
||||
{helper(
|
||||
"任务类型",
|
||||
"containerType",
|
||||
[],
|
||||
<Select
|
||||
style={{ width: "200px" }}
|
||||
placeholder="所有领域"
|
||||
dropdownClassName="expert_register"
|
||||
// onChange={(value) => { setSearchReviewArea(value) }}
|
||||
>
|
||||
{taskType.map(item => {
|
||||
return <Option key={item.value} value={item.value}>{item.label}</Option>
|
||||
})}
|
||||
</Select>,
|
||||
1
|
||||
)}
|
||||
|
||||
<div className="button-div">
|
||||
{/* <a href="/admin/tasks.xlsx" class="fr edu-default-btn edu-blueback-btn plr30">导出</a> */}
|
||||
<Button className="mr10" type="primary" onClick={onSearch}>搜索</Button>
|
||||
<Button className="mr10" onClick={clearSearch}>清除</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Paginationtable
|
||||
loading={loading}
|
||||
dataSource={dataList}
|
||||
columns={columns}
|
||||
total={total}
|
||||
setCurPage={setCurPage}
|
||||
current={curPage}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default ReviewTasks;
|
||||
export default Form.create()(ReviewTasks);
|
|
@ -0,0 +1,16 @@
|
|||
.register_right {
|
||||
flex: auto;
|
||||
.search-screen > .ant-row {
|
||||
min-width: 36%;
|
||||
}
|
||||
p{
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
padding: 0.5em 2em;
|
||||
color: #181818;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.button-div{
|
||||
line-height: 1.5;
|
||||
}
|
||||
}
|
|
@ -51,4 +51,9 @@ export const reviewArea = [
|
|||
{ value: "人工智能", label: "人工智能" },
|
||||
{ value: "文学交流", label: "文学交流" },
|
||||
{ value: "体育活动", label: "体育活动" }
|
||||
];
|
||||
|
||||
export const taskType = [
|
||||
{ value: 1, label: "创客评审任务" },
|
||||
{ value: 2, label: "竞赛评审任务" },
|
||||
];
|
|
@ -228,6 +228,39 @@
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.search-screen {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
justify-content: space-between;
|
||||
margin: 1.25rem 0;
|
||||
padding: 1.25rem;
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #dedede;
|
||||
|
||||
> .ant-row {
|
||||
min-width: 41%;
|
||||
margin-right: 2rem;
|
||||
.ant-form-item-label {
|
||||
float: left;
|
||||
}
|
||||
.ant-form-item-control-wrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.center-right-but {
|
||||
.ant-form-item {
|
||||
margin: 0 1rem 0 0;
|
||||
}
|
||||
.ant-form-item-control-wrapper {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
.button-div {
|
||||
margin-right: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1200px) {
|
||||
.centerbox {
|
||||
width: 98%;
|
||||
|
|
|
@ -770,7 +770,7 @@ class NewHeader extends Component {
|
|||
<div className="head-right">
|
||||
{this.props.user && this.props.user.login &&
|
||||
<div className='mr30'>
|
||||
<a href={this.state.isExpert ? '/expert/tasks' :'/expert'}>
|
||||
<a href={this.state.isExpert ? '/expert/user/tasks' :'/expert'}>
|
||||
<i className="iconfont icon-xiaoxilingdang color-grey-6"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue