import React, { useState, useEffect } from 'react';
import { Table, Button, Form, Select, Divider, Modal, Popover, Input, Checkbox } from 'antd';
import moment from 'moment';
import router from 'umi/router';
import styles from './List.less';
import ApprovalModal from './ApprovalModal';
import DetailModal from './DetailModal';
import ExecutionModal from './ExecutionModal';
import MemberModal from './MemberModal';
import QualityOperateModal from './QualityOperateModal';
import BudgetModal from './BudgetModal';
import { connect } from 'dva';
const { Option } = Select;
//状态
const STATUS = [
{ value: 0, label: '售前' },
{ value: 1, label: '转执行' },
{ value: 2, label: '转运营' },
{ value: 3, label: '转质保' },
];
function List(props) {
const {
industryList,
typeList,
data,
flowList,
currentUser,
dispatch,
loading,
depUserTree,
member,
} = props;
const [form] = Form.useForm();
const [addVisible, setAddVisible] = useState(false);
const [detailVisible, setDetailVisible] = useState(false);
const [executionVisible, setExecutionVisible] = useState(false);
const [qualityOperateVisible, setQualityOperateVisible] = useState(false);
const [memberVisible, setMemberVisible] = useState(false);
const [budgetVisible, setBudgetVisible] = useState(false);
const [selfItems, setSelfItems] = useState(false);
const [currentItem, setCurrentItem] = useState({});
const [qualityOperate, setQualityOperate] = useState(0);
const columns = [
{
title: '项目编号',
dataIndex: 'project_full_code',
},
{
title: '项目名称',
dataIndex: 'project_name',
},
{
title: '分类',
dataIndex: 'TypeInfo',
render: TypeInfo => (TypeInfo ? `${TypeInfo.name}(${TypeInfo.code})` : '-'),
},
/*
{
title: '名称',
dataIndex: 'name',
},
{
title: '行业',
dataIndex: 'IndustryInfo',
render: IndustryInfo => `${IndustryInfo.name}(${IndustryInfo.code})`,
},
{
title: '所在地',
dataIndex: 'location',
render: (location, record) => `${location}(${record.location_code})`,
},
{
title: '期数',
dataIndex: 'version',
render: version => `${version}期`,
},
*/
{
title: '流程',
dataIndex: ['FlowInfo', 'name'],
},
{
title: '状态',
dataIndex: 'project_status',
render: project_status => {
// return project_status === 0 ? <>售前> : <>转执行>;
//若添加其他状态则启用以下switch case:
switch (project_status) {
case 0:
return <>售前>;
case 1:
return <>转执行>;
case 2:
return <>转运营>;
case 3:
return <>转质保>;
}
},
},
{
title: '节点',
dataIndex: 'NodeInfo',
render: (nodeInfo, item) => {
let statusDom;
switch (item.audit_status) {
case 0:
statusDom = '待提交';
break;
case 1:
statusDom = 审核中;
break;
case 2:
statusDom = (
审核拒绝
);
break;
case 3:
statusDom = 审核通过;
break;
}
return (
<>
{nodeInfo.node}({statusDom})
>
);
},
},
{
title: '售前项目经理',
dataIndex: 'AuthorUser',
render: AuthorUser => (AuthorUser ? AuthorUser.CName : '-'),
},
{
title: '创建时间',
dataIndex: 'c_time',
render: c_time => moment(c_time).format('YYYY.MM.DD'),
},
{
title: '执行经理',
dataIndex: 'Leader',
render: Leader => (Leader ? Leader.CName : '-'),
},
{
title: '操作',
render: record => renderEditBtns(record),
},
];
const handleSearch = () => {
const { projectName, projectCode, projectStatus } = form.getFieldsValue();
let params = {};
params.project_name = projectName;
params.project_code = projectCode?.toUpperCase();
params.project_status = projectStatus;
params.currentPage = 1;
dispatch({
type: 'approval/queryApproval',
payload: params,
});
};
const checkSelf = e => {
let checked = e.target.checked;
setCurrentItem({});
setSelfItems(checked);
dispatch({
type: 'approval/queryApproval',
payload: {
filter_type: Number(checked),
currentPage: 1,
},
});
};
const renderSearch = () => {
return (
);
};
const onOk = values => {
if (values.id) {
dispatch({
type: 'approval/updateApproval',
payload: values,
callback: () => setAddVisible(false),
});
} else {
dispatch({
type: 'approval/createApproval',
payload: values,
callback: () => setAddVisible(false),
});
}
};
const onDelete = item => {
Modal.confirm({
title: '删除',
content: '是否确认删除该项目',
okText: '删除',
okType: 'danger',
cancelText: '取消',
onOk() {
dispatch({
type: 'approval/deleteApproval',
payload: item,
});
},
});
};
const onSubmitAuth = item => {
Modal.confirm({
title: '提交审核',
content: '是否确认提交审核',
okText: '提审',
cancelText: '取消',
onOk() {
dispatch({
type: 'approval/submitAudit',
payload: {
id: item.id,
flow_id: item.flow_id,
node_id: item.node_id,
},
});
},
});
};
const queryList = page => {
dispatch({
type: 'approval/queryApproval',
payload: {
currentPage: page.current,
},
});
};
const renderEditBtns = record => {
let dividerPush = (item, list) => {
if (list.length === 0) list.push(item);
else {
list.push();
list.push(item);
}
};
let detailBtn = (
{
setCurrentItem(record);
setDetailVisible(true);
}}
>
项目详情
);
let memberBtn = (
{
setCurrentItem(record);
setMemberVisible(true);
dispatch({
type: 'approval/queryMember',
payload: { project_code_id: record.id },
});
}}
>
成员管理
);
let executionBtn = (
{
setCurrentItem(record);
setExecutionVisible(true);
}}
>
转执行
);
let editBtn = (
<>
{
setCurrentItem(record);
setAddVisible(true);
}}
>
编辑
{
onDelete(record);
}}
>
删除
{
onSubmitAuth(record);
}}
>
提交审核
>
);
let statusBtn = (
<>
{
setCurrentItem(record);
setBudgetVisible(true);
}}
>
设置人日预算
{
setCurrentItem(record);
setQualityOperateVisible(true);
setQualityOperate(0);
}}
>
转质保
{
setCurrentItem(record);
setQualityOperateVisible(true);
setQualityOperate(1);
}}
>
转运营
>
);
let { audit_status, project_status, type_id } = record;
//权限审核
let canEdit = () => {
if (currentUser.IsSuper) return true;
switch (audit_status) {
case 0:
return currentUser.ID == record.author;
case 1:
return false;
case 2:
if (project_status == 0) return currentUser.ID == record.author;
if (project_status == 1) return currentUser.ID == record.LeaderId;
return false;
case 3:
switch (project_status) {
case 0:
return currentUser.ID == record.author;
case 1:
return currentUser.ID == record.LeaderId;
case 2:
return currentUser.ID == record.LeaderId || currentUser.ID == record.opt_manager_id;
case 3:
return currentUser.ID == record.LeaderId || currentUser.ID == record.wty_manager_id;
}
return false;
}
};
let toReturn = [];
dividerPush(detailBtn, toReturn);
switch (audit_status) {
//未提交
case 0:
canEdit() && dividerPush(editBtn, toReturn);
break;
//审核中
case 1:
break;
//审核拒绝
case 2:
if (project_status == 0 && canEdit()) dividerPush(editBtn, toReturn);
else if (project_status == 1 && canEdit()) {
dividerPush(memberBtn, toReturn);
dividerPush(statusBtn, toReturn);
}
break;
//审核通过
case 3:
switch (project_status) {
//售前
case 0:
if (canEdit()) {
dividerPush(memberBtn, toReturn);
dividerPush(executionBtn, toReturn);
}
break;
//转执行
case 1:
if (canEdit()) {
dividerPush(memberBtn, toReturn);
dividerPush(statusBtn, toReturn);
}
break;
//转运营
case 2:
canEdit() && dividerPush(memberBtn, toReturn);
break;
//转质保
case 3:
canEdit() && dividerPush(memberBtn, toReturn);
break;
}
break;
}
return toReturn;
};
useEffect(() => {
dispatch({
type: 'approval/queryFlow',
});
dispatch({
type: 'approval/queryType',
});
dispatch({
type: 'approval/queryIndustry',
});
dispatch({
type: 'approval/queryApproval',
});
dispatch({
type: 'approval/fetchDepV2',
});
}, []);
return (
{renderSearch()}
只看自己
setAddVisible(false)}
/>
setDetailVisible(false)}
/>
setExecutionVisible(false)}
onClose={() => setExecutionVisible(false)}
/>
setMemberVisible(false)}
currentItem={currentItem}
dataSource={member}
/>
setQualityOperateVisible(false)}
onClose={() => setQualityOperateVisible(false)}
qualityOperate={qualityOperate}
/>
setBudgetVisible(false)}
onOk={() => setBudgetVisible(false)}
/>
);
}
export default connect(({ approval, user, loading }) => ({
data: approval.list,
typeList: approval.typeList,
flowList: approval.flowList,
industryList: approval.industryList,
currentUser: user.currentUser,
loading: loading.models.approval,
depUserTree: approval.depUserTree,
member: approval.member,
}))(List);