From 83a5a5111f7dcbbdf072f492dd263a0265a8c385 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 14 Jul 2021 10:00:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E7=89=88=EF=BC=9A=E9=A1=B6?= =?UTF-8?q?=E9=83=A8=E5=AF=BC=E8=88=AA=E5=92=8C=E8=B4=A8=E9=87=8F=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 1 - src/AppConfig.js | 12 ++-- src/forge/DevOps/About.jsx | 2 +- src/forge/Head/Header.js | 94 ++++++++++++++++++----------- src/forge/Head/header.scss | 5 ++ src/forge/Main/sub/DetailBanner.jsx | 2 +- src/forge/Sonar/Index.jsx | 68 ++++++++++++++++++++- src/forge/Sonar/index.scss | 41 +++++++++++++ 8 files changed, 180 insertions(+), 45 deletions(-) diff --git a/src/App.js b/src/App.js index 3545cd1d..5ddcf96f 100644 --- a/src/App.js +++ b/src/App.js @@ -183,7 +183,6 @@ class App extends Component { render() { const { mygetHelmetapi } = this.state; - let personal = mygetHelmetapi && mygetHelmetapi.personal; return ( diff --git a/src/AppConfig.js b/src/AppConfig.js index f897831f..d84292d0 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -32,7 +32,7 @@ export function initAxiosInterceptors(props) { // 判断网络是否连接 initOnlineOfflineListener(); - var proxy = "https://testforgeplus.educoder.net"; + var proxy = "http://106.75.178.228:81"; //响应前的设置 axios.interceptors.request.use( config => { @@ -45,11 +45,11 @@ export function initAxiosInterceptors(props) { if (`${config[0]}` !== `true`) { if (window.location.port === "3007") { config.url = `${proxy}${url}`; - if (config.url.indexOf('?') === -1) { - config.url = `${config.url}?debug=${debugType}`; - } else { - config.url = `${config.url}&debug=${debugType}`; - } + // if (config.url.indexOf('?') === -1) { + // config.url = `${config.url}?debug=${debugType}`; + // } else { + // config.url = `${config.url}&debug=${debugType}`; + // } } else { config.url = url; } diff --git a/src/forge/DevOps/About.jsx b/src/forge/DevOps/About.jsx index 7750ae7b..c9894f03 100644 --- a/src/forge/DevOps/About.jsx +++ b/src/forge/DevOps/About.jsx @@ -233,7 +233,7 @@ function About(props, ref) { step === 1 ?
- 密码: + 密码:
setAuthorityVal(e.target.value)} style={{width:"220px"}}>

您已保存相关服务器信息,请输入密码,
确认授权DevOps应用

diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index 6cb20a75..9962aa3c 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -291,6 +291,26 @@ class NewHeader extends Component { ) } + classMenu=(http)=>{ + return( + + 课堂实践管理 + 作业管理 + 考试与题库管理 + 教学资源库 + + ) + } + moopMenu=(http,forgeHttp)=>{ + return( + + 案列管理 + 竞赛管理 + 协同开发 + + ) + } + render() { const { match} = this.props; let current_user = this.props.user; @@ -409,41 +429,48 @@ class NewHeader extends Component { "" }
- { - settings && settings.navbar && settings.navbar.length > 0 ? -
    - { - settings.navbar && settings.navbar.map((item, key) => { - var new_link = item.link; - var user_login = this.props.user && this.props.user.login; - var is_hidden = item.hidden - if (new_link && (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1)) { - if (user_login) { - if (new_link.indexOf("courses") > -1) { - new_link = new_link.replace(/courses/g, "users/" + user_login + "/courses") - } else if (new_link.indexOf("contests") > -1) { - new_link = new_link.replace(/contests/g, "users/" + user_login + "/contests") - } - } else { - is_hidden = true +
      +
    • + + 大数据实验教学资源 + +
    • +
    • 数据科学支撑工具集和实训
    • +
    • + + 大数据工程教研 + +
    • + {/* { + settings.navbar && settings.navbar.map((item, key) => { + var new_link = item.link; + var user_login = this.props.user && this.props.user.login; + var is_hidden = item.hidden + if (new_link && (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1)) { + if (user_login) { + if (new_link.indexOf("courses") > -1) { + new_link = new_link.replace(/courses/g, "users/" + user_login + "/courses") + } else if (new_link.indexOf("contests") > -1) { + new_link = new_link.replace(/contests/g, "users/" + user_login + "/contests") } + } else { + is_hidden = true } - if (user_login && (new_link && new_link.indexOf("homes") > -1)) { - new_link = new_link.replace(/homes/g, "users/" + user_login + "/user_activities") - } - - var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) ); - var wl = waiLian && waiLian.length>0; - return ( -
    • this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}> -
      -
    • - ) - }) - } -
    - : "" - } + } + if (user_login && (new_link && new_link.indexOf("homes") > -1)) { + new_link = new_link.replace(/homes/g, "users/" + user_login + "/user_activities") + } + + var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) ); + var wl = waiLian && waiLian.length>0; + return ( +
  • this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}> +
    +
  • + ) + }) + } */} +
{search_url ? this.SearchInput(openSearch,search_url):""} @@ -453,7 +480,6 @@ class NewHeader extends Component { :"" } - {this.props.user && this.props.user.login && notice_url ?
{user && user.login && diff --git a/src/forge/Head/header.scss b/src/forge/Head/header.scss index dc872cc3..81228010 100644 --- a/src/forge/Head/header.scss +++ b/src/forge/Head/header.scss @@ -14,6 +14,11 @@ } } } +.headmenus{ + .ant-dropdown-menu-item:hover{ + background-color: #f5f5f5; + } +} .dropdownFlex{ display:flex; background:#fff; diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx index b3ed6596..64db3dae 100644 --- a/src/forge/Main/sub/DetailBanner.jsx +++ b/src/forge/Main/sub/DetailBanner.jsx @@ -127,7 +127,7 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
  • 0 ? "iconfont icon-tijiao color-grey-3 mr5 font-18":"iconfont icon-tijiao color-grey-6 font-18 mr5"}> - 质量分析 + 质量分析/检测
  • } diff --git a/src/forge/Sonar/Index.jsx b/src/forge/Sonar/Index.jsx index eebaf8e8..b1c5a01e 100644 --- a/src/forge/Sonar/Index.jsx +++ b/src/forge/Sonar/Index.jsx @@ -1,17 +1,81 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import sonar from '../Images/sonar.png'; +import { FlexAJ } from '../Component/layout'; +import { Button } from 'antd'; import './index.scss'; +import axios from 'axios'; function Index(props) { + const [ spining , setSpining ] = useState(false); + const [ data , setData ] = useState(null); + + const permission = props.projectDetail && props.projectDetail.permission; + const { owner , projectsId } = props.match.params; + + useEffect(()=>{ + if(permission && permission!=="Reporter"){ + run(); + } + },[permission]) + + function startCheck() { + setSpining(true); + run(); + } + + function run() { + const url = `/${owner}/${projectsId}/sonarqube.json`; + axios.get(url).then(result=>{ + if(result){ + setSpining(false); + setData(result.data); + } + }).catch(error=>{setSpining(false);}) + } + return(
    - + + + +

    1. 基于 Sonar 的代码质量分析,支持对项目进行代码行数、重复率统计、代码逻辑缺陷扫描等功能,并给出对应解决报告;

    2. 目前支持 Java、JavaScript、C++、Go、Python、PHP、Ruby、Groovy、Lua、TypeScript、Web、XML;

    3. 默认支持代码文本格式全为 UTF-8,其他编码可能会产生乱码;

    4. 仅保存最近一次分析结果;

    + { + data && data.length>0 && data.map((i,k)=>{ + return( +
    +

    分支:{i.branch_name}

    +
    + 开始时间:{i.created_at} + 结束时间:{i.updated_at} +
    +
      +
    • + {i.bug_num || "0"} + bugs +
    • +
    • + {i.loopholes || "0"} + 漏洞 +
    • +
    • + {i.repetition_rate || "--"} + 重复 +
    • +
    • + {i.file_num || "0"} + 代码行数 +
    • +
    +
    + ) + }) + }
    ) } diff --git a/src/forge/Sonar/index.scss b/src/forge/Sonar/index.scss index 4a249933..5884f4a5 100644 --- a/src/forge/Sonar/index.scss +++ b/src/forge/Sonar/index.scss @@ -11,4 +11,45 @@ margin-bottom: 10px!important; } } + .sonarData{ + border:1px solid #eee; + border-radius: 4px; + padding:10px 20px; + margin-top: 20px; + } + .sonarList{ + display: flex; + margin-top: 10px; + li{ + min-width: 150px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; + margin-right: 10px; + border-radius: 4px; + &:last-child{ + margin-right: 0px; + flex:1; + align-items: flex-end; + } + &:last-child::after{ + height: 0px; + } + &::after{ + position: absolute; + right: 0px; + height: 30px; + width: 1px; + content: ""; + background-color: #eee; + top:50%; + margin-top: -15px; + } + span{ + color: #666; + } + } + } } \ No newline at end of file