import React, { useEffect, useRef, useState, useMemo } from 'react';
import { connect } from 'react-redux';
import moment from 'moment'
import { Select, Input, Button, Popconfirm, Radio, Tooltip, Table, Pagination, Skeleton } from '@douyinfe/semi-ui';
import SalesMemberModal from './salesMemberModal'
import ImportSalersModal from './importSalersModal'
import { IconSearch } from '@douyinfe/semi-icons';
import { SkeletonScreen } from "$components";
import '../../style.less'
const PersonnelDistribution = (props) => {
const { dispatch, actions } = props
const { humanAffairs } = actions;
const [keywordTarget, setKeywordTarget] = useState('dep');
const [keyword, setKeyword] = useState('');//搜索内容
const [limits, setLimits] = useState()//每页实际条数
const [query, setQuery] = useState({ limit: 10, page: 0 }); //页码信息
const [modalV, setModalV] = useState(false);
const [dataToEdit, setDataToEdit] = useState(null);
const [tableData, setTableData] = useState([]);
const [importModalV, setImportModalV] = useState(false);
const page = useRef(query.page);
function seachValueChange(value) {
setKeyword(value)
}
useEffect(() => {
dispatch(humanAffairs.getMemberList())
getMemberSearchList()
}, []);
useEffect(() => {
getMemberSearchList()//查询人员列表
}, [query])
function getMemberSearchList() {
let kt = keywordTarget == 'place' ? '' : keywordTarget;
let k = keywordTarget == 'place' ? '' : keyword;
let placeSearch = keywordTarget == 'place' ? keyword : '';
dispatch(humanAffairs.getSalesList({ keywordTarget: kt, keyword: k, placeSearch, ...query })).then(r => {
if (r.success) {
setTableData(r.payload?.data?.rows);
setLimits(r.payload?.data?.count)
}
})
}
function handleRow(record, index) {// 给偶数行设置斑马纹
if (index % 2 === 0) {
return {
style: {
background: '#FAFCFF',
}
};
} else {
return {};
}
}
const closeAndFetch = () => {
setModalV(false)
getMemberSearchList();
}
const starHeader = (header) => {
return

{header}
}
const getMultis = (arrStr) => {//默认展示2个
return
{
arrStr.length ?
arrStr.map((ite, idx) => {
return (
{idx < 2 ?
{ite}
: ''
}
{
arrStr.length > 2 && idx == 2 ?
+{arrStr.length - 2}
: ''
}
)
}) : '-'
}
}
const columns = [{
title: '序号',
dataIndex: 'id',
key: 'id',
width: 60,
render: (text, record, index) => index + 1
}, {
title: starHeader('姓名'),
dataIndex: 'name',
key: 'name',
width: 80
},
{
title: starHeader('部门名称'),
dataIndex: 'department',
key: 'department',
width: 200,
render: (text, r, index) => {
let arrStr = text.map(t => t.name);
return getMultis(arrStr);
}
}, {
title: '销售区域(省/直辖市)',
dataIndex: 'provinces',
key: 'provinces',
width: 160,
render: (text, record, index) => {
return getMultis(text?.split('、') || []);
}
}, {
title: '销售区域(市)',
dataIndex: 'cities',
key: 'cities',
width: 160,
render: (text, record, index) => {
return text ? getMultis(text?.split('、') || []) : '-';
}
}, {
title: '业务线',
dataIndex: 'businessLines',
key: 'businessLines',
width: 140,
render: (text, record, index) => {
return text ? getMultis(text?.split('、') || []) : '-';
}
}, {
title: starHeader('岗位'),
dataIndex: 'post',
key: 'post',
width: 120,
render: (text, record) => {text || '-'}
}, {
title: starHeader('入职时间'),
dataIndex: 'hireDate',
key: 'hireDate',
width: 120,
render: (text, record) => {text || '-'}
}, {
title: starHeader('转正时间'),
dataIndex: 'regularDate',
key: 'regularDate',
width: 120,
render: (text, record) => {text || '-'}
}, {
title: starHeader('工龄'),
dataIndex: 'workYears',
key: 'workYears',
width: 120,
render: (_, r, index) => {
return (r.hireDate ? {String(moment(new Date()).diff(r.hireDate, 'years', true)).substring(0, 3) + '年'} : '-')
},
}, {
title: '操作',
dataIndex: 'action',
width: 120,
render: (text, record) => {
return
onEdit(record)}>编辑
confirmDelete(record.pepUserId)} style={{ width: 330 }}
> 删除
}
}];
const onEdit = (data) => {
setModalV(true);
setDataToEdit(data);
}
const confirmDelete = (pepUserId) => {
dispatch(humanAffairs.delSalesMember({ pepUserId, msg: '删除销售人员信息' })).then(res => {
if (res.success) {
getMemberSearchList();
}
});
}
const scroll = useMemo(() => ({}), []);
return (
销售人员分布
DISTRIBUTION OF SALES PERSONNEL
{
setModalV(true);
setDataToEdit(null);
}}>
新增
}
showClear
placeholder='请输入关键词搜索'
value={keyword}
style={{ width: 346 }}
onChange={seachValueChange}>
{ setImportModalV(true); }}>
导入
{/*
导出
*/}

表格中带有认证标识"

"信息的为系统基础数据,来源于项企PEP、钉钉等系统,其他数据均为导入或自定义数据
{
if (sorter.key == 'userCode') {
if (sorter.sortOrder == 'descend') {
setOrder({ orderBy: 'code', orderDirection: 'DESC' })
} else {
setOrder({ orderBy: 'code', orderDirection: 'ASC' })
}
} else if (sorter.key == 'age') {
if (sorter.sortOrder == 'descend') {
setOrder({ orderBy: 'age', orderDirection: 'DESC' })
} else {
setOrder({ orderBy: 'age', orderDirection: 'ASC' })
}
} else {
if (sorter.sortOrder == 'descend') {
setOrder({ orderBy: 'hiredate', orderDirection: 'DESC' })
} else {
setOrder({ orderBy: 'hiredate', orderDirection: 'ASC' })
}
}
}}
onRow={handleRow}
scroll={scroll}
/>
共{limits}条信息
{
setQuery({ limit: pageSize, page: currentPage - 1 });
page.current = currentPage - 1
}}
/>
{
modalV ? closeAndFetch()}
onCancel={() => setModalV(false)} /> : ''
}
{
importModalV ? {
setImportModalV(false);
getMemberSearchList();
}} /> : ''
}
)
}
function mapStateToProps(state) {
const { auth, global, SalesMemberList } = state;
return {
user: auth.user,
actions: global.actions,
salesMemberList: SalesMemberList.data
};
}
export default connect(mapStateToProps)(PersonnelDistribution);