From 98d40482f3a339b134bf00a9868526ad1acb1d8a Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Fri, 5 Feb 2021 16:19:35 +0800 Subject: [PATCH] issue --- src/forge/Component/MemberCards.jsx | 2 + src/forge/New/Index.js | 15 ++- src/forge/Order/MilepostDetail.js | 2 +- src/forge/Team/Component/LeaveTeam.jsx | 9 +- src/forge/Team/Group/GroupDetailProject.jsx | 2 +- src/forge/Team/Group/GroupForm.jsx | 2 +- src/forge/Team/Index.scss | 14 ++- src/forge/Team/New.jsx | 8 -- src/forge/Team/Setting/TeamSettingGroup.jsx | 109 +----------------- src/forge/Team/TeamGroup.jsx | 89 +-------------- src/forge/Team/TeamGroupItems.jsx | 118 ++++++++++++++++++++ src/forge/users/Team-item.jsx | 7 +- src/forge/users/Team.jsx | 2 +- src/modules/tpm/NewHeader.js | 9 +- 14 files changed, 165 insertions(+), 223 deletions(-) create mode 100644 src/forge/Team/TeamGroupItems.jsx diff --git a/src/forge/Component/MemberCards.jsx b/src/forge/Component/MemberCards.jsx index b4afe3337..c0bd12c1f 100644 --- a/src/forge/Component/MemberCards.jsx +++ b/src/forge/Component/MemberCards.jsx @@ -32,6 +32,8 @@ const I = styled.i`{ font-size:13px!important; color:#60B25E; margin-right:2px; + height:17px; + line-height:17px; }` const Div = styled.div`{ margin-bottom: 18px; diff --git a/src/forge/New/Index.js b/src/forge/New/Index.js index 33ea9b0be..b130bf79d 100644 --- a/src/forge/New/Index.js +++ b/src/forge/New/Index.js @@ -31,6 +31,7 @@ class Index extends Component { license_id: undefined, ignore_id: undefined, owners_id:undefined, + owners_name:undefined, project_language_list: undefined, project_category_list: undefined, @@ -75,8 +76,9 @@ class Index extends Component { this.props.form.setFieldsValue({ user_id:OIdentifier }) - this.setState({ - owners_id:owner && owner[0].id + owner && this.setState({ + owners_id:owner[0].id, + owners_name:owner[0].name }) } this.setOptionsList(owner, 'owners'); @@ -159,9 +161,8 @@ class Index extends Component { this.setState({ isSpin: true }) - const { current_user } = this.props; - const { projectsType , OIdentifier } = this.props.match.params; - const { project_language_id, project_category_id, license_id, ignore_id , owners_id } = this.state; + const { projectsType } = this.props.match.params; + const { project_language_id, project_category_id, license_id, ignore_id , owners_id , owners_name } = this.state; const decoderPass = Base64.encode(values.password); const url = projectsType === "deposit" ? "/projects.json" : "/projects/migrate.json"; axios.post(url, { @@ -179,7 +180,7 @@ class Index extends Component { isSpin: false }) this.props.showNotification(`${projectsType === "deposit" ? "托管" : "镜像"}项目创建成功!`); - this.props.history.push(`/projects/${OIdentifier ? OIdentifier :(current_user && current_user.login)}/${result.data.identifier}`); + this.props.history.push(`/projects/${owners_name}/${result.data.identifier}`); } } }).catch((error) => { @@ -287,6 +288,8 @@ class Index extends Component { {getFieldDecorator('user_id', { rules: [{ required: true, message: '请选择拥有者' + },{ + validator:(rule, value, callback) => this.checkId(rule, value, callback, OwnerList, '拥有者') }], })( { search_count > limit? -
+
:"" } diff --git a/src/forge/Team/Component/LeaveTeam.jsx b/src/forge/Team/Component/LeaveTeam.jsx index b1c172db8..15046816b 100644 --- a/src/forge/Team/Component/LeaveTeam.jsx +++ b/src/forge/Team/Component/LeaveTeam.jsx @@ -4,19 +4,14 @@ import Modals from './Modals'; const ALink = styled.a`{ - border:1px solid #F73030; color:#F73030!important; - height:30px; - line-height:30px; - padding:0px 15px; - border-radius:5px; }` -function LeaveTeam({teamID , onOk }){ +function LeaveTeam({ teamID , onOk , className }){ const [ visible , setVisible ] = useState(false); return( - setVisible(true)}>离开团队 + setVisible(true)}>离开团队 setVisible(false)} onOk={()=>onOk(teamID)}>

确定要离开当前团队吗?

diff --git a/src/forge/Team/Group/GroupDetailProject.jsx b/src/forge/Team/Group/GroupDetailProject.jsx index 808aef37d..70894e33c 100644 --- a/src/forge/Team/Group/GroupDetailProject.jsx +++ b/src/forge/Team/Group/GroupDetailProject.jsx @@ -31,7 +31,7 @@ export default (({projects}) => { return (
- {item.project.name} + {item.project.name}
) }) diff --git a/src/forge/Team/Group/GroupForm.jsx b/src/forge/Team/Group/GroupForm.jsx index 12a08c941..e006e9a16 100644 --- a/src/forge/Team/Group/GroupForm.jsx +++ b/src/forge/Team/Group/GroupForm.jsx @@ -168,7 +168,7 @@ export default Form.create()( '', "can_create_org_project", [], - 新建项目(成员可以在组织中新建项目。创建者将自动获得新建的项目的管理员权限。), false + 新建项目(成员可以在组织中新建项目。创建者将自动获得新建的项目的管理员权限), false )} {helper( '权限:', diff --git a/src/forge/Team/Index.scss b/src/forge/Team/Index.scss index 21a406b15..c1df5f128 100644 --- a/src/forge/Team/Index.scss +++ b/src/forge/Team/Index.scss @@ -202,8 +202,20 @@ justify-content: left; } .g-body{ - padding:15px 25px; + padding:15px 15px; min-height: 84px; + display: flex; + align-items: center; + .moreMember { + margin:0px 10px; + i{ + height: 44px; + width: 44px; + line-height: 44px; + color: #ddd!important; + font-size: 44px!important; + } + } } } &>div:nth-child(2n){ diff --git a/src/forge/Team/New.jsx b/src/forge/Team/New.jsx index 02e71076c..c256261dc 100644 --- a/src/forge/Team/New.jsx +++ b/src/forge/Team/New.jsx @@ -103,14 +103,6 @@ export default Form.create()( [], 项目管理员可以添加或移除团队的访问权限,false )} - {helper( - 最大仓库数:(设置为-1表示使用全局默认值), - "max_repo_creation", - [], - ,false - )}

diff --git a/src/forge/Team/Setting/TeamSettingGroup.jsx b/src/forge/Team/Setting/TeamSettingGroup.jsx index 1adec2e6e..006d579cf 100644 --- a/src/forge/Team/Setting/TeamSettingGroup.jsx +++ b/src/forge/Team/Setting/TeamSettingGroup.jsx @@ -1,113 +1,14 @@ -import React , { useEffect , useState } from 'react'; -import { WhiteBack , Banner , Blueline } from '../../Component/layout'; -import styled from 'styled-components'; -import axios from 'axios'; -import { Pagination } from 'antd'; -import { getImageUrl } from 'educoder'; -import LeaveTeam from '../Component/LeaveTeam'; -import { Link } from 'react-router-dom'; +import React from 'react'; +import { WhiteBack , Banner } from '../../Component/layout'; +import GroupItems from '../TeamGroupItems'; -const SpanName = styled.span`{ - font-size:16px; - color:#333; -}` -const SpanFoot = styled.span`{ - margin-right:5px; - color:#333 -}` -const ImgContent = styled.img`{ - height:44px; - width:44px; - border-radius:50%; - margin:5px 20px 5px 0px; -}` const limit = 8; function TeamSettingGroup({organizeDetail,history}){ - const [ list ,setList ] = useState(undefined); - const [ page ,setPage ] = useState(1); - const [ total ,setTotal ] = useState(0); - - useEffect(()=>{ - if(organizeDetail){ - getData(); - } - },[organizeDetail,page]); - - function getData(){ - const url = `/organizations/${organizeDetail.id}/teams.json`; - axios.get(url,{ - params:{ - page,limit - } - }).then(result=>{ - if(result && result.data){ - setList(result.data.teams); - setTotal(result.data.total_count); - } - }).catch(error=>{}) - } - - // 当前用户离开团队 - function removeMember(teamid){ - const url = `/organizations/${organizeDetail.id}/teams/${teamid}/team_users/quit.json`; - axios.delete(url).then(result=>{ - if(result && result.data){ - getData(); - } - }).catch(error=>{}) - } - - // 团队设置 - function toGroupSetting(id){ - history.push(`/organize/${organizeDetail && organizeDetail.name}/group/${id}/setting`); - } - return( 组织团队管理 - { - list && list.length > 0 ? -

- { - list.map((item,key)=>{ - return( -
-

- {item.name} - - { item.is_member && - - } - { item.is_admin && toGroupSetting(item.id)}>团队设置 } - -

-
- { - item.users && item.users.map((i,k)=>{ - return( - - ) - }) - } -
-

- {item.num_users} 名成员 - {item.num_projects} 个项目 -

-
- ) - }) - } -
- :"" - } - { - total > limit && -
- setPage(page)} /> -
- } - + + ) } export default TeamSettingGroup; \ No newline at end of file diff --git a/src/forge/Team/TeamGroup.jsx b/src/forge/Team/TeamGroup.jsx index a5e5cc923..cb52a7d1d 100644 --- a/src/forge/Team/TeamGroup.jsx +++ b/src/forge/Team/TeamGroup.jsx @@ -1,94 +1,13 @@ -import React , { useEffect , useState } from 'react'; +import React from 'react'; import { Banner } from '../Component/layout'; -import styled from 'styled-components'; -import axios from 'axios'; -import { getImageUrl } from 'educoder'; -import Nodata from '../Nodata'; -import { Pagination } from 'antd'; -import { Link } from 'react-router-dom'; -import LeaveTeam from './Component/LeaveTeam'; +import GroupItems from './TeamGroupItems'; -const SpanFoot = styled.span`{ - margin-right:5px; - color:#333 -}` -const ImgContent = styled.img`{ - height:44px; - width:44px; - border-radius:50%; - margin:5px 20px 5px 0px; -}` const limit = 14; -function TeamGroup({organizeDetail,current_user}){ - const [ page , setPage ] = useState(1); - const [ total , setTotal ] = useState(0); - const [ list , setList ] = useState(undefined); - - useEffect(()=>{ - if(organizeDetail){ - getData(); - } - },[organizeDetail]); - - function getData(){ - const url = `/organizations/${organizeDetail.id}/teams.json`; - axios.get(url,{ - params:{ page ,limit} - }).then(result=>{ - if(result && result.data){ - setList(result.data.teams); - setTotal(result.data.total_count); - } - }) - } - // 离开团队 - function outTeam(id){ - const url = `/organizations/${organizeDetail.id}/teams/${id}/team_users/quit.json`; - axios.delete(url).then(result =>{ - if(result && result.data){ - getData(); - } - }).catch(error=>{}) - } +function TeamGroup({organizeDetail,history}){ return(
组织团队 - { - list && list.length > 0 ? -
- { - list.map((item,key)=>{ - return( -
-

- {item.name} - {item.is_member && } -

-
- { - item.users && item.users.map((i,k)=>{ - return( - - ) - }) - } -
-

- {item.num_users} 名成员 - {item.num_projects} 个项目 -

-
- ) - }) - } -
: - } - { - total > limit && -
- setPage(page)}/> -
- } +
) } diff --git a/src/forge/Team/TeamGroupItems.jsx b/src/forge/Team/TeamGroupItems.jsx new file mode 100644 index 000000000..27147d123 --- /dev/null +++ b/src/forge/Team/TeamGroupItems.jsx @@ -0,0 +1,118 @@ +import React , { useEffect , useState } from 'react'; +import Nodata from '../Nodata'; +import axios from 'axios'; +import { getImageUrl } from 'educoder'; +import { Pagination , Popconfirm , Spin } from 'antd'; +import { Link } from 'react-router-dom'; +import LeaveTeam from './Component/LeaveTeam'; +import styled from 'styled-components'; + +const SpanFoot = styled.span`{ + margin-right:5px; + color:#333 +}` +const ImgContent = styled.img`{ + height:44px; + width:44px; + border-radius:50%; + margin:5px 10px; +}` +function TeamGroupItems({organizeDetail,limit, count , history}){ + const [ page , setPage ] = useState(1); + const [ isSpin , setIsSpin ] = useState(false); + const [ total , setTotal ] = useState(0); + const [ list , setList ] = useState(undefined); + + useEffect(()=>{ + if(organizeDetail){ + getData(); + } + },[organizeDetail]); + + function getData(){ + const url = `/organizations/${organizeDetail.id}/teams.json`; + axios.get(url,{ + params:{ page ,limit} + }).then(result=>{ + if(result && result.data){ + setList(result.data.teams); + setTotal(result.data.total_count); + setIsSpin(false); + } + }) + } + // 离开团队 + function outTeam(id){ + setIsSpin(true); + const url = `/organizations/${organizeDetail.id}/teams/${id}/team_users/quit.json`; + axios.delete(url).then(result =>{ + if(result && result.data){ + getData(); + } + }).catch(error=>{}) + } + // 团队设置 + function toGroupSetting(id){ + history.push(`/organize/${organizeDetail && organizeDetail.name}/group/${id}/setting`); + } + // 解散团队 + function disMissGroup(id){ + setIsSpin(true); + const url = `/organizations/${organizeDetail.id}/teams/${id}.json`; + axios.delete(url).then(result=>{ + if(result && result.data){ + getData(); + } + }).catch(error=>{}) + } + return( + + { + list && list.length > 0 ? +
+ { + list.map((item,key)=>{ + return( +
+

+ {item.name} + + { item.is_admin && item.authorize!=="owner" && disMissGroup(item.id)}>解散团队} + { item.is_member && } + { item.is_admin && toGroupSetting(item.id)}>团队设置 } + +

+
+ { + item.users && item.users.map((i,k)=>{ + return( + k < count ? + : + k === count ? + + :"" + ) + }) + } +
+

+ {item.num_users} 名成员 + {item.num_projects} 个项目 +

+
+ ) + }) + } +
+ : + } + { + total > limit && +
+ setPage(page)}/> +
+ } +
+ ) +} +export default TeamGroupItems; \ No newline at end of file diff --git a/src/forge/users/Team-item.jsx b/src/forge/users/Team-item.jsx index 4b7200f13..e521f1818 100644 --- a/src/forge/users/Team-item.jsx +++ b/src/forge/users/Team-item.jsx @@ -1,13 +1,12 @@ import React from 'react'; -import { Link } from 'react-router-dom'; import { getImageUrl } from 'educoder'; -function TeamItem({item}){ +function TeamItem({item,history}){ return( -
+
{history.push(`/organize/${item.name}`)}} style={{cursor:"pointer"}}>
- {item.name} + {item.name}
{item.description}
diff --git a/src/forge/users/Team.jsx b/src/forge/users/Team.jsx index 5fd3f4491..a0b70f2f5 100644 --- a/src/forge/users/Team.jsx +++ b/src/forge/users/Team.jsx @@ -66,7 +66,7 @@ function Team(props){ { list.map((item,key)=>{ return( - + ) }) } diff --git a/src/modules/tpm/NewHeader.js b/src/modules/tpm/NewHeader.js index 2a6f875e7..daaefca9d 100644 --- a/src/modules/tpm/NewHeader.js +++ b/src/modules/tpm/NewHeader.js @@ -761,10 +761,11 @@ class NewHeader extends Component {
{ coursestypes === true && this.props.user && this.props.user.main_site === false ? "" : -
    -
  • 新建镜像项目
  • -
  • 新建托管项目
  • -
+
    +
  • 新建镜像项目
  • +
  • 新建托管项目
  • +
  • 新建组织
  • +
}