import { FileSearchOutlined, MenuFoldOutlined, PlusOutlined } from "@ant-design/icons" import { ActionType, ProCard, ProForm, ProFormDigit, ProFormSelect, ProFormText, ProFormTreeSelect, ProTable } from "@ant-design/pro-components" import { Button, FormInstance, message, Modal, Popconfirm, Space, Tree } from "antd" import { useEffect, useRef, useState } from "react" import { getFieldEnumTree, handleDeleteAPPROVALROUTE, handleGetAPPROVALROUTEList, handleGetUserList, handleSynchroAPPROVALROUTE } from "../serverpartAssets/service" import moment from "moment" import ChosePlayers from "./components/ChosePlayers" const BusinessConfiguration = () => { const actionRef = useRef(); const formRef = useRef(); const modalFormRef = useRef(); const chosePlayerRef = useRef(); // 折叠左侧业务类型属性选择框 const [collapsible, setCollapsible] = useState(false) // 左侧业务类型数据 const [treeView, setTreeView] = useState() // 左侧业务类型数据对象 const [serviceTypeObj, setServiceTypeObj] = useState() // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() // 存储当前数据的搜索条件 const [searchParams, setSearchParams] = useState() // 显示新增环节的悬浮框 const [modalVisible, setModalVisible] = useState(false) // 选中的当前行数据 const [currentRow, setCurrentRow] = useState() // 悬浮框的确认按钮的loading const [confirmLoading, setConfirmLoading] = useState(false) // 参与人列表 const [playerList, setPlayerList] = useState() // 当前已经存在了的参与人 const [defaultPerson, setDefaultPerson] = useState() // 显示参与人的悬浮框 const [showChosePlayer, setShowChosePlayer] = useState(false) const columns: any = [ { title: '环节名称', width: 150, dataIndex: 'APPROVALROUTE_NAME', align: 'center', hideInSearch: true }, { title: '业务状态', width: 120, dataIndex: 'APPROVALROUTE_STATE', align: 'center', sorter: (a, b) => a.APPROVALROUTE_STATE - b.APPROVALROUTE_STATE, defaultSortOrder: 'ascend', }, { title: '业务类型', width: 120, dataIndex: 'OPERATION_TYPE', valueType: 'select', align: 'center', hideInSearch: true, valueEnum: serviceTypeObj }, { title: '下一业务状态', width: 120, dataIndex: 'NEXT_STATE', align: 'center', // valueType: 'select', hideInSearch: true, // valueEnum:{ // 2000:'商户确认审核', // 2010:'服务区经理审核', // 2020:'片区中心审核', // 2030:'经发部审核', // 2040:'财务部审核', // } }, { title: '参与人', dataIndex: 'APPROVALSTAFF_NAME', align: 'center', width: 200, ellipsis: true, hideInSearch: true, }, { title: '生成时间', width: 150, dataIndex: 'RECORD_DATE', align: 'center', hideInSearch: true, render: (_, record) => { return record?.RECORD_DATE ? moment(record?.RECORD_DATE).format('YYYY-MM-DD') : '' } }, { title: '业主单位', width: 120, align: 'center', dataIndex: 'PROVINCE_CODE', hideInSearch: true, }, { dataIndex: 'option', title: '操作', width: 120, valueType: 'option', align: 'center', fixed: 'right', hideInSearch: true, render: (_, record) => { return ( { setCurrentRow(record) setModalVisible(true) }}>编辑 { const req: any = { APPROVALROUTEId: record?.APPROVALROUTE_ID } const data = await handleDeleteAPPROVALROUTE(req) if (data.Result_Code === 100) { message.success('删除成功') actionRef.current?.reload() } else { message.error(data.Result_Desc) } }} > 删除 ) } } ] // 解构左侧类型 const extractValueLabel = (list: any) => { const result: any = {}; function traverse(nodes: any) { if (!Array.isArray(nodes)) return; nodes.forEach(item => { if (item.value !== undefined && item.label !== undefined) { result[item.value] = item.label; } if (Array.isArray(item.children)) { traverse(item.children); } }); } traverse(list); return result; } useEffect(() => { getFieldEnumTree({ FieldExplainField: 'PROCESS_TYPE', sessionName: 'PROCESS_TYPE' }).then((res: any) => { console.log('resresresres', res); let obj = extractValueLabel(res) setServiceTypeObj(obj) setTreeView(res) }) }, []); return (
{ setCollapsible(!collapsible) }} />} colSpan={!collapsible ? "300px" : "60px"} title={!collapsible ? "请选择业务类型" : ""} headerBordered collapsed={collapsible} > {treeView && treeView.length > 0 ? { const selectedIds = info.checkedNodes.filter(n => n?.type === 2) setSelectedId(selectedIds.map(n => n?.value)?.toString() || '') }} // switcherIcon={} /> : ''}
{ if (!selectedId) { return } const req: any = { SearchParameter: { PROVINCE_CODE: '530000', OPERATION_TYPES: selectedId || '', APPROVALROUTE_VALID: 1 }, PageIndex: 1, PageSize: 999999 } setSearchParams(params) const data = await handleGetAPPROVALROUTEList(req) console.log('fdsjfhsdjkfhsa', data); if (data && data.length > 0) { return { data, success: true } } return { data: [], success: true } }} toolbar={{ actions: [ ] }} />
{ setModalVisible(false) modalFormRef.current?.validateFields().then((res: any) => { modalFormRef.current?.submit() }) }} onCancel={(e) => { setModalVisible(false) modalFormRef.current?.resetFields(); setDefaultPerson([]) setPlayerList([]) setCurrentRow(undefined) }} > { console.log('currentRowcurrentRow', currentRow); if (currentRow) { if (currentRow?.APPROVALSTAFF_ID) { const req: any = { SearchParameter: { USER_IDS: currentRow?.APPROVALSTAFF_ID }, PageIndex: 1, PageSize: 999999 } const data = await handleGetUserList(req) console.log('datadatadata', data); setDefaultPerson(data) if (data && data.length > 0) { const list: any = [] data.forEach((item: any) => { list.push({ label: item.USER_NAME, value: item.USER_ID.toString() }) }) setPlayerList(list) } } return { ...currentRow, APPROVALSTAFF_ID: currentRow?.APPROVALSTAFF_ID ? currentRow?.APPROVALSTAFF_ID.split(',') : null } } else { return {} } }} onFinish={async (res) => { console.log('readas', res); let req: any = {} if (currentRow) { req = { APPROVALROUTE_ID: currentRow?.APPROVALROUTE_ID, APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '', APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '', OPERATION_TYPE: res?.OPERATION_TYPE || '', APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALROUTE_VALID: 1, PROVINCE_CODE: '530000', NEXT_STATE: res?.NEXT_STATE } } else { req = { APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '', APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '', OPERATION_TYPE: res?.OPERATION_TYPE || '', APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALROUTE_VALID: 1, PROVINCE_CODE: '530000', NEXT_STATE: res?.NEXT_STATE } } setConfirmLoading(true) const data = await handleSynchroAPPROVALROUTE(req) setConfirmLoading(false) if (data.Result_Code === 100) { message.success('新增成功') modalFormRef.current?.resetFields(); setCurrentRow(undefined) actionRef.current?.reload() setModalVisible(false) setDefaultPerson([]) setPlayerList([]) return true } message.error(data.Result_Desc) }} > { let list: any = JSON.parse(JSON.stringify(treeView)) if (list && list.length > 0) { list.forEach((item: any) => { item.disabled = true }) } return list }} fieldProps={{ treeDefaultExpandAll: true }} rules={[ { required: true, message: '请选择业务类型', }, ]} /> } onClick={() => { const res = modalFormRef.current?.getFieldValue('APPROVALSTAFF_ID') console.log('resres', res); // if ([res] && [res].length > 0) { // const list: any = [] // [res].forEach((item: any) => { // list.push(Number(item)) // }) // setDefaultPerson(list) // } else { // setDefaultPerson([]) // setPlayerList([]) // } setShowChosePlayer(true) }}> 选择 } /> { setShowChosePlayer(false) let detailList: any = chosePlayerRef?.current?.selectedRowDetail console.log('detailListdetailList', detailList); let list: any = [] if (detailList && detailList.length > 0) { detailList.forEach((item: any) => { list.push({ label: item?.USER_NAME, value: item.USER_ID }) }) } setPlayerList(list) modalFormRef.current?.setFieldsValue({ APPROVALSTAFF_ID: chosePlayerRef?.current?.selectedRowKeys }) }} onCancel={(e) => { setShowChosePlayer(false) }} >
) } export default BusinessConfiguration;