diff --git a/public/css/iconfont.css b/public/css/iconfont.css
index 4253d337..2f4d3b81 100644
--- a/public/css/iconfont.css
+++ b/public/css/iconfont.css
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2340181 */
- src: url('iconfont.woff2?t=1639537334021') format('woff2'),
- url('iconfont.woff?t=1639537334021') format('woff'),
- url('iconfont.ttf?t=1639537334021') format('truetype');
+ src: url('iconfont.woff2?t=1641524827252') format('woff2'),
+ url('iconfont.woff?t=1641524827252') format('woff'),
+ url('iconfont.ttf?t=1641524827252') format('truetype');
}
.iconfont {
@@ -13,6 +13,22 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon-ioon:before {
+ content: "\e90e";
+}
+
+.icon-shanchu_tc_icon1:before {
+ content: "\e90c";
+}
+
+.icon-zhuanjiaicon:before {
+ content: "\e90d";
+}
+
+.icon-shengming:before {
+ content: "\e90b";
+}
+
.icon-chenggong1:before {
content: "\e907";
}
diff --git a/public/css/iconfont.js b/public/css/iconfont.js
index de14d5fa..0fc1191c 100644
--- a/public/css/iconfont.js
+++ b/public/css/iconfont.js
@@ -1 +1 @@
-!function(a){var c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function m(){o||(o=!0,h())}function v(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}m()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,i=a.document,o=!1,v(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}(window);
+!function(a){var c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}v()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,i=a.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window);
\ No newline at end of file
diff --git a/public/css/iconfont.json b/public/css/iconfont.json
index f7ba00fe..dfda7758 100644
--- a/public/css/iconfont.json
+++ b/public/css/iconfont.json
@@ -5,6 +5,34 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
+ {
+ "icon_id": "27041503",
+ "name": "ioon",
+ "font_class": "ioon",
+ "unicode": "e90e",
+ "unicode_decimal": 59662
+ },
+ {
+ "icon_id": "26470602",
+ "name": "shanchu_tc_icon",
+ "font_class": "shanchu_tc_icon1",
+ "unicode": "e90c",
+ "unicode_decimal": 59660
+ },
+ {
+ "icon_id": "26470603",
+ "name": "专家icon",
+ "font_class": "zhuanjiaicon",
+ "unicode": "e90d",
+ "unicode_decimal": 59661
+ },
+ {
+ "icon_id": "12505154",
+ "name": "声明",
+ "font_class": "shengming",
+ "unicode": "e90b",
+ "unicode_decimal": 59659
+ },
{
"icon_id": "26470597",
"name": "成功",
diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf
index c95a3b43..851a48ab 100644
Binary files a/public/css/iconfont.ttf and b/public/css/iconfont.ttf differ
diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff
index 30def064..00f3b702 100644
Binary files a/public/css/iconfont.woff and b/public/css/iconfont.woff differ
diff --git a/public/css/iconfont.woff2 b/public/css/iconfont.woff2
index 34960ae9..eb68a204 100644
Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ
diff --git a/src/military/expert.js b/src/military/expert.js
index a00e6a5f..e9611dc4 100644
--- a/src/military/expert.js
+++ b/src/military/expert.js
@@ -43,7 +43,6 @@ const Expert = (propsTransmit) => {
}, []);
let propsF = { ...propsTransmit };
propsF.current_user = currentUser;
- console.log(currentUser);
return (
diff --git a/src/military/expert/api.js b/src/military/expert/api.js
index f5e64b71..cf36e643 100644
--- a/src/military/expert/api.js
+++ b/src/military/expert/api.js
@@ -109,14 +109,24 @@ export function updateScoringDetails(data){
});
}
-//编辑评审规则
//获取创客任务评审规则
-export function getRules(params){
- return fetch({
+export async function getRules(params){
+ let response = await fetch({
url: `/api/taskRuleCriteria/getRuleAndCriteria`,
method: 'get',
params
- })
+ });
+ if(response && response.message === "success"){
+ let criterias = [];
+ response.data.criteriaOne && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaOne);
+ response.data.criteriaTwo && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaTwo);
+ response.data.criteriaThree && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaThree);
+ response.data.criteriaFour && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaFour);
+ response.data.criteriaFive && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaFive);
+ response.data.criterias = criterias;
+ response.data.reviewData = response.data.reviewStartOn.substring(0,response.data.reviewStartOn.length-3) + " ~ " + response.data.reviewEndOn.substring(0,response.data.reviewEndOn.length-3)
+ }
+ return response;
}
//编辑评审规则(第一次)
diff --git a/src/military/expert/reviewResult/index.jsx b/src/military/expert/reviewResult/index.jsx
index 9e4c6c06..268aa31c 100644
--- a/src/military/expert/reviewResult/index.jsx
+++ b/src/military/expert/reviewResult/index.jsx
@@ -1,10 +1,23 @@
import React from "react";
+import Link from "react-router-dom/Link";
import './index.scss';
+import '../index.scss';
+import paginationTable from "src/military/components/paginationTable";
-function ReviewResult() {
+function ReviewResult({ location, history }) {
+ const { taskRecord } = location && location.state;
return (
- aaa
+
+
+ 评审结果
+
+
+
任务名称{taskRecord.name}
+
任务链接{`/task/taskDetail/${taskRecord.id}`}
+
+
应征者排名
+
)
}
export default ReviewResult;
\ No newline at end of file
diff --git a/src/military/expert/reviewResult/index.scss b/src/military/expert/reviewResult/index.scss
index e69de29b..3d29f465 100644
--- a/src/military/expert/reviewResult/index.scss
+++ b/src/military/expert/reviewResult/index.scss
@@ -0,0 +1,14 @@
+.expert_review_system.centerbox{
+ background: white;
+ font-family: 'PingFangSC-Semibold';
+ padding: 0 1.5em;
+ .font-w{
+ font-weight: bold;
+ }
+ .df{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+ .mt10.pb20{border-bottom: 1px solid #eeeeee;}
+}
diff --git a/src/military/expert/reviewRules/index.jsx b/src/military/expert/reviewRules/index.jsx
index fb859b0b..8d514808 100644
--- a/src/military/expert/reviewRules/index.jsx
+++ b/src/military/expert/reviewRules/index.jsx
@@ -15,6 +15,15 @@ function ReviewRules({ location, form, history }) {
//是否有初始值
const [ initValue, setInitValue] = useState(false);
+ const disabledDate = (current) =>{
+ if(taskRecord.status === 1){
+ return current && current < moment(taskRecord.createdAt).endOf('day');
+ }else if(taskRecord.status === 3){
+ const endDate = new Date((new Date(taskRecord.collectingEndTime)/1000 + 86400*taskRecord.collectingDays)*1000);
+ return current && current < moment(taskRecord.collectingEndTime).endOf('day') || current > moment(endDate).endOf('day');
+ }
+ }
+
useEffect(()=>{
//获取评审规则
const params = {
@@ -75,7 +84,7 @@ function ReviewRules({ location, form, history }) {
任务信息
-
+
任务名称{taskRecord.name}
任务链接{`/task/taskDetail/${taskRecord.id}`}
@@ -149,7 +158,7 @@ function ReviewRules({ location, form, history }) {
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
placeholder={['开始时间', '结束时间']}
-
+ disabledDate={disabledDate}
/>,
)}
diff --git a/src/military/expert/reviewRules/index.scss b/src/military/expert/reviewRules/index.scss
index 6e45f9df..2ab2d53d 100644
--- a/src/military/expert/reviewRules/index.scss
+++ b/src/military/expert/reviewRules/index.scss
@@ -37,6 +37,7 @@
.but41_fill, .but41_border, .butE3_border{
width: 6.5em;
}
+ .goback_but{width: 9.5em;}
.but41_border{padding: 0;}
.rules_bar{
margin: 25px -2em;
diff --git a/src/military/expert/selectExpert/index.jsx b/src/military/expert/selectExpert/index.jsx
index bfb01dc3..3e158b4b 100644
--- a/src/military/expert/selectExpert/index.jsx
+++ b/src/military/expert/selectExpert/index.jsx
@@ -1,5 +1,5 @@
import React, { useState, useEffect, useMemo } from "react";
-import { Tabs, Input, Select, Button, Modal, Form, message } from 'antd';
+import { Tabs, Input, Select, Button, Modal, Form, message, Popconfirm } from 'antd';
import { professionalType, reviewArea } from '../static.js';
import { assignExperts, deleteExperts, expertList, selectExpertList } from "../api.js";
import Paginationtable from "../../components/paginationTable";
@@ -97,7 +97,7 @@ function SelectExpert(props) {
render: (text, record) => {
return
{activeKey == "1" && (record.isExpertTask ? 已添加 : {SelectExperts([record.id])}}>添加)}
- {activeKey == "0" && }
+ {activeKey == "0" && { deleteExpert(record.taskExpertId, record.id)}} okText="是" cancelText="否">}
}
}
@@ -215,6 +215,8 @@ function SelectExpert(props) {
setRandomErrorMessage('请输入随机抽取的专家数量!');
}else if(isNaN(randomCount)){
setRandomErrorMessage('请输入数字!');
+ }else if(randomCount.indexOf('.')!==-1){
+ setRandomErrorMessage('请输入整数!');
}else{
let params = {
searchInput,
@@ -275,10 +277,12 @@ function SelectExpert(props) {
})
}
-
return (
-
评审专家选取
+
+
评审专家选取
+
+
{setActiveKey(activeKey);setSelectedRowKeys([]);setCurPage(1);}}>
@@ -327,7 +331,7 @@ function SelectExpert(props) {
添加评审专家
-
+ {allSelectedExpertsId && allSelectedExpertsId.size === total ?
:
}
\ No newline at end of file
diff --git a/src/military/task/taskAdmin/image/right.svg b/src/military/task/taskAdmin/image/right.svg
new file mode 100644
index 00000000..c7bbb9bb
--- /dev/null
+++ b/src/military/task/taskAdmin/image/right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/military/task/taskAdmin/index.jsx b/src/military/task/taskAdmin/index.jsx
index c7ea1fe3..00847e20 100644
--- a/src/military/task/taskAdmin/index.jsx
+++ b/src/military/task/taskAdmin/index.jsx
@@ -126,7 +126,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
showArrow
defaultValue={text?1:-1}
onChange={(key) => { changeExpertReviewStatus(key, record.id) }}
- disabled={!(record.status < 4) || record.assignRuleAndExperts}
+ disabled={!(record.status < 4 && record.status !== 2) || record.assignRuleAndExperts}
>
{
expertReviewArr.map(item => {
@@ -223,28 +223,28 @@ export default Form.create()(({ form, showNotification, match, history, state })
title: '评审规则',
dataIndex: 'ruleEditedCount',
render: (text, record) => {
- return record.expertReview && (record.status < 4) && !record.assignRuleAndExperts ? 编辑:''
+ return record.assignRuleAndExperts ? : record.expertReview && (record.status === 1 || record.status === 3) ? 编辑 : 编辑
}
},
{
title: '专家选取',
dataIndex: 'expertSelectedCount',
render: (text, record) => {
- return record.expertReview && (record.status < 4) && !record.assignRuleAndExperts ? 选择:''
+ return record.assignRuleAndExperts ? : record.expertReview && (record.status === 1 || record.status === 3) ? 选择 : 编辑
}
},
{
title: '评审任务',
dataIndex: 'expertReview1',
render: (text, record) => {
- return record.expertReview && (record.status < 4) ? !record.assignRuleAndExperts? : '已发布' :''
+ return record.expertReview && record.status < 4 && record.status !== 2 ? !record.assignRuleAndExperts ? : 已发布 :发布
}
},
{
title: '评审结果',
dataIndex: 'expertReview2',
render: (text, record) => {
- return record.assignRuleAndExperts && 查看
+ return record.assignRuleAndExperts ? 查看:查看
}
},
{
@@ -357,6 +357,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
});
}
+ //发布评审任务
function publishTaskReview(record){
if(!record.ruleEditedCount || !record.expertSelectedCount){
message.error("请先编辑评审规则以及选取评选专家再发布此任务");
@@ -365,13 +366,6 @@ export default Form.create()(({ form, showNotification, match, history, state })
let selectedExperts = undefined;
getRules({containerId: record.id, containerType: 1, statusString: 3}).then(response=>{
if(response && response.message === "success"){
- let criterias = [];
- response.data.criteriaOne && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaOne);
- response.data.criteriaTwo && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaTwo);
- response.data.criteriaThree && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaThree);
- response.data.criteriaFour && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaFour);
- response.data.criteriaFive && (criterias[criterias.length] = (criterias.length+1)+"、"+response.data.criteriaFive);
- response.data.criterias = criterias;
rules = response.data;
}
})
@@ -388,6 +382,47 @@ export default Form.create()(({ form, showNotification, match, history, state })
setTimeout(() => {
Modal.confirm({
className: 'publishReview',
+ title: "评审规则",
+ content:
+
+ {rules && rules.rule}
+ 评分标准
+
+ {rules.criterias.map(item=>{return
{item}
})}
+
+ 评审时间
+ {rules.reviewData}
+ 已选取评审专家
+
+
+ ,
+ okText: '确定',
+ cancelText: '取消',
+ onOk() {
+ publishExpertsAndRules(record.id).then(response=>{
+ if(response && response.message==="发布成功"){
+ setReload(Math.random());
+ }
+ })
+ },
+ });
+ }, 300);
+ }
+ }
+
+ //已发布任务 查看评审规则
+ function viewRules(record){
+ let rules = undefined;
+ getRules({containerId: record.id, containerType: 1, statusString: '-1,1'}).then(response=>{
+ if(response && response.message === "success"){
+ rules = response.data;
+ }
+ });
+ setTimeout(() => {
+ Modal.info({
+ className: 'publishReview',
title: "评审规则",
content:
@@ -397,25 +432,36 @@ export default Form.create()(({ form, showNotification, match, history, state })
{rules.criterias.map(item=>{return {item}
})}
评审时间
-
{rules.reviewStartOn}~{rules.reviewEndOn}
-
已选取评审专家
-
+ {rules.reviewData}
,
- okText: '确定',
- cancelText: '取消',
- onOk() {
- publishExpertsAndRules(record.id).then(response=>{
- if(response && response.message==="发布成功"){
- setReload(Math.random());
- }
- })
- },
});
- }, 300);
- }
+ }, 300);
+ }
+
+ //已发布任务 查看已选专家
+ function viewExperts(record){
+ let selectedExperts = undefined;
+ selectExpertList({containerId: record.id, containerType: 1, curPage:curPage, pageSize: 10000, curPage: 1,}).then(response=>{
+ if(response && response.message === "success" && Array.isArray(response.data.rows)){
+ let index = 1;
+ for (const item of response.data.rows) {
+ item.reviewAreas = `${item.reviewAreaOne} ${item.reviewAreaTwo ? `、${item.reviewAreaTwo}`:''} ${item.reviewAreaThree ? `、${item.reviewAreaThree}`:''}`;
+ item.index = (index++) + (curPage > 1 ? (curPage - 1) * 10 : 0);
+ }
+ selectedExperts = response.data.rows
+ }
+ });
+ setTimeout(() => {
+ Modal.info({
+ className: 'publishReview',
+ title: "已选取评审专家",
+ content:
+ ,
+ });
+ }, 300);
}
function changeStatus(showUserMode, taskId) {
diff --git a/src/military/task/taskAdmin/index.scss b/src/military/task/taskAdmin/index.scss
index 6a72aa97..94b516fc 100644
--- a/src/military/task/taskAdmin/index.scss
+++ b/src/military/task/taskAdmin/index.scss
@@ -62,6 +62,10 @@
display: flex;
justify-content: space-around;
}
+
+ // .ant-table-row-collapsed::after, .ant-table-row-expanded::after {
+ // content: url('./image/down.svg');
+ // }
}
.inline-form {
@@ -83,12 +87,17 @@
color: #29bd8b;
}
+.gary_span{
+ color: rgba(176, 176, 176, 1);
+}
+
// 发布评审任务弹框样式
.publishReview{
width: 1050px !important;
.ant-modal-confirm-title{
border-bottom: 1px solid #eeeeee;
padding-bottom: 10px;
+ font-weight: bold;
}
.ant-modal-confirm-body > .anticon{
display: none;
@@ -102,12 +111,13 @@
color: rgba(51, 51, 51, 1);
border-bottom: 1px solid #eeeeee;
padding: 10px 0;
+ font-weight: bold;
}
&>div{
padding: 10px;
}
}
- .ant-table-tbody > tr > td{
+ .pagination-table .ant-table-tbody > tr > td{
padding: 1px 16px;
}
}
diff --git a/src/military/task/taskDetail/index.jsx b/src/military/task/taskDetail/index.jsx
index 0ae98091..7207aeaf 100644
--- a/src/military/task/taskDetail/index.jsx
+++ b/src/military/task/taskDetail/index.jsx
@@ -12,6 +12,7 @@ import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, get
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr } from '../static';
import { httpUrl } from '../fetch';
import './index.scss';
+import { getRules } from 'src/military/expert/api';
const { TextArea } = Input;
@@ -52,6 +53,8 @@ export default Form.create()(
const [relaodChildList, setRelaodChildList] = useState(0);
const [visibleProofs, setVisibleProofs] = useState(false);
+ // 已发布评审任务 评审规则
+ const [publishedReviewRules, setPublishedReviewRules] = useState(undefined);
// 获取任务领域配置数据
useEffect(() => {
@@ -73,6 +76,11 @@ export default Form.create()(
history.push('/task');
}
setDetailData(data || {});
+ if(data && data.assignRuleAndExperts){
+ getRules({ containerId: data.id, containerType: 1, statusString: '-1,1', }).then(response=>{
+ response && setPublishedReviewRules(response.data || undefined);
+ })
+ }
});
}, [id, reload]);
@@ -451,6 +459,14 @@ export default Form.create()(
应征者提交的稿件必须是设计作品,广告等无效交稿一律不采用!
+ {publishedReviewRules &&
+ 评审规则:
+ {publishedReviewRules.rule}
+ 评分标准:
+ {publishedReviewRules.criterias.map(item=>{return
{item}
})}
+ 评审时间:
+ {publishedReviewRules.reviewData}
+ }
{!current_user.enterpriseCertification &&
-
+
}