forked from Gitlink/forgeplus-react
S某M修改
This commit is contained in:
parent
c6de7d0bde
commit
a9cb22374d
|
@ -34,6 +34,17 @@ const Apply = Loadable({
|
|||
loader: () => import('./qz2022/apply'),
|
||||
loading: Loading,
|
||||
})
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
const Chat = Loadable({
|
||||
loader: () => import('./qz2022/chat'),
|
||||
loading: Loading,
|
||||
})
|
||||
const Statistics = Loadable({
|
||||
loader: () => import('./qz2022/statistics'),
|
||||
loading: Loading,
|
||||
})
|
||||
>>>>>>> 91839339 (S某M修改)
|
||||
const Management = Loadable({
|
||||
loader: () => import('./qz2022/management'),
|
||||
loading: Loading,
|
||||
|
@ -131,6 +142,21 @@ const Qz2022 = (props) => {
|
|||
() => (<Apply {...props} />)
|
||||
}
|
||||
></Route>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
{/* 交流互动 */}
|
||||
<Route path="/competition/qz2022/chat"
|
||||
render={
|
||||
() => (<Chat {...props} />)
|
||||
}
|
||||
></Route>
|
||||
{/* 数据统计 */}
|
||||
<Route path="/competition/qz2022/statistics"
|
||||
render={
|
||||
() => (<Statistics {...props} />)
|
||||
}
|
||||
></Route>
|
||||
>>>>>>> 91839339 (S某M修改)
|
||||
{/* 后台管理-报名列表 */}
|
||||
<Route path="/competition/qz2022/management/applys"
|
||||
render={
|
||||
|
|
|
@ -78,22 +78,22 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
{ max: 32, message: '长度不能超过32个字符' }],
|
||||
<Input placeholder="请输入职务"/>
|
||||
)}
|
||||
{helper('军衔',
|
||||
{helper('JX',
|
||||
'expertName',
|
||||
[{ required: true, message: "军衔不能为空" },
|
||||
[{ required: true, message: "JX不能为空" },
|
||||
{ max: 32, message: '长度不能超过32个字符' }],
|
||||
<Input placeholder="请输入军衔"/>
|
||||
<Input placeholder="请输入JX"/>
|
||||
)}
|
||||
{helper('赛区',
|
||||
'expertName',
|
||||
[{ required: true, message: "军衔不能为空" }],
|
||||
[{ required: true, message: "JX不能为空" }],
|
||||
<Select placeholder="请选择赛区">
|
||||
{competitionArea.map(item=> {return <Option value={item.value} key={item.value}>{item.title}</Option>})}
|
||||
</Select>
|
||||
)}
|
||||
{helper('赛项',
|
||||
'expertName',
|
||||
[{ required: true, message: "军衔不能为空" }],
|
||||
[{ required: true, message: "JX不能为空" }],
|
||||
<Select placeholder="请选择赛项">
|
||||
{competitionType.map(item=> {return <Option value={item.value} key={item.value}>{item.title}</Option>})}
|
||||
</Select>
|
||||
|
@ -123,7 +123,7 @@ export default Form.create()(({ match, history, showNotification, form, current_
|
|||
<div><span>参赛单位 : </span></div>
|
||||
<div className="info-right"><span>参赛团队负责人姓名 : </span></div>
|
||||
<div><span>职务 : </span></div>
|
||||
<div className="info-right"><span>军衔 : </span></div>
|
||||
<div className="info-right"><span>JX : </span></div>
|
||||
<div><span>赛区 : </span></div>
|
||||
<div className="info-right"><span>赛项 : </span></div>
|
||||
<div><span>课题来源 : </span></div>
|
||||
|
|
|
@ -86,7 +86,7 @@ class EditableTable extends React.Component {
|
|||
editable: true,
|
||||
},
|
||||
{
|
||||
title: '军衔',
|
||||
title: 'JX',
|
||||
dataIndex: 'militaryRank',
|
||||
editable: true,
|
||||
},
|
||||
|
|
|
@ -15,10 +15,10 @@ function Introduce({ form, showNotification, match, history }) {
|
|||
return (
|
||||
<div className="introduce">
|
||||
<div className="introduce-content clearfix">
|
||||
<div className="introduce-video"><video src="http://111.8.36.180:8000/preview/93579e3f4bc0ba33075a905c08c79322_1648171321186.mp4" autoPlay controls></video></div>
|
||||
<div className="introduce-video"><video src="http://111.8.36.180:8000/preview/93579e3f4bc0ba33075a905c08c79322_1648197024501.mp4" autoPlay controls></video></div>
|
||||
|
||||
<div className="introduce-info">
|
||||
<h3 className="info-tit">“启智”2022作战概念·军事需求创新大赛</h3>
|
||||
<h3 className="info-tit">“启智”2022作战概念·事需求创新大赛</h3>
|
||||
{/* <div className="info-content"> */}
|
||||
<p className="content-item">创客以用户创新为核心理念,是面向知识社会
|
||||
的创新2.0模式在设计与制造领域的典型体现。创
|
||||
|
|
|
@ -40,7 +40,7 @@ function Introduce({ form, showNotification, match, history:{location:{pathname}
|
|||
key: 'reviewEndOn',
|
||||
},
|
||||
{
|
||||
title: '军衔',
|
||||
title: 'JX',
|
||||
dataIndex: 'surplus',
|
||||
key: 'surplus',
|
||||
},
|
||||
|
|
|
@ -25,7 +25,7 @@ function NoticeDetail({ form, showNotification, match, history }) {
|
|||
</div>
|
||||
<div className="notice_title _1818 font-18">启智2022大赛即将开始报名!</div>
|
||||
<div className="notice_time">发布时间: 2021年3月31日</div>
|
||||
<div className="_1818">“启智 2022 创意征集行动”为军委联合参谋部、科学技术委员会联合举办,军事科学院、航天科技集团协手创办的大型竞赛。现竞赛已临近报名阶段,报名安排如下:</div>
|
||||
<div className="_1818">“启智 2022 创意征集行动”为JW联合参谋部、科学技术委员会联合举办,JS科学院、航天科技集团协手创办的大型竞赛。现竞赛已临近报名阶段,报名安排如下:</div>
|
||||
|
||||
<div className="_1818 notice_small_title">【报名时间】</div>
|
||||
<div className="_1818">2022年4月1日~2022年4月30日</div>
|
||||
|
|
|
@ -19,7 +19,7 @@ function Notice({ form, showNotification, match, history }) {
|
|||
<Link to={"/competition/qz2022/notice/1"}>
|
||||
<div className="qz_notice_cont">
|
||||
<div className="notCont_head">启智2022大赛即将开始报名!</div>
|
||||
<div className="font-15">“启智 2022 创意征集行动”为军委联合参谋部、科学技术委员会联合举办,军事科学院、航天科技集团协手创办的大型竞赛。现竞赛已临近报名阶段,报名安排如下...</div>
|
||||
<div className="font-15">“启智 2022 创意征集行动”为JW联合参谋部、科学技术委员会联合举办,JS科学院、航天科技集团协手创办的大型竞赛。现竞赛已临近报名阶段,报名安排如下...</div>
|
||||
<p>2022-03-31</p>
|
||||
</div>
|
||||
</Link>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
// 赛项*(必填项,placeholder:请选择赛项,下拉列表选择,选项为:战略方向,作战领域,前沿技术)
|
||||
// 赛区配置
|
||||
export const competitionArea = [
|
||||
{ value: '0', title: "陆军分赛区"},
|
||||
{ value: '1', title: "海军分赛区"},
|
||||
{ value: '2', title: "空军分赛区"},
|
||||
{ value: '3', title: "火箭军分赛区"},
|
||||
{ value: '0', title: "LJ分赛区"},
|
||||
{ value: '1', title: "HJ分赛区"},
|
||||
{ value: '2', title: "KJ分赛区"},
|
||||
{ value: '3', title: "HJJ分赛区"},
|
||||
{ value: '4', title: "战略支援部队分赛区"},
|
||||
{ value: '5', title: "联勤保障分赛区"},
|
||||
{ value: '6', title: "武军部队分赛区"}
|
||||
{ value: '6', title: "WJ部队分赛区"}
|
||||
];
|
||||
// 赛项配置
|
||||
export const competitionType = [
|
||||
|
|
|
@ -0,0 +1,152 @@
|
|||
import React, { useEffect } from 'react';
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
let fontSizeText = 16;
|
||||
let clientWidth = document.body.clientWidth;
|
||||
if (clientWidth < 1000) {
|
||||
fontSizeText = 16
|
||||
} else if (clientWidth >= 1000 && clientWidth <= 2000) {
|
||||
fontSizeText = 14 + (clientWidth - 1000) / 500;
|
||||
} else if (clientWidth > 2000) {
|
||||
fontSizeText = 16 + (clientWidth - 2000) / 500;
|
||||
} else if (clientWidth > 3000) {
|
||||
fontSizeText = 18 + (clientWidth - 3000) / 2000;
|
||||
}
|
||||
let fontSizeTitle = 1.25 * fontSizeText;
|
||||
|
||||
|
||||
export default ({ id,className, title, xData, yData }) => {
|
||||
|
||||
useEffect(() => {
|
||||
let newEchartBar = document.getElementById(id) && echarts.init(document.getElementById(id));
|
||||
let textColor = "#7988a5";
|
||||
let normalColor = "#e8e8ed";
|
||||
|
||||
let option = {
|
||||
grid: {
|
||||
left: "3%",
|
||||
top: "15%",
|
||||
right: "8%",
|
||||
bottom: 0,
|
||||
containLabel: true
|
||||
},
|
||||
title: {
|
||||
text: title,
|
||||
fontSize: fontSizeTitle,
|
||||
position: 'inside',
|
||||
textStyle: {
|
||||
color: textColor
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
axisPointer: {
|
||||
type: "shadow",
|
||||
textStyle: {
|
||||
color: "#fff"
|
||||
}
|
||||
},
|
||||
},
|
||||
xAxis: [{
|
||||
type: "category",
|
||||
data: xData,
|
||||
axisPointer: {
|
||||
type: "shadow"
|
||||
},
|
||||
axisLabel: {
|
||||
textStyle: {
|
||||
color: textColor,
|
||||
fontSize: .75 * fontSizeText
|
||||
},
|
||||
interval: 0,
|
||||
rotate: 40
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: normalColor
|
||||
}
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
splitLine: {
|
||||
show: false
|
||||
}
|
||||
}],
|
||||
yAxis: [{
|
||||
type: "value",
|
||||
minInterval: 1,
|
||||
nameTextStyle: {
|
||||
color: textColor,
|
||||
fontSize: fontSizeText
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: "{value}",
|
||||
textStyle: {
|
||||
color: textColor,
|
||||
fontSize: fontSizeText
|
||||
}
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: normalColor
|
||||
}
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: normalColor
|
||||
}
|
||||
},
|
||||
}],
|
||||
series: [{
|
||||
type: "bar",
|
||||
data: yData,
|
||||
barWidth: "60%",
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: {
|
||||
type: "linear",
|
||||
x: 0,
|
||||
y: 0,
|
||||
x2: 0,
|
||||
y2: 1,
|
||||
colorStops: [{
|
||||
offset: 0,
|
||||
color: "#deeefe"
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: "#2c8bff"
|
||||
}
|
||||
],
|
||||
globalCoord: false
|
||||
}
|
||||
}
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
// position: ['-20%', -1.2 * fontSizeText],
|
||||
position: "top",
|
||||
// color: "#2c8bff",
|
||||
color: '#555',
|
||||
fontSize: fontSizeText,
|
||||
formatter: function (params) {
|
||||
// var percent = 0;
|
||||
// percent = ((params.value / allStaff.num) * 100).toFixed(0);
|
||||
return params.value || ''
|
||||
// + '\n' + percent + '%';
|
||||
},
|
||||
}
|
||||
}]
|
||||
};
|
||||
newEchartBar && newEchartBar.setOption(option);
|
||||
}, [id, title, xData, yData])
|
||||
|
||||
return (
|
||||
<div id={id} key={id} className={className} style={{minHeight:"20vh"}}>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
import React from "react";
|
||||
import btn from "../image/btn-right.png";
|
||||
import './index.scss';
|
||||
import '../../index.scss';
|
||||
|
||||
function Statistics({ form, showNotification, match, history }) {
|
||||
|
||||
return (
|
||||
<div className="statistics qz_main clearfix">
|
||||
<div className="statistics-words">
|
||||
<div className="statistics-tit">交流互动</div>
|
||||
<div className="statistics-content">
|
||||
<p>集萃群智体会</p>
|
||||
<p>与论坛成员交流比赛经验,分享参赛心得</p>
|
||||
<p>汇聚赛事资讯</p>
|
||||
<p>助您第一时间解读竞赛动态,把握赛事脉搏</p>
|
||||
</div>
|
||||
<div className="statistics-btn">
|
||||
<span className="detail1">了解详情</span>
|
||||
<img
|
||||
className="iconPlay1"
|
||||
src={btn}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default Statistics;
|
|
@ -0,0 +1,61 @@
|
|||
.statistics {
|
||||
margin: 9rem auto;
|
||||
padding: 0 1.5rem;
|
||||
background: #fff;
|
||||
.statistics-left {
|
||||
float: left;
|
||||
position: relative;
|
||||
top: -5rem;
|
||||
width: 56.6%;
|
||||
box-shadow: 0px 3px 8px rgba(219, 227, 255, 0.7) inset;
|
||||
margin-bottom: -3.5rem;
|
||||
padding: 1.25rem;
|
||||
}
|
||||
|
||||
.statistics-words {
|
||||
display: inline-block;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
.statistics-tit {
|
||||
display: inline-block;
|
||||
font-weight: 700;
|
||||
color: #2e3341;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1rem;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: #2e5bfe;
|
||||
}
|
||||
}
|
||||
.statistics-conten {
|
||||
font-size: 1rem;
|
||||
line-height: 1.625rem;
|
||||
}
|
||||
|
||||
.statistics-btn {
|
||||
margin-top:1.5rem;
|
||||
width: 9.5rem;
|
||||
height: 2.5rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border: 2px solid #2e5bfe;
|
||||
background-color: #2e5bfe;
|
||||
}
|
||||
|
||||
.detail1 {
|
||||
white-space: nowrap;
|
||||
color: #ffffff;
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
margin-left:1em;
|
||||
}
|
||||
|
||||
.iconPlay1 {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue