Compare commits

..

109 Commits

Author SHA1 Message Date
jasder 7ec53a246c Merge pull request 'logo 从接口获取 nav_logo_url' (#226) from caishi/forgeplus-react:feature_homepage into feature_homepage 2021-10-28 17:30:39 +08:00
caishi f5817e5150 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-10-28 09:31:35 +08:00
jasder 7b77c46915 Merge pull request '导入仓库链接和项目issue优化更改' (#228) from hc1913847458/forgeplus-react:testdev into pre_develop_dev 2021-10-25 17:33:48 +08:00
hucong 746f552a21 issue 2021-10-25 16:37:50 +08:00
hucong 7872d5ecab 导入链接优化 2021-10-25 15:56:06 +08:00
hucong 60da6bd110 导入链接优化 2021-10-25 15:46:57 +08:00
caishi a3bbf6b1c1 头部logo 2021-10-25 11:29:21 +08:00
hucong aeff357660 项目页icon更改 2021-10-25 11:09:41 +08:00
hucong 0e6cb3954a 项目页icon更改 2021-10-25 11:09:13 +08:00
hucong ae12618c0c 导入链接显示优化 2021-10-25 10:45:40 +08:00
caishi 914966bd39 detail 2021-10-22 16:42:43 +08:00
caishi f89f4b6628 Merge branch 'standalone_develop' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-10-22 14:33:40 +08:00
jasder 7407545d1f Merge pull request '冲突引起iconfont丢失' (#215) from caishi/forgeplus-react:standalone into standalone 2021-10-22 14:05:27 +08:00
caishi f0ffc9a29c iconfont + style 2021-10-22 13:56:34 +08:00
jasder 987eb39681 Merge pull request 'standalone merge problem' (#214) from caishi/forgeplus-react:standalone into standalone 2021-10-22 11:44:51 +08:00
caishi 848109afe8 settings 2021-10-22 11:40:41 +08:00
caishi d7bdb35bb7 merge bug 2021-10-22 11:28:22 +08:00
caishi 254b3173d1 merge 2021-10-22 11:25:44 +08:00
caishi 44f06b7305 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage
# Conflicts:
#	public/css/iconfont.css
#	public/css/iconfont.js
#	public/css/iconfont.json
#	public/css/iconfont.ttf
#	public/css/iconfont.woff
#	public/css/iconfont.woff2
#	src/App.js
#	src/forge/Head/Footer.jsx
#	src/modules/tpm/TPMIndexHOC.js
2021-10-22 10:33:18 +08:00
jasder b16e95923a Merge pull request 'FIX bug' (#211) from jasder/forgeplus-react:standalone into standalone 2021-10-22 10:11:03 +08:00
jasder 98a7f73c04 Merge branch 'master' into standalone 2021-10-22 10:09:53 +08:00
jasder b6a450a482 FIX 项目路由改造的bug 2021-10-22 10:04:39 +08:00
jasder 66c495d6b5 Merge pull request '合并代码后,变量重复引发错误' (#203) from caishi/forgeplus-react:standalone into standalone 2021-10-21 18:32:37 +08:00
caishi 42139ef998 settings多次声明 2021-10-21 18:30:28 +08:00
jasder 925d5ea356 Merge pull request '并入独立版本' (#202) from jasder/forgeplus-react:standalone into standalone 2021-10-21 18:28:15 +08:00
jasder ad1f0e29e7 FIX 合并主干分支代码并解决冲突 2021-10-21 18:24:06 +08:00
caishi 3da9306ed6 style 2021-09-30 15:42:37 +08:00
caishi 568a632d65 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage
# Conflicts:
#	src/forge/Head/header.scss
2021-09-29 19:34:03 +08:00
caishi 5982c0df96 首页需求更改 2021-09-29 19:31:55 +08:00
jasder 21046bbcb7 Merge pull request 'gitlink首页需求更新' (#86) from caishi/forgeplus-react:feature_homepage into feature_homepage 2021-09-29 08:24:44 +08:00
caishi 0c816805fb gitlink 首页:合作单位的image以及需求更新 2021-09-28 16:08:25 +08:00
caishi 28f8b6b54c Merge branch 'feature_homepage' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-24 18:19:27 +08:00
caishi 7d087ec1f2 gitlink首页-第一版 2021-09-24 18:18:55 +08:00
jasder beba8975ca Merge pull request 'fix merge pro develop dev' (#73) from pre_develop_dev into feature_homepage 2021-09-24 18:18:42 +08:00
caishi d4690cc8b5 拉取测试版分支代码,且更新gitlink首页 2021-09-22 09:23:20 +08:00
caishi 38021c2e4b Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-17 09:50:03 +08:00
caishi 4233811ae3 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-16 17:26:00 +08:00
caishi 8273acd195 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-16 15:57:24 +08:00
caishi cacb8c84ae 合并develop分支的个人中心改版-全部 2021-06-10 09:36:03 +08:00
caishi fb8ae3fcdf 小修 2021-06-09 18:08:49 +08:00
caishi a257d832cb issue 2021-06-09 18:08:01 +08:00
caishi ff7d191011 merge 2021-06-09 18:07:39 +08:00
caishi 9a2c3f1754 merge 2021-06-09 18:06:54 +08:00
caishi bcdf506e6c 数据统计三个时间筛选参数值必须是时间戳 2021-06-09 18:06:14 +08:00
caishi ccc6cb5d26 merge 2021-06-09 18:03:52 +08:00
caishi 0661c6b932 添加成员后要清除选中的成员 2021-06-09 18:03:24 +08:00
caishi 99947c0c87 merge 2021-06-09 17:56:51 +08:00
caishi 03cff6ec2e merge 2021-06-09 17:56:02 +08:00
caishi f86acfebdf merge冲突 2021-06-09 17:55:12 +08:00
caishi 9a62d7806e 同上-修改细节 2021-06-09 17:54:06 +08:00
caishi a7df6da5f0 merge 个人中心部分 冲突 2021-06-09 17:53:57 +08:00
caishi eab68ac270 概览页数据绑定完成,只差数据统计页 2021-06-09 17:52:43 +08:00
caishi a9e3513706 year 2021-06-09 17:52:31 +08:00
caishi 6b20391c72 merge 个人中心改版 2021-06-09 17:40:05 +08:00
caishi 3135300fe6 merge d029840874 2021-05-14 11:32:01 +08:00
caishi ecc6387113 no message 2021-05-08 17:22:44 +08:00
caishi 990c4e22b0 编辑合并请求-url地址错误 2021-05-08 14:35:51 +08:00
caishi 7eea9316dd detail+同步镜像type=2的才不需要合并请求 2021-05-07 17:41:01 +08:00
caishi 6a546c79e4 merge 2021-05-07 16:36:22 +08:00
caishi 4c48b6c77a merge 2021-05-07 16:35:17 +08:00
caishi 4d5430c3ed 统一项目简介、项目概览 2021-05-07 16:33:57 +08:00
caishi d49af735f1 merge 2021-05-06 17:21:19 +08:00
caishi 03370e8a07 merge 2021-05-06 17:19:09 +08:00
caishi 0b43fa8952 merge develop 2021-05-06 17:18:30 +08:00
caishi 465c4cc8c7 04-28休假期修改issue --需合并至其它分支(合并请求相关) 2021-04-28 20:23:57 +08:00
caishi 37668ddcd4 组织团队-无数据显示错误 2021-04-27 09:47:10 +08:00
caishi 7102594444 代码库编辑文件-切换到其它目录后要重新将编辑状态改为显示状态 2021-04-25 17:48:58 +08:00
caishi b2f2df65bb 样式覆盖 2021-04-23 18:07:15 +08:00
caishi 8a577fb263 资源库 2021-04-23 17:16:50 +08:00
caishi 5c491071b6 +上 关注后不需要提示 2021-04-23 16:37:16 +08:00
caishi c554237076 +上 贡献者悬浮框里增加的跳转链接不要新开页 2021-04-23 16:37:06 +08:00
caishi d22a741bf7 贡献者-悬浮内容增加跳转链接 2021-04-23 16:36:56 +08:00
caishi 383b3f5d74 imageUrl + / 2021-04-23 16:36:41 +08:00
caishi 63da7adcf9 个人中心关注-关注或者取消关注未更新状态 2021-04-23 16:36:31 +08:00
caishi 3243aeebc6 贡献者-悬浮卡片-测试版1 2021-04-23 16:36:22 +08:00
caishi 1a86a75345 发布评论者头像路径错误 2021-04-23 16:36:11 +08:00
caishi 3b6cc99d49 merge 2021-04-23 16:35:49 +08:00
caishi d872ffc606 merge 2021-04-23 16:31:15 +08:00
caishi 3b69c01ead merge 2021-04-23 16:30:45 +08:00
caishi 1e0608aa14 合并请求-提出申请者头像显示问题 2021-04-23 16:30:07 +08:00
caishi 9b6816e346 团队项目-团队项目管理-显示的name和跳转的login 2021-04-23 16:29:57 +08:00
caishi 6ee257231d 切换左侧目录,选择不同的文件时,文件详情没有更新 2021-04-23 16:29:46 +08:00
caishi 70edb73f6c all-默认头像(首字母加背景颜色) 2021-04-23 16:29:35 +08:00
caishi 5c7553d4aa merge 2021-04-23 16:29:16 +08:00
caishi 278701f24b 上线后的getImageURL也不用在前面加/ + 一些小样式修改 2021-04-23 16:27:56 +08:00
caishi 97ab819bf9 merge 2021-04-23 16:27:37 +08:00
caishi d870f17b85 readme-文件增加一个目录下拉icon 2021-04-23 16:26:02 +08:00
caishi 91ac6c2357 组织团队-新增一个团队标识 2021-04-23 16:25:47 +08:00
caishi 3702d1c1a5 merge 2021-04-23 16:25:35 +08:00
caishi 93d48c359e merge 2021-04-23 16:25:03 +08:00
caishi 80dace18e9 资源库不需要按引用次数排序 2021-04-23 16:24:23 +08:00
caishi 375cbb37df merge 2021-04-23 16:24:02 +08:00
caishi 10d933e037 merge develop 2021-04-23 16:23:29 +08:00
caishi 4fdd3f6f80 组织-团队列表的头像login为undefined 2021-04-23 16:22:36 +08:00
caishi 458b56e33b 去掉悬浮手册按钮 2021-04-23 16:22:22 +08:00
caishi c256887132 注册成功后跳转到首页 2021-03-31 15:13:32 +08:00
caishi 6a588db7f6 清理代码 2021-03-31 15:03:16 +08:00
caishi 6c4e1c6665 Merge branch 'standalone' into dev_local 2021-03-31 14:42:24 +08:00
caishi c554d2c00d 重置settings为undefined 2021-03-31 14:35:23 +08:00
caishi b69bf5974a remove 2021-03-31 14:28:22 +08:00
caishi ecb1691b4d Trustie 2021-03-31 14:17:48 +08:00
caishi 6a9f2b31a6 注册页面logo和底部信息 2021-03-31 14:04:09 +08:00
caishi 4947cd8456 浏览器ico要用trustie的logo 2021-03-31 12:07:11 +08:00
caishi 8429effe16 没logo时会将setting重置为空 2021-03-31 12:02:38 +08:00
caishi 49ebe450be 合并测试版分支 2021-03-31 11:21:07 +08:00
caishi e3c926da77 注册 2021-03-29 17:37:16 +08:00
caishi af48da2eb3 href 2021-03-29 17:14:56 +08:00
caishi 6630309466 Merge branch 'develop' into dev_local 2021-03-29 16:58:48 +08:00
caishi a7c3dee7e3 2020-11-26 10:55:03 +08:00
108 changed files with 3640 additions and 848 deletions

1179
.idea/workspace.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1268,11 +1268,17 @@ a.shixun-task-btn {
/*-----------实训配置、评测脚本-------------*/ /*-----------实训配置、评测脚本-------------*/
@font-face {
font-family: "iconfont"; /* Project id 2340181 */
src: url('iconfont.woff2?t=1631773579834') format('woff2'),
url('iconfont.woff?t=1631773579834') format('woff'),
url('iconfont.ttf?t=1631773579834') format('truetype');
}
html body { html body {
font-size: 14px; font-size: 14px;
line-height: 2.0; line-height: 2.0;
background: #fafafa; background: #fafafa;
font-family: "Microsoft YaHei", "SimSun"; font-family: "iconfont";
color: #05101a; color: #05101a;
height: 100%; height: 100%;
position: relative; position: relative;
@ -6705,10 +6711,13 @@ p{
right: 0px; right: 0px;
top:4px; top:4px;
color: #999; color: #999;
<<<<<<< HEAD
=======
} }
.ant-input, .ant-input .ant-input-suffix{ .ant-input, .ant-input .ant-input-suffix{
background-color: #fff!important; background-color: #fff!important;
} }
.has-error .ant-input{ .has-error .ant-input{
background-color: #FEF1F0!important; background-color: #FEF1F0!important;
>>>>>>> pre_develop
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/favicon-.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -10,7 +10,7 @@ import {
import axios from 'axios'; import axios from 'axios';
import LoginDialog from './modules/login/LoginDialog'; import LoginDialog from './modules/login/LoginDialog';
import 'babel-polyfill'; import 'babel-polyfill';
import Loading from './Loading' import Loading from './Loading';
import Loadable from 'react-loadable'; import Loadable from 'react-loadable';
import marked from './common/marked'; import marked from './common/marked';
@ -97,6 +97,10 @@ const ProjectIndex = Loadable({
loading: Loading, loading: Loading,
}); });
const Home = Loadable({
loader: () => import('./home/Index'),
loading: Loading,
})
// const CreateMerge = Loadable({ // const CreateMerge = Loadable({
// loader: () => import('./forge/Merge/NewMerge'), // loader: () => import('./forge/Merge/NewMerge'),
// loading: Loading, // loading: Loading,
@ -353,34 +357,28 @@ class App extends Component {
{/* 判断为用户/组织,并进入对应页面 */} {/* 判断为用户/组织,并进入对应页面 */}
{ {
pathType === 'User' ? pathType === 'User' ?
<Route exact path="/:username" <Route exact path="/:username"
render={ render={
(props) => { (props) => {
return (<InfosIndex {...this.props} {...this.state} />) return (<InfosIndex {...this.props} {...this.state} />)
}
} }
/> : pathType === 'Organization' ? <Route path={"/:OIdentifier"} }
render={ /> : pathType === 'Organization' ? <Route path={"/:OIdentifier"}
(props) => { render={
return (<OrganizeIndex {...props} {...this.props} {...this.state} />) (props) => {
} return (<OrganizeIndex {...props} {...this.props} {...this.state} />)
}> }
</Route> : pathType === '404' ? <Route component={Shixunnopage} />: }>
<Route exact path="/" </Route> : pathType === '404' ? <Route component={Shixunnopage} />:
render={ ""
(props) => (
personal && personal.length > 0 ?
<InfosIndex {...this.props} {...props} />
:
<ProjectIndex {...this.props} {...props} />
)
}
/>
// <Route path="/" component={Loading} />
// <Route path="/" component={Shixunnopage} />
} }
<Route exact path="/"
render={
(props) => (
<Home {...props} {...this.props} {...this.state}/>
)
}
/>
{/* 个人主页 */} {/* 个人主页 */}
<Route path="/:username" <Route path="/:username"

View File

@ -363,7 +363,7 @@ li.ant-menu-item{
color: #333; color: #333;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
margin-bottom: 10px; margin-bottom: 10px!important;
a{ a{
display: block; display: block;
overflow: hidden; overflow: hidden;

View File

@ -19,46 +19,46 @@ function Footer(){
return( return(
<div> <div>
<div style={{height:"543px"}}></div> {/* {value && showhtml(value)} */}
<div style={{height:"483px"}}></div>
<div className="newFooter edu-txt-center"> <div className="newFooter edu-txt-center">
{value && showhtml(value)} {value && showhtml(value)}
{/* <div className="footerInfos"> {/* <div className="footEdition">
<ul> <div className="footContent">
<li>社区</li> <ul className="center">
<li><a href={`/`} target="_blank">网站首页</a></li> <img src={""} alt="Gitlink确实开源" height="29px"/>
<li><a href={`https://www.trustie.net/agreement`} target="_blank">服务协议</a></li> <p>确实开源</p>
<li><a href={`https://forum.trustie.net/forums/1168/detail`} target="_blank">帮助中心</a></li> </ul>
<li><a href={`https://forum.trustie.net/`} target="_blank">问吧交流</a></li> <ul>
<li><a href={`https://www.trustie.net/cooperation`} target="_blank">合作伙伴</a></li> <li className="thehead">社区</li>
</ul> <li><a href="/">网站首页</a></li>
<ul> <li><a href="https://forum.trustie.net/forums/1168/detail">帮助中心</a></li>
<li>支持与服务</li> <li><a href="https://forum.trustie.net/">论坛交流</a></li>
<li><a href={`https://forgeplus.trustie.net/docs/api`} target="_blank">API文档</a></li> <li><a href="https://www.trustie.net/cooperation">合作伙伴</a></li>
<li><a href={`https://forum.trustie.net/forums/1168/detail`} target="_blank">帮助中心</a></li> </ul>
<li><a href={`https://git-scm.com`} target="_blank">Git常用命令</a></li> <ul>
<li><a href={`https://forum.trustie.net/forums/3080/detail`} target="_blank">DevOps使用文档</a></li> <li className="thehead">支持与服务</li>
<li><a href={`https://forgeplus.trustie.net/projects/jasder/forgeplus/tree/master/CHANGELOG.md`} target="_blank">日志更新</a></li> <li><a href="https://forgeplus.trustie.net/docs/api">API文档</a></li>
</ul> <li><a href="https://git-scm.com">Git常用命令</a></li>
<ul> <li><a href="https://forum.trustie.net/forums/3080/detail">DevOps使用文档</a></li>
<li>合作伙伴</li> <li><a href='https://www.trustie.net/agreement'>服务协议</a></li>
<li><a href={`http://www.sei.pku.edu.cn`} target="_blank">北京大学</a></li> </ul>
<li><a href={`http://scse.buaa.edu.cn`} target="_blank">北京航空航天大学</a></li> <ul>
<li><a href={`https://www.nju.edu.cn`} target="_blank">南京大学</a></li> <li className="thehead">加入我们</li>
<li><a href={`https://www.xtu.edu.cn`} target="_blank">湘潭大学</a></li> <li className="theline">
<li><a href={`http://www.iscas.ac.cn`} target="_blank">ISCAS</a></li> <div className="mr50">
<li><a href={`https://www.ucloud.cn`} target="_blank">UCloud优刻得</a></li> <li>公众号</li>
<li><a href={`http://www.inforbus.com`} target="_blank">中创软件</a></li> <img src={"Img"} alt="公众号"/>
<li><a href={`https://www.inspur.com`} target="_blank">浪潮集团</a></li> </div>
<li><a href={`http://www.copu.org.cn`} target="_blank">中国开源软件推进联盟</a></li> <div>
<li><a href={`https://www.sjtu.edu.cn`} target="_blank">上海交通大学</a></li> <li>QQ群</li>
</ul> <img src={"qqImg"} alt="QQ群"/>
<ul> </div>
<li>合作伙伴</li> </li>
<li><span>热线</span></li> </ul>
<li><span>QQ群1071514693</span></li> </div>
</ul> <p className="copyrightDesc">©Copyright 20072021 国防科技大学Gitlink团队 & IntelliDE <br/>湘ICP备 17009477</p>
</div> </div> */}
<p className="footerCopy">© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE <a href="https://beian.miit.gov.cn">湘ICP备 17009477</a></p> */}
</div> </div>
</div> </div>
) )

View File

@ -262,4 +262,77 @@
.text-center{ .text-center{
text-align: center; text-align: center;
}
.footEdition{
background-color: #171B23;
.footContent{
display: flex;
align-items: flex-start;
padding:86px 0px;
justify-content: space-around;
width: 1200px;
margin:0px auto;
ul{
min-width: 120px;
text-align: left;
margin-right: 80px;
&.center{
text-align: center;
}
&>p{
height: 22px;
font-size: 16px;
font-weight: 400;
color: #FFFFFF;
line-height: 22px;
}
&>img{
width: 100px;
height: 100%;
margin-bottom: 30px;
margin-top: 25px;
border-radius: 10px;
}
li{
height: 20px;
font-size: 14px;
font-weight: 400;
line-height: 20px;
color: #BDC2D1;
margin-bottom: 15px!important;
a{
color: #BDC2D1!important;
&:hover{
text-decoration: underline;
}
}
&.thehead{
height: 25px;
font-size: 18px;
font-weight: 600;
color: #FFFFFF;
line-height: 25px;
margin-bottom: 20px!important;
}
&.theline{
display: flex;
img{
width: 80px;
height: 80px;
border-radius: 3px;
}
}
}
}
}
.copyrightDesc{
font-size: 12px;
font-weight: 400;
color: #BDC2D1;
line-height: 28px;
padding:15px 0px;
text-align: center;
background-color: #1B212C;
}
} }

View File

@ -60,12 +60,6 @@ class Index extends Component {
<ProjectNew {...this.props} {...props} /> <ProjectNew {...this.props} {...props} />
)} )}
></Route> ></Route>
{/* <Route
path="/:owner/:projectsId"
render={(props) => (
<ProjectDetail {...this.props} {...props} />
)}
></Route> */}
<Route <Route
path="/explore" path="/explore"
render={(props) => ( render={(props) => (
@ -73,12 +67,12 @@ class Index extends Component {
)} )}
></Route> ></Route>
<Route {/* <Route
path="/" path="/"
render={(props) => ( render={(props) => (
<ProjectIndex {...this.props} {...props} /> <ProjectIndex {...this.props} {...props} />
)} )}
></Route> ></Route> */}
</Switch> </Switch>
</div> </div>
); );
@ -90,10 +84,3 @@ export default withRouter(
parentSelector: ".newMain", parentSelector: ".newMain",
})(CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Index)))) })(CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Index))))
); );
// export default withRouter(
// ImageLayerOfCommentHOC({
// imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget",
// parentSelector: ".newMain",
// })(Index)
// );

View File

@ -73,7 +73,6 @@ export default ((props)=>{
<Menu.Item key={'1'}><a href={tar_url}>TAR.GZ</a></Menu.Item> <Menu.Item key={'1'}><a href={tar_url}>TAR.GZ</a></Menu.Item>
</Menu> </Menu>
) )
return( return(
<React.Fragment> <React.Fragment>
<div className="main"> <div className="main">

View File

@ -509,11 +509,6 @@ class Detail extends Component {
this.textFunc(projectDetail.forked_from_project_id, projectDetail.fork_info) this.textFunc(projectDetail.forked_from_project_id, projectDetail.fork_info)
: "" : ""
} }
{
projectDetail && projectDetail.type && projectDetail.type !== 0 ?
<span className="color-grey-9">导入于 <a className="color-grey-6" target="_blank" href={projectDetail.mirror_url}>{projectDetail.mirror_url}</a></span>
: ""
}
</div> </div>
</div> </div>
<div> <div>

View File

@ -52,12 +52,6 @@ class IndexItem extends Component {
<i className="iconfont icon-banbenku font-18 color-green" /> <i className="iconfont icon-banbenku font-18 color-green" />
</Tooltip>:"" </Tooltip>:""
} }
{
item.type && item.type === 1 ?
<Tooltip title="该项目是一个导入于其他网站的仓库" className="ml5">
<i className="iconfont icon-jingxiang font-18 color-green" />
</Tooltip>:""
}
</AlignCenter> </AlignCenter>
<span className="p-r-tags"> <span className="p-r-tags">
{ {

View File

@ -267,6 +267,11 @@ class Setting extends Component {
}, },
], ],
})(<Input placeholder="请输入项目名称" />)} })(<Input placeholder="请输入项目名称" />)}
{
projectDetail && projectDetail.type && projectDetail.type !== 0 ?
<span className="color-grey-9">该项目导入于 <a className="color-grey-6" target="_blank" href={projectDetail.mirror_url}>{projectDetail.mirror_url}</a></span>
: ""
}
</Form.Item> </Form.Item>
<div className="df" style={{ alignItems: "center" }}> <div className="df" style={{ alignItems: "center" }}>
<span className="mr20 mb15 font-16">可见性</span> <span className="mr20 mb15 font-16">可见性</span>

