diff --git a/web/client/src/sections/humanAffairs/containers/communication/employeeCommunication.jsx b/web/client/src/sections/humanAffairs/containers/communication/employeeCommunication.jsx
new file mode 100644
index 0000000..6c94ea3
--- /dev/null
+++ b/web/client/src/sections/humanAffairs/containers/communication/employeeCommunication.jsx
@@ -0,0 +1,345 @@
+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 EmployeeCommunication = (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 (
+
+
员工关系
+
/
+
员工沟通
+
/
+
员工沟通统计
+
+
+
+
+
+
员工沟通统计
+
EMPLOYEE COMMUNICATION
+
+
+ {/*
+
+
+
{
+ setModalV(true);
+ setDataToEdit(null);
+ }}>
+ 新增
+
+
+
+
+
+ }
+ showClear
+ placeholder='请输入关键词搜索'
+ value={keyword}
+ style={{ width: 346 }}
+ onChange={seachValueChange}>
+
+
+
+
+
+
+
+
+
+ 表格中带有认证标识"
+
+ "信息的为系统基础数据,来源于项企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,
+ };
+}
+
+export default connect(mapStateToProps)(EmployeeCommunication);
\ No newline at end of file
diff --git a/web/client/src/sections/humanAffairs/containers/index.js b/web/client/src/sections/humanAffairs/containers/index.js
index 81893ae..a9e9ae4 100644
--- a/web/client/src/sections/humanAffairs/containers/index.js
+++ b/web/client/src/sections/humanAffairs/containers/index.js
@@ -7,6 +7,7 @@ import DeptArchives from './deptArchives';
import AttendanceStatistics from './attendanceStatistics';
import LeaveStatistics from './leaveStatistics';
import OvertimeStatistics from './overtimeStatistics';
+import EmployeeCommunication from './communication/employeeCommunication';
//招聘
import AppointmentRecords from './appointmentRecords';
import PersonnelDistribution from './salersDistribution/personnelDistribution';
@@ -43,4 +44,5 @@ export {
EmployeeAuth, FormMaintenance,
PersonnelFilesDetail,
PersonalTrainRecord,
+ EmployeeCommunication
};
\ No newline at end of file
diff --git a/web/client/src/sections/humanAffairs/nav-item.jsx b/web/client/src/sections/humanAffairs/nav-item.jsx
index b750bce..c359b66 100644
--- a/web/client/src/sections/humanAffairs/nav-item.jsx
+++ b/web/client/src/sections/humanAffairs/nav-item.jsx
@@ -38,6 +38,14 @@ export function getNavItem(user, dispatch) {
}, {
itemKey: 'overtimeStatistics', to: '/humanAffairs/employeeRelationship/leaveManagement/overtimeStatistics', text: '加班统计'
}]
+ }, {
+ itemKey: 'communication',
+ text: '员工沟通',
+ icon: ,
+ to: '/humanAffairs/employeeRelationship/communication/employeeCommunication',
+ items: [{
+ itemKey: 'employeeCommunication', to: '/humanAffairs/employeeRelationship/communication/employeeCommunication', text: '员工沟通统计'
+ }]
}, {
itemKey: 'recruitRecord',
text: '招聘记录',
diff --git a/web/client/src/sections/humanAffairs/routes.js b/web/client/src/sections/humanAffairs/routes.js
index 4d7a8c0..8887c81 100644
--- a/web/client/src/sections/humanAffairs/routes.js
+++ b/web/client/src/sections/humanAffairs/routes.js
@@ -10,7 +10,8 @@ import {
EmployeeAuth, FormMaintenance,
PersonnelFilesDetail,
PersonalTrainRecord,
- DepartmentTrainRecord
+ DepartmentTrainRecord,
+ EmployeeCommunication
} from './containers';
export default [{
@@ -76,6 +77,16 @@ export default [{
component: OvertimeStatistics,
breadcrumb: '加班统计',
}]
+ }, {
+ path: '/communication',
+ key: 'communication',
+ breadcrumb: '员工沟通',
+ childRoutes: [{
+ path: '/employeeCommunication',
+ key: 'employeeCommunication',
+ component: EmployeeCommunication,
+ breadcrumb: '员工沟通统计',
+ }]
}]
}, {
path: '/recruit',