+
+ setVisible(visible ? false : true)}>
{/* {nav === 0 ?"分支":"标签"} */}
-
+
{showValue}
-
-
+
+
-
+
)
})
\ No newline at end of file
diff --git a/src/forge/Branch/SelectOverlay.jsx b/src/forge/Branch/SelectOverlay.jsx
new file mode 100644
index 000000000..0be567324
--- /dev/null
+++ b/src/forge/Branch/SelectOverlay.jsx
@@ -0,0 +1,90 @@
+import React , { useState , useEffect } from 'react';
+import { Input , Spin , Menu } from 'antd';
+import { getBranch , getTag } from '../GetData/getData';
+
+function SelectOverlay({ changeBranch , tagflag , projectsId , owner , visible }) {
+ const [ inputValue , setInputValue] = useState(undefined);
+ const [ nav , setNav ] = useState(0);
+ const [ isSpin , setIsSpin ] = useState(true);
+
+ const [ data , setData ] = useState(undefined);
+ const [ datas , setDatas ] = useState(undefined);
+ const [ keys ,setKeys] = useState("branch");
+
+ useEffect(()=>{
+ if(visible){
+ setKeys("branch");
+ getBranchs(projectsId,owner);
+ setIsSpin(true);
+ }
+ },[visible])
+
+ async function getBranchs(id,owner){
+ let result = await getBranch(id,owner);
+ setData(result);
+ setDatas(result);
+ setIsSpin(false);
+ }
+ async function getTags(id,owner){
+ let result = await getTag(id,owner);
+ setData(result);
+ setDatas(result);
+ setIsSpin(false);
+ }
+ function chooseitem(value){
+ changeBranch(value);
+ }
+ function changeInputValue(e){
+ setInputValue(e.target.value);
+ let filter = e.target.value ? data && data.length>0 && data.filter(item=>item.name.indexOf(e.target.value)>-1) : data;
+ setDatas(filter);
+ }
+
+ function changeNav(e){
+ setKeys(e.key);
+ setIsSpin(true);
+ if(e.key === "branch"){
+ getBranchs(projectsId,owner);
+ setNav(0);
+ }else{
+ getTags(projectsId,owner);
+ setNav(1);
+ }
+ }
+
+ return(
+
+
+ }
+ placeholder={`请输入分支${tagflag ? "或标签" :""}名称搜索`}
+ autocomplete="off" className="OptionsInput"
+ value={inputValue}
+ onChange={changeInputValue}
+ />
+
+
+
+
+
+
+ )
+}
+export default SelectOverlay;
\ No newline at end of file
diff --git a/src/forge/Branch/branch.scss b/src/forge/Branch/branch.scss
index 0c7e136a8..030b05cd1 100644
--- a/src/forge/Branch/branch.scss
+++ b/src/forge/Branch/branch.scss
@@ -23,14 +23,16 @@
max-height: 300px;
}
.OptionsUl{
+ min-height: 50px;
max-height: 220px;
overflow-y: auto;
}
.OptionsUl li{
- height: 35px;
- line-height: 35px;
+ height: 30px;
+ line-height: 30px;
cursor: pointer;
- padding:0px 10px;
+ padding:0px 20px;
+ margin:5px 0px;
}
.OptionsUl li:hover{
background-color: #F0F0F0;
@@ -45,38 +47,56 @@
width: 100%;
}
.branch-tagBox{
- border:1px solid #eee;
+ border:1px solid #D0D0D0;
border-radius: 3px;
- height: 40px;
+ height: 32px;
display: flex;
align-items: center;
cursor: pointer;
- min-width: 140px;
+ min-width: 104px;
}
-.branch-tagBox-list .ant-popover-arrow{
- display: none;
+.branch-tagBox:hover{
+ background-color: #F3F4F6;
}
-.branch-tagBox-list.ant-popover.ant-popover-placement-bottom{
- padding-top:0px;
+.branch-tagBox-list{
+ background: #FFFFFF;
+ box-shadow: 0px 4px 8px 2px rgba(212, 212, 212, 0.5);
+ border-radius: 4px;
+ .ant-popover-arrow{
+ display: none;
+ }
+ &.ant-popover.ant-popover-placement-bottom{
+ padding-top:0px;
+ }
+ .branch-tagBox .ant-dropdown-link{
+ display: block;
+ flex:1;
+ max-width: 105px;
+ }
+ .ant-popover-inner-content{
+ padding:0px;
+ }
}
-.branch-tagBox .ant-dropdown-link{
- display: block;
- flex:1;
-}
-.branch-tagBox-list .ant-popover-inner-content{
- padding:0px;
-}
-.navUl{
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-top: 5px;
-}
-.navUl li{
- cursor: pointer;
-}
-.navUl li.active{
- color:#5091FF;
+.overlayBranch{
+ width: 325px;
+ .navUl{
+ margin-top: 8px;
+ height: 30px;
+ line-height: 30px;
+ li{
+ height: 30px;
+ line-height: 30px;
+ padding:0px 5px;
+ margin-left: 20px!important;
+ &.ant-menu-item-selected{
+ border-color:#466aff!important;
+ color:#466aff!important;
+ }
+ &.ant-menu-item-active{
+ border-color:transparent ;
+ }
+ }
+ }
}
.listTips{
padding:20px 0px;
@@ -86,6 +106,7 @@
.urlMenu{
line-height: 30px;
margin-bottom: 10px;
+ padding:15px 20px 0px 20px;
border-bottom: none;
li.ant-menu-item{
height: 30px;
@@ -96,7 +117,7 @@
color: #333;
}
&.ant-menu-item-selected{
- border-color:#1890ff!important;
+ border-color:#466aff!important;
}
&.ant-menu-item-active{
border-color:transparent ;
diff --git a/src/forge/Component/Component.scss b/src/forge/Component/Component.scss
index 3a94c3751..30a62005c 100644
--- a/src/forge/Component/Component.scss
+++ b/src/forge/Component/Component.scss
@@ -113,7 +113,14 @@ li.ant-menu-item{
z-index: 10000;
}
.laterest{
- color: #05690d;
+ background-color: #EF3131;
+ color: #fff;
+ font-size: 12px;
+ margin-left: 10px;
+ padding:0px 5px;
+ border-radius: 2px;
+ height: 18px;
+ line-height: 18px;
}
@media screen and (max-width: 1800px){
@@ -155,41 +162,112 @@ li.ant-menu-item{
margin:0px 20px!important;
}
}
-
+.hoverA{
+ display:flex;
+ align-items: center;
+ max-width: 78px;
+ &:hover a{
+ color:#2A61FF !important ;
+ }
+}
.menuPanels{
- width: 240px;
- height: 180px;
+ width: 295px;
+ .leftline{
+ position: relative;
+ color: #666;
+ height: 16px;
+ margin-left: 14px;
+ font-size: 12px;
+ &::before{
+ position: absolute;
+ left: -7px;
+ top:3px;
+ height: 12px;
+ width: 1px;
+ background-color: #999;
+ content: "";
+ }
+ }
+ .ant-btn{
+ height: 36px;
+ line-height: 34px;
+ width: 83px;
+ text-align: center;
+ padding:0px ;
+ font-weight: 500;
+ font-size: 14px;
+ &.currentBtn{
+ cursor: default;
+ color: #333;
+ &:hover{
+ color: #333;
+ border-color: #d0d0d0;
+ }
+ }
+ }
+ .ant-btn-default{
+ color: #333;
+ border-color: #d0d0d0;
+ &:hover{
+ background: #F3F4F6;
+ }
+ }
+ .ant-btn{
+ width: 102px;
+ height: 32px;
+ line-height: 30px;
+ }
+ .ant-btn-primary{
+ color: #fff;
+ background-color: #466AFF;
+ border:none;
+ &:hover{
+ background-color: rgba(70,106,255,0.85);
+ }
+ }
+ .focusPanelHeadInfo{
+ padding:14px 16px;
+ border-bottom: 1px solid #eee;
+ }
.ant-popover-content,.ant-popover-inner{
height: 100%;
width: 100%;
}
+ .ant-popover-inner-content{
+ padding:0px;
+ }
}
.halfs{
margin-top: 24px;
padding:24px 0px 0px 0px;
border-top: 1px solid #e8e8e8;
- .attrPerson{
- padding-bottom: 24px;
- }
+}
+.aboutSubTitle{
+ display: flex;
+ align-items: center;
+}
+.menuMaininfos{
+ padding:10px 16px 14px;
+ border-bottom: 1px solid #eee;
}
.menuinfos{
- padding:15px 0px;
+ padding:10px 20px 16px;
&>a{
display: flex;
flex-direction: column;
align-items: center;
- border-right: 1px solid #eee;
flex: 1;
& >span:first-child{
- font-size: 18px;
- font-weight: 400;
+ font-size: 16px;
+ font-weight: 500;
color: #333;
+ line-height: 22px;
}
& >span:last-child{
color: #666;
- }
- &:last-child{
- border-right: none;
+ font-weight: 400;
+ line-height: 20px;
+ margin-top: 6px;
}
}
}
diff --git a/src/forge/Component/Contributors.jsx b/src/forge/Component/Contributors.jsx
index 2f67b3ab5..e88acc056 100644
--- a/src/forge/Component/Contributors.jsx
+++ b/src/forge/Component/Contributors.jsx
@@ -1,13 +1,13 @@
import React, { useEffect, useState } from 'react';
import { AlignCenter , FlexAJ } from '../Component/layout';
import { Link } from 'react-router-dom';
-import { Popover , Spin } from 'antd';
+import { Popover , Spin , Button } from 'antd';
import { getImageUrl } from 'educoder';
import './Component.scss';
import { getUser } from '../GetData/getData';
import axios from 'axios';
-function Contributors({contributors,owner,projectsId}){
+function Contributors({contributors,owner,projectsId,currentLogin}){
const [ menuList ,setMenuList ]= useState([]);
const [ list , setList ]= useState(undefined);
const [ total , setTotal ]= useState(0);
@@ -46,46 +46,60 @@ function Contributors({contributors,owner,projectsId}){
}
}
+ function renderOrganize(list) {
+ let str = "";
+ list.map(i=>{
+ str = str+i.name + "、";
+ })
+ return str && str.substr(0,str.length - 1);
+ }
+
function setMenusFunc(data){
if(data){
let ele = (
-
+
- {data.name}
-
- {
- data.is_watch ? FocusFunc(false,data.login)}>取消关注:FocusFunc(true,data.login)}>关注
- }
-
-
-
- {data.projects_count}
- 项目数
-
-
- {data.followers_count}
- 粉丝数
-
-
- {data.following_count}
- 关注数
-
-
- {
- data.organizations && data.organizations.length > 0 ?
-
- 所属组织:
-
- {renderArray(data.organizations)}
+
+
+
{data.name}
+ { data.location &&
{data.location} }
+ {
+ data.organizations && data.organizations.length>0&&
+
+ 所属组织:{renderOrganize(data.organizations)}
+
+ }
- :""
- }
- {
- data.location &&
所在地址:{data.location}
- }
+
+
+
+ {data.projects_count}
+ 项目数
+
+
+ {data.followers_count}
+ 粉丝数
+
+
+ {data.following_count}
+ 关注数
+
+
+
+ {
+ currentLogin && (currentLogin === data.login)
+ ?
+
+ :
+ data.is_watch ?
+
+ :
+
+ }
+
)
setMenu(ele);
@@ -135,10 +149,10 @@ function Contributors({contributors,owner,projectsId}){
return(
-
- 贡献者{ contributors && contributors.total_count > 0 && {contributors.total_count}}
- 全部
-
+
+
贡献者
+ { contributors && contributors.total_count > 0 &&
{contributors.total_count}}
+
setVisibleFunc(false)}>
{
total > 0 ?
diff --git a/src/forge/Component/CopyTool.jsx b/src/forge/Component/CopyTool.jsx
index 86fb32dab..36ed1d8c1 100644
--- a/src/forge/Component/CopyTool.jsx
+++ b/src/forge/Component/CopyTool.jsx
@@ -2,7 +2,7 @@ import React, { useState, useCallback, memo } from 'react';
import { Tooltip } from 'antd';
CopyTool.defaultProps = {
- beforeText: '复制', //浮动过去显示的文字
+ beforeText: '复制链接', //浮动过去显示的文字
afterText: '复制成功', //点击后显示的文字
className: '', //传给svg的class
inputId: 'copyText', //要复制的文本的ID
@@ -26,6 +26,7 @@ function CopyTool({ beforeText, afterText, className , inputId , timeOut }) {
if (document.execCommand('copy')) {
document.execCommand('copy');
}
+ document.getSelection().removeAllRanges();
setTitle(afterText);
if(timeOut){
diff --git a/src/forge/Component/LanguagePower.jsx b/src/forge/Component/LanguagePower.jsx
index 3197309c4..8d3e361b5 100644
--- a/src/forge/Component/LanguagePower.jsx
+++ b/src/forge/Component/LanguagePower.jsx
@@ -25,7 +25,7 @@ function LanguagePower({languages}){
}
return(
-
开发语言
+
开发语言
{
array && array.map((item,key)=>{
diff --git a/src/forge/Component/ModalFun/index.jsx b/src/forge/Component/ModalFun/index.jsx
new file mode 100644
index 000000000..8fee2c73e
--- /dev/null
+++ b/src/forge/Component/ModalFun/index.jsx
@@ -0,0 +1,125 @@
+/* eslint-disable react/jsx-no-duplicate-props */
+import React, { useState } from 'react';
+import * as ReactDOM from 'react-dom';
+import { Modal, Button } from 'antd';
+import './index.scss';
+
+// 函数式调用删除、通知等模态框
+
+InitModal.defaultProps = {
+ okText: '确认', //确定按钮的文字
+ cancelText: '取消', //取消按钮的文字
+ className: '', //传入的模态框类名
+ inputId: 'copyText', //要复制的文本的ID
+ onCancel:()=>{}, //取消的回调
+ onOk:()=>{}, //确认的回调
+ title:'提示', //模态框名字
+ contentTitle:'', //内容标题
+ content:'', //详细内容
+ afterClose:()=>{}, //关闭模态框以后的回调
+};
+
+// 使用函数调用删除组件
+export default function DelModal(props) {
+ renderModal({ ...props, type: 'delete' })
+}
+
+// 使用函数调用选择模态框组件
+export function Confirm(props) {
+ renderModal({ ...props, type: 'confirm' })
+}
+
+function renderModal(props) {
+ const { type, afterClose } = props;
+ const div = document.createElement('div');
+ document.body.appendChild(div);
+
+ function destroy() {
+ afterClose && afterClose();
+ const unmountResult = ReactDOM.unmountComponentAtNode(div);
+ if (unmountResult && div.parentNode) {
+ div.parentNode.removeChild(div);
+ }
+ }
+
+ function modalType(type) {
+ if (type === 'delete') {
+ return
+
+ {props.contentTitle}
+ }
+ />
+ } else if (type === 'confirm') {
+ return
+ } else {
+ return
+ }
+ }
+
+ function render() {
+ setTimeout(() => {
+ ReactDOM.render(
+ modalType(type),
+ div,
+ );
+ });
+ }
+ render();
+}
+
+// 选择模态框组件
+function InitModal({
+ onCancel,
+ onOk,
+ title,
+ contentTitle,
+ content,
+ okText,
+ cancelText,
+ afterClose,
+ className,
+}) {
+
+ const [visible, setVisible] = useState(true);
+
+ function onCancelModal() {
+ setVisible(false);
+ onCancel && onCancel()
+ }
+
+ function onSuccess() {
+ setVisible(false);
+ onOk && onOk();
+ }
+
+ return (
+
+ {cancelText}
+ ,
+ ,
+ ]}
+ >
+
+ {contentTitle &&
{contentTitle}
}
+
{content}
+
+
+ )
+}
diff --git a/src/forge/Component/ModalFun/index.scss b/src/forge/Component/ModalFun/index.scss
new file mode 100644
index 000000000..24f7b0219
--- /dev/null
+++ b/src/forge/Component/ModalFun/index.scss
@@ -0,0 +1,63 @@
+.myself-modal {
+ .ant-modal-header {
+ padding: 9px 24px;
+ background: #f8f8f8;
+ border-bottom: 1px solid #eee;
+ }
+ .ant-modal-title {
+ text-align: left;
+ }
+ .ant-modal-close {
+ top: 0px !important;
+ }
+ .ant-modal-close-x {
+ font-size: 24px;
+ }
+ .ant-modal-body {
+ text-align: center;
+ }
+ .content-title {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin: 2rem 0 1rem !important;
+ font-size: 16px;
+ color: #333;
+ letter-spacing: 0;
+ line-height: 29px;
+ font-weight: 400;
+ }
+ .red-circle {
+ align-self: flex-start;
+ color: #ca0002;
+ font-size: 1.5rem !important;
+ }
+ .content-descibe {
+ font-size: 14px;
+ color: #666;
+ line-height: 33px;
+ font-weight: 400;
+ }
+ .ant-modal-footer {
+ padding: 2rem 0;
+ text-align: center;
+ border: 0;
+ .ant-btn {
+ width: 6rem;
+ }
+ }
+ .foot-submit {
+ margin-left: 3rem;
+ color: #df0002;
+ &:hover {
+ border-color: #df0002;
+ }
+ }
+ .ant-btn-default:hover,
+ .ant-btn-default:active,
+ .ant-btn-default:focus {
+ background: #f3f4f6;
+ color: #333;
+ border-color: #d0d0d0;
+ }
+}
\ No newline at end of file
diff --git a/src/forge/Component/NoticeModal/Index.scss b/src/forge/Component/NoticeModal/Index.scss
new file mode 100644
index 000000000..18e4dcda0
--- /dev/null
+++ b/src/forge/Component/NoticeModal/Index.scss
@@ -0,0 +1,90 @@
+.systemBox{
+ .ant-modal-body{
+ padding:1px 0px 0px 0px;
+ .sysBox{
+ background-image: url('./bg.png');
+ background-repeat: no-repeat;
+ background-size: 100% 334px;
+ margin-top: -55px;
+ }
+ .sysnoticeBox{
+ width: 100%;
+ padding:80px 0px 34px;
+ display: flex;
+ flex-direction: column;
+ width: 780px;
+ margin: 0px auto;
+ p.ntitle{
+ height: 33px;
+ font-size: 24px;
+ font-weight: 500;
+ color: #31FFF7;
+ line-height: 33px;
+ text-align: center;
+ }
+ p.nSubtitle{
+ height: 25px;
+ line-height: 25px;
+ font-size: 18px;
+ font-weight: 500;
+ color: #FFFFFF;
+ margin-top: 60px;
+ padding-left: 20px;
+ }
+ .markdown-body{
+ box-shadow: 0px 0px 17px rgba(0,0,0,0.2);
+ border-radius: 4px;
+ margin-top: 17px!important;
+ }
+ .nContent{
+ padding:20px 34px;
+ background-color: #fff;
+ line-height: 30px;
+ font-size: 15px;
+ font-weight: 400;
+ color: #333;
+ .realmName{
+ margin-top: 20px;
+ display: flex;
+ ul{
+ width: 50%;
+ padding-left: 0px!important;
+ li{
+ font-size: 15px;
+ font-weight: 500;
+ line-height: 32px;
+ text-align: left;
+ color: #000;
+ list-style-type: none!important;
+ &:first-child{
+ color: #E65714;
+ }
+ }
+ }
+ }
+ .nSubdesc{
+ font-size: 15px;
+ font-weight: 400;
+ color: #000000;
+ line-height: 31px;
+ margin-top: 20px;
+ }
+ .nInfo{
+ font-size: 14px;
+ font-weight: 400;
+ color: #333333;
+ text-align: right;
+ margin-top: 25px;
+ p{
+ height: 20px;
+ line-height: 20px;
+ }
+ }
+ }
+ .nBtn{
+ text-align: center;
+ margin-top: 33px;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/forge/Component/NoticeModal/SystemNotice.jsx b/src/forge/Component/NoticeModal/SystemNotice.jsx
new file mode 100644
index 000000000..1560c1ffc
--- /dev/null
+++ b/src/forge/Component/NoticeModal/SystemNotice.jsx
@@ -0,0 +1,76 @@
+import React , { useEffect , useState } from 'react';
+import { Modal , Button } from 'antd';
+import './Index.scss';
+import '../../css/index.scss';
+import RenderHtml from '../../../components/render-html';
+import cookie from 'react-cookies';
+
+function SystemNotice({system_notification,history}){
+ const [ visible , setVisible ] = useState(false);
+
+ useEffect(()=>{
+ if(system_notification && !cookie.load('notice_stage')){
+ setVisible(true);
+ }
+ },[system_notification,history.location])
+
+ function sureContinue() {
+ cookie.remove('notice_stage');
+
+ let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//一天
+ // let inFifteenMinutes = new Date(new Date().getTime() + 60 * 1000);//一分钟
+ cookie.save('notice_stage', true,{ expires: inFifteenMinutes,path:"/" });
+
+ setVisible(false);
+ }
+
+ return (
+
+
+
+
{system_notification && system_notification.subject}
+
{system_notification && system_notification.sub_subject}
+ {/*
+
+ 为了给用户提供更加稳定、优质的服务,我们即将对平台门户首页、平台名称、平台域名进行一次全面升级与变更。原平台名称:Trustie(中文名:确实)将于2021年10月xx日统一更改为Gitlink(中文名:确实开源)。届时平台域名将统一进行更换,更换规则如下
+
+
+
+ - 原域名:
+ - 官网顶级域名https://www.trustie.net
+ - 版本库子域名https://forgeplus.trustie.net
+ - 论坛子域名https://forum.trustie.net/forums
+
+
+ - 更换后域名:
+ - 官网顶级域名https://www.gitlink.org.cn
+ - 版本库子域名https://www.git.gitlink.org.cn
+ - 论坛子域名https://forum.gitlink.org.cn
+
+
+
+ 自2021年10月xx日起,旧域名将停止访问。因平台名称与域名变更给您带来的不便,我们深表歉意!非常感谢您一直以来对本平台的信任与支持,我们将一如既往地为您提供优质的服务。 特此通知!
+
+
+
Gitlink运营团队
+
2021年10月xx日
+
+
*/}
+
+
+
+
+
+
+
+ )
+}
+export default SystemNotice;
\ No newline at end of file
diff --git a/src/forge/Component/NoticeModal/bg.png b/src/forge/Component/NoticeModal/bg.png
new file mode 100644
index 000000000..625b3c311
Binary files /dev/null and b/src/forge/Component/NoticeModal/bg.png differ
diff --git a/src/forge/Component/Releases.jsx b/src/forge/Component/Releases.jsx
index bf8caebd4..260e6bd2d 100644
--- a/src/forge/Component/Releases.jsx
+++ b/src/forge/Component/Releases.jsx
@@ -1,38 +1,35 @@
import React from 'react';
-import { AlignCenter , AlignTop , FlexAJ } from '../Component/layout';
+import { AlignTop } from '../Component/layout';
import { Link } from 'react-router-dom';
-function Releases({owner,projectsId,releaseVersions , baseOperate , projectType}){
-
+function Releases({ owner, projectsId, releaseVersions, distribution }) {
return(
-
- 发行版
- { releaseVersions && releaseVersions.total_count > 0 && {releaseVersions.total_count}}
-
- { (releaseVersions && releaseVersions.total_count > 0) || projectType ===2 ?
- 全部
- :
- baseOperate && 新建
- }
-
+
+
发行版
+ { releaseVersions && releaseVersions.total_count > 0 &&
{releaseVersions.total_count}}
+
{
releaseVersions && releaseVersions.total_count>0 ?
releaseVersions.list.map((item,key)=>{
return(
key === 0 &&
-
-
- {item.name}
+
+ {/* 如果是点击最新则发行版列表页只展示最新的一个 */}
+ {item.name}
最新
-
{item.created_at}
+
{item.created_at}
)
})
- :""
+ :
+
+ 您暂未发布任何版本
+ {distribution && 创建新版本}
+
}
diff --git a/src/forge/Component/Sort.jsx b/src/forge/Component/Sort.jsx
index 58f8a5d2f..a15f04da9 100644
--- a/src/forge/Component/Sort.jsx
+++ b/src/forge/Component/Sort.jsx
@@ -2,9 +2,9 @@ import React from 'react';
import {Popover} from 'antd';
import './Component.scss';
-export default (({menu , children})=>{
+export default (({menu , children, overlayClassName})=>{
return(
-
+
{children}
)
diff --git a/src/forge/Component/User.jsx b/src/forge/Component/User.jsx
index bc652dcfb..0d970173f 100644
--- a/src/forge/Component/User.jsx
+++ b/src/forge/Component/User.jsx
@@ -5,6 +5,7 @@ import { Link } from 'react-router-dom';
export default ({ url , name , column , id , login })=>{
const Img = styled.span`
display:flex;
+ font-weight: bold;
${column && "flex-direction: column;text-align:center;"}
align-items: center;
& img{
diff --git a/src/forge/DevOps/Dispose/PipelineName.jsx b/src/forge/DevOps/Dispose/PipelineName.jsx
index 4acaa2068..63ee54378 100644
--- a/src/forge/DevOps/Dispose/PipelineName.jsx
+++ b/src/forge/DevOps/Dispose/PipelineName.jsx
@@ -51,7 +51,7 @@ function PipelineName({visible,onCancel,onOk,value ,branchList}){
})
}
-
)
}
+
renderMenu=(personal)=>{
const { current_user } = this.props;
return(
@@ -337,14 +336,18 @@ class NewHeader extends Component {
)
})
}
-
设置
+ {/*
设置 */}
this.educoderloginysl()}>退出
)
}
+ handleVisibleChange = visible => {
+ this.setState({ visible });
+ };
+
render() {
- const { match} = this.props;
+ const { match ,resetUserInfo ,showNotification} = this.props;
let current_user = this.props.user;
let { Addcoursestypes,
tojoinitemtype,
@@ -357,6 +360,7 @@ class NewHeader extends Component {
headtypesonClickbool,
headtypess,
settings,
+ visible,
} = this.state;
/*用户名称 用户头像url*/
let activeIndex = false;
@@ -435,7 +439,6 @@ class NewHeader extends Component {
}
let search_url = settings && settings.common && settings.common.search;
- let notice_url = settings && settings.common && settings.common.notice;
return (