forked from Gitlink/forgeplus-react
开源夏令营报名页+帮助页+首页-组织方、联系我们
This commit is contained in:
parent
60c01d8682
commit
83c2517824
|
@ -1,8 +1,8 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 2340181 */
|
||||
src: url('iconfont.woff2?t=1640585290619') format('woff2'),
|
||||
url('iconfont.woff?t=1640585290619') format('woff'),
|
||||
url('iconfont.ttf?t=1640585290619') format('truetype');
|
||||
src: url('iconfont.woff2?t=1649726899310') format('woff2'),
|
||||
url('iconfont.woff?t=1649726899310') format('woff'),
|
||||
url('iconfont.ttf?t=1649726899310') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
|
@ -13,6 +13,114 @@
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-bangzhuzhongxinicon:before {
|
||||
content: "\e926";
|
||||
}
|
||||
|
||||
.icon-kaiyuanxiangmu:before {
|
||||
content: "\e91d";
|
||||
}
|
||||
|
||||
.icon-luntanjiaoliu:before {
|
||||
content: "\e91e";
|
||||
}
|
||||
|
||||
.icon-wangzhanpeizhi:before {
|
||||
content: "\e91f";
|
||||
}
|
||||
|
||||
.icon-weixuanze-chuangkekongjian:before {
|
||||
content: "\e920";
|
||||
}
|
||||
|
||||
.icon-tubiao:before {
|
||||
content: "\e921";
|
||||
}
|
||||
|
||||
.icon-gonggaofabu:before {
|
||||
content: "\e922";
|
||||
}
|
||||
|
||||
.icon-jingsaihuodong:before {
|
||||
content: "\e923";
|
||||
}
|
||||
|
||||
.icon-yonghuguanli:before {
|
||||
content: "\e924";
|
||||
}
|
||||
|
||||
.icon-shenpi:before {
|
||||
content: "\e925";
|
||||
}
|
||||
|
||||
.icon-zhuanli1:before {
|
||||
content: "\e918";
|
||||
}
|
||||
|
||||
.icon-daimaicon:before {
|
||||
content: "\e91c";
|
||||
}
|
||||
|
||||
.icon-jiangxiangicon:before {
|
||||
content: "\e916";
|
||||
}
|
||||
|
||||
.icon-shuju:before {
|
||||
content: "\e917";
|
||||
}
|
||||
|
||||
.icon-wendang:before {
|
||||
content: "\e919";
|
||||
}
|
||||
|
||||
.icon-lunwen:before {
|
||||
content: "\e91a";
|
||||
}
|
||||
|
||||
.icon-zhuanli:before {
|
||||
content: "\e91b";
|
||||
}
|
||||
|
||||
.icon-gailan1:before {
|
||||
content: "\e914";
|
||||
}
|
||||
|
||||
.icon-tuandui:before {
|
||||
content: "\e915";
|
||||
}
|
||||
|
||||
.icon-icon2:before {
|
||||
content: "\e912";
|
||||
}
|
||||
|
||||
.icon-a-21:before {
|
||||
content: "\e913";
|
||||
}
|
||||
|
||||
.icon-a-2:before {
|
||||
content: "\e90f";
|
||||
}
|
||||
|
||||
.icon-a-3:before {
|
||||
content: "\e910";
|
||||
}
|
||||
|
||||
.icon-icon1:before {
|
||||
content: "\e911";
|
||||
}
|
||||
|
||||
.icon-ioon:before {
|
||||
content: "\e90e";
|
||||
}
|
||||
|
||||
.icon-shanchu_tc_icon1:before {
|
||||
content: "\e90c";
|
||||
}
|
||||
|
||||
.icon-zhuanjiaicon:before {
|
||||
content: "\e90d";
|
||||
}
|
||||
|
||||
.icon-shengming:before {
|
||||
content: "\e90b";
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,6 +5,195 @@
|
|||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "28888753",
|
||||
"name": "帮助中心icon",
|
||||
"font_class": "bangzhuzhongxinicon",
|
||||
"unicode": "e926",
|
||||
"unicode_decimal": 59686
|
||||
},
|
||||
{
|
||||
"icon_id": "28163416",
|
||||
"name": "开源项目",
|
||||
"font_class": "kaiyuanxiangmu",
|
||||
"unicode": "e91d",
|
||||
"unicode_decimal": 59677
|
||||
},
|
||||
{
|
||||
"icon_id": "28163417",
|
||||
"name": "论坛交流",
|
||||
"font_class": "luntanjiaoliu",
|
||||
"unicode": "e91e",
|
||||
"unicode_decimal": 59678
|
||||
},
|
||||
{
|
||||
"icon_id": "28163418",
|
||||
"name": "网站配置",
|
||||
"font_class": "wangzhanpeizhi",
|
||||
"unicode": "e91f",
|
||||
"unicode_decimal": 59679
|
||||
},
|
||||
{
|
||||
"icon_id": "28163419",
|
||||
"name": "未选择-创客空间",
|
||||
"font_class": "weixuanze-chuangkekongjian",
|
||||
"unicode": "e920",
|
||||
"unicode_decimal": 59680
|
||||
},
|
||||
{
|
||||
"icon_id": "28163420",
|
||||
"name": "图标",
|
||||
"font_class": "tubiao",
|
||||
"unicode": "e921",
|
||||
"unicode_decimal": 59681
|
||||
},
|
||||
{
|
||||
"icon_id": "28163421",
|
||||
"name": "公告发布",
|
||||
"font_class": "gonggaofabu",
|
||||
"unicode": "e922",
|
||||
"unicode_decimal": 59682
|
||||
},
|
||||
{
|
||||
"icon_id": "28163422",
|
||||
"name": "竞赛活动",
|
||||
"font_class": "jingsaihuodong",
|
||||
"unicode": "e923",
|
||||
"unicode_decimal": 59683
|
||||
},
|
||||
{
|
||||
"icon_id": "28163423",
|
||||
"name": "用户管理",
|
||||
"font_class": "yonghuguanli",
|
||||
"unicode": "e924",
|
||||
"unicode_decimal": 59684
|
||||
},
|
||||
{
|
||||
"icon_id": "28163424",
|
||||
"name": "审批",
|
||||
"font_class": "shenpi",
|
||||
"unicode": "e925",
|
||||
"unicode_decimal": 59685
|
||||
},
|
||||
{
|
||||
"icon_id": "22773568",
|
||||
"name": "专利",
|
||||
"font_class": "zhuanli1",
|
||||
"unicode": "e918",
|
||||
"unicode_decimal": 59672
|
||||
},
|
||||
{
|
||||
"icon_id": "27680124",
|
||||
"name": "代码icon",
|
||||
"font_class": "daimaicon",
|
||||
"unicode": "e91c",
|
||||
"unicode_decimal": 59676
|
||||
},
|
||||
{
|
||||
"icon_id": "27664463",
|
||||
"name": "奖项icon",
|
||||
"font_class": "jiangxiangicon",
|
||||
"unicode": "e916",
|
||||
"unicode_decimal": 59670
|
||||
},
|
||||
{
|
||||
"icon_id": "27664464",
|
||||
"name": "数据",
|
||||
"font_class": "shuju",
|
||||
"unicode": "e917",
|
||||
"unicode_decimal": 59671
|
||||
},
|
||||
{
|
||||
"icon_id": "27664466",
|
||||
"name": "文档",
|
||||
"font_class": "wendang",
|
||||
"unicode": "e919",
|
||||
"unicode_decimal": 59673
|
||||
},
|
||||
{
|
||||
"icon_id": "27664467",
|
||||
"name": "论文",
|
||||
"font_class": "lunwen",
|
||||
"unicode": "e91a",
|
||||
"unicode_decimal": 59674
|
||||
},
|
||||
{
|
||||
"icon_id": "27664468",
|
||||
"name": "专利",
|
||||
"font_class": "zhuanli",
|
||||
"unicode": "e91b",
|
||||
"unicode_decimal": 59675
|
||||
},
|
||||
{
|
||||
"icon_id": "27664392",
|
||||
"name": "概览",
|
||||
"font_class": "gailan1",
|
||||
"unicode": "e914",
|
||||
"unicode_decimal": 59668
|
||||
},
|
||||
{
|
||||
"icon_id": "27664393",
|
||||
"name": "团队",
|
||||
"font_class": "tuandui",
|
||||
"unicode": "e915",
|
||||
"unicode_decimal": 59669
|
||||
},
|
||||
{
|
||||
"icon_id": "27299393",
|
||||
"name": "icon",
|
||||
"font_class": "icon2",
|
||||
"unicode": "e912",
|
||||
"unicode_decimal": 59666
|
||||
},
|
||||
{
|
||||
"icon_id": "27299394",
|
||||
"name": "2",
|
||||
"font_class": "a-21",
|
||||
"unicode": "e913",
|
||||
"unicode_decimal": 59667
|
||||
},
|
||||
{
|
||||
"icon_id": "27200759",
|
||||
"name": "2",
|
||||
"font_class": "a-2",
|
||||
"unicode": "e90f",
|
||||
"unicode_decimal": 59663
|
||||
},
|
||||
{
|
||||
"icon_id": "27200760",
|
||||
"name": "3",
|
||||
"font_class": "a-3",
|
||||
"unicode": "e910",
|
||||
"unicode_decimal": 59664
|
||||
},
|
||||
{
|
||||
"icon_id": "27200761",
|
||||
"name": "icon",
|
||||
"font_class": "icon1",
|
||||
"unicode": "e911",
|
||||
"unicode_decimal": 59665
|
||||
},
|
||||
{
|
||||
"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": "声明",
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,8 @@ import marked from './common/marked';
|
|||
import moment from 'moment'
|
||||
|
||||
import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles';
|
||||
import SiderBar from './forge/Component/SiderBar'
|
||||
import SiderBar from './forge/Component/SiderBar';
|
||||
import SiderBarHelp from './glcc/siderBarHelp';
|
||||
|
||||
import { SnackbarHOC } from 'educoder';
|
||||
import { initAxiosInterceptors } from './AppConfig'
|
||||
|
@ -285,13 +286,13 @@ class App extends Component {
|
|||
};
|
||||
|
||||
render() {
|
||||
const { pathType } = this.state;
|
||||
const { pathType, pathName } = this.state;
|
||||
return (
|
||||
<Provider store={store}>
|
||||
<ConfigProvider locale={zhCN}>
|
||||
<MuiThemeProvider theme={theme}>
|
||||
<LoginDialog {...this.props} {...this.state} Modifyloginvalue={() => this.Modifyloginvalue()}></LoginDialog>
|
||||
<SiderBar />
|
||||
{pathName && pathName.indexOf("glcc") === -1 ? <SiderBar /> : <SiderBarHelp/>}
|
||||
{/* <Router> */}
|
||||
<Switch>
|
||||
{/* wiki预览 */}
|
||||
|
|
|
@ -32,8 +32,8 @@ export function initAxiosInterceptors(props) {
|
|||
// 判断网络是否连接
|
||||
initOnlineOfflineListener();
|
||||
|
||||
// var proxy = "https://testforgeplus.trustie.net";
|
||||
var proxy = "http://111.8.36.180:8000";
|
||||
var proxy = "https://testforgeplus.trustie.net";
|
||||
|
||||
//响应前的设置
|
||||
axios.interceptors.request.use(
|
||||
config => {
|
||||
|
|
|
@ -23,7 +23,7 @@ export default function javaFetch(actionUrl){
|
|||
}
|
||||
if (window.location.port === "3007") {
|
||||
// 模拟token为登录用户
|
||||
const token = sessionStorage.token;
|
||||
const token = cookie.load(TokenKey);
|
||||
if (config.url.indexOf('?') === -1) {
|
||||
config.url = `${config.url}?token=${token}`;
|
||||
} else {
|
||||
|
|
|
@ -3,45 +3,17 @@ import fetch from './fetch';
|
|||
// 获取当前用户报名信息
|
||||
export function getUserApplyInfo(params) {
|
||||
return fetch({
|
||||
url: '/api/applyInformation/getUserApplyInfo',
|
||||
url: `/api/applyInformation/getUserApplyInfo`,
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 获取单个wiki
|
||||
export function getWiki(params) {
|
||||
//报名夏令营
|
||||
export function applyGlcc(data) {
|
||||
return fetch({
|
||||
url: '/api/wiki/getWiki',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
//新增wiki
|
||||
export function addWiki(data) {
|
||||
return fetch({
|
||||
url: '/api/wiki/createWiki',
|
||||
url: '/api/applyInformation/create',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
//更新wiki
|
||||
export function updateWiki(data) {
|
||||
return fetch({
|
||||
url: '/api/wiki/updateWiki',
|
||||
method: 'PUT',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
//删除wiki
|
||||
export function deleteWiki(data) {
|
||||
return fetch({
|
||||
url: '/api/wiki/deleteWiki',
|
||||
method: 'DELETE',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -1,18 +1,23 @@
|
|||
import React , { useCallback, useEffect , useState } from 'react';
|
||||
import { Breadcrumb, Button, Form, Icon, Input, Select, Upload } from 'antd';
|
||||
import {classify} from '../static';
|
||||
import {getUserApplyInfo} from '../api';
|
||||
import { Breadcrumb, Button, Form, Input, Select, Upload } from 'antd';
|
||||
import {getUserApplyInfo, applyGlcc} from '../api';
|
||||
import axios from 'axios';
|
||||
import './index.scss';
|
||||
import TextArea from 'antd/lib/input/TextArea';
|
||||
import { httpUrl } from '../fetch';
|
||||
import './index.scss';
|
||||
const Option = Select.Option;
|
||||
function Apply(props) {
|
||||
const {form, qzDetail, enrollStatus, setReload, current_user, history} = props;
|
||||
const {form, current_user, showNotification} = props;
|
||||
// 可用于开发时不同账号报名
|
||||
// current_user && (current_user.user_id = 1061)
|
||||
// current_user && (current_user.userName = "美女")
|
||||
const {getFieldDecorator, validateFields, setFieldsValue, validateFieldsAndScroll } = form;
|
||||
const [reload, setReload] = useState(undefined);
|
||||
const [imageUrl, setImageUrl] = useState(undefined);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [cateList, setCateList] = useState([]);
|
||||
|
||||
const [userApplyInfo, setUserApplyInfo] = useState(undefined);
|
||||
|
||||
const helper = useCallback(
|
||||
(label, extra, name, rules, widget) => (
|
||||
<Form.Item label={label} extra={extra}>
|
||||
|
@ -22,19 +27,28 @@ function Apply(props) {
|
|||
[]
|
||||
);
|
||||
|
||||
// 获取当前用户报名信息
|
||||
useEffect(()=>{
|
||||
// 获取项目分类参数
|
||||
const url = `/project_categories/pinned_index.json`;
|
||||
axios.get(url).then(result=>{
|
||||
if(result && result.data){
|
||||
setCateList(result.data.project_categories);
|
||||
}
|
||||
}).catch(error=>{})
|
||||
current_user && getUserApplyInfo({userId: current_user.user_id}).then(response=>{
|
||||
console.log(response);
|
||||
})
|
||||
}, [])
|
||||
|
||||
useEffect(()=>{
|
||||
// 获取当前用户报名信息
|
||||
current_user && getUserApplyInfo({userId: current_user.user_id}).then(response=>{
|
||||
if(response && response.message === "success"){
|
||||
response.data && setFieldsValue({
|
||||
...response.data
|
||||
})
|
||||
setUserApplyInfo(response.data);
|
||||
}
|
||||
})
|
||||
}, [reload])
|
||||
|
||||
// 当用户输入结束时 检验用户输入是否符合规范
|
||||
function verify(dataIndex){
|
||||
validateFields([dataIndex],(error, values)=>{
|
||||
|
@ -44,14 +58,56 @@ function Apply(props) {
|
|||
})
|
||||
}
|
||||
|
||||
// 报名夏令营
|
||||
function handleSubmit(e){
|
||||
e.preventDefault();
|
||||
validateFieldsAndScroll((err, values) => {
|
||||
if (!err) {
|
||||
console.log('Received values of form: ', values);
|
||||
const params ={
|
||||
...values,
|
||||
projectLogoId: values.logo.file.response.data.id,
|
||||
userId: current_user.user_id,
|
||||
userName: current_user.username
|
||||
}
|
||||
applyGlcc(params).then(response=>{
|
||||
if(response && response.message === "success"){
|
||||
setReload(Math.random());
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 检查文件上传是否符合规定
|
||||
function beforeUpload(file){
|
||||
const isLt100M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt100M) {
|
||||
showNotification(`文件大小必须小于${2}MB!`);
|
||||
}
|
||||
const isType = file.type === "image/png" || file.type === "image/jpg" || file.type === "image/jpeg";
|
||||
if (!isType) {
|
||||
showNotification("只能上传png、jpg、jpeg格式文件");
|
||||
}
|
||||
return isLt100M && isType;
|
||||
}
|
||||
|
||||
function getBase64(img, callback) {
|
||||
const reader = new FileReader();
|
||||
reader.addEventListener('load', () => callback(reader.result));
|
||||
reader.readAsDataURL(img);
|
||||
reader.onload = function(e) {
|
||||
setImageUrl(e.target.result); // 上传的图片的编码
|
||||
}
|
||||
}
|
||||
|
||||
// 上传完成后
|
||||
function handleChange(info){
|
||||
if(info && info.file && info.file.status === "done"){
|
||||
getBase64(info.file.originFileObj, imageUrl =>
|
||||
setImageUrl(imageUrl)
|
||||
);
|
||||
}
|
||||
}
|
||||
return(
|
||||
<div className="glcc_apply">
|
||||
<div className='apply'>
|
||||
|
@ -62,50 +118,51 @@ function Apply(props) {
|
|||
<Form className="pt20 glcc_info_form" onSubmit={handleSubmit}>
|
||||
{helper('项目名称',
|
||||
'',
|
||||
'name',
|
||||
'projectName',
|
||||
[{ required: true, message: "请正确输入项目名称" },
|
||||
{ max: 32, message: '超出限制长度32位字符,请重新编辑' }],
|
||||
<Input placeholder="请输入项目名称" onBlur={()=>{verify("name")}}/>
|
||||
<Input placeholder="请输入项目名称" onBlur={()=>{verify("name")}} disabled = {userApplyInfo ? true : false} className={userApplyInfo? "disabledInput":""}/>
|
||||
)}
|
||||
{helper('项目分类',
|
||||
'',
|
||||
'classify',
|
||||
'projectType',
|
||||
[],
|
||||
<Select placeholder="请选择项目分类">
|
||||
{cateList && cateList.map(item=> {return <Option value={item.id} key={item.id}>{item.name}</Option>})}
|
||||
<Select placeholder="请选择项目分类" disabled = {userApplyInfo ? true : false} className={userApplyInfo? "disabledInput":""}>
|
||||
{cateList && cateList.map(item=> {return <Option value={item.name} key={item.id}>{item.name}</Option>})}
|
||||
</Select>
|
||||
)}
|
||||
{helper('官网地址',
|
||||
'',
|
||||
'area',
|
||||
'officialWebsiteUrl',
|
||||
[],
|
||||
<Input placeholder="请输入官网地址"/>
|
||||
<Input placeholder="请输入官网地址" disabled = {userApplyInfo ? true : false} className={userApplyInfo? "disabledInput":""}/>
|
||||
)}
|
||||
{helper('GitLink地址',
|
||||
'',
|
||||
'gitlink',
|
||||
'gitlinkUrl',
|
||||
[{ required: true, message: "请正确输入GitLink地址" }],
|
||||
<Input placeholder="请输入GitLink地址" onBlur={()=>{verify("gitlink")}}/>
|
||||
<Input placeholder="请输入GitLink地址" onBlur={()=>{verify("gitlink")}} disabled = {userApplyInfo ? true : false} className={userApplyInfo? "disabledInput":""}/>
|
||||
)}
|
||||
<div className='introArea'>{helper('项目简介',
|
||||
'',
|
||||
'intro',
|
||||
'projectIntro',
|
||||
[{ required: true, message: "请正确输入项目简介" },
|
||||
{ max: 200, message: '超出限制长度200位字符,请重新编辑' }],
|
||||
<TextArea placeholder="请输入项目简介" onBlur={()=>{verify("intro")}} rows={4}/>
|
||||
<TextArea placeholder="请输入项目简介" onBlur={()=>{verify("intro")}} rows={4} disabled = {userApplyInfo ? true : false} className={userApplyInfo? "disabledInput":""}/>
|
||||
)}</div>
|
||||
<div className='introArea'>{helper('项目logo',
|
||||
'logo格式为png、jpg、jpeg,限制上传大小2m,建议上传尺寸为382*228',
|
||||
'logo',
|
||||
[{ required: true, message: "请正确输入项目简介" }],
|
||||
<Upload
|
||||
name="avatar"
|
||||
[{ required: true, message: "请正确上传项目logo" }],
|
||||
userApplyInfo && userApplyInfo.projectLogoId ? <div className='projectLogo'><img src={`${httpUrl}/busiAttachments/download/${userApplyInfo.projectLogoId}`}/></div>
|
||||
:<Upload
|
||||
listType="picture-card"
|
||||
className="avatar-uploader"
|
||||
showUploadList={false}
|
||||
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||
// beforeUpload={beforeUpload}
|
||||
// onChange={this.handleChange}
|
||||
action={`${httpUrl}/busiAttachments/upload`}
|
||||
accept=".png,.jpg,.jpeg"
|
||||
beforeUpload={beforeUpload}
|
||||
onChange={handleChange}
|
||||
>
|
||||
{imageUrl ? <img src={imageUrl} alt="avatar" style={{ width: '100%' }} /> : <div>
|
||||
<i className='iconfont icon-tianjiadaohang font-30'></i>
|
||||
|
@ -114,11 +171,11 @@ function Apply(props) {
|
|||
</Upload>
|
||||
)}</div>
|
||||
<p className='introArea tips'>注: 课题及导师信息请在Gitlink项目中以issue的形式编辑</p>
|
||||
<Form.Item className='subInfo introArea'>
|
||||
{!userApplyInfo && <Form.Item className='subInfo introArea'>
|
||||
<Button type="primary" htmlType="submit" className='sub'>提交</Button>
|
||||
</Form.Item>
|
||||
</Form.Item>}
|
||||
</Form>
|
||||
<div className='explain'>
|
||||
<div className={`explain ${userApplyInfo ? "mt70" : ""}`}>
|
||||
<p className='font-15 c000'>申请说明</p>
|
||||
<div>1、项目报名时间为<span className='c000'>4月15日—5月8日</span>,请在报名截止时间(北京时间<span className='c000'>2022年5月8日18点</span>)前提交报名信息。</div>
|
||||
<div>2、本次夏令营使用Gitlink为代码托管平台,学员基于Gitlink上项目数量完成课程任务。如果您的项目还未在Gitlink中,请现将项目迁移到Gitlink,迁移事项请查看<a href='https://forum.gitlink.org.cn/forums/7296/detail' target="_blank" className='link'>迁移说明文档</a>。如在迁移过程中遇到问题,请加qq群: 1071514693 联系qq群管理员。</div>
|
||||
|
|
|
@ -38,6 +38,25 @@
|
|||
border-color: #b3c3db;
|
||||
&:hover{border-color:#466aff;}
|
||||
}
|
||||
.has-error .ant-input:not([disabled]){
|
||||
border-color:#ef0000;
|
||||
}
|
||||
.disabledInput,.disabledInput .ant-select-selection{
|
||||
background-color: #e5ebf9 !important;
|
||||
border: none;
|
||||
color: #202d40;
|
||||
}
|
||||
.projectLogo{
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border: 1px dashed #b3c3db;
|
||||
border-radius: 4px;
|
||||
line-height: 120px;
|
||||
text-align: center;
|
||||
img{
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.introArea{
|
||||
width: 100%;
|
||||
|
@ -59,6 +78,16 @@
|
|||
.sub{
|
||||
width: 200px;
|
||||
height: 36px;
|
||||
background-color: #466aff;
|
||||
border-color: #466aff;
|
||||
&:hover{
|
||||
background-color:#5d7cff;
|
||||
border-color: #5d7cff;
|
||||
}
|
||||
&:active{
|
||||
background-color:#1140ff;
|
||||
border-color: #1140ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.explain{
|
||||
|
|
|
@ -5,4 +5,5 @@ let actionUrl = settings && settings.common.glcc;
|
|||
|
||||
const service = javaFetch(actionUrl);
|
||||
export const httpUrl = actionUrl;
|
||||
export const main_site_url = settings && settings.common.main_site_url
|
||||
export default service;
|
|
@ -11,8 +11,8 @@ function Help(props) {
|
|||
useEffect(()=>{
|
||||
wikiPages({
|
||||
owner: 'innov',
|
||||
repo: 'PiggyMetrics22',
|
||||
projectId: '1158'
|
||||
repo: 'wiki_test',
|
||||
projectId: '543211'
|
||||
}).then(res => {
|
||||
if (res && res.message === "200" && Array.isArray(res.data)) {
|
||||
setFileArrInit(res.data);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React from 'react';
|
||||
import './index.scss';
|
||||
|
||||
import gitlink1 from '../../img/gitlink1.png';
|
||||
import gitlink2 from '../../img/gitlink2.png';
|
||||
|
||||
function Contact() {
|
||||
|
||||
|
@ -12,13 +13,23 @@ function Contact() {
|
|||
<div className="contact-info">
|
||||
<h4 className="contact-invite">期待你的加入,和我们一起推动开源繁荣发展!</h4>
|
||||
<div className="contact-way">
|
||||
<p>问题资讯:12345689@qq.com</p>
|
||||
<p>合作推广:56898989416@hotmail.com</p>
|
||||
<p>问题资讯: 12345689@qq.com</p>
|
||||
<p>合作推广: 56898989416@hotmail.com</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className='attention'>
|
||||
<div className='one'>
|
||||
<img src={gitlink1}></img>
|
||||
<p>加入GitLink</p>
|
||||
<p>社区QQ群</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink2}></img>
|
||||
<p>关注GitLink</p>
|
||||
<p>微信公众号</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="contact-line"></div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -1,24 +1,22 @@
|
|||
.contact {
|
||||
width: 100%;
|
||||
// height: 5002px;
|
||||
background-image: linear-gradient(
|
||||
163.51deg,
|
||||
#eff3fe 0%,
|
||||
#ebeffb 9.63%,
|
||||
#f0f4ff 16.73%,
|
||||
#e8edfc 33.05%,
|
||||
#e5ecff 43.93%,
|
||||
#e3eaf6 72.41%,
|
||||
#dce8ff 84.35%,
|
||||
#ffffff 94.79%,
|
||||
#ecf4ff 100%
|
||||
);
|
||||
|
||||
// background-image: linear-gradient(
|
||||
// 163.51deg,
|
||||
// #eff3fe 0%,
|
||||
// #ebeffb 9.63%,
|
||||
// #f0f4ff 16.73%,
|
||||
// #e8edfc 33.05%,
|
||||
// #e5ecff 43.93%,
|
||||
// #e3eaf6 72.41%,
|
||||
// #dce8ff 84.35%,
|
||||
// #ffffff 94.79%,
|
||||
// #ecf4ff 100%
|
||||
// );
|
||||
background-image: url('../../img/contact_bg.png');
|
||||
background-size: 100% 100%;
|
||||
.glcc-content {
|
||||
padding-bottom: 3.828vw;
|
||||
}
|
||||
|
||||
.contact-info {
|
||||
padding-bottom: 10vw;
|
||||
}
|
||||
|
||||
.contact-invite {
|
||||
|
@ -33,10 +31,23 @@
|
|||
line-height: 28px;
|
||||
}
|
||||
|
||||
.contact-line {
|
||||
opacity: 20%;
|
||||
height: 1px;
|
||||
background-color: #378eff;
|
||||
margin-top: 3.125vw;
|
||||
}
|
||||
}
|
||||
.contact-content{
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 55px;
|
||||
border-bottom: 1px solid rgba(55, 142, 255, 0.2);
|
||||
.attention{
|
||||
display: flex;
|
||||
div{
|
||||
text-align: center;
|
||||
img{
|
||||
width: 140px;
|
||||
}
|
||||
&.one{
|
||||
margin-right: 80px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ import React from 'react';
|
|||
import './index.scss';
|
||||
import ccf from '../../img/ccf_logo.png';
|
||||
import gitlink from '../../img/gitlink.png';
|
||||
import xjy from '../../img/xjy.png';
|
||||
|
||||
function Partner() {
|
||||
|
||||
|
@ -9,23 +10,104 @@ function Partner() {
|
|||
<div className="partner">
|
||||
<div className="glcc-content">
|
||||
<h3 className="glcc-tit">组织方及合作伙伴</h3>
|
||||
<div className='cont1'>
|
||||
<div className='cont1 cont mb10'>
|
||||
<div>
|
||||
主办方
|
||||
<div><img src={ccf}/></div>
|
||||
<div onClick={()=>{window.open("https://www.ccf.org.cn/")}} className='div8b9'><img src={ccf}/></div>
|
||||
</div>
|
||||
<div>
|
||||
承办方
|
||||
<div><img src={ccf}/></div>
|
||||
<div onClick={()=>{window.open("https://www.ccf.org.cn/kyfzwyh/")}} className='div8b9'><img src={ccf}/></div>
|
||||
</div>
|
||||
<div>
|
||||
协办方
|
||||
<div><img src={gitlink} className='gitlink'/></div>
|
||||
<div className='flex_div'>
|
||||
<div onClick={()=>{window.open("https://www.gitlink.org.cn/")}} className='div8b9 mr35'><img src={gitlink} className='gitlink'/></div>
|
||||
<div onClick={()=>{window.open("http://111.8.36.180:81/#/about")}} className='div8b9'><img src={xjy} className='xjy'/></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className='cont cont2'>
|
||||
赞助商
|
||||
<div></div>
|
||||
{/* 一级赞助商 */}
|
||||
<div className='one_sponsor mt10'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
{/* 二级赞助商 */}
|
||||
<div className='two_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
{/* 三级赞助商 */}
|
||||
<div className='three_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
{/* 四级赞助商 */}
|
||||
<div className='four_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className='cont cont3 mt15'>
|
||||
参与高校
|
||||
<div className='pt10'>
|
||||
<div><img src={gitlink} className='gitlink'/></div>
|
||||
<div><img src={gitlink} className='gitlink'/></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
.partner{
|
||||
height: 19.21875vw;
|
||||
min-height: 369px;
|
||||
background-image: linear-gradient(359.95deg,#373f5e 0%,#344281 100%);
|
||||
padding-bottom: 100px;
|
||||
background-image: url('../../img/partner_bg.png');
|
||||
background-size: 100% 100%;
|
||||
.glcc-tit{
|
||||
color: #fff;
|
||||
}
|
||||
.cont1>div, .cont2, .cont3{
|
||||
color:#ffffff;
|
||||
font-size: 20px;
|
||||
}
|
||||
.cont1{
|
||||
display: flex;
|
||||
>div{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
color:#ffffff;
|
||||
font-size: 20px;
|
||||
margin-right: 35px;
|
||||
}
|
||||
>div>div{
|
||||
.div8b9{
|
||||
background-image:linear-gradient(135deg,#e5e5f8 0%,#dee3ff 19.24%,#eff1ff 47.28%,#e6e6ff 71.19%,#ececff 100%);
|
||||
border:2px solid #8b96ce;
|
||||
border-radius:2px;
|
||||
|
@ -23,12 +26,81 @@
|
|||
width: 220px;
|
||||
height: 85px;
|
||||
line-height: 85px;
|
||||
margin-top: 7px;
|
||||
&:hover{
|
||||
box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
>div>div>img{
|
||||
width: 80px;
|
||||
.flex_div{display: flex;}
|
||||
>div>div>img{width: 80px;}
|
||||
.div8b9 .gitlink{width: 180px;}
|
||||
.div8b9 .xjy{width: 200px;}
|
||||
}
|
||||
.cont2>div>div{
|
||||
width:156px;
|
||||
height:87px;
|
||||
padding: 12px 20px;
|
||||
margin-right: 50px;
|
||||
>img{width: 110px;
|
||||
margin: 0 auto;}
|
||||
>.bor{
|
||||
width: 100px;
|
||||
height: 2px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
>div>div>.gitlink{
|
||||
width: 180px;
|
||||
>p{
|
||||
width: auto;
|
||||
font-size: 12px;
|
||||
margin: 2px auto;
|
||||
text-align: center;}
|
||||
}
|
||||
.cont2>div{
|
||||
display: flex;
|
||||
margin-top: 30px;
|
||||
>div{border-radius:4px;
|
||||
&:hover{
|
||||
box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
}}
|
||||
&.one_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#636363 0%,#7b7b7b 21.34%,#6d6d6d 47.69%,#717171 61.08%,#606060 75.73%,#414141 100%);
|
||||
border:1px solid #c4bfba;
|
||||
>.bor{background-image: linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
}
|
||||
&.two_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#8d90af 0%,#8e92b8 21.34%,#7178ab 47.69%,#7879a4 72.15%,#81839c 100%);
|
||||
border:1px solid #cccaef;
|
||||
>.bor{background-color:#abb3eb;}
|
||||
}
|
||||
&.three_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#95764d 0%,#d4b893 21.34%,#b89360 47.69%,#bb9362 72.15%,#a07f54 100%);
|
||||
border:1px solid #efe3ca;
|
||||
>.bor{background-image:linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
}
|
||||
&.four_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#d6d6d6 0%,#d7d7d7 21.34%,#fbfbfb 47.69%,#d5d5d5 72.15%,#e4e4e6 100%);
|
||||
border:1px solid #dbdbdd;
|
||||
>.bor{background-color:#ffffff;}
|
||||
>p{color: #000000;
|
||||
opacity:83%;}
|
||||
}
|
||||
}
|
||||
.cont3>div{
|
||||
display: flex;
|
||||
div{
|
||||
width:156px;
|
||||
height:67px;
|
||||
background-image:linear-gradient(135deg,#e6e6ff 0%,#dee3ff 19.24%,#eff1ff 47.28%,#e6e6ff 71.19%,#ececff 100%);
|
||||
border:2px solid #8b96ce;
|
||||
border-radius:2px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 20px;
|
||||
&:hover{
|
||||
box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
}
|
||||
>img{width: 120px;}
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 819 KiB |
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
Binary file not shown.
After Width: | Height: | Size: 179 KiB |
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,19 @@
|
|||
.glccHelp{
|
||||
width: 48px;
|
||||
padding: 6px 16px;
|
||||
text-align: center;
|
||||
background-color:#f6f9fe;
|
||||
border:1px solid #ffffff;
|
||||
border-radius:2px;
|
||||
box-shadow:0px 0px 8px rgba(55, 148, 255, 0.16);
|
||||
color:#1e1e1e;
|
||||
cursor: pointer;
|
||||
.icon-bangzhuzhongxinicon{
|
||||
color: #0654D6;
|
||||
margin-left: -3px;}
|
||||
&:hover{
|
||||
color:#ffffff;
|
||||
background-color:#466aff;
|
||||
.icon-bangzhuzhongxinicon{color:#ffffff}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import React from 'react';
|
||||
import './index.scss';
|
||||
|
||||
function SiderBar() {
|
||||
return (
|
||||
// 开源夏令营定制帮助中心调整按钮
|
||||
<div className={"glccHelp -task-sidebar"} onClick={()=>window.open("/glcc/help")}>
|
||||
<i className='iconfont icon-bangzhuzhongxinicon font-20'></i>
|
||||
帮助中心
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default SiderBar;
|
Loading…
Reference in New Issue