import type { CurrentUser } from "umi"; import { connect } from "umi"; import type { ConnectState } from "@/models/connect"; import type { ActionType } from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table"; import React, { useEffect, useRef, useState } from "react"; import type { FormInstance } from "antd"; import { Button, Drawer, message, Space, Image, Popconfirm, Upload } from "antd"; import './style.less' import ProForm, { ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadButton, ProFormTreeSelect } from "@ant-design/pro-form"; import { handleApplyBIDProinst, handleGetApproveBIDProinst, handleGetBUSINESSAPPROVALDetail, handleGetBusinessProcessList, handleGetRejectBIDProinst, handleGetSupplierDDL, handleGetWAREHOUSEList, handleGetWAREHOUSETree, handleSynchroBUSINESSAPPROVAL } from "@/pages/market/marketResearch/service"; import { getServerpartTree } from "@/services/options"; import moment from "moment/moment"; import { deletePicture, GetPictureList, handleUploadPicture } from "@/pages/supplier/inspectionReport/service"; import fileIcon from '@/assets/fileIcon.svg' import LoadingBox from "@/pages/reports/Finance/businessAnalysis/components/loading"; import { handleGetAPPROVALROUTEDetail } from "@/pages/reports/revenueConfirmation/components/service"; import { handleGetBIZPSPLITMONTHDetail } from "@/pages/examine/monthSettlement/service"; import { handleGetAPPROVALROUTEList } from "@/pages/Setting/serviceConfig/service"; import { handleGetGetBUSINESSAPPROVALDetail } from "@/pages/reports/ShopExpenseDetail/service"; import ReviewProcess from "@/pages/reports/revenueConfirmation/components/ReviewProcess"; const marketResearch: React.FC<{ currentUser: CurrentUser }> = (props) => { const { currentUser } = props const actionRef = useRef(); const formRef = useRef(); const detailFormRef = useRef(); // 上传附件的抽屉 const [showDrawer, setShowDrawer] = useState(false) // 选择的行数据 const [currentRow, setCurrentRow] = useState() // 附件列表 const [fileList, setFileList] = useState() // 附件列表的加载效果 const [fileListLoading, setFileListLoading] = useState(false) // 服务区 管理处的选择列表 const [serviceSelectList, setServiceSelectList] = useState() const [managerSelectList, setManagerSelectList] = useState() // 是否显示审批人选择框 const [showSelectPerson, setShowSelectPerson] = useState(false) // 选择的服务区 const [selectServerpart, setSelectServerpart] = useState() // 选择的管理处 const [selectManagerId, setSelectManagerId] = useState() const [getType, setGetType] = useState(0) // 3为查看详情 const [proinstRow, setProinstRow] = useState() const [showDescModal, setShowDescModal] = useState(false) // 流程状态 const [isMerchantState, setIsMerchantState] = useState('') // 审批人数组 const [APPROVALSTAFFIDList, setAPPROVALSTAFFIDList] = useState() // 判断是否有驳回状态, 有驳回按照驳回的走 没驳回直接1000的驳回 const [handleHaveReject, setHandleHaveReject] = useState(false) // 审批环节数组 const [stateList, setStateList] = useState() // 显示审核流程抽屉 const [showReviewProcess, setShowReviewProcess] = useState(false) const columns: any = [ { title: '业务名称', dataIndex: 'BusinessProcess_Name', width: 250, ellipsis: true, render: (_, record) => { return { const data = await handleGetBUSINESSAPPROVALDetail({ BUSINESSAPPROVALId: record?.BusinessApproval_ID }) setGetType(3) setProinstRow(record) const res = data if (res.SERVERPART_IDS && res.SERVERPART_IDS.indexOf(',') !== -1) { const [serverid, managerid] = res.SERVERPART_IDS.split(',') res.Serverpart_ID = Number(serverid) res.managerId = Number(managerid) } setCurrentRow({ ...record, ...res, APPROVALSTAFF_ID: `${res.APPOVED_NAME}-${res.APPOVED_IDS}`, BusinessApprovalId: record?.BusinessApproval_ID }) console.log('CurrentRow', { ...record, ...res, }) setShowDrawer(true) }}>{record?.BusinessProcess_Name} } }, { title: '审批环节', dataIndex: 'BusinessProcess_State', valueType: 'select', width: 150, ellipsis: true, request: async () => { const req: any = { SearchParameter: { APPROVALROUTE_VALID: 1, OPERATION_TYPES: 13 }, PageIndex: 1, PageSize: 999999 } const data = await handleGetAPPROVALROUTEList(req) console.log('data', data) if (data && data.length > 0) { const list: any = [] let merchantState: string = '' data.forEach((item: any) => { if (item.USER_PATTERN === 2000) { if (merchantState) { merchantState += `,${item.APPROVALROUTE_STATE}` } else { merchantState = item.APPROVALROUTE_STATE } } list.push({ label: item.APPROVALROUTE_NAME, value: item.APPROVALROUTE_STATE }) }) setIsMerchantState(merchantState) setStateList(list) return list } return [] } }, { title: '统计时间', dataIndex: 'search_date', valueType: 'dateRange', hideInTable: true, hideInDescriptions: true, search: { transform: (value) => { return { StartDate: value[0], EndDate: value[1], }; }, }, fieldProps: { disabledDate: (current: any) => current && current > moment().endOf('day') } }, { title: '服务区名称', dataIndex: 'Serverpart_Name', width: 130, ellipsis: true, hideInSearch: true, render: (_, record) => { return record?.Serverpart_Name ? record?.Serverpart_Name.split(',')[0] : '' } }, { title: '管理处名称', dataIndex: '管理处名称', width: 130, ellipsis: true, hideInSearch: true, render: (_, record) => { return record?.Serverpart_Name ? record?.Serverpart_Name.split(',')[1] : '' } }, { title: '备注说明', dataIndex: 'BusinessProcess_Desc', width: 300, ellipsis: true, hideInSearch: true, }, { title: '供应商名称', dataIndex: 'BusinessProcess_ID', width: 200, ellipsis: true, hideInSearch: true, valueType: 'select', request: async () => { const req: any = { ProvinceCode: currentUser?.ProvinceCode } const data = await handleGetSupplierDDL(req) return data } }, { title: '申请人', dataIndex: 'Staff_Name', width: 100, ellipsis: true, hideInSearch: true, }, { title: '待审核人', width: 100, dataIndex: 'ApproveStaff_Name', ellipsis: true, hideInSearch: true, }, { title: '申请时间', dataIndex: 'BusinessProcess_StartDate', width: 150, ellipsis: true, hideInSearch: true, }, { dataIndex: 'option', title: '操作', width: 120, valueType: 'option', align: 'center', hideInSearch: true, render: (_, record) => { return ( { const data = await handleGetBUSINESSAPPROVALDetail({ BUSINESSAPPROVALId: record?.BusinessApproval_ID }) setGetType(1) setProinstRow(record) const res = data if (res.SERVERPART_IDS && res.SERVERPART_IDS.indexOf(',') !== -1) { const [serverid, managerid] = res.SERVERPART_IDS.split(',') res.Serverpart_ID = Number(serverid) res.managerId = Number(managerid) } setCurrentRow({ ...record, ...res, APPROVALSTAFF_ID: `${res.APPOVED_NAME}-${res.APPOVED_IDS}`, BusinessApprovalId: record?.BusinessApproval_ID }) console.log('CurrentRow', { ...record, ...res, }) setShowDrawer(true) }} > 审核 { const data = await handleGetBUSINESSAPPROVALDetail({ BUSINESSAPPROVALId: record?.BusinessApproval_ID }) setGetType(2) setProinstRow(record) const res = data if (res.SERVERPART_IDS && res.SERVERPART_IDS.indexOf(',') !== -1) { const [serverid, managerid] = res.SERVERPART_IDS.split(',') res.Serverpart_ID = Number(serverid) res.managerId = Number(managerid) } setCurrentRow({ ...record, ...res, APPROVALSTAFF_ID: `${res.APPOVED_NAME}-${res.APPOVED_IDS}`, BusinessApprovalId: record?.BusinessApproval_ID }) console.log('CurrentRow', { ...record, ...res, }) setShowDrawer(true) }} > 驳回 ) } } ] // 上传图片方法 const handleUpFile = async (id: string, file: any) => { if (file && file.length > 0) { const formData = new FormData() file.forEach((item: any) => { formData.append('files[]', item.originFileObj) }) formData.append('TableId', id) formData.append('TableType', '1128') const data = await handleuploadAHYDPicture(formData) console.log('data', data) } } // 查询图片列表 const handleGetPictureList = async (id: string) => { setFileListLoading(true) const req: any = { TableId: id, TableType: 1128, } const data = await GetPictureList(req) console.log('data', data) setFileList(data) setFileListLoading(false) } // 获得审批人列表的方法 const handleGetPersonList = async (serverpartId: any, managerId: any) => { if (serverpartId && managerId) { const id: string = `${serverpartId},${managerId}` const req: any = { OperationType: 13, CurState: 1000, IsValid: 1, ShowApprovalUser: true, ServerpartIds: id, } const data = await handleGetAPPROVALROUTEDetail(req) const list: any = [] if (data.UserList && data.UserList.length > 0) { data.UserList.forEach((item: any) => { if (item.USER_STATUS === 1) { list.push({ label: item.USER_NAME, value: `${item.USER_NAME}-${item.USER_ID}` }) } }) } setAPPROVALSTAFFIDList(list) } } // 审核是1 驳回是2 const handleGetToExamine = async (res: any) => { let req: any = {} let data: any = {} // 审核 if (getType === 1) { req = { businessApprovalID: currentRow?.BUSINESSAPPROVAL_ID, curProinstState: currentRow?.BUSINESSAPPROVAL_STATE, approveedInfo: res.desc, approveedStaffId: currentUser?.ID, approveedStaffName: currentUser?.Name, nextId: res.nextPerson, } data = await handleGetApproveBIDProinst(req) } else if (getType === 2) { // 驳回 const backObj = JSON.parse(res.targetProinstState) req = { businessApprovalID: currentRow?.BUSINESSAPPROVAL_ID, approveedStaffId: backObj?.APPROVALSTAFF_ID, approveedStaffName: backObj?.APPROVALSTAFF_NAME, approveedInfo: res.desc, targetProinstState: backObj?.APPROVALROUTE_STATE } data = await handleGetRejectBIDProinst(req) } console.log('data', data) if (data.Result_Code === 100) { message.success(data.Result_Desc) detailFormRef.current?.resetFields() setCurrentRow(undefined) setFileList([]) setShowDrawer(false) setGetType(0) actionRef.current?.reload() } else { message.error(data.Result_Desc) } } useEffect(() => { if (showDrawer) { // 拿到下一阶段人的数据 handleGetPersonList(currentRow?.Serverpart_ID, currentRow?.managerId) // 图片的数组 if (currentRow) { handleGetPictureList(currentRow?.BUSINESSAPPROVAL_ID) } } }, [showDrawer]); return (
{ console.log('params', params) const req: any = { SearchParameter: { // ...params, // Staff_ID: currentUser.ID, BusinessProcess_StateSearch: params?.BusinessProcess_State || '', Operation_Type: 13, SortStr: "BusinessProcess_StartDate desc", BusinessProcess_StartDate: params.StartDate || '', BusinessProcess_EndDate: params.EndDate || '', }, keyWord: { Key: 'BusinessProcess_Name', Value: params?.BusinessProcess_Name || '' } } const data = await handleGetBusinessProcessList(req) if (data && data.length > 0) { return { data, success: true } } return { data: [], success: true } }} toolbar={{ actions: [ ] }} /> { // 关闭抽屉 设置抽屉状态为关闭 detailFormRef.current?.resetFields() setCurrentRow(undefined) setFileList([]) setShowDrawer(false) setGetType(0) }} destroyOnClose closable={false} >
附件上传
{ return [] } }} initialValues={currentRow} > { getType === 3 ? : '' } 0} rules={[ { required: true, message: '请输入业务名称' } ]} /> 0} rules={[ { required: true, message: '请选择服务区' } ]} fieldProps={{ treeDefaultExpandAll: true, fieldNames: { title: "label", }, // showSearch: true, onChange: (e: any) => { if (e) { setSelectServerpart(e) handleGetPersonList(e, selectManagerId) } else { setSelectServerpart(null) } } }} request={async () => { const req: any = { wareHouseType: 2, showSite: false } const data = await handleGetWAREHOUSETree(req) setServiceSelectList(data) if (data && data.length > 0) { return data } return [] }} /> 0} fieldProps={{ treeDefaultExpandAll: true, fieldNames: { title: "label", }, // showSearch: true, // options: serviceSelectList, onChange: (e: any) => { if (e) { setSelectManagerId(e) handleGetPersonList(selectServerpart, e) } else { setSelectManagerId(null) } } }} request={async () => { if (getType > 0) { const id = currentRow?.SERVERPART_IDS.split(',')[1] || '' const name = currentRow?.SERVERPART_NAME.split(',')[1] || '' return [{ label: name, value: id }] } const req: any = { wareHouseType: 1, showSite: false } const data = await handleGetWAREHOUSETree(req) setManagerSelectList(data) if (data && data.length > 0) { return data } return [] }} rules={[ { required: true, message: '请选择管理处' } ]} /> { getType === 3 ? : '' } { selectServerpart && selectManagerId || getType > 0 ? 0} rules={[ { required: true, message: '请选择审批人' } ]} fieldProps={{ options: APPROVALSTAFFIDList }} /> : '' } 0} /> {/* 要驳回的状态 */} { getType === 2 ? { const req: any = { BUSINESSAPPROVALId: currentRow?.BUSINESSAPPROVAL_ID } const data = await handleGetBUSINESSAPPROVALDetail(req) if (data.rejectList && data.rejectList.length > 0) { setHandleHaveReject(true) const list: any = [] data.rejectList.forEach((item: any) => { list.push({ label: item.APPROVALROUTE_NAME, value: JSON.stringify(item) }) }) return list } setHandleHaveReject(false) return [] }} /> : '' } { getType === 1 && currentRow?.NextState !== 9000 && currentRow?.BUSINESSAPPROVAL_STATE !== 9000 ? { // merchantState 判断哪几个状态是商户的 商户调用拿到 商户下面的全部人列表选择一个 不是商户的 就根据选择了的人去指定一个人 // 接口直接返回就不用判断了 const req: any = { BUSINESSAPPROVALId: currentRow?.BUSINESSAPPROVAL_ID } const data = await handleGetBUSINESSAPPROVALDetail(req) const list: any = [] if (data.UserList && data.UserList.length > 0) { data.UserList.forEach((item: any) => { if (item.USER_STATUS === 1) { list.push({ label: item.USER_NAME, value: item.USER_ID }) } }) } return list }} /> : '' } { getType > 0 ? getType === 3 ? '' : : 0} fieldProps={{ name: 'file', beforeUpload: (file: any) => { const isEXE = file.type === 'application/octet-stream' if (isEXE) { message.error(`不支持上传exe文件!`); } return !isEXE || Upload.LIST_IGNORE; } }} /> } { getType === 0 ?
: getType > 0 ?
: '' }
{ getType > 0 ? : '' }

附件列表

{ fileListLoading ? :
{ fileList && fileList.length > 0 ? fileList.map((item: any) => { return
{ item.ImageUrl.indexOf('.png') !== -1 || item.ImageUrl.indexOf('.jpg') !== -1 || item.ImageUrl.indexOf('.jpeg') !== -1 ? : } {/*
*/} {/* { */} {/* const data = await deletePicture(item.ImagePath, item.ImageId, '', 9000) */} {/* if (data.Result_Code === 100) { */} {/* message.success('删除成功!') */} {/* handleGetPictureList(currentRow?.BusinessApproval_ID) */} {/* } else { */} {/* message.error(data.Result_Desc) */} {/* } */} {/* }} */} {/* > */} {/* */} {/* */} {/*
*/}
}) : '' }
}
{/*
*/} {/* */} {/* */} {/*
*/}
{/* 流程进度抽屉 */} { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭 setShowReviewProcess(false); }} destroyOnClose bodyStyle={{ backgroundColor: "#f9f9f9", padding: 16 }} closable={false} >
) } export default connect(({ user, }: ConnectState) => ({ currentUser: user.currentUser, }))(marketResearch);