forked from Gitlink/forgeplus-react
Merge pull request '启智2022增加需求' (#362) from durian/forgeplus-react:dev_military_qz2022 into pre_dev_military
This commit is contained in:
commit
28c54cf03e
|
@ -15,13 +15,45 @@
|
|||
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/editormd.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/merge.css">
|
||||
<%= htmlWebpackPlugin.tags.headTags %>
|
||||
<style>
|
||||
#ie_info{
|
||||
display: none;
|
||||
text-align: center;
|
||||
margin: 10vh;
|
||||
color: #4154f1;
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--用于markdown转html -->
|
||||
<div id="ie_info">不支持当前浏览器,请更换浏览器!<br/>推荐使用谷歌浏览器、360浏览器极速模式、火狐浏览器或Edge浏览器!</div>
|
||||
<div id="md_div" style="display: none;"></div>
|
||||
<div id="root" class="page -layout-v -fit widthunit"></div>
|
||||
<div id="picture_display" style="display: none;"></div>
|
||||
<script src="%PUBLIC_URL%js/jquery-1.8.3.min.js"></script>
|
||||
<script>
|
||||
var getExplorer = (function () {
|
||||
var explorer = window.navigator.userAgent,
|
||||
compare = function (s) { return (explorer.indexOf(s) >= 0); },
|
||||
ie11 = (function () { return ("ActiveXObject" in window) })();
|
||||
if (compare("MSIE") || ie11) { return 'ie'; }
|
||||
else if (compare("Firefox") && !ie11) { return 'Firefox'; }
|
||||
else if (compare("Chrome") && !ie11) {
|
||||
if (explorer.indexOf("Edge") > -1) {
|
||||
return 'Edge';
|
||||
} else {
|
||||
return 'Chrome';
|
||||
}
|
||||
}
|
||||
else if (compare("Opera") && !ie11) { return 'Opera'; }
|
||||
else if (compare("Safari") && !ie11) { return 'Safari'; }
|
||||
})()
|
||||
if (getExplorer == 'ie') {
|
||||
$('#ie_info').css({display:'block'});
|
||||
$('#root').css({display:'none'});
|
||||
}
|
||||
</script>
|
||||
<script src="%PUBLIC_URL%js/js_min_all.js"></script>
|
||||
<script src="%PUBLIC_URL%js/codemirror/codemirror.js"></script>
|
||||
<script src="%PUBLIC_URL%js/editormd/editormd.min.js"></script>
|
||||
|
|
|
@ -293,7 +293,7 @@ class App extends Component {
|
|||
mygetHelmetapi: response.data.setting
|
||||
});
|
||||
//存储配置到游览器
|
||||
localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
response.data.setting&&localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
localStorage.setItem('chromesettingresponse', JSON.stringify(response));
|
||||
try {
|
||||
if (response.data.setting.tab_logo_url) {
|
||||
|
|
|
@ -26,15 +26,15 @@ if (isDev) {
|
|||
debugType = window.location.search.indexOf('debug=t') !== -1 ? 'teacher' :
|
||||
window.location.search.indexOf('debug=s') !== -1 ? 'student' :
|
||||
window.location.search.indexOf('debug=a') !== -1 ? 'a' : parsed.debug || 'admin'
|
||||
}
|
||||
}
|
||||
window._debugType = debugType;
|
||||
export function initAxiosInterceptors(props) {
|
||||
// 判断网络是否连接
|
||||
initOnlineOfflineListener();
|
||||
|
||||
// var proxy = "http://192.168.1.40:3000";
|
||||
// var proxy = "http://111.8.36.180:8000";
|
||||
var proxy = "http://117.50.100.12:49999";
|
||||
var proxy = "http://111.8.36.180:8000";
|
||||
// var proxy = "http://117.50.100.12:49999";
|
||||
|
||||
//响应前的设置
|
||||
axios.interceptors.request.use(
|
||||
|
|
|
@ -5,7 +5,7 @@ import './Component.scss';
|
|||
export default (()=>{
|
||||
return(
|
||||
<div className="handleBox">
|
||||
<a href="https://www.osredm.com/forums/594/detail" target="_blank" >
|
||||
<a href="https://help.osredm.com/" target="_blank" >
|
||||
<img src={Handbook} alt=""/>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -184,7 +184,7 @@ class NewHeader extends Component {
|
|||
axios.get(url).then((response) => {
|
||||
if (response && response.data && response.data.setting) {
|
||||
this.setState({ settings: response.data.setting });
|
||||
localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
response.data.setting&&localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
localStorage.setItem('chromesettingresponse', JSON.stringify(response));
|
||||
} else {
|
||||
this.gettablogourlnull();
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
import React, { memo, useEffect, useState } from 'react';
|
||||
import { Button, Modal } from 'antd';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import bg from '../img/modal.png';
|
||||
import bg_local from '../img/modal_local.png';
|
||||
import './index.scss';
|
||||
|
||||
|
||||
|
||||
function QzModal() {
|
||||
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
let qzModalTime = localStorage.qzModalTime;
|
||||
let nowTime = new Date().getTime();
|
||||
if (qzModalTime) {
|
||||
if (nowTime - qzModalTime > 24 * 3600 * 1000) {
|
||||
// 延时展示,保证渲染modal不会白屏
|
||||
setTimeout(()=>{setVisible(true);},500)
|
||||
localStorage.setItem('qzModalTime', nowTime);
|
||||
}
|
||||
} else {
|
||||
setTimeout(()=>{setVisible(true);},500)
|
||||
localStorage.setItem('qzModalTime', nowTime);
|
||||
}
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<Modal
|
||||
title="Basic Modal"
|
||||
visible={visible}
|
||||
onCancel={() => { setVisible(false) }}
|
||||
footer={null}
|
||||
className='qzModal'
|
||||
width='728px'
|
||||
maskClosable={false}
|
||||
>
|
||||
<img src={window.location.href.indexOf('osredm.jk')>-1?bg_local: bg} />
|
||||
|
||||
<Link to="/competition/qz2022" className="qz-btn">查看详情</Link>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
|
||||
export default memo(QzModal);
|
|
@ -0,0 +1,46 @@
|
|||
.qzModal {
|
||||
.ant-modal-body {
|
||||
padding: 0;
|
||||
background: rgb(48,118,207);
|
||||
|
||||
img {
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-modal-header {
|
||||
height: 0;
|
||||
background: rgb(48,118,207);
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.ant-modal-close {
|
||||
top: 0 !important;
|
||||
}
|
||||
.ant-modal-close-icon {
|
||||
border: 1px solid #fff;
|
||||
color: #fff;
|
||||
border-radius: 50%;
|
||||
padding: 5%;
|
||||
}
|
||||
|
||||
.qz-btn {
|
||||
position: absolute;
|
||||
bottom: -70px;
|
||||
left: 295px;
|
||||
width: 137px;
|
||||
height: 49px;
|
||||
background-color: #e96d2a;
|
||||
border-color: #e96d2a;
|
||||
border-radius: 6px;
|
||||
color: #fff;
|
||||
font-size:16px;
|
||||
text-align: center;
|
||||
line-height: 49px;
|
||||
&:hover{
|
||||
color: #fff !important;
|
||||
background-color: #f96d2a;
|
||||
border-color: #f96d2a;
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 295 KiB |
Binary file not shown.
After Width: | Height: | Size: 306 KiB |
|
@ -4,6 +4,7 @@ import { isMobile } from 'educoder';
|
|||
import './index.scss';
|
||||
|
||||
import Slider from './Slider';
|
||||
import QzModal from './QzModal';
|
||||
import FirstSection from './FirstSection';
|
||||
import SecondSection from './SecondSection';
|
||||
import ThirdSection from './ThirdSection';
|
||||
|
@ -128,7 +129,7 @@ function HomePage({ history }) {
|
|||
<div className="homePage">
|
||||
|
||||
<Slider />
|
||||
|
||||
<QzModal />
|
||||
<div id="home-first-section" className="home-first-section">
|
||||
<FirstSection first={first} />
|
||||
</div>
|
||||
|
|
|
@ -153,6 +153,8 @@ const Qz2022 = (props) => {
|
|||
props.showLoginDialog();
|
||||
}else if(enrollStatus && !enrollStatus.enroll_status){
|
||||
props.showNotification("您还未报名竞赛!");
|
||||
}else if(enrollStatus && enrollStatus.status === 0){
|
||||
props.showNotification("报名信息被管理员驳回!");
|
||||
} else {
|
||||
!referStatus ? props.showNotification(!referEnd ? `竞赛尚未开始提交作品,提交作品开始时间为:${qzDetail && qzDetail.enroll_date.substring(0, 10)}` : "比赛已结束") : "";
|
||||
}
|
||||
|
@ -165,7 +167,7 @@ const Qz2022 = (props) => {
|
|||
<React.Fragment>
|
||||
<Login {...props} />
|
||||
{/* banner图+选项 */}
|
||||
<img src={banner_url || (is_local?banner_local: banner)} className="qz_banner"/>
|
||||
<img src={banner_url || (is_local?banner_local: banner)} className="qz_banner" alt=""/>
|
||||
<div className="qz2022">
|
||||
<div className={`qz2022-top ${fixedTop}`}>
|
||||
{paths.indexOf(active) !== -1 && <ul className="qz2022Menu mt20 qz_main">
|
||||
|
@ -181,7 +183,7 @@ const Qz2022 = (props) => {
|
|||
{/* 处于报名阶段正常跳转到报名页面,不处于右侧弹消息 */}
|
||||
<li className={active === "apply" ? "active" : ""}>
|
||||
<Link to={{ pathname: applyStatus && current_user && current_user.login ? '/competition/qz2022/apply' :'' }} onClick={()=>{current_user && current_user.login ? !applyStatus && props.showNotification("报名时间已截止") : props.showLoginDialog()}}>参赛报名</Link>
|
||||
</li>
|
||||
</li>
|
||||
<li className={active === "refer" ? "active" : ""}>
|
||||
<Link to={{ pathname: referStatus && !referEnd && current_user && current_user.login && enrollStatus && enrollStatus.enroll_status ? `/competition/qz2022/refer` : '' }} onClick={goToRefer}>提案提交</Link>
|
||||
</li>
|
||||
|
@ -243,7 +245,7 @@ const Qz2022 = (props) => {
|
|||
{/* 参赛报名 */}
|
||||
<Route path="/competition/qz2022/apply"
|
||||
render={
|
||||
() => (<Apply {...props} qzDetail={qzDetail} enrollStatus={enrollStatus} setReload={setReload} />)
|
||||
() => (<Apply {...props} qzDetail={qzDetail} enrollStatus={enrollStatus} setReload={setReload}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 提案提交 */}
|
||||
|
@ -273,13 +275,13 @@ const Qz2022 = (props) => {
|
|||
{/* 后台管理-报名列表 */}
|
||||
<Route path="/competition/qz2022/management/applys"
|
||||
render={
|
||||
() => (<Management {...props} qzDetail={qzDetail} />)
|
||||
() => (<Management {...props} qzDetail={qzDetail}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 后台管理-作品列表 */}
|
||||
<Route path="/competition/qz2022/management/production"
|
||||
render={
|
||||
() => (<Management {...props} qzDetail={qzDetail} />)
|
||||
() => (<Management {...props} qzDetail={qzDetail}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 大赛介绍 */}
|
||||
|
|
|
@ -15,6 +15,11 @@ export async function enrollCompetition(data){
|
|||
return axios.post(`/competition_infos/qz2022/enroll.json`,data);
|
||||
}
|
||||
|
||||
// 修改报名信息
|
||||
export async function enrollUpdate(data){
|
||||
return axios.post(`/competition_infos/qz2022/enroll_update.json`,data);
|
||||
}
|
||||
|
||||
// 统计启智2022 竞赛
|
||||
export async function stattistics(data){
|
||||
return axios.get( `/competition_infos/qz2022/statistics.json`);
|
||||
|
@ -63,4 +68,9 @@ export async function deleteQz2022Notice(id){
|
|||
// 编辑大赛介绍、大赛指南、关于我
|
||||
export async function updateQz2022(data){
|
||||
return axios.put(`/competition_infos/qz2022.json`,data);
|
||||
}
|
||||
|
||||
// 修改竞赛报名状态
|
||||
export async function updateEnroll(data){
|
||||
return axios.post(`/competition_infos/qz2022/enroll_status_update.json`,data);
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
import React, {useState, useCallback} from "react";
|
||||
import { Input, Select, Button, Form, message, Radio } from 'antd';
|
||||
import { Input, Select, Button, Form, message, Radio, Modal } from 'antd';
|
||||
import { Base64 } from 'js-base64';
|
||||
import {enrollCompetition} from '../api';
|
||||
import {enrollCompetition, enrollUpdate} from '../api';
|
||||
import {current_main_site_url} from '../fetch';
|
||||
import EditTable from "../editTable";
|
||||
import apply_top from "../image/apply_top.png";
|
||||
|
@ -18,17 +18,23 @@ const Option = Select.Option;
|
|||
|
||||
export default Form.create()((props) => {
|
||||
const {form, qzDetail, enrollStatus, setReload, current_user, history} = props;
|
||||
const {getFieldDecorator, validateFields, setFieldsValue } = form;
|
||||
const {getFieldDecorator, validateFields, setFieldsValue} = form;
|
||||
const [members, setMembers] = useState([]);
|
||||
const [errorMessage, setErrorMessage] = useState(undefined);
|
||||
const [sourceBy, setSourceBy] = useState(1);
|
||||
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
useEffect(()=>{
|
||||
if(current_user && !current_user.login){
|
||||
const applyStatus = qzDetail ? Date.parse(new Date()) < Date.parse(new Date(qzDetail.enroll_date)) : true;
|
||||
if((current_user && !current_user.login) || !applyStatus){
|
||||
history.push("/competition/qz2022");
|
||||
}
|
||||
},[])
|
||||
if(enrollStatus && enrollStatus.enroll_status && enrollStatus.status === 0){
|
||||
setMembers(enrollStatus.enroll_info.members);
|
||||
setSourceBy(enrollStatus.enroll_info.subject_source_type);
|
||||
setFieldsValue(enrollStatus.enroll_info);
|
||||
}
|
||||
},[current_user, enrollStatus])
|
||||
|
||||
// form表单公共处理函数
|
||||
const helper = useCallback(
|
||||
|
@ -49,8 +55,8 @@ export default Form.create()((props) => {
|
|||
})
|
||||
}
|
||||
|
||||
//提交报名信息
|
||||
function applySubmit(){
|
||||
// 检查用户填写信息
|
||||
function checkInfo(){
|
||||
setErrorMessage(undefined);
|
||||
// 检查用户输入的成员属性是否完全
|
||||
if(members.length > 0){
|
||||
|
@ -76,6 +82,17 @@ export default Form.create()((props) => {
|
|||
return;
|
||||
}
|
||||
}
|
||||
validateFields((error, values)=>{
|
||||
if(error){
|
||||
return
|
||||
}else{
|
||||
setVisible(true);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//提交报名信息
|
||||
function applySubmit(){
|
||||
validateFields((error, values)=>{
|
||||
if(error){
|
||||
return
|
||||
|
@ -86,21 +103,34 @@ export default Form.create()((props) => {
|
|||
members,
|
||||
subject_source_type: sourceBy,
|
||||
}
|
||||
enrollCompetition(params).then(response=>{
|
||||
if(response && response.data.message === "success"){
|
||||
setReload(Math.random());
|
||||
message.success('报名成功')
|
||||
}else{
|
||||
message.error(response.message);
|
||||
}
|
||||
})
|
||||
// enrollStatus.enroll_status判断用户是首次提交资料还是修改资料
|
||||
if(enrollStatus && !enrollStatus.enroll_status){
|
||||
enrollCompetition(params).then(response=>{
|
||||
if(response && response.data.message === "success"){
|
||||
setReload(Math.random());
|
||||
message.success('报名成功')
|
||||
}else{
|
||||
message.error(response.message);
|
||||
}
|
||||
setVisible(false);
|
||||
})
|
||||
}else{
|
||||
enrollUpdate(params).then(response=>{
|
||||
if(response && response.data.message === "success"){
|
||||
setReload(Math.random());
|
||||
message.success('资料修改成功');
|
||||
}else{
|
||||
message.error(response.message);
|
||||
}
|
||||
setVisible(false);
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 计划支持 未输入课题来源报错
|
||||
function errorSource(rule, value, callback){
|
||||
console.log(rule, value, sourceBy);
|
||||
if(sourceBy === 1 && !value){
|
||||
// 计划支持 必须输入课题名称
|
||||
callback('请正确输入课题来源');
|
||||
|
@ -108,34 +138,34 @@ export default Form.create()((props) => {
|
|||
callback();
|
||||
}
|
||||
}
|
||||
console.log(current_main_site_url);
|
||||
|
||||
return (
|
||||
<div className="qz_main">
|
||||
<div className="step">
|
||||
<span className="left_tit"> 报名</span>
|
||||
<img src={apply_top} className="step_icon"/>
|
||||
<img src={apply_top} className="step_icon" alt=""/>
|
||||
<div className="border_dashed"></div>
|
||||
<div className="img_span">
|
||||
<img src={enrollStatus && enrollStatus.enroll_status ? apply_one : apply_one_active} className="step_icon"/>
|
||||
<img src={enrollStatus && (!enrollStatus.enroll_status || enrollStatus.status === 0) ? apply_one_active : apply_one} className="step_icon" alt=""/>
|
||||
个人信息
|
||||
</div>
|
||||
<div className="border_dashed"></div>
|
||||
<div className="img_span">
|
||||
<img src={enrollStatus && enrollStatus.enroll_status ? apply_two_active : apply_two} className="step_icon"/>
|
||||
<img src={enrollStatus && enrollStatus.enroll_status && enrollStatus.status !== 0 ? apply_two_active : apply_two} className="step_icon" alt=""/>
|
||||
报名成功
|
||||
</div>
|
||||
<div className="border_dashed"></div>
|
||||
<img src={apply_down} className="step_icon"/>
|
||||
<img src={apply_down} className="step_icon" alt=""/>
|
||||
</div>
|
||||
{!(enrollStatus && enrollStatus.enroll_status) && <div className="apply_tip font-15">
|
||||
<img src={apply_notice} className="apply_notice"/>
|
||||
请认真核对报名信息,务必与线下报名表信息一致!
|
||||
<img src={apply_notice} className="apply_notice" alt=""/>
|
||||
请认真核对报名信息,务必与线下报名表信息一致!
|
||||
</div>}
|
||||
<div className="apply_information mb60">
|
||||
<div className="info_head">{!(enrollStatus && enrollStatus.enroll_status) && '填写'}报名信息</div>
|
||||
{/* 报名表单 */}
|
||||
{
|
||||
!(enrollStatus && enrollStatus.enroll_status) &&
|
||||
enrollStatus && (!enrollStatus.enroll_status || enrollStatus.status === 0) &&
|
||||
<Form className="info_form">
|
||||
{helper('参赛单位',
|
||||
'org_name',
|
||||
|
@ -184,7 +214,7 @@ console.log(current_main_site_url);
|
|||
{sourceBy === 1 && helper('',
|
||||
'subject_source_name',
|
||||
[{ max: 32, message: '超出限制长度32位字符,请重新编辑' },
|
||||
{ validator: (rule, value, callback)=>{errorSource(rule, value, callback)}}],
|
||||
{ validator: (rule, value, callback)=>{errorSource(rule, value, callback)}}],
|
||||
<Input placeholder="请输入项目名称" onBlur={()=>{verify("subject_source_name")}}/>
|
||||
)}
|
||||
</div>}
|
||||
|
@ -199,31 +229,43 @@ console.log(current_main_site_url);
|
|||
<p className="error_message">{errorMessage}</p>
|
||||
{/* */}
|
||||
{qzDetail &&
|
||||
<EditTable setMembers={setMembers} isLocal = {qzDetail.is_local}/>}
|
||||
<EditTable members={enrollStatus && enrollStatus.enroll_status ? enrollStatus.enroll_info.members : [{key:"0"}]} setMembers={setMembers} isLocal = {qzDetail.is_local}/>}
|
||||
</div>
|
||||
</Form>}
|
||||
{/* 已报名,报名信息 */}
|
||||
{enrollStatus && enrollStatus.enroll_status &&
|
||||
{enrollStatus && enrollStatus.enroll_status && enrollStatus.status !== 0 &&
|
||||
<div className="info">
|
||||
<div><span>参赛单位 : </span>{enrollStatus && enrollStatus.enroll_info.org_name}</div>
|
||||
<div className="info-right"><span>参赛团队负责人姓名 : </span>{enrollStatus && enrollStatus.enroll_info.leader}</div>
|
||||
{qzDetail && qzDetail.is_local && <div><span>职务 : </span>{enrollStatus && enrollStatus.enroll_info.org_job}</div>}
|
||||
<div><span>参赛单位 : </span>{enrollStatus && enrollStatus.enroll_info.org_name}</div>
|
||||
<div className="info-right"><span>参赛团队负责人姓名 : </span>{enrollStatus && enrollStatus.enroll_info.leader}</div>
|
||||
{qzDetail && qzDetail.is_local && <div><span>职务 : </span>{enrollStatus && enrollStatus.enroll_info.org_job}</div>}
|
||||
{qzDetail && qzDetail.is_local && <div className="info-right"><span>{Base64.decode('5Yab6KGU')} : </span>{enrollStatus && enrollStatus.enroll_info.org_rank}</div>}
|
||||
<div><span>赛区 : </span>{enrollStatus && enrollStatus.enroll_info.zone}</div>
|
||||
<div className="info-right"><span>赛项 : </span>{enrollStatus && enrollStatus.enroll_info.sub_competition}</div>
|
||||
<div><span>赛区 : </span>{enrollStatus && enrollStatus.enroll_info.zone}</div>
|
||||
<div className="info-right"><span>赛项 : </span>{enrollStatus && enrollStatus.enroll_info.sub_competition}</div>
|
||||
{qzDetail && qzDetail.is_local && <div><span>课题来源 : </span>{enrollStatus && enrollStatus.enroll_info.subject_source_type === 0 ? "自主提报" : enrollStatus.enroll_info.subject_source_name}</div>}
|
||||
<div className={`${qzDetail && qzDetail.is_local ? '':'info_bottom'}`}><span>电话 : </span>{enrollStatus && enrollStatus.enroll_info.phone}</div>
|
||||
<div className={`info-right ${qzDetail && qzDetail.is_local ? 'ellipsis_div':''}`}><span>成员 : </span>{enrollStatus && enrollStatus.enroll_info.members && enrollStatus.enroll_info.members.map(item=>{return item.real_name + ','})}</div>
|
||||
<div className={`${qzDetail && qzDetail.is_local ? '':'info_bottom'}`}><span>电话 : </span>{enrollStatus && enrollStatus.enroll_info.phone}</div>
|
||||
<div className={`info-right ${qzDetail && qzDetail.is_local ? 'ellipsis_div':''}`}><span>成员 : </span>{enrollStatus && enrollStatus.enroll_info.members && enrollStatus.enroll_info.members.map(item=>{return item.real_name + ','})}</div>
|
||||
</div>}
|
||||
</div>
|
||||
{!(enrollStatus && enrollStatus.enroll_status) && <div className="apply_but">
|
||||
<Button type="primary" className="submit_info" onClick={applySubmit}>
|
||||
{enrollStatus && (!enrollStatus.enroll_status || enrollStatus.status === 0) && <div className="apply_but">
|
||||
<Button type="primary" className="submit_info" onClick={checkInfo}>
|
||||
提交资料
|
||||
</Button>
|
||||
<a href={qzDetail && qzDetail.is_local ? 'http://osredm.jk:81/api/attachments/1963' : `${current_main_site_url}/api/attachments/${window.location.host.indexOf("osredm")!== -1 ? "4122" : current_main_site_url.indexOf("49999") === -1 ? "3715" : "1896"}`}>
|
||||
<Button className="add_member download ml20">下载报名表</Button>
|
||||
</a>
|
||||
</div>}
|
||||
<Modal
|
||||
title="提示"
|
||||
visible={visible}
|
||||
onOk={applySubmit}
|
||||
onCancel={()=>{setVisible(false)}}
|
||||
centered
|
||||
wrapClassName="applyInfoCon"
|
||||
cancelText=""
|
||||
>
|
||||
<div className="tips mb10"><i className="iconfont icon-shanchu_tc_icon1 font-24 mr10" style={{color: '#ffa13a'}}></i><span className="tipTitle font-16">确定提交报名信息</span></div>
|
||||
<span>提交后报名信息将无法修改!</span>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
})
|
|
@ -153,4 +153,32 @@
|
|||
.download{
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
.applyInfoCon .ant-modal-content{
|
||||
.ant-modal-header{
|
||||
padding: 10px 24px;
|
||||
background-color: #eef1ff;
|
||||
border-bottom:none;
|
||||
}
|
||||
.ant-modal-close{top: 1px !important;}
|
||||
.ant-modal-close-x{font-size: 20px;}
|
||||
.ant-modal-title{
|
||||
font-weight: normal !important;
|
||||
text-align: left;
|
||||
}
|
||||
.ant-modal-body{
|
||||
padding: 50px 50px 40px;;
|
||||
text-align: center;
|
||||
.tipTitle{color: #181818;}
|
||||
}
|
||||
.tips{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.ant-modal-footer{
|
||||
border-top: none;
|
||||
text-align: center;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
}
|
|
@ -59,8 +59,8 @@ export default Form.create()((props) => {
|
|||
<div className="qz_notice">
|
||||
<div className="qz_main notice_detal qz2022_notice_edit">
|
||||
<div className="breadCrumb mb20">
|
||||
<img src={icon} className="mr12 icon_d"/>
|
||||
<Link to={`/competition/qz2022/${type}`}><span className="font-16 _999">{type === "introduce" ? "大赛介绍" : type === "fingerpost" ? "大赛指南" : "联系我们"}</span></Link>
|
||||
<img src={icon} className="mr12 icon_d" alt=""/>
|
||||
<Link to={`/competition/qz2022/${type}`}><span className="font-16 _999">{type === "introduce" ? "首页" : type === "fingerpost" ? "大赛指南" : "联系我们"}</span></Link>
|
||||
<span className="mr10 ml10 _999">/</span>
|
||||
<span className="font-16 _18">编辑</span>
|
||||
</div>
|
||||
|
|
|
@ -29,7 +29,7 @@ class EditableCell extends React.Component {
|
|||
|
||||
renderCell = form => {
|
||||
this.form = form;
|
||||
const {dataIndex, title } = this.props;
|
||||
const {record, dataIndex, title } = this.props;
|
||||
return <Form.Item >
|
||||
{form.getFieldDecorator(dataIndex, {
|
||||
rules: [
|
||||
|
@ -37,6 +37,7 @@ class EditableCell extends React.Component {
|
|||
{max: 32, message: '超出限制长度32位字符,请重新编辑' }
|
||||
],
|
||||
validateFirst: true,
|
||||
initialValue: record[dataIndex],
|
||||
})(<Input onPressEnter={(e)=>{this.save(dataIndex,e)}} onBlur={(e)=>{this.save(dataIndex,e)}} placeholder="请输入"/>)}
|
||||
</Form.Item>
|
||||
};
|
||||
|
@ -87,7 +88,7 @@ class EditableTable extends React.Component {
|
|||
render: (text, record) =>
|
||||
this.state.dataSource.length >= 1 ? (
|
||||
<Popconfirm title="确定删除此成员?" onConfirm={() => this.handleDelete(record.key)}>
|
||||
<img src={apply_delete} className="apply_delete"/>
|
||||
<img src={apply_delete} className="apply_delete" alt=""/>
|
||||
</Popconfirm>
|
||||
) : null,
|
||||
},
|
||||
|
@ -120,18 +121,14 @@ class EditableTable extends React.Component {
|
|||
render: (text, record) =>
|
||||
this.state.dataSource.length >= 1 ? (
|
||||
<Popconfirm title="确定删除此成员?" onConfirm={() => this.handleDelete(record.key)}>
|
||||
<img src={apply_delete} className="apply_delete"/>
|
||||
<img src={apply_delete} className="apply_delete" alt=""/>
|
||||
</Popconfirm>
|
||||
) : null,
|
||||
},];
|
||||
}
|
||||
this.state = {
|
||||
dataSource: [
|
||||
{
|
||||
key: '0',
|
||||
}
|
||||
],
|
||||
count: 1,
|
||||
dataSource: this.props.members,
|
||||
count: this.props.members.length,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 475 KiB After Width: | Height: | Size: 497 KiB |
Binary file not shown.
Before Width: | Height: | Size: 518 KiB After Width: | Height: | Size: 542 KiB |
|
@ -115,7 +115,7 @@
|
|||
// 按钮样式
|
||||
.but_2e5 {
|
||||
border: none;
|
||||
background-color: #2e5bfe;
|
||||
background-color: #4154f1;
|
||||
padding: 0 14px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
|
@ -124,7 +124,7 @@
|
|||
}
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: #2e5bfe;
|
||||
background-color: #4154f1;
|
||||
opacity: 0.9;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
import React, { useState, useMemo, useEffect } from "react";
|
||||
import { Base64 } from 'js-base64';
|
||||
import {Select, Button, Tooltip } from 'antd';
|
||||
import {Select, Button, Tooltip, Input, Popconfirm, message } from 'antd';
|
||||
import {current_main_site_url} from '../fetch';
|
||||
import PaginationTable from "../../components/paginationTable";
|
||||
|
||||
import './index.scss';
|
||||
import '../index.scss';
|
||||
import { getQzEnrollList, getQzProList } from "../api.js";
|
||||
import { getQzEnrollList, getQzProList, updateEnroll } from "../api.js";
|
||||
const Option = Select.Option;
|
||||
const {Search} = Input;
|
||||
|
||||
function Introduce({history:{location:{pathname}},qzDetail }) {
|
||||
// 报名列表和作品列表到指向此处,type做区分,0报名,1作品
|
||||
const [type, setType] = useState(pathname.substring(pathname.lastIndexOf('/')+1, pathname.lenght));
|
||||
const [reload, setReload] = useState();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
const [dataList, setDataList] = useState([]);
|
||||
|
@ -20,12 +20,17 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
// 赛区 赛项
|
||||
const [zone, setZone] = useState(undefined);
|
||||
const [subCompetition, setSubCompetition] = useState(undefined);
|
||||
const [keyword, setKeyword] = useState(undefined);
|
||||
const [reload, setReload] = useState(undefined);
|
||||
const [searchValue, setSearchValue] = useState(undefined);
|
||||
|
||||
useEffect(() => {
|
||||
setType(pathname.substring(pathname.lastIndexOf('/')+1, pathname.lenght));
|
||||
setKeyword(undefined);
|
||||
setSearchValue(undefined);
|
||||
setZone('-1');
|
||||
setSubCompetition('-1');
|
||||
setCurPage(1);
|
||||
setType(pathname.substring(pathname.lastIndexOf('/')+1, pathname.lenght));
|
||||
}, [pathname]);
|
||||
|
||||
useEffect(()=>{
|
||||
|
@ -34,7 +39,8 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
zone: zone === '-1' ? undefined : zone,
|
||||
sub_competition: subCompetition === '-1' ? undefined : subCompetition,
|
||||
page: curPage,
|
||||
limit: 10
|
||||
limit: 10,
|
||||
keyword
|
||||
}
|
||||
if(type === "applys"){
|
||||
// 报名列表
|
||||
|
@ -57,8 +63,22 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
setLoading(false);
|
||||
})
|
||||
}
|
||||
}, [type, zone, subCompetition, curPage])
|
||||
|
||||
}, [type, zone, subCompetition, curPage, keyword, reload])
|
||||
|
||||
// 驳回用户的报名信息
|
||||
function reject(userId, index){
|
||||
const params = {
|
||||
user_id: userId,
|
||||
status: index
|
||||
}
|
||||
updateEnroll(params).then(response=>{
|
||||
if(response && response.status === 200){
|
||||
setReload(Math.random());
|
||||
message.success("操作成功");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
let columns_apply = useMemo(() => {
|
||||
return [
|
||||
{
|
||||
|
@ -71,7 +91,6 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
dataIndex: 'leader',
|
||||
key: 'leader',
|
||||
},
|
||||
|
||||
{
|
||||
title: '电话',
|
||||
dataIndex: 'phone',
|
||||
|
@ -91,6 +110,19 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
render:(text, record)=>{
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: "status",
|
||||
align: "center",
|
||||
render:(text, record)=>{
|
||||
// status : 0 已驳回
|
||||
return text === 0 ? <Button size="small" disabled>已驳回</Button> : <Popconfirm
|
||||
title="您确定驳回此用户的报名信息?"
|
||||
icon={<i className="iconfont icon-shanchu_tc_icon mr3 font-15" style={{float: 'left', color: "red"}}></i>}
|
||||
onConfirm={()=>{reject(record.user_id, 0)}}
|
||||
><Button size="small">驳回</Button></Popconfirm>
|
||||
}
|
||||
}
|
||||
];
|
||||
}, [qzDetail]);
|
||||
|
@ -120,8 +152,20 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
return <Tooltip title={text[0] && text[0].title} placement="topLeft"><a href={current_main_site_url+(text[0] && text[0].url)} className="attachments_a">{text[0] && text[0].title}</a></Tooltip>;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: "status",
|
||||
align: "center",
|
||||
render:(text, record)=>{
|
||||
return text === 1 ? <Button size="small" disabled>已驳回</Button> : <Popconfirm
|
||||
title="您确定驳回此用户的作品信息?"
|
||||
icon={<i className="iconfont icon-shanchu_tc_icon mr3 font-15" style={{float: 'left', color: "red"}}></i>}
|
||||
onConfirm={()=>{reject(record.user_id, 1)}}
|
||||
><Button size="small">驳回</Button></Popconfirm>
|
||||
}
|
||||
}
|
||||
];
|
||||
}, [qzDetail, reload]);
|
||||
}, [qzDetail]);
|
||||
|
||||
// 如果是内网环境,则增加部分字段
|
||||
if(qzDetail && qzDetail.is_local && columns_apply[2].title !== "职务"){
|
||||
|
@ -207,13 +251,14 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
|
||||
<div className="search">
|
||||
<div className="font-14">
|
||||
赛区:
|
||||
<Select defaultValue="-1" style={{ width: 200 }} onChange={(value)=>{setZone(value)}}>
|
||||
<Search placeholder={`输入单位/负责人${type === "applys" ? "/电话" : ""}进行搜索`} value={searchValue} onChange={(e)=>{setSearchValue(e.target.value)}} onSearch={value => {setCurPage(1);setKeyword(value)}} allowClear enterButton style={{width: 300, marginRight: "30px"}}/>
|
||||
<span>赛区: </span>
|
||||
<Select value={zone} style={{ width: 150 }} onChange={(value)=>{setCurPage(1);setZone(value)}}>
|
||||
<Option value='-1'>所有赛区</Option>
|
||||
{qzDetail && qzDetail.manager_zones.map((item,i)=> {return <Option value={item} key={i}>{item}</Option>})}
|
||||
</Select>
|
||||
<span className="ml30">赛项:</span>
|
||||
<Select defaultValue="-1" style={{ width: 200 }} onChange={(value)=>{setSubCompetition(value)}}>
|
||||
<span className="ml30">赛项: </span>
|
||||
<Select value={subCompetition} style={{ width: 150 }} onChange={(value)=>{setCurPage(1);setSubCompetition(value)}}>
|
||||
<Option value='-1'>所有赛项</Option>
|
||||
{qzDetail && qzDetail.sub_competitions.map((item,i)=> {return <Option value={item} key={i}>{item}</Option>})}
|
||||
</Select>
|
||||
|
@ -230,7 +275,7 @@ function Introduce({history:{location:{pathname}},qzDetail }) {
|
|||
setCurPage={(page)=>setCurPage(page)}
|
||||
current={curPage}
|
||||
expandedRowRender={qzDetail && qzDetail.is_local ? expandRow : expandRowWai}
|
||||
expandIconColumnIndex={qzDetail && qzDetail.is_local ? 8 : 5}
|
||||
expandIconColumnIndex={type === "applys" ? qzDetail && qzDetail.is_local ? 8 : 5 : 20}
|
||||
expandIconAsCell={false}
|
||||
expandIcon={customExpandIcon}
|
||||
pageSize={10}/>
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 20px 30px;
|
||||
.ant-input:hover{
|
||||
border-color: #4154f1;
|
||||
}
|
||||
}
|
||||
.pagination-table.qzManageTable {
|
||||
padding: 0 30px;
|
||||
|
|
|
@ -43,19 +43,17 @@ function Notice({ current_user, qzDetail }) {
|
|||
<div className="qz_main not">
|
||||
{noticeList && noticeList.map(item => {
|
||||
return <div className="qz_notice_cont" key={item.id}>
|
||||
{manageEdit && <div className="head">
|
||||
<Link to={`/competition/qz2022/notice/detail/${item.id}`} className="notCont_head"><img className="notice-new" src={notice} />{item.title}</Link>
|
||||
<Popover content={<Menu>
|
||||
<div className="head">
|
||||
<Link to={`/competition/qz2022/notice/detail/${item.id}`} className="notCont_head"><img className="notice-new" src={notice} alt=""/>{item.title}</Link>
|
||||
{manageEdit && <Popover content={<Menu>
|
||||
<Menu.Item>
|
||||
<Link to={`/competition/qz2022/notice/edit/${item.id}`}>编辑</Link>
|
||||
</Menu.Item>
|
||||
<Menu.Item>
|
||||
<a onClick={() => { deleteNotice(item.id) }}>删除</a>
|
||||
</Menu.Item>
|
||||
</Menu>} placement="bottom" overlayClassName="edit">...</Popover>
|
||||
</div>}
|
||||
{current_user && !current_user.login && <Link to={`/competition/qz2022/notice/detail/${item.id}`}><div className="notCont_head border">{item.title}</div></Link>}
|
||||
{/* <Link to={`/competition/qz2022/notice/detail/${item.id}`} className="cont font-15"> */}
|
||||
</Menu>} placement="bottom" overlayClassName="edit">...</Popover>}
|
||||
</div>
|
||||
<div className="cont font-15">
|
||||
<RenderHtml className="_1818" value={item.content} />
|
||||
</div>
|
||||
|
|
|
@ -1,32 +1,37 @@
|
|||
import React, { useState, useCallback, useMemo, useEffect } from "react";
|
||||
import { Input, Select, Button, Form, DatePicker, Table, Pagination, Upload, Modal, Icon, message } from 'antd';
|
||||
import React, { useState, useEffect } from "react";
|
||||
import {Prompt} from 'react-router-dom'
|
||||
import {Select, Button, Upload, Modal, Icon, message } from 'antd';
|
||||
import { appendFileSizeToUploadFileAll } from 'educoder';
|
||||
import { Link } from "react-router-dom";
|
||||
import { formatDuring } from 'educoder';
|
||||
import {httpUrl, current_main_site_url} from '../fetch.js';
|
||||
import {uploadCompetition, uploadFile} from '../api';
|
||||
import {getFile} from '../../expert/api';
|
||||
import { Confirm } from '../../components/ModalFun';
|
||||
import refer_tip from "../image/refer_tip.svg";
|
||||
import {current_main_site_url} from '../fetch.js';
|
||||
import {uploadCompetition} from '../api';
|
||||
import refer from "../image/refer.svg";
|
||||
|
||||
import './index.scss';
|
||||
import '../../index.scss';
|
||||
const Option = Select.Option;
|
||||
import '../apply/index.scss';
|
||||
|
||||
function Introduce({ form, showNotification, match, history, enrollStatus, current_user, qzDetail, setReload}) {
|
||||
// 上传文件时 按钮loading效果
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [files, setFiles] = useState();
|
||||
// 用户是否更改上传的作品列表
|
||||
const [changeFiles, setChangeFiles] = useState(false);
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
window.onbeforeunload = function (e) {
|
||||
if(changeFiles){
|
||||
e.returnValue = "离开此页面将不保留已上传的作品文件,确定离开?";
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(()=>{
|
||||
// referStatus : 当前时间不处于提案提交时间
|
||||
const referStatus = qzDetail && !(Date.parse(new Date()) > Date.parse(new Date(qzDetail.enroll_date)) && Date.parse(new Date()) < Date.parse(new Date(qzDetail.upload_date)));
|
||||
// 当前时间不处于提案提交时间 或者用户未登录情况下 或者用户未报名 通过URL访问此页面,跳转到大赛介绍页面
|
||||
if(referStatus || (current_user && !current_user.login) || (enrollStatus && !enrollStatus.enroll_status)){
|
||||
// 当前时间不处于提案提交时间 或者用户未登录情况下 或者用户未报名 通过URL访问此页面,跳转到大赛介绍页面 或者用户报名信息被驳回未处理(enrollStatus.status = 0)
|
||||
if(referStatus || (current_user && !current_user.login) || (enrollStatus && (!enrollStatus.enroll_status || enrollStatus.status === 0))){
|
||||
history.push("/competition/qz2022");
|
||||
}
|
||||
},[])
|
||||
},[qzDetail, current_user, enrollStatus])
|
||||
|
||||
useEffect(() => {
|
||||
if(enrollStatus && enrollStatus.upload_status){
|
||||
|
@ -40,12 +45,13 @@ function Introduce({ form, showNotification, match, history, enrollStatus, curre
|
|||
}, [enrollStatus]);
|
||||
|
||||
function handleChange(info) {
|
||||
if (info.file.status === 'uploading' || info.file.status == "done" || info.file.status === 'removed') {
|
||||
if (info.file.status === 'uploading' || info.file.status === "done" || info.file.status === 'removed') {
|
||||
setLoading(true);
|
||||
setFiles(appendFileSizeToUploadFileAll(info.fileList).slice(-1))
|
||||
}
|
||||
if(info.file.status == "done" || info.file.status === 'removed'){
|
||||
if(info.file.status === "done" || info.file.status === 'removed'){
|
||||
setLoading(false);
|
||||
setChangeFiles(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +82,9 @@ function Introduce({ form, showNotification, match, history, enrollStatus, curre
|
|||
}
|
||||
uploadCompetition(params).then(response=>{
|
||||
if(response && response.status === 200){
|
||||
setChangeFiles(false);
|
||||
setReload(Math.random());
|
||||
setVisible(false);
|
||||
message.success('提交作品成功');
|
||||
}else{
|
||||
message.error(response.data.message);
|
||||
|
@ -84,10 +92,19 @@ function Introduce({ form, showNotification, match, history, enrollStatus, curre
|
|||
})
|
||||
}
|
||||
}
|
||||
// 是否允许用户上传作品
|
||||
const upload = enrollStatus && (!enrollStatus.upload_status || enrollStatus.status === 1);
|
||||
return (
|
||||
<div className="refer_bg">
|
||||
{
|
||||
changeFiles &&
|
||||
<Prompt
|
||||
when={true}
|
||||
message={() => '离开此页面将不保留已上传的作品文件,确定离开?'}
|
||||
/>
|
||||
}
|
||||
<div className="qz_main refer">
|
||||
<img src={refer} className="refer_img mb20"/>
|
||||
<img src={refer} className="refer_img mb20" alt=""/>
|
||||
<Upload
|
||||
accept=".zip,.rar,.tar"
|
||||
// 开发时 action需要添加?debug=admin
|
||||
|
@ -102,14 +119,26 @@ function Introduce({ form, showNotification, match, history, enrollStatus, curre
|
|||
showRemoveIcon: false
|
||||
}}
|
||||
>
|
||||
<Button className="upload"><Icon type="upload" />上传</Button>
|
||||
<Button className="upload" disabled={!upload}><Icon type="upload"/>{!upload ? '已' : ''}上传</Button>
|
||||
</Upload>
|
||||
<Modal/>
|
||||
{enrollStatus && enrollStatus.upload_status && <div className="refer_tip mt20 cover"><i className="iconfont icon-erciqueren_icon mr10"></i>您已提交作品,再次提交将会覆盖您上一次的提交成果。</div>}
|
||||
{enrollStatus && enrollStatus.upload_status && enrollStatus.status === 1 && <div className="refer_tip mt15 cover"><i className="iconfont icon-erciqueren_icon mr10"></i>您的作品被打回,可以再次提交作品,未重新提交前保留您原来的提交记录。</div>}
|
||||
<div className="refer_tip mt20">上传单个作品压缩包(仅限上传一个压缩包)</div>
|
||||
<div className="refer_bor"></div>
|
||||
<Button type="primary" onClick={referProduction} loading={loading}>提交作品</Button>
|
||||
<Button type="primary" onClick={()=>{changeFiles ? setVisible(true) : message.error("您暂未上传作品文件")}} loading={loading} disabled={!upload}>{!upload ? '已' : ''}提交作品</Button>
|
||||
</div>
|
||||
<Modal
|
||||
title="提示"
|
||||
visible={visible}
|
||||
onOk={referProduction}
|
||||
onCancel={()=>{setVisible(false)}}
|
||||
centered
|
||||
wrapClassName="applyInfoCon"
|
||||
cancelText=""
|
||||
>
|
||||
<div className="tips mb10"><i className="iconfont icon-shanchu_tc_icon1 font-24 mr10" style={{color: '#ffa13a'}}></i><span className="tipTitle font-16">确定提交作品</span></div>
|
||||
<span>提交后作品文件将无法修改!</span>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -25,10 +25,13 @@ export default ({ id, className, title, dataList }) => {
|
|||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
grid:{
|
||||
bottom:.25*fontSizeText
|
||||
},
|
||||
legend: {
|
||||
icon: 'circle',
|
||||
data: dataList.map((item) => item.name),
|
||||
bottom: 1.5 * fontSizeText,
|
||||
bottom: .5* fontSizeText,
|
||||
fontSize: fontSizeText,
|
||||
itemGap: 20,
|
||||
itemWidth: 8,
|
||||
|
@ -41,7 +44,7 @@ export default ({ id, className, title, dataList }) => {
|
|||
data: dataList,
|
||||
label: {
|
||||
formatter: function (params) {
|
||||
return params.name + '\n\n' + `${params.value} ${params.percent}%`;
|
||||
return params.name + '\n\n' + `${params.value} ${params.percent}%`;
|
||||
},
|
||||
color:'#000'
|
||||
},
|
||||
|
|
|
@ -133,7 +133,7 @@ export function TPMIndexHOC(WrappedComponent, headFoot) {
|
|||
this.setState({
|
||||
mygetHelmetapi: response.data.setting
|
||||
});
|
||||
localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
response.data.setting&&localStorage.setItem('chromesetting', JSON.stringify(response.data.setting));
|
||||
localStorage.setItem('chromesettingresponse', JSON.stringify(response));
|
||||
try {
|
||||
if (response.data.setting.tab_logo_url) {
|
||||
|
|
Loading…
Reference in New Issue