From 357039e4eb30ca63a0ec85bdabd0e3c3eac18cd5 Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Tue, 6 Jul 2021 18:10:49 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=98=E7=89=B9=E5=9B=BE+=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E8=B4=A8=E9=87=8F=E5=88=86=E6=9E=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/Gantt/Index.jsx | 107 ++++++++++++++++++++++++++++
src/forge/Gantt/index.scss | 5 ++
src/forge/Images/sonar.png | Bin 0 -> 3994 bytes
src/forge/Main/Detail.js | 26 +++++++
src/forge/Main/Index.js | 4 +-
src/forge/Main/sub/DetailBanner.jsx | 18 +++++
src/forge/Sonar/Index.jsx | 18 +++++
src/forge/Sonar/index.scss | 14 ++++
8 files changed, 190 insertions(+), 2 deletions(-)
create mode 100644 src/forge/Gantt/Index.jsx
create mode 100644 src/forge/Gantt/index.scss
create mode 100644 src/forge/Images/sonar.png
create mode 100644 src/forge/Sonar/Index.jsx
create mode 100644 src/forge/Sonar/index.scss
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 0000000000000000000000000000000000000000..08b71fb721960120e6097fedc8efcecd9a25b56e
GIT binary patch
literal 3994
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 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 {
- 头歌开源
- 让师姐开心的玩开源
+ 开源社区
+ 面向高校的教学开源