From 828cc2470d932606a4d29d17637b2db0b1fa2436 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Fri, 29 Jan 2021 17:26:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83-=E6=88=91?= =?UTF-8?q?=E7=9A=84=E7=BB=84=E7=BB=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/AppConfig.js | 2 +- src/forge/Component/Search.jsx | 4 +- src/forge/Team/Setting/TeamSettingCommon.jsx | 24 +++++- src/forge/Team/Setting/TeamSettingMember.jsx | 6 +- src/forge/users/Infos.js | 6 +- src/forge/users/Team-item.jsx | 20 +++-- src/forge/users/Team.jsx | 81 +++++++++++++++----- src/modules/tpm/NewHeader.js | 2 +- 8 files changed, 108 insertions(+), 37 deletions(-) diff --git a/src/AppConfig.js b/src/AppConfig.js index a36c05b5..a5a063b0 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -27,7 +27,7 @@ if (isDev) { } debugType = window.location.search.indexOf('debug=t') !== -1 ? 'teacher' : window.location.search.indexOf('debug=s') !== -1 ? 'student' : - window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 'student' + window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 'admin' } function clearAllCookie() { cookie.remove('_educoder_session', { path: '/' }); diff --git a/src/forge/Component/Search.jsx b/src/forge/Component/Search.jsx index 2f192509..ec27ac28 100644 --- a/src/forge/Component/Search.jsx +++ b/src/forge/Component/Search.jsx @@ -2,14 +2,16 @@ import React from "react"; import { Input } from "antd"; const { Search } = Input; -export default ({ placeholder , onSearch }) => { +export default ({ placeholder , onSearch , value , onChange }) => { return ( ) }; diff --git a/src/forge/Team/Setting/TeamSettingCommon.jsx b/src/forge/Team/Setting/TeamSettingCommon.jsx index 2e302a37..37e975fc 100644 --- a/src/forge/Team/Setting/TeamSettingCommon.jsx +++ b/src/forge/Team/Setting/TeamSettingCommon.jsx @@ -17,11 +17,12 @@ const radioStyle = { lineHeight: '30px', }; export default Form.create()( - forwardRef(({ form , organizeDetail , showNotification , history })=>{ + forwardRef(({ form , organizeDetail , showNotification , history , current_user })=>{ const [ image , setImage ] = useState(undefined); const [ imageFlag , setImageFlag ] = useState(false); const [ password , setPassword ] = useState(undefined); - const { getFieldDecorator , validateFields, setFieldsValue} = form; + const [ passwordFlag , setPasswordFlag ] = useState(false); + const { getFieldDecorator , validateFields , setFieldsValue } = form; useEffect(()=>{ if(organizeDetail){ @@ -67,7 +68,21 @@ export default Form.create()( // 删除组织 function deleteOrganize(){ - + if(!password){ + setPasswordFlag(true); + return + }else{ + setPasswordFlag(false); + const url = `/organizations/${organizeDetail.id}.json`; + axios.delete(url,{ + params:{ password } + }).then(result=>{ + if(result && result.data){ + // 删除后跳转到个人中心的组织页面 + history.push(`/users/${current_user && current_user.login}/organizes`); + } + }) + } } return(
@@ -136,7 +151,8 @@ export default Form.create()(
密码: - setPassword(e.target.value)}/> + setPassword(e.target.value)}/> + { passwordFlag && 请输入密码}
删除组织
diff --git a/src/forge/Team/Setting/TeamSettingMember.jsx b/src/forge/Team/Setting/TeamSettingMember.jsx index ddd35ff7..a8d7800b 100644 --- a/src/forge/Team/Setting/TeamSettingMember.jsx +++ b/src/forge/Team/Setting/TeamSettingMember.jsx @@ -24,13 +24,17 @@ const demoData = [ operation:"移除成员", } ] -export default (()=>{ +export default ((props)=>{ const [ choiceId , serChoiceId ] = useState(undefined); const [ page , setPage ] = useState(1); const [ limit , setLimit ] = useState(15); const [ total , setTotal ] = useState(0); const [ data , setData ] = useState(demoData); + function getData(){ + const url = `/organizations/:organization/organization_users.json`; + } + // 获取搜索用户框里面选择的用户ID,方便添加组织成员 function getUser(id){ console.log(id); diff --git a/src/forge/users/Infos.js b/src/forge/users/Infos.js index 77cdc2b5..0bc11ae8 100644 --- a/src/forge/users/Infos.js +++ b/src/forge/users/Infos.js @@ -288,7 +288,7 @@ class Infos extends Component { } - {/*
+

this.organize_link()} > @@ -296,11 +296,11 @@ class Infos extends Component { 组织 - {user && user.undo_events} + {user && user.user_org_count}

-
*/} +
{user && ( diff --git a/src/forge/users/Team-item.jsx b/src/forge/users/Team-item.jsx index a09d1d58..4b7200f1 100644 --- a/src/forge/users/Team-item.jsx +++ b/src/forge/users/Team-item.jsx @@ -1,18 +1,22 @@ import React from 'react'; -export default (()=>{ +import { Link } from 'react-router-dom'; +import { getImageUrl } from 'educoder'; + +function TeamItem({item}){ return(
- -
-

组织名称组织名称

+ +
+ {item.name}
- 组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内容组织描述内 + {item.description}

- 项目:11 - 创建时间:2020-04-28 + 项目:{item.num_projects} + 创建时间:{item.created_at}

) -}) \ No newline at end of file +} +export default TeamItem; \ No newline at end of file diff --git a/src/forge/users/Team.jsx b/src/forge/users/Team.jsx index 6f26441c..eff9d6a1 100644 --- a/src/forge/users/Team.jsx +++ b/src/forge/users/Team.jsx @@ -1,38 +1,83 @@ -import React from 'react'; -import {Popover , Menu} from 'antd'; +import React , { useEffect , useState } from 'react'; +import { Dropdown, Menu , Pagination } from 'antd'; +import { Link } from 'react-router-dom'; import Search from '../Component/Search'; -import Sort from '../Component/Sort'; - import Item from './Team-item'; +import Nodata from '../Nodata'; +import axios from 'axios'; -export default (()=>{ +const limit = 15; +function Team(){ + const [ list ,setList ] = useState(undefined); + const [ page ,setPage ] = useState(1); + const [ total ,setTotal ] = useState(0); + const [ sort_direction , setSort_direction ] = useState("asc"); + const [ sort_by ,setSort_by ] = useState("created_at"); + const [ search ,setSearch ] = useState(undefined); + + useEffect(()=>{ + getList(search); + },[sort_by,page,sort_direction]) + + function getList(search){ + const url = `/organizations.json`; + axios.get(url,{ + params:{ + search,sort_by,sort_direction,page,limit + } + }).then(result=>{ + if(result && result.data){ + setList(result.data.organizations); + setTotal(result.data.total_count); + } + }).catch(error=>{}) + } // 搜索 - function onSearch(value){ - + function onSearch(){ + getList(search); } const menu = ( - - 更新时间排序 - 项目数排序 + setSort_by(e.key)}> + 更新时间排序 + 项目数排序 + 用户数排序 ) return(
- + setSearch(e.target.value)} placeholder="请输入项目名称关键字进行搜索" onSearch={onSearch}/>

- 新建组织 - + 新建组织 + 排序 - +

-
- -
+ { + list && list.length > 0 ? +
+ { + list.map((item,key)=>{ + return( + + ) + }) + } +
+ : + + } + { + total > limit && +
+ setPage(page)} total={total} /> +
+ }
) -}) \ No newline at end of file +} +export default Team; \ No newline at end of file diff --git a/src/modules/tpm/NewHeader.js b/src/modules/tpm/NewHeader.js index 57c12a88..2a6f875e 100644 --- a/src/modules/tpm/NewHeader.js +++ b/src/modules/tpm/NewHeader.js @@ -841,7 +841,7 @@ class NewHeader extends Component { } { mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.my_organ && -
  • 我的组织
  • +
  • 我的组织
  • }
  • this.educoderloginysl()}>退出