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);