Merge branch 'forge' of http://bdgit.educoder.net/Hjqreturn/educoder into forge
commit
1ea0412c61
File diff suppressed because one or more lines are too long
@ -0,0 +1,152 @@
|
|||||||
|
import React , { Component } from 'react';
|
||||||
|
import { Dropdown , Icon , Menu , Table } from 'antd';
|
||||||
|
import {Link} from 'react-router-dom';
|
||||||
|
import axios from 'axios';
|
||||||
|
|
||||||
|
// 点击按钮复制功能
|
||||||
|
function jsCopy(){
|
||||||
|
var e = document.getElementById("copy_rep_content");
|
||||||
|
e.select();
|
||||||
|
document.execCommand("Copy");
|
||||||
|
}
|
||||||
|
class CoderRootDirectory extends Component{
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state={
|
||||||
|
address:"http",
|
||||||
|
ref:"master"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
changeAddress=(address)=>{
|
||||||
|
this.setState({
|
||||||
|
address
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount=()=>{
|
||||||
|
this.getProjectRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
getProjectRoot=(ref)=>{
|
||||||
|
const { login } = this.props.current_user;
|
||||||
|
const { projectsId } = this.props.match.params;
|
||||||
|
|
||||||
|
const url = `/${login}/${projectsId}/entries.json`;
|
||||||
|
axios.get((url),{
|
||||||
|
params:{
|
||||||
|
ref
|
||||||
|
}
|
||||||
|
}).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
render(){
|
||||||
|
const menu = (
|
||||||
|
<Menu>
|
||||||
|
<Menu.Item key="0">
|
||||||
|
<a href="http://www.alipay.com/">1st menu item</a>
|
||||||
|
</Menu.Item>
|
||||||
|
<Menu.Item key="1">
|
||||||
|
<a href="http://www.taobao.com/">2nd menu item</a>
|
||||||
|
</Menu.Item>
|
||||||
|
</Menu>
|
||||||
|
);
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
dataIndex: 'name',
|
||||||
|
width:"33%",
|
||||||
|
render: text => <a>{text}</a>,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
className: 'column-money',
|
||||||
|
width:"34%",
|
||||||
|
dataIndex: 'money',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataIndex: 'address',
|
||||||
|
width:"33%",
|
||||||
|
className:"edu-txt-right color-grey-9"
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const data = [
|
||||||
|
{
|
||||||
|
key: '1',
|
||||||
|
name: 'John Brown',
|
||||||
|
money: '¥300,000.00',
|
||||||
|
address: 'New York No. 1 Lake Park',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '2',
|
||||||
|
name: 'Jim Green',
|
||||||
|
money: '¥1,256,000.00',
|
||||||
|
address: 'London No. 1 Lake Park',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '3',
|
||||||
|
name: 'Joe Black',
|
||||||
|
money: '¥120,000.00',
|
||||||
|
address: 'Sidney No. 1 Lake Park',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const title = () =>{
|
||||||
|
return(
|
||||||
|
<div className="f-wrap-alignCenter">
|
||||||
|
<img src={``} alt=""/>
|
||||||
|
<span>蔡蔡</span>
|
||||||
|
<Link to={``} className="commitKey">asljfowfjoer</Link>
|
||||||
|
<span className="color-blue flex-1 hide-1">first commit</span>
|
||||||
|
<span>3小时前</span>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const { address , ref } = this.state;
|
||||||
|
return(
|
||||||
|
<div className="main">
|
||||||
|
<p className="branch-wrapper">
|
||||||
|
<span><i className="iconfont icon-tijiaojilu font-18 mr3"></i>提交</span>
|
||||||
|
<span><i className="iconfont icon-fenzhi font-18 mr3"></i>分支</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="f-wrap-between mt20">
|
||||||
|
<div className="branchDropdown">
|
||||||
|
<span className="color-grey-9 mr3"><i className="iconfont icon-fenzhi font-20 color-grey-6 mr3"></i>分支:</span>
|
||||||
|
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight">
|
||||||
|
<a className="ant-dropdown-link">
|
||||||
|
{ref} <Icon type="down" />
|
||||||
|
</a>
|
||||||
|
</Dropdown>
|
||||||
|
</div>
|
||||||
|
<div className="gitAddressClone">
|
||||||
|
<span className={address ==="http" ? "addressType active":"addressType"} onClick={()=>this.changeAddress("http")}>HTTP</span>
|
||||||
|
<span className={address ==="ssh" ? "addressType active":"addressType"} onClick={()=>this.changeAddress("ssh")}>SSH</span>
|
||||||
|
<input type="text" id="copy_rep_content" value={"git@testgitea.trustie.net:sylor/test11.git"}/>
|
||||||
|
<span><i className="iconfont icon-fuzhi"></i></span>
|
||||||
|
<span>
|
||||||
|
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight">
|
||||||
|
<a className="ant-dropdown-link">
|
||||||
|
<Icon type="cloud-download" className="font-18 fl"/>
|
||||||
|
</a>
|
||||||
|
</Dropdown></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Table
|
||||||
|
className="mt20 wrap-commit-table"
|
||||||
|
columns={columns}
|
||||||
|
dataSource={data}
|
||||||
|
showHeader={false}
|
||||||
|
size="small"
|
||||||
|
pagination={false}
|
||||||
|
title={() => title()}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default CoderRootDirectory;
|
@ -0,0 +1,67 @@
|
|||||||
|
import React , { Component } from 'react';
|
||||||
|
import { Link , Route , Switch } from 'react-router-dom';
|
||||||
|
|
||||||
|
import '../css/index.css'
|
||||||
|
import './list.css';
|
||||||
|
|
||||||
|
import Loadable from 'react-loadable';
|
||||||
|
import Loading from '../../Loading';
|
||||||
|
const CoderRootDirectory = Loadable({
|
||||||
|
loader: () => import('./CoderRootDirectory'),
|
||||||
|
loading: Loading,
|
||||||
|
})
|
||||||
|
class Detail extends Component{
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state={
|
||||||
|
currentKey:"coder"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 切换菜单
|
||||||
|
ChangeMenu=(value)=>{
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
render(){
|
||||||
|
const { currentKey } = this.state;
|
||||||
|
return(
|
||||||
|
<div>
|
||||||
|
<div className="detailHeader-wrapper">
|
||||||
|
<div className="normal f-wrap-between mb20">
|
||||||
|
<p className="font-18 color-blue df flex-1" style={{alignItems:"center"}}>kosasa胡 / <span className="hide-1 flex-1">test11111111111</span></p>
|
||||||
|
|
||||||
|
<span className="p-r-tags large">
|
||||||
|
<span><label>关注</label><span>11</span></span>
|
||||||
|
<span><label>点赞</label><span>12</span></span>
|
||||||
|
<span><label>Fork</label><span>11</span></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="normal f-wrap-between">
|
||||||
|
<ul className="headerMenu-wrapper">
|
||||||
|
<li className={currentKey === "coder" ? "active" : ""}><Link to={''}>代码</Link></li>
|
||||||
|
<li className={currentKey === "orders" ? "active" : ""}><Link to={''}>工单</Link></li>
|
||||||
|
<li className={currentKey === "merge" ? "active" : ""}><Link to={''}>合并请求</Link></li>
|
||||||
|
<li className={currentKey === "edition" ? "active" : ""}><Link to={''}>版本发布</Link></li>
|
||||||
|
<li className={currentKey === "trends" ? "active" : ""}><Link to={''}>动态</Link></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Switch {...this.props}>
|
||||||
|
<Route exact path="/projects/:projectsId/coder"
|
||||||
|
render={
|
||||||
|
(props) => (<CoderRootDirectory {...this.props} {...props} {...this.state}/>)
|
||||||
|
}
|
||||||
|
></Route>
|
||||||
|
<Route exact path="/projects/:projectsId"
|
||||||
|
render={
|
||||||
|
(props) => (<CoderRootDirectory {...this.props} {...props} {...this.state}/>)
|
||||||
|
}
|
||||||
|
></Route>
|
||||||
|
</Switch>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Detail;
|
@ -0,0 +1,221 @@
|
|||||||
|
import React , { Component } from 'react';
|
||||||
|
|
||||||
|
import { Menu , Input , Dropdown , Icon, Spin , Pagination } from 'antd';
|
||||||
|
import '../css/index.css'
|
||||||
|
import './list.css';
|
||||||
|
|
||||||
|
import ListItem from './IndexItem'
|
||||||
|
import axios from 'axios';
|
||||||
|
|
||||||
|
const Search = Input.Search;
|
||||||
|
const { SubMenu } = Menu;
|
||||||
|
class Index extends Component{
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state={
|
||||||
|
projectsList:undefined,
|
||||||
|
page:1,
|
||||||
|
limit:15,
|
||||||
|
search:undefined,
|
||||||
|
sort:undefined,
|
||||||
|
total:0,
|
||||||
|
isSpin:true,
|
||||||
|
project_type:undefined,
|
||||||
|
category_id:undefined,
|
||||||
|
|
||||||
|
typeList:undefined,
|
||||||
|
categoryList:undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount=()=>{
|
||||||
|
const { page,limit, search , sort ,project_type,category_id} = this.state;
|
||||||
|
this.getListData(page,limit, search , sort,project_type,category_id);
|
||||||
|
|
||||||
|
this.getType();
|
||||||
|
|
||||||
|
this.getCategory();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
getListData=(page,limit, search , sort,project_type,category_id)=>{
|
||||||
|
const { current_user } = this.props;
|
||||||
|
const url = `/projects.json`;
|
||||||
|
axios.get(url,{params:{
|
||||||
|
user_id:current_user && current_user.user_id,
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
search,
|
||||||
|
sort_by:sort,
|
||||||
|
project_type,
|
||||||
|
category_id
|
||||||
|
}}).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
this.setState({
|
||||||
|
projectsList:result.data.projects,
|
||||||
|
total:result.data.total_count,
|
||||||
|
isSpin:false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取类型
|
||||||
|
getType=()=>{
|
||||||
|
const url = `/projects/group_type_list.json`;
|
||||||
|
|
||||||
|
axios.get(url).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
this.setState({
|
||||||
|
typeList:result.data && result.data.map((item,key)=>{
|
||||||
|
return(
|
||||||
|
<li onClick={()=>this.changeType(`${item.project_type}`)}>
|
||||||
|
<span>{item.name}</span>
|
||||||
|
<span>{item.projects_count}</span>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取类型
|
||||||
|
getCategory=()=>{
|
||||||
|
const url = `/project_categories/group_list.json`;
|
||||||
|
|
||||||
|
axios.get(url).then((result)=>{
|
||||||
|
if(result && result.data){
|
||||||
|
this.setCategoryList(result.data);
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
setCategoryList=(list)=>{
|
||||||
|
this.setState({
|
||||||
|
categoryList:list.map((item,key)=>{
|
||||||
|
return(
|
||||||
|
<li onClick={()=>this.changeCategory(`${item.id}`)}>
|
||||||
|
<span>{item.name}</span>
|
||||||
|
<span>{item.projects_count}</span>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
changeCategory=(id)=>{
|
||||||
|
this.setState({
|
||||||
|
category_id:id,
|
||||||
|
page:1
|
||||||
|
})
|
||||||
|
const { limit , sort, project_type } = this.state;
|
||||||
|
this.getListData(1,limit, undefined , sort, project_type ,id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 切换类型
|
||||||
|
changeType=(type)=>{
|
||||||
|
this.setState({
|
||||||
|
isSpin:true,
|
||||||
|
project_type:type,
|
||||||
|
search:undefined
|
||||||
|
})
|
||||||
|
const { page,limit, sort,category_id } = this.state;
|
||||||
|
this.getListData(page,limit, undefined , sort, type ,category_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
ChangeSoryBy=(e)=>{
|
||||||
|
this.setState({
|
||||||
|
sort_by:e.key,
|
||||||
|
page:1,
|
||||||
|
search:undefined,
|
||||||
|
isSpin:true
|
||||||
|
})
|
||||||
|
const { limit,project_type,category_id } = this.state;
|
||||||
|
this.getListData(1 ,limit , undefined , e.key,project_type,category_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
searchFun=(value)=>{
|
||||||
|
// console.log(value)
|
||||||
|
this.setState({
|
||||||
|
page:1,
|
||||||
|
search:value,
|
||||||
|
isSpin:true,
|
||||||
|
project_type:undefined
|
||||||
|
})
|
||||||
|
const { limit , sort , category_id } = this.state;
|
||||||
|
this.getListData(1 ,limit, value , sort , undefined,category_id);
|
||||||
|
}
|
||||||
|
changeSearchValue=(e)=>{
|
||||||
|
this.setState({
|
||||||
|
search:e.target.value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 翻页
|
||||||
|
ChangePage=(page)=>{
|
||||||
|
this.setState({
|
||||||
|
page
|
||||||
|
})
|
||||||
|
const { limit, search , sort,project_type,category_id } = this.state;
|
||||||
|
this.getListData(page,limit, search , sort,project_type,category_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
render(){
|
||||||
|
const menu=(
|
||||||
|
<Menu onClick={this.ChangeSoryBy}>
|
||||||
|
<Menu.Item key="updated_on">更新时间排序</Menu.Item>
|
||||||
|
<Menu.Item key="created_on">创建时间排序</Menu.Item>
|
||||||
|
<Menu.Item key="forked_count">fork数据排序</Menu.Item>
|
||||||
|
<Menu.Item key="praises_count">点赞数量排序</Menu.Item>
|
||||||
|
</Menu>
|
||||||
|
)
|
||||||
|
|
||||||
|
const { projectsList , isSpin , total , search , limit , page , typeList , categoryList } = this.state;
|
||||||
|
|
||||||
|
const pagination = (
|
||||||
|
total && total > 0 ?
|
||||||
|
<div className="edu-txt-center pt30 mb30">
|
||||||
|
<Pagination simple defaultCurrent={page} total={total} pageSize={limit} onChange={this.ChangePage}></Pagination>
|
||||||
|
</div>:""
|
||||||
|
)
|
||||||
|
return(
|
||||||
|
<div className="main ProjectListIndex">
|
||||||
|
<div className="list-left">
|
||||||
|
<ul className="list-l-Menu">
|
||||||
|
<li className="MenuTitle">项目类型</li>
|
||||||
|
{ typeList }
|
||||||
|
</ul>
|
||||||
|
<ul className="list-l-Menu">
|
||||||
|
<li className="MenuTitle">项目类别</li>
|
||||||
|
{ categoryList }
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="list-right">
|
||||||
|
<Spin spinning={isSpin}>
|
||||||
|
<div className="list-r-operation">
|
||||||
|
<Search
|
||||||
|
placeholder="输入项目名称关键字进行搜索"
|
||||||
|
enterButton="搜索"
|
||||||
|
size="large"
|
||||||
|
onSearch={this.searchFun}
|
||||||
|
className="list-r-Search"
|
||||||
|
value={search}
|
||||||
|
onChange={this.changeSearchValue}
|
||||||
|
/>
|
||||||
|
<Dropdown overlay={menu} trigger={['click']} placement='bottomRight'>
|
||||||
|
<a className="ant-dropdown-link">
|
||||||
|
排序 <Icon type="down" />
|
||||||
|
</a>
|
||||||
|
</Dropdown>
|
||||||
|
</div>
|
||||||
|
<ListItem {...this.props} {...this.state} projects={projectsList}></ListItem>
|
||||||
|
{ pagination }
|
||||||
|
</Spin>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default Index;
|
@ -0,0 +1,294 @@
|
|||||||
|
body,#root{
|
||||||
|
background: #fff!important;
|
||||||
|
}
|
||||||
|
.ProjectListIndex{
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
.list-left{
|
||||||
|
width: 26%;
|
||||||
|
padding-right: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.list-right{
|
||||||
|
width:74%;
|
||||||
|
background: #fff;
|
||||||
|
padding:10px;
|
||||||
|
}
|
||||||
|
.list-l-Menu{
|
||||||
|
border:1px solid #f4f4f4;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.list-l-Menu>li{
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
font-size: 1rem;
|
||||||
|
padding:0px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #333;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.list-l-Menu li span:last-child{
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.list-l-Menu .MenuTitle{
|
||||||
|
background-color: #efefef;
|
||||||
|
border-radius: 4px 4px 0px 0px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.list-l-Menu > li:not(.MenuTitle):hover{
|
||||||
|
background-color: #1890ff;
|
||||||
|
}
|
||||||
|
.list-l-Menu > li:not(.MenuTitle):hover span{
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
/* 左侧menu */
|
||||||
|
.list-l-Menu .ant-menu-inline{
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
|
.list-l-Menu .ant-menu-inline .ant-menu-item{
|
||||||
|
width:100%!important;
|
||||||
|
}
|
||||||
|
.list-l-Menu .ant-menu-item-group-title{
|
||||||
|
padding:0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-r-operation{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding:15px 0px 25px;
|
||||||
|
}
|
||||||
|
.list-r-Search{
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.list-r-Search .ant-btn-lg{
|
||||||
|
height: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 列表 */
|
||||||
|
.p-r-Item{
|
||||||
|
display: flex;
|
||||||
|
padding:15px 0px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.p-r-photo{
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
.p-r-Infos{
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
.p-r-name{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.p-r-name > p{
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
.p-r-tags{
|
||||||
|
display: flex;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.p-r-tags.large > span{
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.p-r-tags > span{
|
||||||
|
margin-left: 15px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border:1px solid #efefef;
|
||||||
|
background: #e2f0fd;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.p-r-tags.large > span >label{
|
||||||
|
padding:0px 12px;
|
||||||
|
}
|
||||||
|
.p-r-tags > span >label{
|
||||||
|
padding:0px 8px;
|
||||||
|
}
|
||||||
|
.p-r-tags.large > span >span{
|
||||||
|
padding:0px 6px;
|
||||||
|
}
|
||||||
|
.p-r-tags > span >span{
|
||||||
|
display: block;
|
||||||
|
background: #fff;
|
||||||
|
border-left: #efefef;
|
||||||
|
padding:0px 4px;
|
||||||
|
border-radius: 0px 4px 4px 0px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.p-r-content{
|
||||||
|
margin-top:10px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.p-r-detail > span{
|
||||||
|
margin-right: 15px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.p-r-detail > span > label{
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-r-about{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
margin-top: 8px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -----------详情------------ */
|
||||||
|
.detailHeader-wrapper{
|
||||||
|
background: #f7f7f7;
|
||||||
|
padding-top:20px;
|
||||||
|
border-bottom: 1px solid rgba(34,36,38,.15);
|
||||||
|
}
|
||||||
|
.headerMenu-wrapper{
|
||||||
|
background: #f7f7f7;
|
||||||
|
font-size: 16px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.headerMenu-wrapper li{
|
||||||
|
padding:6px 14px;
|
||||||
|
position: relative;
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
.headerMenu-wrapper li.active{
|
||||||
|
background: #fff;
|
||||||
|
margin-bottom: -1px;
|
||||||
|
border:1px solid rgba(34,36,38,.15);
|
||||||
|
border-bottom: none;
|
||||||
|
border-radius: 4px 4px 0px 0px;
|
||||||
|
}
|
||||||
|
/* 详情-代码 */
|
||||||
|
.branch-wrapper{
|
||||||
|
border:1px solid #eee;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
padding:5px;
|
||||||
|
}
|
||||||
|
.branch-wrapper span{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex: 1;
|
||||||
|
text-align: center;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.branch-wrapper span.active{
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
.branch-wrapper span:hover{
|
||||||
|
color: #4CACFF;
|
||||||
|
}
|
||||||
|
.branchDropdown{
|
||||||
|
border:1px solid #eee;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding:0px 10px;
|
||||||
|
height: 35px;
|
||||||
|
line-height: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gitAddressClone{
|
||||||
|
display: flex;
|
||||||
|
height: 32px;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
border:1px solid #eee;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.gitAddressClone > span{
|
||||||
|
display: flex;
|
||||||
|
line-height: 30px;
|
||||||
|
height: 30px;
|
||||||
|
padding:0px 12px;
|
||||||
|
border-right: 1px solid #eee;
|
||||||
|
cursor: pointer;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.gitAddressClone > span.addressType.active{
|
||||||
|
color: #4CACFF;
|
||||||
|
}
|
||||||
|
.gitAddressClone > span:last-child{
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.gitAddressClone > input{
|
||||||
|
border:none;
|
||||||
|
outline: none;
|
||||||
|
padding:0px 8px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-right: 1px solid #eee;
|
||||||
|
flex:1;
|
||||||
|
}
|
||||||
|
.wrap-commit-table .ant-table-small > .ant-table-content > .ant-table-body{
|
||||||
|
margin:0px;
|
||||||
|
}
|
||||||
|
.commitKey{
|
||||||
|
border:1px solid #dcdcdc;
|
||||||
|
background-color:#f4f4f4;
|
||||||
|
color: #666!important;
|
||||||
|
padding:0px 5px;
|
||||||
|
height: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
margin:0px 15px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 750px){
|
||||||
|
.list-left,.list-right{
|
||||||
|
width: 100%;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 400px){
|
||||||
|
.headerMenu-wrapper{
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.headerMenu-wrapper li{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.gitAddressClone{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.gitAddressClone > span{
|
||||||
|
padding:0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 370px){
|
||||||
|
.p-r-tags{
|
||||||
|
opacity: 0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.p-r-about{
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue