diff --git a/src/forge/Gantt/Index.jsx b/src/forge/Gantt/Index.jsx
new file mode 100644
index 000000000..f0efc250f
--- /dev/null
+++ b/src/forge/Gantt/Index.jsx
@@ -0,0 +1,107 @@
+import React, { useEffect } from 'react';
+import * as echarts from 'echarts';
+import './index.scss';
+
+function Index(props) {
+ useEffect(()=>{
+ Init();
+ },[])
+
+ function Init() {
+ var myCharts = document.getElementById('main');
+ var myEcharts = echarts.init(myCharts);
+ var option = {
+ title: {
+ text: '项目实施进度表',
+ left: 10
+ },
+ legend: {
+ y: 'bottom',
+ data: ['计划时间', '实际时间'] //修改的地方1
+ },
+ grid: {
+ containLabel: true,
+ left: 20
+ },
+ xAxis: {
+ type: 'time'
+ },
+ yAxis: {
+ data: ['任务一', '任务二', '任务三', '任务四', '任务五', '任务六', '任务七']
+ },
+ tooltip: {
+ trigger: 'axis',
+ formatter: function(params) {
+ var res = params[0].name + ""
+ var date0 = params[0].data;
+ var date1 = params[1].data;
+ var date2 = params[2].data;
+ var date3 = params[3].data;
+ date0 = date0.getFullYear() + "-" + (date0.getMonth() + 1) + "-" + date0.getDate();
+ date1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate();
+ date2 = date2.getFullYear() + "-" + (date2.getMonth() + 1) + "-" + date2.getDate();
+ date3 = date3.getFullYear() + "-" + (date3.getMonth() + 1) + "-" + date3.getDate();
+ res += params[0].seriesName + "~" + params[1].seriesName + ":" + date0 + "~" + date1 + ""
+ res += params[2].seriesName + "~" + params[3].seriesName + ":" + date2 + "~" + date3 + ""
+ console.log(params[0]);
+ return res;
+ }
+ },
+ series: [
+ {
+ name: '计划开始时间',
+ type: 'bar',
+ stack: 'test1',
+ itemStyle: {
+ normal: {
+ color: 'rgba(0,0,0,0)'
+ }
+ },
+ data: []
+ },
+ {
+ name: '计划时间',
+ type: 'bar',
+ stack: 'test1',
+ //修改地方2
+ itemStyle: {
+ normal: {
+ color: '#F98563'
+ }
+ },
+ data: []
+ },
+ {
+ name: '实际开始时间',
+ type: 'bar',
+ stack: 'test2',
+ itemStyle: {
+ normal: {
+ color: 'rgba(0,0,0,0)'
+ }
+ },
+ data: []
+ },
+ {
+ name: '实际时间',
+ type: 'bar',
+ stack: 'test2',
+ //修改地方3
+ itemStyle: {
+ normal: {
+ color: '#A2E068'
+ }
+ },
+ data: []
+ }
+ ]
+ };
+ myEcharts.setOption(option);
+ }
+ return(
+
+ )
+}
+export default Index;
\ No newline at end of file
diff --git a/src/forge/Gantt/index.scss b/src/forge/Gantt/index.scss
new file mode 100644
index 000000000..6f8c5e75a
--- /dev/null
+++ b/src/forge/Gantt/index.scss
@@ -0,0 +1,5 @@
+.ganttBox{
+ width: 1200px;
+ margin:0px auto;
+ padding:22px 0px;
+}
\ No newline at end of file
diff --git a/src/forge/Images/sonar.png b/src/forge/Images/sonar.png
new file mode 100644
index 000000000..08b71fb72
Binary files /dev/null and b/src/forge/Images/sonar.png differ
diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js
index 7571cf27c..88851b932 100644
--- a/src/forge/Main/Detail.js
+++ b/src/forge/Main/Detail.js
@@ -102,6 +102,14 @@ const Contribute = Loadable({
loader: () => import('./sub/Contribute'),
loading: Loading,
})
+const Gantt = Loadable({
+ loader: () => import('../Gantt/Index'),
+ loading: Loading,
+})
+const Sonar = Loadable({
+ loader: () => import('../Sonar/Index'),
+ loading: Loading,
+})
const CoderRootCommit = Loadable({
loader: () => import('./CoderRootCommit'),
@@ -152,6 +160,10 @@ function checkPathname(projectsId,owner,pathname){
name="devops"
}else if(url.indexOf(`/source`)>-1){
name="source"
+ }else if(url.indexOf(`/gantt`)>-1){
+ name="gantt"
+ }else if(url.indexOf(`/sonar`)>-1){
+ name="sonar"
}
}
return name;
@@ -669,6 +681,20 @@ class Detail extends Component {
(props) => ()
}
>
+
+ {/* 甘特图 */}
+ ()
+ }
+ >
+ {/* 甘特图 */}
+ ()
+ }
+ >
+
()
diff --git a/src/forge/Main/Index.js b/src/forge/Main/Index.js
index c81c4b32b..70a379d24 100644
--- a/src/forge/Main/Index.js
+++ b/src/forge/Main/Index.js
@@ -265,8 +265,8 @@ class Index extends Component {
- 头歌开源
- 让师姐开心的玩开源
+ 开源社区
+ 面向高校的教学开源