View File

@ -157,6 +157,17 @@ export default Form.create()(
setAuth(params.target.value) setAuth(params.target.value)
} }
function checkname(rule, value, callback){
if(!value){
callback();
}
if(value && !value.match(/^[a-zA-Z][a-zA-Z\d]{3,14}$/)){
callback("只能使用英文字母和数字以字母开头长度为4到15个字符");
}
callback();
}
function checkname(rule, value, callback){ function checkname(rule, value, callback){
if(!value){ if(!value){
callback(); callback();

View File

@ -10,14 +10,10 @@ function ListItem({item,key,OIdentifier}) {
<Link to={`/${OIdentifier}/${item.identifier}`} className="name">{item.name}</Link> <Link to={`/${OIdentifier}/${item.identifier}`} className="name">{item.name}</Link>
{ item.forked_from_project_id && <i className="iconfont icon-fork font-18 color-orange ml8" /> } { item.forked_from_project_id && <i className="iconfont icon-fork font-18 color-orange ml8" /> }
{ {
item.type && item.type !== 0 ? item.type && item.type === 2 ?
item.type === 2 ?
<Tooltip title="该项目是一个镜像" className="ml8"> <Tooltip title="该项目是一个镜像" className="ml8">
<i className="iconfont icon-banbenku font-18 color-green" /> <i className="iconfont icon-banbenku font-18 color-green" />
</Tooltip>: </Tooltip>:""
<span className="ml8">
<i className="iconfont icon-jingxiang font-18 color-green" />
</span>:""
} }
</span> </span>
<ListCount fork={item.forked_count} parise={item.praises_count}/> <ListCount fork={item.forked_count} parise={item.praises_count}/>

View File

@ -0,0 +1,122 @@
import React, { Component } from "react";
import { Link } from 'react-router-dom';
import { Spin } from 'antd';
import NoneData from '../Nodata';
import './version.css';
import axios from 'axios';
import RenderHtml from '../../components/render-html';
/**
* issue_chosen:下拉的筛选列表,
* data:列表接口返回的所有数据,
* issues:列表数组,
* isSpin:加载中,
*/
class version extends Component {
constructor(props) {
super(props);
this.state = {
issue_chosen: undefined,
data: undefined,
releases:undefined,
issues: undefined,
isSpin: true,
search: undefined,
search_count: undefined,
}
}
componentDidMount = () => {
this.getIssueList();
}
// 获取列表数据
getIssueList = () => {
const { projectsId, owner } = this.props.match.params;
const url = `/${owner}/${projectsId}/releases.json`;
axios.get(url).then((result) => {
if (result) {
this.setState({
data: result.data,
releases:result.data.releases,
issues: result.data.issues,
isSpin: false
})
}
}).catch((error) => {
console.log(error);
})
}
// 显示版本描述
showBody=(key,flag)=>{
let { releases } = this.state;
releases[key].bodyshow = !flag;
this.setState({
releases
})
}
renderList = (releases) => {
const { projectsId , owner } = this.props.match.params;
if (releases && releases.length > 0) {
return (
releases.map((item, key) => {
return (
<div className="versionInfo" key={key}>
<span className="versionInfo_left">
<span className={`${item.draft === "稳定" ?"versionTag green":"versionTag yellow"}`}>{item.draft}</span>
<span className="mt10">{item.created_at}</span>
<span className="color-grey-8">
<i className="iconfont icon-biaoqian3 mr3 font-14"></i>
{item.tag_name}
</span>
</span>
<div className="versionInfo_right">
<span className="versionName">
<span className="task-hide">{item.name}</span>
<Link to={`/projects/${owner}/${projectsId}/releases/${item.version_id}/update`} className="color-blue ml3 font-12">编辑</Link>
</span>
<span className="color-grey-3">
<i className={`${item.bodyshow ? "iconfont icon-sanjiaoxing-down color-grey-8 mr3 font-14":"iconfont icon-triangle color-grey-8 mr3 font-14"}`} onClick={()=>this.showBody(key,item.bodyshow)}></i>
{item.user_name}:<span className="color-grey-8">发布了这个版本并在发布后提交给{item.target_commitish}</span>
</span>
{
item.bodyshow && <RenderHtml className="break_word_comments imageLayerParent" value={item.body} url={this.props.history.location}/>
}
<RenderHtml />
<p className="mt10 pl3">
<a href={item.tarball_url} style={{color:"#4CC1DA"}} className="mr30"><i className="iconfont icon-TAR font-18 mr5"></i>TAR</a>
<a href={item.zipball_url} style={{color:"#28BD6C"}}><i className="iconfont icon-ZIP font-18 mr5"></i>ZIP</a>
</p>
</div>
</div>
)
})
)
} else if (releases && releases.length === 0) {
return ( <NoneData _html="暂时还没有相关数据!" /> )
}
}
render() {
const { projectsId ,owner } = this.props.match.params;
const { data , releases , isSpin } = this.state
return (
<div className="main" style={{padding:"0px"}}>
<div className="topWrapper" style={{padding:"15px 20px"}}>
<span className="font-18 color-grey-3">版本发布</span>
{
data && data.user_permission ?
<Link to={`/projects/${owner}/${projectsId}/releases/new`} className="topWrapper_btn_new">+ 发布新版</Link>
: ''
}
</div>
<div className="releasesVersion">
<Spin spinning={isSpin}><div>{this.renderList(releases)}</div></Spin>
</div>
</div>
)
}
}
export default version;

View File

@ -123,6 +123,8 @@ class Infos extends Component {
}); });
const { current_user } = this.props; const { current_user } = this.props;
const { username } = this.props.match.params; const { username } = this.props.match.params;
const { pathname } = this.props.location;
const { notice } = this.state;
let url = `/users/${username || (current_user && current_user.login)}.json`; let url = `/users/${username || (current_user && current_user.login)}.json`;
axios.get(url).then((result) => { axios.get(url).then((result) => {

View File

@ -48,7 +48,6 @@ function Team(props){
</Menu> </Menu>
) )
return( return(
<div> <div>
<div className="headerbox"> <div className="headerbox">

137
src/home/FifthEdition.jsx Normal file
View File

@ -0,0 +1,137 @@
import React , { useEffect } from 'react';
import Beijing from './Img/unit/beijing.png';
import SHJT from './Img/unit/SHJT.png';
import DD from './Img/unit/DD.png';
import HW from './Img/unit/HW.png';
import ML from './Img/unit/ML.png';
import QH from './Img/unit/QH.png';
import QZ from './Img/unit/QZ.png';
import TX from './Img/unit/TX.png';
import XH from './Img/unit/XH.png';
import XJY from './Img/unit/XJY.png';
import ZC from './Img/unit/ZC.png';
import GFKJ from './Img/unit/GFKJ.png';
import BJHKHT from './Img/unit/BJHKHT.png';
import ISCAS from './Img/unit/ISCAS.png';
import NJDX from './Img/unit/NJDX.png';
import CEC from './Img/unit/CEC.png';
import KYRJLM from './Img/unit/KYRJLM.png';
import WXYJY from './Img/unit/WXYJY.png';
import HSKY from './Img/unit/HSKY.png';
import LSLM from './Img/unit/LSLM.png';
import TG from './Img/unit/TG.png';
import LC from './Img/unit/LC.png';
import YKD from './Img/unit/YKD.png';
const list = [
{image_url:GFKJ, name:"国防科技大学",src:"https://www.nudt.edu.cn/"},
{image_url:TG, name:"头歌",src:"https://www.educoder.net/"},
{image_url:XJY, name:"长沙先进技术研究院",src:"https://www.hnjmrh.gov.cn/newweb/service/detail/305/"},
{image_url:Beijing, name:"北京大学",src:"https://www.pku.edu.cn/"},
{image_url:BJHKHT, name:"北京航空航天",src:"https://www.buaa.edu.cn/"},
{image_url:ISCAS, name:"ISCAS",src:"http://www.iscas.ac.cn/"},
{image_url:NJDX, name:"南京大学",src:"https://www.nju.edu.cn/"},
{image_url:DD, name:"滴滴",src:"https://www.didiglobal.com/"},
{image_url:CEC, name:"CEC",src:"https://www.cec.com.cn/"},
{image_url:HW, name:"华为",src:"https://www.huawei.com/"},
{image_url:ML, name:"木兰开源社区",src:"https://www.mulanos.cn/"},
{image_url:TX, name:"腾讯",src:"https://www.tencent.com/zh-cn"},
{image_url:KYRJLM, name:"中国开源软件推进联盟",src:"http://www.copu.org.cn/"},
{image_url:XH, name:"中国计算机学会",src:"https://www.ccf.org.cn/"},
{image_url:QZ, name:"openi启智",src:"https://www.openi.org.cn/"},
{image_url:HSKY, name:"红山开源",src:"https://osredm.com/"},
{image_url:LSLM, name:"绿色产业联盟",src:"https://www.opengcc.org/"},
{image_url:ZC, name:"中创软件",src:"http://www.cvicse.com/"},
{image_url:LC, name:"浪潮",src:"https://cloud.inspur.com/"},
{image_url:YKD, name:"ucloud",src:"https://www.ucloud.cn/"}
]
// const settings = {
// dots: false,
// infinite: true,
// slidesToShow: 6,
// slidesToScroll: 1,
// autoplay: true,
// speed: 2000,
// autoplaySpeed: 2000,
// cssEase: "linear",
// rows:2,
// arrows:false
// };
function FifthEdition() {
useEffect(()=>{
if(list.length>10){
Init();
}
},[])
function Init() {
let box = document.getElementById('scrollBox1');
scrollUp();
var myTimer = setInterval(scrollUp, 10);
// container
box.onmouseover = () => {
clearInterval(myTimer);
}
// container
// 6060
box.onmouseout = () => {
myTimer = setInterval(scrollUp, 10);
}
}
function scrollUp() {
let box = document.getElementById('scrollBox1');
if(box){
let con1 = document.getElementById('box1');
if (box.scrollLeft >= con1.clientWidth) {
box.scrollLeft = 0;
} else {
box.scrollLeft++;
}
}
}
return(
<div id={"scrollBox1"}>
<div style={{width:370*list.length+"px"}}>
<ul className="fifthList" id="box1" style={{width:(370*list.length)/2+"px"}}>
{
list && list.map((i,k)=>{
return(
<li><a href={i.src}><img src={i.image_url} alt={i.name}/></a></li>
)
})
}
</ul>
{list.length > 10 &&
<ul className="fifthList" id="box2" style={{width:(370*list.length)/2+"px"}}>
{
list && list.map((i,k)=>{
return(
<li><a href={i.src}><img src={i.image_url} alt={i.name}/></a></li>
)
})
}
</ul>
}
</div>
{/* <Slider {...settings} className="footSlider">
{
list && list.map((i,k)=>{
return(
<li><Link to={i.src}><img src={i.image_url} alt={i.name}/></Link></li>
)
})
}
{list.length > 10 && list && list.map((i,k)=>{
return(
<li><Link to={i.src}><img src={i.image_url} alt={i.name}/></Link></li>
)
})
}
</Slider> */}
</div>
)
}
export default FifthEdition;

47
src/home/Footnav.jsx Normal file
View File

@ -0,0 +1,47 @@
import React from 'react';
import Img from './Img/gitlink.png';
import qqImg from './Img/qq.png';
function Footnav() {
return(
<div className="footEdition">
<div className="footContent">
<ul className="center">
<img src={Img} alt="Gitlink确实开源" height="29px"/>
<p>确实开源</p>
</ul>
<ul>
<li className="thehead">社区</li>
<li><a href="/">网站首页</a></li>
{/* 关于我们 */}
<li><a href="https://forum.trustie.net/forums/1168/detail">帮助中心</a></li>
<li><a href="https://forum.trustie.net/">论坛交流</a></li>
<li><a href="https://www.trustie.net/cooperation">合作伙伴</a></li>
</ul>
<ul>
<li className="thehead">支持与服务</li>
<li><a href="https://forgeplus.trustie.net/docs/api">API文档</a></li>
<li><a href="https://git-scm.com">Git常用命令</a></li>
<li><a href="https://forum.trustie.net/forums/3080/detail">DevOps使用文档</a></li>
<li><a href='https://www.trustie.net/agreement'>服务协议</a></li>
</ul>
<ul>
<li className="thehead">加入我们</li>
<li className="theline">
{/* <div className="mr50">
<li>公众号</li>
<img src={qqImg} alt="公众号"/>
</div> */}
<div>
<li>QQ群</li>
<div className="imgCon">
<img src={qqImg} alt="QQ群"/>
</div>
</div>
</li>
</ul>
</div>
<p className="copyrightDesc">©Copyright 20072021 国防科技大学GitLink团队 & IntelliDE <br/>湘ICP备 17009477</p>
</div>
)
}
export default Footnav;

31
src/home/Headnav.jsx Normal file
View File

@ -0,0 +1,31 @@
import React from 'react';
import './Index.scss';
// import gitlink from './Img/gitlink.png';
import { getImageUrl } from 'educoder';
function HeadNav({showLoginDialog,mygetHelmetapi}) {
const register = mygetHelmetapi && mygetHelmetapi.common && mygetHelmetapi.common.register;
const navbar = mygetHelmetapi && mygetHelmetapi.navbar;
return(
<div className="headNav">
<div className="headNavDiv">
<ul className="headlist">
<li><img src={getImageUrl(`/${mygetHelmetapi && mygetHelmetapi.nav_logo_url}`)} alt="gitlink" height="37px" style={{marginRight:"15px"}}/></li>
{
navbar && navbar.length>0&&
navbar.map((i,k)=>{
return(
<li style={{display:i.hidden?"none":"block"}}><a href={i.link}>{i.name}</a></li>
)
})
}
</ul>
<div>
<a className="color-white" onClick={showLoginDialog}>登录</a>
<a className="regBtn" href={register}>注册</a>
</div>
</div>
</div>
)
}
export default HeadNav;

BIN
src/home/Img/2-1bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 KiB

BIN
src/home/Img/2-2-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
src/home/Img/2-2-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
src/home/Img/2-2-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/home/Img/2-2-head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
src/home/Img/2-2-ring.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/home/Img/2-3-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
src/home/Img/2-3-1big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
src/home/Img/2-3-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/home/Img/2-3-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
src/home/Img/2-3-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/home/Img/2-3bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
src/home/Img/2-4-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
src/home/Img/2-4bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

BIN
src/home/Img/2-5-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
src/home/Img/2-5-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
src/home/Img/2-5bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
src/home/Img/2-6-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
src/home/Img/2-6-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
src/home/Img/3-1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
src/home/Img/3-1-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/home/Img/3-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

BIN
src/home/Img/3-2-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/home/Img/3-2-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/home/Img/3-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
src/home/Img/3-3-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/home/Img/3-3-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/home/Img/3-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
src/home/Img/3-4-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/home/Img/3-4-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/home/Img/3-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
src/home/Img/3-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

BIN
src/home/Img/4-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
src/home/Img/4-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
src/home/Img/4-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
src/home/Img/4-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/home/Img/4-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
src/home/Img/banner1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

BIN
src/home/Img/banner2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

BIN
src/home/Img/banner3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

BIN
src/home/Img/banner4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 KiB

BIN
src/home/Img/codeafter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
src/home/Img/gitlink.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/home/Img/qq.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
src/home/Img/top-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/home/Img/top-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/home/Img/top-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/home/Img/top-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
src/home/Img/unit/CEC.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/home/Img/unit/DD.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
src/home/Img/unit/GFKJ.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
src/home/Img/unit/HSKY.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
src/home/Img/unit/HW.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

BIN
src/home/Img/unit/ISCAS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/home/Img/unit/LC.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
src/home/Img/unit/LSLM.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/home/Img/unit/ML.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/home/Img/unit/NJDX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/home/Img/unit/QH.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
src/home/Img/unit/QZ.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
src/home/Img/unit/SHJT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/home/Img/unit/TG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/home/Img/unit/TX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
src/home/Img/unit/WXYJY.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/home/Img/unit/XH.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/home/Img/unit/XJY.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
src/home/Img/unit/YKD.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/home/Img/unit/ZC.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

128
src/home/Index.jsx Normal file
View File

@ -0,0 +1,128 @@
import React , { useEffect , useState } from 'react';
import "./Index.scss";
import HeadNav from './Headnav';
import TopEdition from './TopEdition';
import ThirdEdition from './ThirdEdition';
import { Anchor } from 'antd';
import F41 from './Img/4-1.png';
import F42 from './Img/4-2.png';
import F43 from './Img/4-3.png';
import F44 from './Img/4-4.png';
import SecondEdition from './SecondEdition';
import FifthEdition from './FifthEdition';
import Footnav from './Footnav';
import { TPMIndexHOC } from '../modules/tpm/TPMIndexHOC';
function Index(props) {
const [ value , setValue ] = useState("");
const [ flag , setFlag ] = useState(true);
const [ isRender , setIsRender ] = useState(false);
const [ isloginCancel , setIsloginCancel ] = useState(false);
const register = props && props.mygetHelmetapi && props.mygetHelmetapi.common && props.mygetHelmetapi.common.register;
useEffect(()=>{
window.addEventListener("scroll",scrollListener);
},[])
function scrollListener(event) {
let third = document.getElementById("thirdContent").offsetTop;
let top = document.documentElement.scrollTop + 60;
if(top>= third)
{
setFlag(false)
}else{
setFlag(true)
}
}
function changeActive(params) {
if(params){
setValue(params);
let h = params.split("#")[1];
let t = document.getElementById(h).offsetTop;
document.documentElement.scrollTop = t-100;
}else{
setValue("");
}
}
return(
<div className="homePage">
<div className="topEdition">
<HeadNav {...props}/>
<TopEdition register={register}/>
<ul className="topEditionUl">
<a href="https://forum.trustie.net/forums/4666/detail" target="_blank" className="font-18">
<li>
CCF开源发展委员会首批执行委员名单发布
</li>
</a>
<a href="https://forgeplus.trustie.net/Gitlink/forgeplus" target="_blank" className="font-18">
<li>
平台精选仓库Gitlink/Gitlink
</li>
</a>
<a href="https://forum.trustie.net/forums/4663/detail" target="_blank" className="font-18">
<li>
OpenHarmony系统介绍及赛题说明
</li>
</a>
</ul>
</div>
<div className="secondEdition">
<p className="theTitle">Gitlink新一代开源创新服务平台</p>
{
flag &&
<Anchor>
<li onClick={()=>changeActive("#hadoop")} className={value === "#hadoop"?"active":""}><a>分布式协作开发</a></li>
<li onClick={()=>changeActive("#oneStop")} className={value === "#oneStop"?"active":""}><a>一站式过程管理</a></li>
<li onClick={()=>changeActive("#highDevops")} className={value === "#highDevops"?"active":""}><a>高效流水线运维</a></li>
<li onClick={()=>changeActive("#multipleAnalyse")} className={value === "#multipleAnalyse"?"active":""}><a>多层次代码分析</a></li>
<li onClick={()=>changeActive("#multidimensional")} className={value === "#multidimensional"?"active":""}><a>多维度用户画像</a></li>
</Anchor>
}
<SecondEdition {...props} setValue={setValue}/>
</div>
<div id="thirdContent">
<ThirdEdition />
</div>
<div className="forthEdition">
<p className="theTitle">加入Gitlink和社区伙伴们一起踏上开源创新的辉煌旅程</p>
<a className="qulikyreg" href={register}>快速注册</a>
<ul className="forthUl">
<li>
<img src={F41} alt="" width={"100px"}/>
<span className="forthtitle">发现</span>
<span className="forthsubtitle">探索丰富优质的开发资源</span>
</li>
<li>
<img src={F42} alt="" width={"101px"}/>
<span className="forthtitle">加入</span>
<span className="forthsubtitle">寻找志同道合的协作伙伴</span>
</li>
<li>
<img src={F43} alt="" width={"104px"}/>
<span className="forthtitle">合作</span>
<span className="forthsubtitle">开启开放共享的协同之旅</span>
</li>
<li>
<img src={F44} alt="" width={"87px"}/>
<span className="forthtitle">贡献</span>
<span className="forthsubtitle">书写开源创新的精彩成就</span>
</li>
</ul>
</div>
<div className="fifthEdition">
<p className="title">开源生态</p>
<p className="subtitle">Gitlink与各大企业高校科研机构开展广泛的技术合作推动我国开源软件生态的快速构建与发展</p>
<FifthEdition />
</div>
<Footnav />
</div>
)
}
export default TPMIndexHOC(Index);

1038
src/home/Index.scss Normal file

File diff suppressed because it is too large Load Diff

210
src/home/SecondEdition.jsx Normal file
View File

@ -0,0 +1,210 @@
import React , { useEffect , useState } from 'react';
import Img1 from './Img/2-2-1.png';
import ImgHead from './Img/2-2-head.png';
import Img2 from './Img/2-2-2.png';
import Img3 from './Img/2-2-3.png';
import Imgring from './Img/2-2-ring.png';
import ImgS1 from './Img/2-3-1.png';
import ImgS2 from './Img/2-3-2.png';
import ImgS3 from './Img/2-3-3.png';
import ImgS4 from './Img/2-3-4.png';
import ImgM2 from './Img/2-6-2.png';
import ImgM4 from './Img/2-6-1.png';
import Codeafter from './Img/codeafter.png';
import './code.scss';
const code=[
{str:<span><span className='code-green'>git remote</span> add origin https://git.trustie.net/Gitlink/Gitlink.git</span>},
{str:<span><span className='code-red'>git push</span> -u origin master</span>},
{str:<span><span className='code-green'>git branch</span> dev</span>},
{str:<span><span className='code-blue'>git checkout</span> dev</span>},
{str:<span><span className='code-green'>git add</span> .</span>},
{str:<span><span className='code-red'>git commit</span> -m "xxx"</span>},
{str:<span><span className='code-red'>git push</span> origin dev</span>},
{str:<span><span className='code-blue'>git checkout</span> master</span>},
{str:<span><span className='code-green'>git pull</span> origin master</span>},
{str:<span><span className='code-green'>git merge</span> dev</span>},
{str:<span><span className='code-red'>git push</span> origin master</span>}
]
const codes=[
{str:<span><span className='code-blue'>latest:</span> Pulling from appleboy/drone-ssh</span>},
{str:<span><span className='code-red'>Digest:</span>sha256:095ca4ceafcb751f1f22fe416057d3e2a6302f7b1f7011b17010973cb6bbdd9f</span>},
{str:<span>Status:Image is up to date for appleboy/drone-ssh:latest</span>},
{str:<span><span className='code-green'>======CMD======</span></span>},
{str:<span><span className='code-green'>echo ====暂停容器开始======= </span></span>},
{str:<span><span className='code-red'>docker</span> rm -f mo-test</span>},
{str:<span><span className='code-red'>docker</span> rmi mo-test:1.0</span>},
{str:<span><span className='code-blue'>cd</span> /opt/demo</span>},
{str:<span><span className='code-green'>echo ====开始部署=======</span></span>},
{str:<span><span className='code-red'>docker </span>build -t mo-test:1.0 .</span>},
{str:<span><span className='code-red'>docker </span>run -d -p 8080:8080 --name mo-test mo-test:1.0</span>},
{str:<span><span className='code-green'>echo ====部署成功======</span></span>},
{str:<span><span className='code-green'>======END======</span></span>},
]
function SecondEdition({setValue}) {
useEffect(()=>{
window.addEventListener('scroll', handleScroll);
},[])
const [ hadoop , setHadoop ] = useState(false);
const [ highDevops , setHighDevops ] = useState(false);
const [ multipleAnalyse , setMultipleAnalyse ] = useState(false);
const [ multidimensional , setMultidimensional ] = useState(false);
const [ oneStop , setOneStop ] = useState(false);
function handleScroll() {
let clientHeight = document.documentElement.clientHeight; //
let scrollTop = document.documentElement.scrollTop; //
let f = checkPosi("hadoop",clientHeight,scrollTop);
if(f){
setValue("#hadoop");
setHadoop(true);
}else{
setHadoop(false);
}
let f1 = checkPosi("oneStop",clientHeight,scrollTop);
if(f1){
setValue("#oneStop");
setOneStop(true);
}else{
setOneStop(false);
setOneStop(false);
}
let f3 = checkPosi("highDevops",clientHeight,scrollTop);
if(f3){
setValue("#highDevops");
setHighDevops(true);
}else{
setHighDevops(false);
setHighDevops(false);
}
let f4 = checkPosi("multipleAnalyse",clientHeight,scrollTop);
if(f4){
setValue("#multipleAnalyse");
setMultipleAnalyse(true);
}else{
setMultipleAnalyse(false);
setMultipleAnalyse(false);
}
let f5 = checkPosi("multidimensional",clientHeight,scrollTop);
if(f5){
setValue("#multidimensional");
setMultidimensional(true);
}else{
setMultidimensional(false);
setMultidimensional(false);
}
}
function checkPosi(ele,clientHeight,scrollTop) {
var a = document.getElementById(ele).offsetTop - scrollTop -(clientHeight/3);
var b = document.getElementById(ele).clientHeight + (clientHeight/4);
if(a>0 || a<-b){
return false;
}else{
return true;
}
}
return(
<div className="secondEditionContent">
<div className="hadoop" id="hadoop">
<div className="hadoopCon">
<div className="descBox">
<p className="desc1">分布式协作开发</p>
<p className="desc2">基于Git打造分布式代码托管环境提供免费公私有代码仓库</p>
<p className="desc3">支持在线文件编辑代码分支管理协作贡献统计代码仓库复刻Fork贡献合并请求PR群智贡献审阅等功能</p>
</div>
<div className={hadoop ? "hadoopCode activeCode" :"hadoopCode"}>
{
code.map((i,k)=>{
return(
<li><pre className="word-item" style={{animationDelay: `${k * 0.2 + .2}s`}}><span className="codenum">{k+1}</span>{i.str}</pre></li>
)
})
}
<img src={Codeafter} alt="运行结果" className={"activeImg"}/>
</div>
</div>
<p className="hadoopdesc">让您的项目在这里健康快速的成长</p>
</div>
<div className={oneStop ? "oneStop activeCode" :"oneStop"} id="oneStop">
<div className={"oneStopContent"}>
<div className={"osLeftMain"}>
<img src={Img1} alt="" width="520px" className="osleftPosi"/>
<img src={ImgHead} alt="" width="213px" style={{marginLeft:"-12px"}}/>
<img src={Img2} alt="" width="653px" className="osleftPosi1"/>
<img src={Img3} alt="" width="367px" className="osleftPosi2"/>
</div>
<div className="osRightMain">
<p className="osRightTitle">一站式过程管理</p>
<p>提供<span>易修Issue里程碑通知提醒标签归档</span>等多样化任务管理工具支持各类开发任务的发布指派与跟踪</p>
<p>同时提供<span>在线Wiki文档组织多粒度管理</span>等功能为您搭建一站式的项目过程管理环境</p>
<p><span>让您的团队协作更高效过程更透明</span></p>
</div>
</div>
<img src={Imgring} alt="" height="83px" className="imgring"/>
</div>
<div className={highDevops ? "highDevops activeCode" : "highDevops"} id="highDevops">
<div className="highDoTitle">
<span>高效流水线运维</span>
</div>
<div className="highDoSubtitle">
融合DevOps思想提供轻量级的工作流引擎Engine
<span>打通编码测试构建部署</span>等开发运维环节支持
<span>自定义配置代码静态扫描构建自动触发容器镜像托管</span>等功能同时支持接入第三方运维工具
</div>
<div className="highDoContent">
<div>
<img src={ImgS1} alt="" width="794px"/>
<div style={{marginBottom:'74px',marginTop:"25px",position:"relative"}}>
<img src={ImgS2} alt="" width="520px"/>
{/* <div className="highCodes">
{
codes.map((i,k)=>{
return(
<li><pre className="word-item" style={{animationDelay: `${k * 0.2 + .2}s`}}><span className="codenum">{k+1}</span>{i.str}</pre></li>
)
})
}
</div> */}
</div>
<img src={ImgS3} alt="" width="427px" className="highImg2"/>
<img src={ImgS4} alt="" width="413px" className="highImg1"/>
</div>
<p className="highDoBottondesc">让您的代码更加快速可靠地形成高质量的产品</p>
</div>
</div>
<div className={multipleAnalyse ? "multipleAnalyse activeCode":"multipleAnalyse"} id="multipleAnalyse">
<span className="title">多层次代码分析</span>
<div className="maContent"></div>
<p className="desc">提供软件软代码和芯片RTL代码的溯源分析文件级和组件级许可证识别及风险分析输入性开源漏洞检测和加固建议支持分析结果的多层次可视化展示</p>
</div>
<div className={"multidimensional"} style={{opacity:multidimensional?"1":"0.3"}}>
<div style={{height:"168px"}}></div>
<div className={multidimensional ? "activeCode":""} id="multidimensional">
<div className={"multidimensinalhalf"}>
<div>
<p className="halfTitle">多维度用户画像</p>
<p className="halfsubTitle"><span>实时采集和分析平台中的各类开源资源数<br/></span>搭建多维度用户画像评估系统</p>
</div>
<div style={{width:"820px",marginLeft:"34px"}}>
<img src={ImgM4} alt="" width="820px" />
</div>
</div>
<div className="multidimensinalPart">
<div style={{width:"614px",marginRight:"40px"}}>
<img src={ImgM2} alt="" width="614px" />
</div>
<div>
<p><span>提供</span>开发活动统计贡献度日历用户能力建模角色与专业定位分析<span>等功能</span></p>
<p>让您在个人主页展示开发动态与创新能力</p>
</div>
</div>
</div>
</div>
</div>
)
}
export default SecondEdition

Some files were not shown because too many files have changed in this diff Show More