import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react';
import BasicCrudModal from '../../../../components/crud/BasicCrudModal';
import { Table, Card, Modal, Form, Input, Button, Row,Col, Popconfirm, message, Tabs,Dropdown,Space } from 'antd';
import {FileWordOutlined,FilePdfOutlined,DownOutlined } from '@ant-design/icons';
import { useSelector } from 'react-redux';
import ToolBar from './toolbar';
import ModalForm from './form';
import apiurl from '../../../../service/apiurl';
import usePageTable from '../../../../components/crud/usePageTable2';
import { createCrudService } from '../../../../components/crud/_';
import KhResultModal from './khResultModal';
import PfDetail from "./PfDetail"
import { httpget2 } from '../../../../utils/request';
import "./index.less"
const Page = () => {
const role = useSelector(state => state.auth.role);
const qd = role?.rule?.find(item => item.menuName == "清单");
const khLevel = {
1: "优秀",
2: "良好",
3: "合格",
}
const khStatus = {
0: "未启动",
1: "评分中",
2: "已完成",
9:"评分中"
}
const expandedRowRender = (record) => {
const columns = [
{
title: '考核对象',
dataIndex: 'objectUserName',
key: 'objectUserName',
align: "center",
width: 200,
},
{
title: '标准得分',
dataIndex: 'standardScore',
align:"center",
key: 'standardScore',
width:200
},
{
title: '考核得分',
dataIndex: 'assessScore',
align:"center",
key: 'assessScore',
width:200
},
{
title: '考核等级',
dataIndex: 'assessLevel',
align:"center",
key: 'assessLevel',
width: 200,
render: (value) => {khLevel[value]}
},{
title: '考核记录状态',
dataIndex: 'status',
align:"center",
key: 'status',
width: 200,
render: (value) => {khStatus[value]}
},
{
title: '操作',
dataIndex: 'operator',
align:"center",
key: 'operator',
width: 200,
render: (value, row) => (
<>
{(row.status == 1 || row.status == 9 ) && tabs !=2 ? handlePf(row,record)}>评分 : null}
{(row.status == 2 || tabs ==2) ? viewPf(row,record)}>查看评分详情 : null}
>
)
},
];
return
;
};
const taskStatus = {
0: '未启动',
1: '评分中',
2: '审核中',
3: '已审核',
4: '已作废',
}
const [dropItem, setDropItem] = useState({})
const refModal = useRef();
const [searchVal, setSearchVal] = useState({})
const columns = [
{ title: '', key: '', dataIndex: '', width: 0, align: "center" },
{ title: '考核任务名称', key: 'taskName', dataIndex: 'taskName', width: 200, },
{
title: '考核频次', key: 'taskFreq', dataIndex: 'taskFreq', width: 200,
render: (value) => {value == 1? '年度' : value == 2 ? "季度": value == 3 ? "月度" : ''}
},
{
title: '考核时间', key: 'time', dataIndex: 'time', width: 200,
render: (value, record) => {(record?.startDate || record?.startDate?.endDate)
? record?.startDate + '-' + record?.endDate : '' }
},
{
title: '考核任务状态', key: 'status', dataIndex: 'status', width: 200,align: 'center',
render: (value) => {taskStatus[value] || ''}
},
{title: '创建人', key: 'createUserName', dataIndex: 'createUserName', width: 100},
{
title: '操作', key: 'operation', width: 300,align: 'center',
render: (v,r) => (
{
tabs == 2 ?
<>
{r.status == 0 ? command("edit")(r)}>编辑 : null}
command("view")(r)}>查看
{r.status == 0 ? command("del")(r)}>删除 : null}
{r.status == 0 ? startPf(r)}>
: null}
{r.status == 1 ? pause(r)}>
: null}
{r.status == 2 ?
<>
khResult(r)}>考核结果
pass(r)}>
{refuse(r)}}>
},
{
key: '2',
label: {pause(r)}}>
,
},]
}}
trigger={['click']}
>
{ e.preventDefault(); setDropItem(r)}}>
更多
> : r.status == 3 ? khResult(r)}>考核结果 : null
}
> : command("view")({...r,tabs})}>查看
}
)
},
];
const [tabs, setTabsChange] = useState(0)
const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
// 开始评分
const [pfOpen, setPfOpen] = useState(false)
const [pfItem, setPfItem] = useState({})
const [pfItem1, setPfItem1] = useState({})
const handlePf = (column,record) => {
setPfOpen(true);
setPfItem(record);
setPfItem1({...column,type:"start"});
}
// 启动评分
const startPf = async (params) => {
try {
const res = await httpget2(apiurl.rcgl.jdkh.khrwgl.start + `/${params.id}`)
if (res.code == 200) {
message.success('启动成功')
refresh()
}
} catch (error) {
console.log(error);
}
}
// 评分详情
const viewPf = (row, record) => {
setPfOpen(true);
setPfItem({ ...record,view:1 });
setPfItem1({ ...row,view:1,tabs });
}
// 作废
const pause = async (params) => {
try {
const res = await httpget2(apiurl.rcgl.jdkh.khrwgl.pause + `/${params.id}`)
if (res.code == 200) {
message.success('作废成功')
refresh()
}
} catch (error) {
console.log(error);
}
}
// 驳回评分
const refuse = async (params) => {
try {
const res = await httpget2(apiurl.rcgl.jdkh.khrwgl.refuse + `/${params.id}`)
if (res.code == 200) {
message.success('驳回评分成功')
refresh()
}
} catch (error) {
console.log(error);
}
}
// 审核通过
const pass = async (params) => {
try {
const res = await httpget2(apiurl.rcgl.jdkh.khrwgl.pass + `/${params.id}`)
if (res.code == 200) {
message.success('审核通过成功')
refresh()
}
} catch (error) {
console.log(error);
}
}
// 考核结果
const [khResultOpen, setKhResultOpen] = useState(false)
const [khResultItem, setKhResultItem] = useState({})
const khResult = (row) => {
setKhResultOpen(true)
setKhResultItem(row)
}
const command = (type) => (params) => {
if (type === 'save') {
refModal.current.showSave();
} else if (type === 'edit') {
refModal.current.showEdit({ ...params });
} else if (type === 'view') {
refModal.current.showView(params);
} else if (type === 'del') {
refModal.current.onDeleteGet(apiurl.rcgl.jdkh.khrwgl.delete + `/${params.id}`);
}
}
// 任务清单
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.rcgl.jdkh.khrwgl.taskPage).find_noCode);
// 待办
const { tableProps: tableProps1, search: search1,refresh:refresh1 } = usePageTable(createCrudService(apiurl.rcgl.jdkh.khrwgl.todoPage).find_noCode);
// 已办
const { tableProps:tableProps2, search:search2,refresh:refresh2 } = usePageTable(createCrudService(apiurl.rcgl.jdkh.khrwgl.myDonePage).find_noCode);
/**
* @description 处理成功的回调
*/
const successCallback = () => {
refresh()
setTabsChange(2)
}
//移入某一行禁用
const rowClassName = (record) => {
return record.status == 4 ? 'disabled-row' : '';
};
useEffect(() => {
const userId = localStorage.getItem("userId");
if (searchVal) {
const params = {
search: {
...searchVal,
userId: tabs != 2 ? userId :undefined
}
};
if (tabs == 0) {
search1(params)
} else if (tabs == 1) {
search2(params)
} else {
search(params)
}
}
}, [searchVal,tabs])
return (
<>
setTabsChange(e)}
activeKey={tabs}
items={[
{
label: `我的待办评分任务`,
key: 0,
children:
},
{
label: `我的已办评分任务`,
key: 1,
children:
},
qd && {
label: `考核任务清单`,
key: 2,
children:
}
]}
>
{refresh({addvcd:localStorage.getItem('ADCD6')})}}
/>
{/* 评分弹框 */}
setPfOpen(false)}
>
setPfOpen(false)}
tabs={tabs}
/>
{/* 考核结果 */}
setKhResultOpen(false)}
>
>
);
}
export default Page;