底部样式+新建组织账号正则

This commit is contained in:
caishi 2021-04-21 16:54:47 +08:00
parent 8fa31edaae
commit 233e6a8226
14 changed files with 125 additions and 337 deletions

View File

@ -2346,7 +2346,6 @@ input::-ms-clear {
/*中间部分宽度固定为1200*/
.newMain {
margin: 0 auto;
padding-bottom: 110px;
min-width: 1200px;
}
@ -4108,21 +4107,6 @@ em.vertical-line {
/* 右侧内容宽度变化的话需要调整posi-search right的值*/
/*底部*/
.newFooter {
max-height: 110px;
}
.newFooter {
position: absolute;
bottom: 0;
width: 100%;
background: #323232;
clear: both;
min-width: 1200px;
z-index: 8;
left: 0px;
}
.footercon {
border-bottom: 1px solid #47494d;

63
src/forge/Head/Footer.jsx Normal file
View File

@ -0,0 +1,63 @@
import React, { useEffect , useState } from 'react';
import './header.scss';
function Footer(){
const [ value , setValue ] = useState(undefined);
useEffect(()=>{
try {
var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting'));
setValue(chromesettingArray.footer);
} catch (e) {
}
},[])
function showhtml(htmlString){
var html = {__html:htmlString};
return <div dangerouslySetInnerHTML={html}></div> ;
}
return(
<div className="newFooter edu-txt-center">
{value && showhtml(value)}
{/* <div className="footerInfos">
<ul>
<li>社区</li>
<li><a href={`/`} target="_blank">网站首页</a></li>
<li><a href={`https://www.trustie.net/agreement`} target="_blank">服务协议</a></li>
<li><a href={`https://forum.trustie.net/forums/1168/detail`} target="_blank">帮助中心</a></li>
<li><a href={`https://forum.trustie.net/`} target="_blank">问吧交流</a></li>
<li><a href={`https://www.trustie.net/cooperation`} target="_blank">合作伙伴</a></li>
</ul>
<ul>
<li>支持与服务</li>
<li><a href={`https://forgeplus.trustie.net/docs/api`} target="_blank">API文档</a></li>
<li><a href={`https://forum.trustie.net/forums/1168/detail`} target="_blank">帮助中心</a></li>
<li><a href={`https://git-scm.com`} target="_blank">Git常用命令</a></li>
<li><a href={`https://forum.trustie.net/forums/3080/detail`} target="_blank">DevOps使用文档</a></li>
<li><a href={`https://forgeplus.trustie.net/projects/jasder/forgeplus/tree/master/CHANGELOG.md`} target="_blank">日志更新</a></li>
</ul>
<ul>
<li>合作伙伴</li>
<li><a href={`http://www.sei.pku.edu.cn`} target="_blank">北京大学</a></li>
<li><a href={`http://scse.buaa.edu.cn`} target="_blank">北京航空航天大学</a></li>
<li><a href={`https://www.nju.edu.cn`} target="_blank">南京大学</a></li>
<li><a href={`https://www.xtu.edu.cn`} target="_blank">湘潭大学</a></li>
<li><a href={`http://www.iscas.ac.cn`} target="_blank">ISCAS</a></li>
<li><a href={`https://www.ucloud.cn`} target="_blank">UCloud优刻得</a></li>
<li><a href={`http://www.inforbus.com`} target="_blank">中创软件</a></li>
<li><a href={`https://www.inspur.com`} target="_blank">浪潮集团</a></li>
<li><a href={`http://www.copu.org.cn`} target="_blank">中国开源软件推进联盟</a></li>
<li><a href={`https://www.sjtu.edu.cn`} target="_blank">上海交通大学</a></li>
</ul>
<ul>
<li>合作伙伴</li>
<li><span>热线</span></li>
<li><span>QQ群1071514693</span></li>
</ul>
</div>
<p className="footerCopy">© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE <a href="https://beian.miit.gov.cn">湘ICP备 17009477</a></p> */}
</div>
)
}
export default Footer;

View File

@ -7,4 +7,56 @@
.ant-menu-vertical > .ant-menu-item{
border:none
}
}
.newFooter {
position: absolute;
bottom: 0;
width: 100%;
background: #323232;
clear: both;
min-width: 1200px;
z-index: 8;
left: 0px;
p {
margin-top: 0;
margin-bottom:0px !important;
}
.footerInfos{
display: flex;
max-width: 1200px;
margin:0px auto;
justify-content: space-around;
padding:60px 0px;
& >ul{
padding:0px 40px;
box-sizing: border-box;
max-width: 25%;
text-align: left;
li{
color: #fff;
font-weight: 300;
&:first-child{
font-size: 17px;
}
&>a,&>span{
color: #bbb;
}
&>a:hover{
color: #4cacff;
}
}
}
}
.footerCopy{
color: #bbb;
border-top: 1px solid #4e4e4e;
padding:10px 0px;
a{
color: #bbb;
&:hover{
color: #4cacff;
}
}
}
}

View File

@ -262,11 +262,7 @@ class CoderRootFileDetail extends Component {
<div>
{detail.image_type ? (
<div className="edu-txt-center pt20 pb20">
<img
alt=""
src={detail.download_url}
style={{ maxWidth: "80%" }}
/>
<img alt="" src={detail.download_url} style={{ maxWidth: "80%" }} />
</div>
) : detail.direct_download ? (
<div className="mt20 text-center">

View File

@ -286,6 +286,9 @@
.downMenu{
box-shadow: 0px 0px 9px rgba(134, 134, 134,0.4);
background-color: #fff;
.ant-menu-vertical .ant-menu-item:hover{
background-color: #e6f7ff;
}
}
.menuslist{

View File

@ -67,17 +67,6 @@ li {
font-size: 25px !important;
}
.newFooter {
position: absolute;
bottom: 0;
width: 100%;
background: #323232;
clear: both;
min-width: 1200px;
z-index: 8;
left: 0px;
max-height: 110px;
}
.markdown-body {
text-align: justify;

View File

@ -32,9 +32,6 @@ class Bottomsubmit extends Component {
<style>
{
`
.newFooter{
display:none;
}
.newshixunbottombtn {
position: fixed;
z-index: 1000;

View File

@ -379,16 +379,6 @@ class Paperreview extends Component {
""
}
<style>
{
`
.newFooter{
display: none;
}
`
}
</style>
<div className="w1200ms">
<div className="w100s mt30">
{

View File

@ -534,9 +534,6 @@ class Questionitem_banks extends Component {
width: 100%!important;
}
.newFooter{
display: none;
}
`
}
</style>

View File

@ -379,16 +379,6 @@ class Intecomponents extends Component {
<div>
<div id={"Itembankstopid"} className="newMain clearfix intermediatecenter "
>
<style>
{
`
.newFooter{
display: none;
}
`
}
</style>
<div className="w1200ms">
<div className="w100s mt30">
<Breadcrumb separator=">">

View File

@ -241,17 +241,6 @@ class Paperlibraryeditid extends Component {
:
""
}
<style>
{
`
.newFooter{
display: none;
}
`
}
</style>
<div className="w1200ms">
<div className="w100s mt30">
<Breadcrumb separator=">">

View File

@ -131,16 +131,6 @@ class Paperlibraryseeid extends Component {
<div id={"Itembankstopid"} className="newMain clearfix intermediatecenter "
>
<style>
{
`
.newFooter{
display: none;
}
`
}
</style>
<div className="w1200ms">
<div className="w100s mt30">
<Breadcrumb separator=">">

View File

@ -1,8 +1,4 @@
import React, { Component } from 'react';
import moment from 'moment';
import { Link } from 'react-router-dom';
class NewFooter extends Component {
constructor(props) {
super(props)
@ -11,7 +7,6 @@ class NewFooter extends Component {
}
}
componentDidMount() {
//获取游览器地址
try {
var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting'));
@ -30,47 +25,9 @@ class NewFooter extends Component {
const {forge_footer} = this.state;
return (
<div className="newFooter edu-txt-center ">
<style>
{
`
.newFooter {
max-height: 140px !important;
padding-bottom: 20px !important;
}
p {
margin-top: 0;
margin-bottom:0px !important;
}
`
}
</style>
{
forge_footer && this.showhtml(forge_footer)
}
{/*<div className="inner-footer_con">*/}
{/*<ul className="clearfix inner-footernav">*/}
{/*<li><a href="/" className="fl" target="_blank">网站首页</a></li>*/}
{/*<li><Link to="/help/about_us" className="fl" target="_blank">关于我们</Link></li>*/}
{/*<li><Link to="/help/contact_us" className="fl" target="_blank">联系我们</Link></li>*/}
{/*<li><Link to="/help/cooperatives" className="fl" target="_blank">合作伙伴</Link></li>*/}
{/*<li><Link to="/help/agreement" className="fl" target="_blank">服务协议</Link></li>*/}
{/*<li><Link to="/help/help_center" className="fl" target="_blank">帮助中心</Link></li>*/}
{/*<li><Link to="/help/feedback" className="fl" target="_blank">意见反馈</Link></li>*/}
{/*</ul>*/}
{/*</div>*/}
{/*<div>*/}
{/*<p className="footer_con-p inline lineh-30 font-14">*/}
{/*<span className="font-18 fl">©</span>&nbsp;{moment().year()}&nbsp;EduCoder*/}
{/*<a style={{"color":"#888"}} target="_blank" href="http://beian.miit.gov.cn/" className="ml15 mr15">湘ICP备17009477号</a>*/}
{/*<a style={{"color":"#888"}} target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962" className="mr15">*/}
{/*<img className="vertical4" src={require('./beian.png')}/>湘公网安备43019002000962号*/}
{/*</a>*/}
{/*<a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">Trustie</a>&nbsp;&nbsp;&nbsp;&amp;&nbsp;&nbsp;&nbsp;IntelliDE inside. <span*/}
{/*className="mr15">版权所有 湖南智擎科技有限公司</span>*/}
{/*</p>*/}
{/*</div>*/}
{/*<div className="cl"></div>*/}
</div>
);
}

View File

@ -1,30 +1,24 @@
import React from 'react';
import Header from '../../forge/Head/Header'
import NewFooter from './NewFooter'
import { downloadFile } from 'educoder'
import NewFooter from '../../forge/Head/Footer';
import axios from 'axios';
import { Spin } from 'antd';
import './TPMIndex.css';
import LoginDialog from '../login/LoginDialog';
import AccountProfile from '../user/AccountProfile';
import AccountPhoneemail from '../user/AccountPhoneemail';
import EducoderAccount from '../../forge/Component/EducoderAccount';
export function TPMIndexHOC(WrappedComponent) {
return class II extends React.Component {
constructor(props) {
super(props);
window.$('#root').css('position', 'relative')
window.$('#root').css('position', 'relative');
this.state = {
tpmLoading: true,
resLoading: true,
Headertop: undefined,
Footerdown: undefined,
isRender: false,
AccountProfiletype: false,
AccountPhoneemailtype: false,
globalLoading: false,
dataquerys: {},
isloginCancel: undefined,
@ -66,12 +60,6 @@ export function TPMIndexHOC(WrappedComponent) {
document.title = "你没有权限访问";
} else if (this.props.match.path === "/nopage") {
document.title = "没有找到该页面";
} else if (this.props.match.path === "/shixuns") {
document.title = "实训项目";
} else if (this.props.match.path === "/paths") {
document.title = "实践课程";
} else if (this.props.match.path === "/classrooms") {
document.title = "教学课堂";
}
///请求定制化的信息
@ -181,25 +169,6 @@ export function TPMIndexHOC(WrappedComponent) {
console.log(error)
})
};
//截取url 数据的
foo = (url) => {
var json = {};
var regExp = /[\?\&](\w+)(=?)(\w*)/g;
var arr;
do {
arr = regExp.exec(url);
if (arr) {
var key = arr[1];
var value = arr[3];
if (!arr[2])
value = undefined;
json[key] = value;
}
} while (arr);
return json;
};
hideLoginDialog = () => {
this.setState({
isRender: false,
@ -218,144 +187,6 @@ export function TPMIndexHOC(WrappedComponent) {
return this.state.current_user && this.state.current_user.login != ''
}
hideAccountProfile = () => {
this.setState({
AccountProfiletype: false
})
}
showProfileCompleteDialog = () => {
this.dialogObj = {}
this.setState({
AccountProfiletype: true
})
}
showhideAccountPhoneemailDialog = () => {
this.dialogObj = {}
this.setState({
AccountPhoneemailtype: true
})
}
hideAccountPhoneemailtype = () => {
this.setState({
AccountPhoneemailtype: false
})
}
//验证是否完善资料
checkIfProfileCompleted = () => {
return this.state.current_user && this.state.current_user.profile_completed
}
showaccountprofileDialog = () => {
this.dialogObj = {
content: '您需要去完成您的个人资料,才能使用此功能',
okText: '立即完成',
okHref: '/account/profile'
}
this.setState({
AccountProfiletype: true,
})
}
showProfessionalCertificationDialog = () => {
this.dialogObj = {
content: '您需要去完成您的职业认证,才能使用此功能',
okText: '立即完成',
okHref: '/account/certification'
}
this.setState({
AccountProfiletype: true,
})
}
checkIfProfessionalCertification = () => {
return this.state.current_user && this.state.current_user.professional_certification
}
ShowOnlinePdf = (url) => {
return axios({
method: 'get',
url: url,
responseType: 'arraybuffer',
}).then((result) => {
var binaryData = [];
binaryData.push(result.data);
this.url = window.URL.createObjectURL(new Blob(binaryData, { type: "application/pdf" }));
window.open(this.url);
})
}
DownloadFileA = (title, url) => {
let link = document.createElement('a');
document.body.appendChild(link);
link.href = url;
link.download = title;
//兼容火狐浏览器
let evt = document.createEvent("MouseEvents");
evt.initEvent("click", false, false);
link.dispatchEvent(evt);
document.body.removeChild(link);
}
DownloadOpenPdf = (type, url) => {
type === true ? window.open(url) : window.location.href = url;
}
slowDownload = (url, tip) => {
this._gLoadingTip = tip || '正在生成文件,请稍后...';
this.setState({ globalLoading: true })
const fileUrl = url;
downloadFile({
url: fileUrl,
successCallback: (url) => {
this.setState({ globalLoading: false })
console.log('successCallback')
},
failCallback: (responseHtml, url) => {
this.setState({ globalLoading: false })
console.log('failCallback')
}
})
}
yslslowCheckresults = (tip) => {
this._gLoadingTip = tip || '成绩计算中,请稍候...';
this.setState({ globalLoading: true })
}
yslslowCheckresultsNo = () => {
this.setState({ globalLoading: false })
}
showGlobalLoading = (tip) => {
this._gLoadingTip = tip || '加载中,请稍后...';
this.setState({ globalLoading: true })
}
hideGlobalLoading = () => {
this.setState({ globalLoading: false })
}
MdifHasAnchorJustScorll = () => {
//mdhash滚动
let anchor = decodeURI(this.props.location.hash).replace('#', '');
// 对应id的话, 滚动到相应位置
if (!!anchor) {
let anchorElement = document.getElementsByName(anchor);
if (anchorElement) {
if (anchorElement.length > 0) {
anchorElement[anchorElement.length - 1].scrollIntoView();
}
}
}
}
//跳转道描点的地方
scrollToAnchor = (anchorName) => {
if (anchorName) {
// 找到锚点
let anchorElement = document.getElementById(anchorName);
// 如果对应id的锚点存在就跳转到锚点
if (anchorElement) {
anchorElement.scrollIntoView();
}
}
}
onOk =(values)=>{
let url = `/users/sync_user_info.json`;
const { current_user } = this.state;
@ -375,29 +206,10 @@ export function TPMIndexHOC(WrappedComponent) {
render() {
let { Footerdown, isRender, AccountProfiletype, AccountPhoneemailtype, current_user , giteaVisible , email } = this.state;
let { isRender , current_user , giteaVisible , email } = this.state;
const common = {
showLoginDialog: this.showLoginDialog,
checkIfLogin: this.checkIfLogin,
showProfileCompleteDialog: this.showProfileCompleteDialog,
showhideAccountPhoneemailDialog: this.showhideAccountPhoneemailDialog,
checkIfProfileCompleted: this.checkIfProfileCompleted,
showaccountprofileDialog: this.showaccountprofileDialog,
checkIfProfessionalCertification: this.checkIfProfessionalCertification,
showProfessionalCertificationDialog: this.showProfessionalCertificationDialog,
ShowOnlinePdf: (url) => this.ShowOnlinePdf(url),
DownloadFileA: (title, url) => this.DownloadFileA(title, url),
DownloadOpenPdf: (type, url) => this.DownloadOpenPdf(type, url),
slowDownload: this.slowDownload,
showGlobalLoading: this.showGlobalLoading,
hideGlobalLoading: this.hideGlobalLoading,
yslslowCheckresults: this.yslslowCheckresults,
yslslowCheckresultsNo: this.yslslowCheckresultsNo,
MdifHasAnchorJustScorll: this.MdifHasAnchorJustScorll,
scrollToAnchor: this.scrollToAnchor
};
return (
<div className="indexHOC">
@ -407,42 +219,21 @@ export function TPMIndexHOC(WrappedComponent) {
{...this.props}
{...this.state}
/> : ""}
{/* AccountProfile 也用作职业认证 */}
{AccountProfiletype === true ? <AccountProfile
hideAccountProfile={() => this.hideAccountProfile()}
{...this.props}
{...this.state}
{...this.dialogObj}
/> : ""}
{/*验证是否注册手机邮箱*/}
{AccountPhoneemailtype === true ? <AccountPhoneemail
hideAccountProfile={() => this.hideAccountPhoneemailtype()}
{...this.props}
{...this.state}
{...this.dialogObj}
/> : ""}
<Header {...this.state} {...this.props}></Header>
<Spin spinning={this.state.globalLoading} delay={0} className="globalSpin"
size="large"
tip={this._gLoadingTip || "加载中..."}
size="large" tip={this._gLoadingTip || "加载中..."}
>
<div className="newContainer newContainers">
<div style={{height:"70px"}}></div>
{
current_user &&
<WrappedComponent initCommonState={(user) => this.initCommonState(user)}
{...this.props} {...this.state}
{...common}
>
{...this.props} {...this.state} {...common} >
</WrappedComponent>
}
</div>
</Spin>
<NewFooter
{...this.state} {...this.props}
Footerdown={Footerdown}
/>
<NewFooter {...this.state} {...this.props} />
</div>
);
}