Commit 537099a7 by zhangleyuan

feat:学院管理的添加学员

parent 7eebdadf
/* /*
* @Author: wufan * @Author: wufan
* @Date: 2020-11-25 18:25:02 * @Date: 2020-11-25 18:25:02
* @LastEditors: zhangleyuan * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-03-09 10:28:03 * @LastEditTime: 2021-07-26 16:05:10
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -75,6 +75,13 @@ export function updateStoreMessage(params: object) { ...@@ -75,6 +75,13 @@ export function updateStoreMessage(params: object) {
export function getStoreDetail(params: object) { export function getStoreDetail(params: object) {
return Service.Hades("public/hades/getStoreDetail", params); return Service.Hades("public/hades/getStoreDetail", params);
} }
export function getByDepartmentId(params: object) {
return Service.Hades("public/hades/getByDepartmentId", params);
}
export function getDepartmentUser(params: object) {
return Service.Hades("/public/hades/getDepartmentAndDepartmentUserByName", params);
}
/* /*
* @Author: wufan * @Author: wufan
* @Date: 2020-11-25 18:25:02 * @Date: 2020-11-25 18:25:02
* @LastEditors: zhangleyuan * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-03-08 11:48:43 * @LastEditTime: 2021-07-26 16:06:29
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
import { getEmployeeList, getUserList, getStoreDecorationList, getStoreRole, addEmployee, editEmployee, deleteEmployee, getCourseCatalogList, import { getEmployeeList, getUserList, getStoreDecorationList, getStoreRole, addEmployee, editEmployee, deleteEmployee, getCourseCatalogList,
getAllSonCategory, addCourseCategory, delCourseCategory, editCourseCategory, deleteStoreDecorationList, addStoreBanner, editStoreBanner, getAllSonCategory, addCourseCategory, delCourseCategory, editCourseCategory, deleteStoreDecorationList, addStoreBanner, editStoreBanner,
moveBannerSequence,getStoreUserBasicPage,updateStoreMessage,getStoreDetail} from '@/data-source/store/request-apis'; moveBannerSequence,getStoreUserBasicPage,updateStoreMessage,getStoreDetail,getByDepartmentId,getDepartmentUser} from '@/data-source/store/request-apis';
export default class StoreService { export default class StoreService {
// 获取员工列表 // 获取员工列表
...@@ -89,4 +89,10 @@ export default class StoreService { ...@@ -89,4 +89,10 @@ export default class StoreService {
static getStoreDetail(params: any) { static getStoreDetail(params: any) {
return getStoreDetail(params); return getStoreDetail(params);
} }
static getByDepartmentId(params:any){
return getByDepartmentId(params);
}
static getDepartmentUser(params:any){
return getDepartmentUser(params);
}
} }
\ No newline at end of file
...@@ -19,7 +19,7 @@ import LimitTip from "./LimitTip"; ...@@ -19,7 +19,7 @@ import LimitTip from "./LimitTip";
import WWOpenDataCom from '@/components/WWOpenDataCom'; import WWOpenDataCom from '@/components/WWOpenDataCom';
import "./EmployeeManage.less"; import "./EmployeeManage.less";
import ChooseMembersModal from "./modal/ChooseMembersModal"; import NewChooseMembersModal from "./modal/NewChooseMembersModal";
const { confirm } = Modal; const { confirm } = Modal;
const { Search } = Input; const { Search } = Input;
...@@ -409,15 +409,14 @@ function EmployeeManage() { ...@@ -409,15 +409,14 @@ function EmployeeManage() {
</div> </div>
{model} {model}
{employeeModal && {employeeModal &&
<ChooseMembersModal <NewChooseMembersModal
isOpen={employeeModal} visible={employeeModal}
type="USER" type="USER"
handleChooseModal={(bool: any) => { close={()=>{setEmployeeModal(false)}}
onConfirm={() => {
setEmployeeModal(false) setEmployeeModal(false)
if (bool) { message.success('添加成功')
message.success('添加成功') getEmployeeList();
getEmployeeList();
}
}} }}
/> />
} }
......
...@@ -37,7 +37,7 @@ function DepartMentTabCon() { ...@@ -37,7 +37,7 @@ function DepartMentTabCon() {
</div> </div>
<UserTable/> <UserTable/>
</div> </div>
<NewChooseMembersModal visible={chooseMembersModalVisible} type="USER" close={()=>{closeChooseMembersModal()}}/> <NewChooseMembersModal visible={chooseMembersModalVisible} type="CUSTOMER" close={()=>{closeChooseMembersModal()}} onConfirm={()=>{}}/>
</div> </div>
); );
} }
......
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { withRouter } from "react-router-dom"; import { withRouter } from "react-router-dom";
import { Tree, Input, Dropdown, Menu } from "antd"; import { Tree} from "antd";
import StoreService from "@/domains/store-domain/storeService";
import User from '@/common/js/user'
import "./MemberTree.less"; import "./MemberTree.less";
const { Search } = Input;
const { DirectoryTree } = Tree; const { DirectoryTree } = Tree;
function MemberTree(props) { function MemberTree(props) {
const {treeType} = props const {treeType} = props;
const treeData = [ const {treeData,setTreeData}=useState([]);
{ useEffect(()=>{
title: "小麦助教", getTreeData();
key: "0-0", },[]);
children: [ function getTreeData(){
{ const params = {
title: "技术部", depType:'DEP_CHAT',
key: "0-0-0", enterpriseId:User.getEnterpriseId(),
children: [ source:0,//0代表来自企培
{ storeId:User.getStoreId(),
title: "leaf", userId:User.getUserId(),
key: "0-0-0-0", }
}, StoreService.getDepartmentUser(params).then(() => {
{ const { departmentVOList=[]} = res.result;
title: "leaf", const _treeData = handleData(departmentVOList);
key: "0-0-0-1", });
}, }
], function handleData(dataArray){
}, dataArray.map((item,index)=>{
{ item.key=item.id;
title: "商务部", if(item.sonDepartmentVOList){
key: "0-0-1", item.children = item.sonDepartmentVOList;
children: [ handleData(item.sonDepartmentVOList)
{ }
title:'aaa', return item
key: "0-0-1-0", })
}, }
], function treeSelected (selectedKeys,e){
}, const _checkedNodes = e.checkedNodes;
], const _selectNodes = _checkedNodes.map((item,index)=>{
}, if(item.userType==='VISIBLE_USER'){
]; return item;
}
})
props.onSelect(_selectNodes);
}
return ( return (
<div className="member-tree"> <div className="member-tree">
<div className="tree-con"> <div className="tree-con">
...@@ -50,12 +53,12 @@ function MemberTree(props) { ...@@ -50,12 +53,12 @@ function MemberTree(props) {
checkable checkable
showIcon={false} showIcon={false}
treeData={treeData} treeData={treeData}
onCheck={(selectedKeys,e)=>treeSelected(selectedKeys,e)}
titleRender={(nodeData) => { titleRender={(nodeData) => {
return ( return (
<div <div
className="node-title-con" className="node-title-con"
> >
{/* <span className="icon iconfont title-icon">&#xe604;</span> */}
<span className="icon iconfont title-icon">&#xe603;</span> <span className="icon iconfont title-icon">&#xe603;</span>
<span>{nodeData.title}</span> <span>{nodeData.title}</span>
</div> </div>
......
...@@ -22,19 +22,123 @@ class NewChooseMembersModal extends React.Component { ...@@ -22,19 +22,123 @@ class NewChooseMembersModal extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
selectUserList:[] selectUserList:[],
selectObject: {},
visible:this.props.visible,
openSetModal: false,
} }
} }
componentDidMount() { componentDidMount() {
} }
handleClose = ()=>{ handleClose = ()=>{
this.props.close(); this.props.close()
} }
render() {
const { type,visible} = this.props; // 信息列表——右边
selectedColumnsRight = () => {
const selectColumns = [
{
title: '学员名',
key: 'nameRight',
dataIndex: 'userName',
width: '70%',
render: (value, record) => {
const { userName = '', avatar } = record;
return (
<div className='avatar'>
<span className="icon iconfont avatar-icon">&#xe84a;</span>
<Tooltip title={userName}>
<span className='userImg'>{userName}</span>
</Tooltip>
</div>
)
}
},{
title : '操作',
key : 'edit',
dataIndex : 'edit',
width : '30%',
align : 'right',
render: (value, record) => {
return (
<div className='edit' onClick={() => this.clearOneUser(record)}>
<span className="icon iconfont edit-icon">&#xe717;</span>
</div>
)
}
},
]
return selectColumns;
}
treeSelect = (record)=>{
this.setState({
selectUserList:record
})
}
clearOneUser = (record) =>{
const {selectUserList} = this.state; const {selectUserList} = this.state;
const _selectUserList = selectUserList.map((item,index)=>{
if(item.userId !== record.userId){
return item
}
})
this.setState({
selectUserList:_selectUserList
})
}
// 清空所有成员
clearAllUser = () => {
this.setState({
selectUserList : [],
})
}
addCustomer = () => {
const { selectUserList } = this.state;
let enterpriseVisibleUserIdList = []; // 保存新加进去的成员
selectUserList.map((item) => {
enterpriseVisibleUserIdList.push(item.enterpriseVisibleUserId)
return enterpriseVisibleUserIdList
})
const _params = {
storeId: User.getStoreId(),
enterpriseVisibleUserIdList,
}
Service.Hades('public/hades/addBatchEnterpriseStoreCustomer', _params).then((res) => {
this.props.onConfirm();
})
}
// 批量添加成员(点击确定)
addUser = (selectUserList) => {
let enterpriseUserList = []; // 保存新加进去的成员
selectUserList.map((item) => {
enterpriseUserList.push({
roleCode: item.roleCode,
enterpriseVisibleUserId: item.enterpriseVisibleUserId
})
return enterpriseUserList
})
const _params = {
storeId: User.getStoreId(),
enterpriseUserList,
}
Service.Hades('public/hades/addBatchEnterpriseStoreUser', _params).then((res) => {
if (res.code === '200') {
this.props.onConfirm();
this.setState({
openSetModal: false,
})
}
})
}
render() {
const {type,openSetModal,visible} = this.props;
const {selectUserList,selectObject} = this.state;
const title = type === 'USER' ? '添加员工' : '添加学员'; const title = type === 'USER' ? '添加员工' : '添加学员';
return ( return (
<div> <div>
...@@ -44,7 +148,15 @@ class NewChooseMembersModal extends React.Component { ...@@ -44,7 +148,15 @@ class NewChooseMembersModal extends React.Component {
visible={visible} visible={visible}
onCancel={() => this.handleClose()} onCancel={() => this.handleClose()}
onOk={() => { onOk={() => {
if (User.getVersion() && User.getVersion().whetherReachUserNum) {
message.error("添加失败,企业使用人数超出限制")
return
}
if (_.isEmpty(selectUserList)) {
message.warning(type === 'USER' ? '请选择员工' : '请选择学员')
return null;
}
type === 'USER' ? this.setState({ openSetModal: true},()=>{this.handleClose()}) : this.addCustomer();
}} }}
okText={type === 'USER' ? '下一步' : '确定'} okText={type === 'USER' ? '下一步' : '确定'}
title={title} title={title}
...@@ -61,7 +173,7 @@ class NewChooseMembersModal extends React.Component { ...@@ -61,7 +173,7 @@ class NewChooseMembersModal extends React.Component {
enterButton={<span className="icon iconfont">&#xe832;</span>} enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
<div className='container-left-body-table'> <div className='container-left-body-table'>
<MemberTree/> <MemberTree onSelect={(record)=>{this.treeSelect(record)}}/>
</div> </div>
</div> </div>
</div> </div>
...@@ -72,12 +184,44 @@ class NewChooseMembersModal extends React.Component { ...@@ -72,12 +184,44 @@ class NewChooseMembersModal extends React.Component {
<span className={ (selectUserList.length > 0) ? 'span-right-l' : null }>清空</span> <span className={ (selectUserList.length > 0) ? 'span-right-l' : null }>清空</span>
</div> </div>
<div className='container-right-body'> <div className='container-right-body'>
<XMTable
renderEmpty={{
image: college,
description: '暂无数据'
}}
rowKey={(record) => record.enterpriseVisibleUserId}
dataSource={selectUserList}
columns={this.selectedColumnsRight()}
showHeader={false}
scroll={{ y: 375 }}
pagination={false}
size={'small'}
/>
</div> </div>
</div> </div>
</div> </div>
</Modal> </Modal>
{openSetModal &&
<SetEmployeeModal
list={selectUserList}
selectObject={selectObject}
onChange={(key, value) => {
selectObject[key] = value;
this.setState({ selectObject });
}}
onClose={() => {
this.setState({ openSetModal: true},()=>{this.handleClose()})
this.setState({ openSetModal: false, visible: true })
}}
onCancel={() => {
this.handleClose();
this.setState({ openSetModal: false });
}}
onOk={(list) => {
this.addUser(list);
}}
/>
}
</div> </div>
) )
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment