Commit 306a9e02 by zhangleyuan

feat:处理学员的删除

parent cd5f3152
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: wufan * @Author: wufan
* @Date: 2020-11-25 18:25:02 * @Date: 2020-11-25 18:25:02
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-28 15:59:30 * @LastEditTime: 2021-07-29 19:57:16
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -93,6 +93,12 @@ export function editDepartment(params: object) { ...@@ -93,6 +93,12 @@ export function editDepartment(params: object) {
export function delDepartment(params: object) { export function delDepartment(params: object) {
return Service.Hades("public/hades/delDepartment", params); return Service.Hades("public/hades/delDepartment", params);
} }
export function queryDepartmentTree(params: object) {
return Service.Hades("public/hades/queryDepartmentTree", params);
}
export function getStoreCustomerAndDepNamePage(params: object) {
return Service.Hades("public/hades/getStoreCustomerAndDepNamePage", params);
}
export function delDepartmentUser(params: object) {
return Service.Hades("public/hades/delDepartmentUser", params);
}
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: zhangleyuan * @Author: zhangleyuan
* @Date: 2021-01-19 11:27:56 * @Date: 2021-01-19 11:27:56
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-28 18:07:31 * @LastEditTime: 2021-07-29 13:37:10
* @Description: 描述一下 * @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -32,7 +32,7 @@ export const childIndustryList = { ...@@ -32,7 +32,7 @@ export const childIndustryList = {
"其他行业":["科学研究和技术服务业","社会组织","水利和环境管理","国际组织","其他"] "其他行业":["科学研究和技术服务业","社会组织","水利和环境管理","国际组织","其他"]
} }
export const DepType = { export const DepType = {
'departMentTab':'DEP_CHAT', 'departMentTab':'DEP_ORG',
'postGrouptab':'DEP_POST', 'postGrouptab':'DEP_POST',
'customGroupTab':'DEP_CUSTOM' 'customGroupTab':'DEP_CUSTOM'
} }
\ No newline at end of file
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
* @Author: wufan * @Author: wufan
* @Date: 2020-11-25 18:25:02 * @Date: 2020-11-25 18:25:02
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-27 15:09:12 * @LastEditTime: 2021-07-29 19:57:52
* @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,getByDepartmentId,getDepartmentUser,getDepartmentUserNotPage,addDepartment, moveBannerSequence,getStoreUserBasicPage,updateStoreMessage,getStoreDetail,getByDepartmentId,getDepartmentUser,getDepartmentUserNotPage,addDepartment,
editDepartment,delDepartment editDepartment,delDepartment,queryDepartmentTree,getStoreCustomerAndDepNamePage,delDepartmentUser
} from '@/data-source/store/request-apis'; } from '@/data-source/store/request-apis';
export default class StoreService { export default class StoreService {
...@@ -109,4 +109,13 @@ export default class StoreService { ...@@ -109,4 +109,13 @@ export default class StoreService {
static delDepartment(params:any){ static delDepartment(params:any){
return delDepartment(params); return delDepartment(params);
} }
static queryDepartmentTree(params:any){
return queryDepartmentTree(params);
}
static getStoreCustomerAndDepNamePage(params:any){
return getStoreCustomerAndDepNamePage(params);
}
static delDepartmentUser(params:any){
return delDepartmentUser(params);
}
} }
\ No newline at end of file
...@@ -410,6 +410,7 @@ function EmployeeManage() { ...@@ -410,6 +410,7 @@ function EmployeeManage() {
{model} {model}
{ employeeModal && { employeeModal &&
<NewChooseMembersModal <NewChooseMembersModal
treeDepType="DEP_CHAT"
visible={employeeModal} visible={employeeModal}
type="USER" type="USER"
close={()=>{setEmployeeModal(false)}} close={()=>{setEmployeeModal(false)}}
......
...@@ -23,5 +23,11 @@ ...@@ -23,5 +23,11 @@
color:#5289FA; color:#5289FA;
} }
} }
.operate{
.operate__item{
color:#2966FF;
cursor: pointer;
}
}
} }
} }
\ No newline at end of file
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,Button,Modal,message} from "antd"; import { Tree, Input, Dropdown, Menu,Button,Modal,message,AutoComplete} from "antd";
import AddOrEditPostGroupModal from "../modal/AddOrEditPostGroupModal"; import AddOrEditPostGroupModal from "../modal/AddOrEditPostGroupModal";
import User from '@/common/js/user' import User from '@/common/js/user'
import StoreService from "@/domains/store-domain/storeService"; import StoreService from "@/domains/store-domain/storeService";
import { DepType } from '@/domains/store-domain/constants'; import { DepType } from '@/domains/store-domain/constants';
import Bus from '@/core/bus';
import "./LeftStructureTree.less"; import "./LeftStructureTree.less";
const { Search } = Input; const { Search } = Input;
...@@ -19,26 +20,142 @@ function LeftStructureTree(props) { ...@@ -19,26 +20,142 @@ function LeftStructureTree(props) {
const [postGroupModalLable,setPostGroupModalLable] = useState(""); const [postGroupModalLable,setPostGroupModalLable] = useState("");
const [postGroupName, setPostGroupName] = useState(""); const [postGroupName, setPostGroupName] = useState("");
const [currentGroupData,setCurrentGroupData] = useState({}); const [currentGroupData,setCurrentGroupData] = useState({});
useEffect(()=>{ const [selectUserParams,setSelectUserParams] = useState({});
getTreeData(); const [completeOptions,setCompleteOption] =useState([]);
},[props.treeType]);
function getTreeData(){ const renderTitle = (title) => (
<span>
{title}
</span>
);
const renderItem = (record,type) => ({
value: record.userName || record.name,
label: (
<div
style={{
display: 'flex',
justifyContent: 'space-between',
}}
>
{type === 'user'?
<div>{record.userName}</div>
:
<div>{record.name}</div>
}
{type === 'user' &&
record.postDepNamesList.map((item,index)=>{
return <span>{item}</span>
})
}
</div>
),
});
const notFoundContentNode = ()=>{
return <span>暂无数据</span>
}
const Complete = () => (
<AutoComplete
dropdownClassName="certain-category-search-dropdown"
dropdownMatchSelectWidth={250}
allowClear
onChange={getCompleteOptionData}
notFoundContent={notFoundContentNode()}
style={{
width: 250,
}}
options={completeOptions}
>
<Input size="large" placeholder="搜索部门/学员姓名" />
</AutoComplete>
);
function getCompleteOptionData(value){
const params = { const params = {
depType:DepType[treeType], depType:DepType[treeType],
queryName:value,
enterpriseId:User.getEnterpriseId(), enterpriseId:User.getEnterpriseId(),
source:0,//0代表来自企培 source:0,//0代表来自企培
storeId:User.getStoreId(), storeId:User.getStoreId(),
userId:User.getUserId(), userId:User.getUserId(),
whetherCount:true whetherCount:false
} }
StoreService.getDepartmentUser(params).then((res) => { StoreService.getDepartmentUser(params).then((res) => {
let { departmentVOList=[]} = res.result; const _completeOptions = [];
let _treeData = handleData(departmentVOList); const userObj = {};
console.log("_treeData",_treeData); const departmentGroupObj = {};
setTreeData(_treeData); const postobj = {};
const {departmentUserVOList,departmentVOList} = res.result;
if(departmentUserVOList.records.length>0){
userObj.label=renderTitle('员工');
userObj.options=departmentUserVOList.records.map((item,index)=>{
return renderItem(item,'user');
})
}
if(departmentVOList.length>0){
switch (treeType){
case 'departMentTab':
departmentGroupObj.label=renderTitle('部门');
break;
case 'postGrouptab':
departmentGroupObj.label=renderTitle('岗位组');
break;
case 'customGroupTab':
departmentGroupObj.label=renderTitle('自定义分组集合');
break;
default:
break;
}
departmentGroupObj.options=departmentVOList.map((item,index)=>{
return renderItem(item,'group');
})
}
if(Object.keys(userObj).length !==0){
_completeOptions.push(userObj);
}
if(Object.keys(departmentGroupObj).length !==0){
_completeOptions.push(departmentGroupObj);
}
console.log('_completeOptions',_completeOptions);
// setCompleteOption(_completeOptions);
}); });
} }
useEffect(()=>{
getTreeData();
},[props.treeType]);
useEffect(()=>{
Bus.bind("addCustomer",addCustomer)
},[]);
async function addCustomer(){
await getTreeData();
props.searchUserList(setSelectUserParams)
}
function getTreeData(){
return new Promise((resolve,reject)=>{
const params = {
departmentTypeEnum:DepType[treeType],
enterpriseId:User.getEnterpriseId(),
source:0,//0代表来自企培
storeId:User.getStoreId(),
userId:User.getUserId(),
whetherCount:true
}
StoreService.queryDepartmentTree(params).then((res) => {
// let { departmentVOList=[]} = res.result;
let _treeData = handleData(res.result);
setTreeData(_treeData);
resolve();
});
})
}
function handleData(dataArray){ function handleData(dataArray){
const _dataArray = dataArray.map((item,index)=>{ const _dataArray = dataArray.map((item,index)=>{
item.key=item.id; item.key=item.id;
...@@ -214,20 +331,22 @@ function LeftStructureTree(props) { ...@@ -214,20 +331,22 @@ function LeftStructureTree(props) {
getTreeData() getTreeData()
} }
function selectUserList(){ function selectUserList(record,e){
props.searchUserList() console.log('e',e);
props.searchUserList(e.selectedNodes[0]);
} }
return ( return (
<div className="left-structure-tree"> <div className="left-structure-tree">
<div className="organization"> <div className="organization">
<div className="search-con"> <div className="search-con">
<Search {/* <Search
placeholder="搜索部门/学员姓名" placeholder="搜索部门/学员姓名"
className="search search-input" className="search search-input"
style={{ width: 245 }} style={{ width: 245 }}
enterButton={<span className="icon iconfont">&#xe832;</span>} enterButton={<span className="icon iconfont">&#xe832;</span>}
/> /> */}
<Complete/>
</div> </div>
{ (treeType==='postGrouptab' || treeType=== 'customGroupTab') && ( { (treeType==='postGrouptab' || treeType=== 'customGroupTab') && (
<div className="operate"> <div className="operate">
......
...@@ -14,7 +14,7 @@ function MemberTree(props) { ...@@ -14,7 +14,7 @@ function MemberTree(props) {
},[]); },[]);
function getTreeData(){ function getTreeData(){
const params = { const params = {
depType:props.depType || 'DEP_CHAT', depType:props.treeDepType,
enterpriseId:User.getEnterpriseId(), enterpriseId:User.getEnterpriseId(),
source:0,//0代表来自企培 source:0,//0代表来自企培
storeId:User.getStoreId(), storeId:User.getStoreId(),
...@@ -66,7 +66,7 @@ function MemberTree(props) { ...@@ -66,7 +66,7 @@ function MemberTree(props) {
checkable checkable
showIcon={false} showIcon={false}
treeData={treeData} treeData={treeData}
checkedKeys={_.pluck(props.selectUserList, 'id')} // checkedKeys={_.pluck(props.selectUserList, 'id')}
onCheck={(selectedKeys,e)=>treeSelected(selectedKeys,e)} onCheck={(selectedKeys,e)=>treeSelected(selectedKeys,e)}
titleRender={(nodeData) => { titleRender={(nodeData) => {
return ( return (
......
...@@ -101,25 +101,26 @@ class NewChooseMembersModal extends React.Component { ...@@ -101,25 +101,26 @@ class NewChooseMembersModal extends React.Component {
addCustomer = () => { addCustomer = () => {
const { selectUserList } = this.state; const { selectUserList } = this.state;
const { depType } = this.props; const { addDepType } = this.props;
let enterpriseUserList = []; // 保存新加进去的成员 let enterpriseUserList = []; // 保存新加进去的成员
enterpriseUserList = selectUserList.map((item) => { enterpriseUserList = selectUserList.map((item) => {
const _item = {} const _item = {}
if(depType==='DEP_CHAT'){ if(addDepType==='DEP_ORG'){
_item.depUserType = 'VISIBLE_USER'; _item.depUserType = 'VISIBLE_USER';
}else{ }else{
_item.depUserType = 'STORE_USER'; _item.depUserType = 'STORE_USER';
} }
_item.departmentId = item.depId; _item.departmentId = item.departmentId;
_item.enterpriseVisibleUserId = item.userId; _item.enterpriseVisibleUserId = item.userId;
return _item return _item
}) })
const _params = { const _params = {
storeId: User.getStoreId(), storeId: User.getStoreId(),
depType:depType, depType:addDepType,
enterpriseUserList, userAndDepartmentList:enterpriseUserList
} }
Service.Hades('public/hades/addBatchUserAndDepartmentStoreCustomer', _params).then((res) => { Service.Hades('public/hades/addBatchUserAndDepartmentStoreCustomer', _params).then((res) => {
this.handleClose();
this.props.onConfirm(); this.props.onConfirm();
}) })
} }
...@@ -148,7 +149,7 @@ class NewChooseMembersModal extends React.Component { ...@@ -148,7 +149,7 @@ class NewChooseMembersModal extends React.Component {
} }
render() { render() {
const {type,depType} = this.props; const {type,treeDepType} = this.props;
const {selectUserList,selectObject,visible,openSetModal} = this.state; const {selectUserList,selectObject,visible,openSetModal} = this.state;
const title = type === 'USER' ? '添加员工' : '添加学员'; const title = type === 'USER' ? '添加员工' : '添加学员';
return ( return (
...@@ -184,7 +185,7 @@ class NewChooseMembersModal extends React.Component { ...@@ -184,7 +185,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 depType={depType} onSelect={(record)=>{this.treeSelect(record)}} selectUserList={selectUserList}/> <MemberTree treeDepType={treeDepType} onSelect={(record)=>{this.treeSelect(record)}} selectUserList={selectUserList}/>
</div> </div>
</div> </div>
</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