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',