import { useEffect, useRef, useState } from 'react'; import { connect } from '@umijs/max'; import type { ActionType } from '@ant-design/pro-components'; import { ProTable, ProFormSelect } from '@ant-design/pro-components'; import { Button, ConfigProvider, message, Space, Descriptions, Radio, Row, Popconfirm, Modal, Flex, InputNumber } from 'antd'; import { GetCompanyJobList, getCompanyList, GetCompanyInfo, PostJobExport, PostcompanymMultieditPulishJob, PostcompanymMultieditstatusjob, PostcompanyJobDel } from '@/apis/api'; import { Imageprefix } from '@/constants'; const selectfieldNames = { label: 'full_name', value: 'id' }; const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any) => { const actionRef = useRef(); const [list, setList] = useState([]) const [total, setTotal] = useState(0) const [page, setPage] = useState(1) const [pageSize, setPageSize] = useState(10) const [companyId, setCompanyId] = useState(0); const [expandedRowKeys, setExpandedRowKeys] = useState([]) const [openMultieditPreview, setOpenMultieditPreview] = useState(false); const [openMultieditPreview2, setOpenMultieditPreview2] = useState(false); const [ids, setIds] = useState([]) const [status, setStatus] = useState(1) const [usefuLife, setUsefuLife] = useState(1) const [disabledDate, setDisabledDate] = useState(null); const setId = (id: number) => { getId(id) } useEffect(() => { if (!openModel.openModal) { actionRef.current?.reload(); } return () => { sessionStorage.removeItem('company_info') sessionStorage.removeItem('post_company_info') sessionStorage.removeItem('vip_company_info') }; }, [openModel.openModal]) const handleTimeChange = (value) => { setUsefuLife(value) const today = new Date(); let end_date = new Date(today); end_date.setDate(today.getDate() + value); // 格式化日期为 YYYY-MM-DD const formatDate = (date: Date): string => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }; const formattedEndDate = formatDate(end_date); setDisabledDate(formattedEndDate); console.log(formattedEndDate); }; return ( <> { setIds(selectedRowKeys) return ( 已选 {selectedRowKeys.length} 项 取消选择 ); }} tableAlertOptionRender={({ onCleanSelected, }) => { return ( , , , ); }} rowSelection={{ type: 'checkbox' }} columns={[ { title: '筛选日期', dataIndex: 'date_range', hidden: true, valueType: 'dateRange', }, { title: 'ID', dataIndex: 'id', width: 200 }, { title: '所属企业', dataIndex: 'full_name', width: 200, valueType: 'select', renderFormItem: () => { return ( getCompanyList({ page: 1, pagesize: 100, keyword: keyword.keyWords }).then(res => { return res.data.list; }) } placeholder="请选择所属企业" onChange={(value) => { setCompanyId(value) GetCompanyInfo({ id: value }).then(res => { sessionStorage.setItem('post_company_info', JSON.stringify(res.data)) }) }} /> ) } }, { title: '职位名称', dataIndex: 'name', width: 200 }, { title: '点击次数', dataIndex: 'click_count', width: 200, search: false, }, { title: '职位状态', dataIndex: 'status', width: 200, colSize: 16, valueType: 'radio', initialValue: '0', valueEnum: { 0: { text: '全部' }, 1: { text: '发布中', status: 'Processing' }, 2: { text: '未发布', status: 'Error' }, 3: { text: '暂停', status: 'Error' }, 4: { text: '已锁定', status: 'Error' }, 5: { text: '回收站', status: 'Error' }, 6: { text: '已过期', status: 'Error' } }, }, { title: '有效期(天)', dataIndex: 'useful_life', width: 200, search: false, }, { title: '发布时间', dataIndex: 'publish_date', width: 200, search: false, }, { title: '到期时间', dataIndex: 'disabled_date', width: 200, search: false, }, { title: '操作', key: 'option', valueType: 'option', width: 200, render: (_, record, action) => [ , { PostcompanyJobDel({ id: record.id }).then(res => { message.success('删除成功') actionRef.current?.reload(); }) }} okText="删除" cancelText="取消" > , ], }, ]} rowKey="id" pagination={{ current: page, pageSize: pageSize, showSizeChanger: true, total: total, pageSizeOptions: [9, 18, 27, 99], onChange(page, pageSize) { setPage(page) setPageSize(pageSize) }, onShowSizeChange(current, size) { setPage(current) setPageSize(size) } }} request={async (params = {} as Record) => GetCompanyJobList({ page: page, pagesize: pageSize, sort: 'id', sortby: 'desc', keyword: params.name, expired: params.expired, status: params.status ? params.status : 0, company_id: sessionStorage.getItem('post_company_info') ? JSON.parse(sessionStorage.getItem('post_company_info')).id : companyId, start_date: params.date_range ? params.date_range[0] : '', end_date: params.date_range ? params.date_range[1] : '', }).then(res => { setList(res.data.rows) setTotal(res.data.total) }) } onReset={() => { if (sessionStorage.getItem('post_company_info')) { sessionStorage.removeItem('post_company_info') } setCompanyId(0) actionRef.current?.reload(); }} headerTitle="职位列表" toolBarRender={() => [ , ]} /> { setOpenMultieditPreview(false) }} onOk={() => { if (usefuLife && disabledDate && status) { PostcompanymMultieditPulishJob({ id: ids, useful_life: usefuLife, disabled_date: disabledDate, status: status }).then(res => { setOpenMultieditPreview(false) actionRef.current?.clearSelected(); actionRef.current?.reload(); }) } else { message.error('请完成表单') return false } } } >

状态:

{ setStatus(e.target.value) }}> 发布中 未发布 暂停 已锁定 回收站 已过期

职位有效天数:

{ handleTimeChange(value) }} style={{ width: '100%' }} />
{ setOpenMultieditPreview2(false) }} onOk={() => { if (status) { PostcompanymMultieditstatusjob({ id: ids, status: status }).then(res => { setOpenMultieditPreview2(false) actionRef.current?.clearSelected(); actionRef.current?.reload(); }) } else { message.error('请完成表单') return false } } } >

状态:

{ setStatus(e.target.value) }}> 发布中 未发布 暂停 已锁定 回收站 已过期
); }; export default connect(({ dictModel, openModel }: any) => ({ dictModel, openModel }))(PagesMainCompanyPostTable);