import React, { useEffect, useState, useRef, useMemo } from 'react'; import { connect } from 'react-redux'; import { Table, Button, Pagination, Skeleton, Form, Tooltip } from '@douyinfe/semi-ui'; import { IconSearch } from '@douyinfe/semi-icons'; import { SkeletonScreen } from "$components"; import '../style.less' import { Setup } from "$components"; import moment from 'moment' import { set } from 'nprogress'; const employeeInformation = (props) => { const { dispatch, actions, history, user, loading, socket, xqMembers } = props const { humanAffairs } = actions; const form = useRef();//表单 let [archivesList, setArchivesList] = useState([]);//人员列表 let [workPlaceList, setWorkPlaceList] = useState([]);//工作地点 let [nativeList, setNativeList] = useState([]);//户籍地 const [setup, setSetup] = useState(false);//表格设置是否显现 const [setupp, setSetupp] = useState([]);//实际显示的表格列表 const [lookup, setLookup] = useState({});//搜索 const [query, setQuery] = useState({ limit: 10, page: 0 }); //页码信息 const [order, setOrder] = useState({ orderBy: 'hiredate', orderDirection: 'DESC' }); //页码信息 const [limits, setLimits] = useState()//每页实际条数 const [downloadUrl, setDownloadUrl] = useState('')//下载pdf const EMPLOYEEINFORMATION = "employeeInformation"; const page = useRef(query.page);//哪一页 const tableList = [//表格属性 { title: '基础信息', list: [ { name: "姓名", value: "userName" }, { name: "所属部门", value: "departmrnt" }, { name: "职位", value: "roleName" }, { name: "绩点", value: "point" }, { name: "证件号", value: "idNumber" }, { name: "性别", value: "gender" }, { name: "籍贯", value: "nativePlace" }, { name: "出生日期", value: "birthday" }, { name: "婚育状态", value: "marital" }, { name: "政治面貌", value: "politicsStatus" }, { name: "联系方式", value: "phoneNumber" }, { name: "工作地点", value: "workPlace" }, { name: "年龄", value: "age" }, ] }, { title: '学历信息', list: [ { name: "毕业院校", value: "graduatedFrom" }, { name: "学历", value: "educationBackground" }, { name: "专业", value: "specialty" }, { name: "毕业时间", value: "graduationDate" }, ] }, { title: '学历信息', list: [ { name: "入职时间", value: "hiredate" }, { name: "转正时间", value: "regularDate" }, { name: "转试用期时间", value: "turnProbationPeriod" }, { name: "离职日期", value: "dimissionDate" }, { name: "入职年限", value: "employmentLife" }, { name: "试用期时间", value: "probationPeriodDate" }, { name: "工作经验", value: "experienceYear" }, ] }, { title: '履历信息', list: [ { name: "历史工作经历与职务", value: "occupationalHistory" }, { name: "简历", value: "vitae" }, ] } ]; useEffect(() => { getMemberNativePlaceList()//查询籍贯列表 getMemberWorkPlaceList()//查询工作地列表 localStorage.getItem(EMPLOYEEINFORMATION) == null ? localStorage.setItem( EMPLOYEEINFORMATION, JSON.stringify(['userName', 'departmrnt', 'roleName', 'point', 'hiredate', 'age', 'phoneNumber', 'marital', 'politicsStatus', 'educationBackground', 'graduatedFrom', 'employmentLife', 'occupationalHistory']) ) : ""; attribute(); }, []) useEffect(() => { getMemberSearchList()//查询人员列表 }, [query, order]) function getMemberSearchList() {//查询人员列表 let obj = lookup if (lookup.entryTime?.length > 1) { obj.hiredateStart = moment(lookup.entryTime[0]).format('YYYY-MM-DD') obj.hiredateEnd = moment(lookup.entryTime[1]).format('YYYY-MM-DD') } else { obj.hiredateStart = '' obj.hiredateEnd = '' } dispatch(humanAffairs.getMemberList({ ...obj, ...query, ...order })).then((res) => {//查询人员列表 if (res.success) { setArchivesList(res.payload?.data?.rows) setLimits(res.payload?.data?.count) } }) } function getMemberNativePlaceList() { dispatch(humanAffairs.getMemberNativePlace()).then((res) => {//查询籍贯列表 if (res.success) { setNativeList(res.payload?.data) } }) } function getMemberWorkPlaceList() { dispatch(humanAffairs.getMemberWorkPlace()).then((res) => {//查询工作地列表 if (res.success) { setWorkPlaceList(res.payload?.data) } }) } const columns = [ { title: ( 员工编号 ), width: 200, dataIndex: "userCode", key: "userCode", sorter: (a, b) => { }, // sorter: (a, b) => a.name.length - b.name.length > 0 ? 1 : -1, render: (_, r, index) => { return (r.userCode ? r.userCode : '-'); }, }, ]; //获取表格属性设置 function attribute() { const arr = localStorage.getItem(EMPLOYEEINFORMATION) ? JSON.parse(localStorage.getItem(EMPLOYEEINFORMATION)) : []; const column = [ { title: (
姓名
), width: 100, dataIndex: "userName", key: "userName", render: (_, r, index) => { return (r.userName ? r.userName : '-'); }, }, { title: (
所属部门
), width: 200, dataIndex: "departmrnt", key: "departmrnt", render: (_, r, index) => { return (
{ r.departmrnt.map((ite, idx) => { let departmentsArr = [] for (let i = 0; i < r.departmrnt.length; i++) { departmentsArr.push(r.departmrnt[i].name) } return (
{idx == 0 ? (
{ite.name}
) : ('') } { r.departmrnt.length > 1 && idx == 1 ? (
+{r.departmrnt.length - 1}
) : ('') }
) }) }
) }, }, { title: (
职位
), width: 150, dataIndex: "roleName", key: "roleName", render: (_, r, index) => { return (
{ r.role.map((ite, idx) => { let roleArr = [] for (let i = 0; i < r.role.length; i++) { roleArr.push(r.role[i].name) } return (
{idx == 0 ? (ite.name) : ('') } { r.role.length > 1 && idx == 1 ? (
+{r.role.length - 1}
) : ('') }
) }) }
); }, }, { title: '绩点', width: 100, dataIndex: "point", key: "point", render: (_, r, index) => , }, { title: '证件号', width: 180, dataIndex: "idNumber", key: "idNumber", render: (_, r, index) => { return (r.idNumber ? r.idNumber : '-'); }, }, { title: '性别', width: 60, dataIndex: "gender", key: "gender", render: (_, r, index) => { return (r.gender ? r.gender : '-'); }, }, { title: '籍贯', width: 150, dataIndex: "nativePlace", key: "nativePlace", render: (_, r, index) => { return (r.nativePlace ? r.nativePlace : '-'); }, }, { title: '出生日期', width: 120, dataIndex: "birthday", key: "birthday", render: (_, r, index) => { return (r.birthday ? r.birthday : '-'); }, }, { title: '婚育状态', width: 100, dataIndex: "marital", key: "marital", render: (_, r, index) => { return (r.marital ? r.marital : '-'); }, }, { title: '政治面貌', width: 100, dataIndex: "politicsStatus", key: "politicsStatus", render: (_, r, index) => { return (r.politicsStatus ? r.politicsStatus : '-'); }, }, { title: '联系方式', width: 120, dataIndex: "phoneNumber", key: "phoneNumber", render: (_, r, index) => { return (r.phoneNumber ? r.phoneNumber : '-'); }, }, { title: '工作地点', width: 150, dataIndex: "workPlace", key: "workPlace", render: (_, r, index) => { return (r.workPlace ? r.workPlace : '-'); }, }, { title: '年龄', width: 100, dataIndex: "age", key: "age", sorter: (a, b) => { }, render: (_, r, index) => { return (r.birthday ? moment(new Date()).diff(r.birthday, 'years') + '岁' : '-'); }, }, { title: '毕业院校', width: 200, dataIndex: "graduatedFrom", key: "graduatedFrom", render: (_, r, index) => { return (r.graduatedFrom ? r.graduatedFrom : '-'); }, }, { title: '学历', width: 60, dataIndex: "educationBackground", key: "educationBackground", render: (_, r, index) => { return (r.educationBackground ? r.educationBackground : '-'); }, }, { title: '专业', width: 200, dataIndex: "specialty", key: "specialty", render: (_, r, index) => { return (r.specialty ? r.specialty : '-'); }, }, { title: '毕业时间', width: 120, dataIndex: "graduationDate", key: "graduationDate", render: (_, r, index) => { return (r.graduationDate ? r.graduationDate : '-'); }, }, { title: '入职时间', width: 120, dataIndex: "hiredate", key: "hiredate", sorter: (a, b) => { }, render: (_, r, index) => { return (r.hiredate ? r.hiredate : '-'); }, }, { title: '转正时间', width: 120, dataIndex: "regularDate", key: "regularDate", render: (_, r, index) => { return (r.regularDate ? r.regularDate : '-'); }, }, { title: '转试用期时间', width: 120, dataIndex: "turnProbationPeriod", key: "turnProbationPeriod", render: (_, r, index) => { return (r.turnProbationPeriod ? r.turnProbationPeriod : '-'); }, }, { title: '离职日期', width: 120, dataIndex: "dimissionDate", key: "dimissionDate", render: (_, r, index) => { return (r.dimissionDate ? r.dimissionDate : '-'); }, }, { title: '入职年限', width: 120, dataIndex: "employmentLife", key: "employmentLife", sorter: (a, b) => { }, render: (_, r, index) => { return (r.hiredate ? {String(moment(new Date()).diff(r.hiredate, 'years', true)).substring(0, 3) + '年'} : '-') }, }, { title: '试用期时间', width: 120, dataIndex: "probationPeriodDate", key: "probationPeriodDate", render: (_, r, index) => { return (r.regularDate ? moment(r.regularDate).diff(r.hiredate, 'months', true).toFixed(1) + '个月' : '-') }, }, { title: '工作经验', width: 120, dataIndex: "experienceYear", key: "experienceYear", render: (_, r, index) => { return (r.experienceYear ? r.experienceYear + '年' : '-') }, }, { title: '历史工作经历与职务', width: 200, dataIndex: "occupationalHistory", key: "occupationalHistory", render: (_, r, index) => { return (r.occupationalHistory ? (
{r.occupationalHistory}
) : '-') }, }, { title: '简历', width: 200, dataIndex: "vitae", key: "vitae", render: (_, r, index) => { return (r.vitae ? 下载 : '-') }, }, ]; for (let i = 0; i < arr.length; i++) { let colum = column.filter((item) => { return item.key === arr[i]; }); columns.splice(i + 2, 0, colum[0]); } setSetupp(columns); } function handleRow(record, index) {//斑马条纹 // 给偶数行设置斑马纹 if (index % 2 === 0) { return { style: { background: '#FAFCFF', } }; } else { return {}; } } const scroll = useMemo(() => ({}), []); return ( <>
档案中心
/
人员档案
/
员工信息
员工信息
EMPLOYEE INFORMATION
{ // console.log('values', values); }} getFormApi={(formApi) => (form.current = formApi)} >
职位 部门 编号 姓名 } field="keyword" pure showClear style={{ width: 346, marginLeft: 12, marginRight: 12 }} placeholder="请输入或选择关键词" />
全部 已婚已育 已婚 未婚 {nativeList.map((item) => { return ( {item.nativePlace} ); })} {workPlaceList.map((item) => { return ( {item.workPlace} ); })}
{ let obj = form.current.getValues() if (form.current.getValues().entryTime?.length > 1) { obj.hiredateStart = moment(form.current.getValues().entryTime[0]).format('YYYY-MM-DD') obj.hiredateEnd = moment(form.current.getValues().entryTime[1]).format('YYYY-MM-DD') } else { obj.hiredateStart = '' obj.hiredateEnd = '' } setDownloadUrl(`members/export?token=${user.token}&keywordTarget=${obj.keywordTarget ? obj.keywordTarget : ''}&keyword=${obj.keyword ? obj.keyword : ''}&marital=${obj.marital ? obj.marital : ''}&native=${obj.native ? obj.native : ''}&workPlace=${obj.workPlace ? obj.workPlace : ''}&hiredateStart=${obj.hiredateStart}&hiredateEnd=${obj.hiredateEnd}`) }}> { downloadUrl ?