import React, { useRef, useState, Suspense, useImperativeHandle, useEffect } from 'react'; import moment from 'moment'; // 时间相关引用,没有使用可以删除 import numeral from "numeral"; // 数字相关引用,没有使用可以删除 import { connect } from 'umi'; import useRequest from '@ahooksjs/use-request'; // 请求数据的引用 import Draggable from 'react-draggable'; import SubMenu from "antd/lib/menu/SubMenu"; import ProTable from '@ant-design/pro-table'; import ProDescriptions from '@ant-design/pro-descriptions'; import ProForm, { ProFormDatePicker, ProFormDateTimePicker, ProFormDigit, ProFormMoney, ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadButton } from '@ant-design/pro-form'; import { MenuFoldOutlined, PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-layout'; import { Button, Col, Drawer, message, Row, Popconfirm, Space, Image, Modal, Form, Switch, Upload, Tooltip, Descriptions, TreeSelect, Divider, Radio, Tabs } from 'antd'; import type { CurrentUser } from "umi"; import type { ConnectState } from '@/models/connect'; import type { ActionType, ProColumns } from '@ant-design/pro-table'; import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; import type { FormInstance } from 'antd'; import { getFieldEnumTree, getFieldEnumName } from "@/services/options"; // 枚举的引用,没有使用可以删除 import { handleGetServerpartInfo, handleNewGetSERVERPARTDetail } from '@/pages/newDataAnalysis/service'; import session from '@/utils/session'; import { handleGetNOTICEINFOList } from '@/pages/basicManage/highwayHeadlines/service'; type DetailProps = { currentRow?: any; onShow?: boolean; onRef?: any pageType?: number } const SERVERPARTTable = ({ currentRow, onShow, onRef, pageType }: DetailProps) => { const actionRef = useRef(); const formRef = useRef(); const [modalVisible, handleModalVisible] = useState(); const [confirmLoading, handleConfirmLoading] = useState(false) // 弹出框的内容表单是否在提交 // 服务区类型 const [serverPartType, setServerPartType] = useState(2) // 表单请求服务区的详情 const [serverPartDetail, setServerPartDetail] = useState() // 表单请求服务区的详情 const [formDetailAll, setFormDetailAll] = useState() // 片区的tab const [areaTabList, setAreaTabList] = useState() // 选择的tab const [selectTab, setSelectTab] = useState() const shopregionObj: any = session.get('shopregionObj') const LOADBEARINGList = session.get('LOADBEARINGList') // 拖动结束 // 站点类型(服务区、加油站、单位部门)枚举解析 const { data: serverpartsite_typeTree = [] } = useRequest(async () => { return await getFieldEnumTree({ FieldExplainField: 'SERVERPARTSITE_TYPE', sessionName: 'SERVERPARTSITE_TYPE' }) }) // 统计类型(1000:正式,2000:测试,3000:替代)枚举解析 const { data: datastatistics_typeTree = [] } = useRequest(async () => { return await getFieldEnumTree({ FieldExplainField: 'DATASTATISTICS_TYPE', sessionName: 'DATASTATISTICS_TYPE' }) }) // 服务区类型枚举解析 const { data: serverpart_typeTree = [] } = useRequest(async () => { return await getFieldEnumTree({ FieldExplainField: 'SERVERPART_TYPE', sessionName: 'SERVERPART_TYPE' }) }) useImperativeHandle(onRef, () => ({ formRef, serverPartDetail, formDetailAll })); useEffect(() => { if (onShow) { } }, [onShow]) useEffect(async () => { if (pageType === 2) { if (currentRow?.SERVERPART_ID) { const req: any = { ServerpartId: currentRow?.SERVERPART_ID } const regData = await handleNewGetSERVERPARTDetail(req) const list: any = regData.ServerPartInfo console.log('regData', regData); console.log('formDetailAll', formDetailAll); if (list && list.length > 0) { const obj: any = session.get('shopregionObj') const res: any = [] list.forEach((item: any, index: number) => { if (item.SERVERPART_REGION) { res.push({ label: obj[item.SERVERPART_REGION], value: item.SERVERPART_REGION.toString(), key: item.SERVERPART_REGION.toString() }) if (index === 0) { setSelectTab(item.SERVERPART_REGION.toString()) } } }) console.log('resresresres', res); setAreaTabList(res) } else { setAreaTabList([]) setSelectTab(null) } } } }, []) useEffect(() => { // 确保 areaTabList 更新后,selectTab 也正确设置 if (areaTabList && areaTabList.length > 0 && !selectTab) { setSelectTab(areaTabList[0].key); } }, [areaTabList, selectTab]); return (
{ if (currentRow?.SERVERPART_ID) { const req: any = { ServerpartId: currentRow?.SERVERPART_ID } const data = await handleNewGetSERVERPARTDetail(req) console.log('detaildsdas', data); const carryReq: any = { SearchParameter: { NOTICEINFO_TYPES: "3020", SERVERPART_ID: currentRow?.SERVERPART_ID } } const carryData = await handleGetNOTICEINFOList(carryReq) console.log('carryDatacarryData', carryData); setServerPartDetail(data) const regionInfoList: any = data.ServerPartInfo const serviceA: any = {} const serviceB: any = {} if (regionInfoList && regionInfoList.length > 0) { setServerPartType(regionInfoList.length === 1 ? 1 : 2) regionInfoList.forEach((item: any, index: number) => { if (index === 0) { for (const key in item) { serviceA[`${key}_A`] = item[key] ? item[key] : item[key] === 0 ? 0 : '' } } else { for (const key in item) { serviceB[`${key}_B`] = item[key] ? item[key] : item[key] === 0 ? 0 : '' } } }) } console.log('serviceA', serviceA); console.log('serviceB', serviceB); const obj: any = { ...data, ...data.RtServerPart, ...serviceA, ...serviceB, carryingCapacity: carryData && carryData.length > 0 ? Number(carryData[0].FEEDBACK_CONTENT) : "", carryingCapacityObj: carryData && carryData.length > 0 ? carryData[0] : "" } console.log('dataProForm', obj); setFormDetailAll(obj) return obj } return {} }} onFinish={async (values) => { }} > {/* { setServerPartType(Number(e.target.value)) }} value={serverPartType}> 服务区单侧 服务区双侧 */} { pageType === 2 ?
{ setSelectTab(e) }} items={areaTabList} />
: '' }
{ if (currentRow?.SERVERPART_ID) { const req: any = { ServerpartId: currentRow?.SERVERPART_ID } const regData = await handleNewGetSERVERPARTDetail(req) const list: any = regData.ServerPartInfo console.log('regData', regData); console.log('formDetailAll222', formDetailAll); if (list && list.length > 0) { const obj: any = session.get('shopregionObj') const res: any = [] list.forEach((item: any) => { if (item.SERVERPART_REGION) { res.push({ label: obj[item.SERVERPART_REGION], value: item.SERVERPART_REGION }) } }) console.log('res', res); formRef.current?.setFieldsValue({ currentArea: res[0].value }) return res } } }} />
基本信息 面积相关
{shopregionObj[selectTab] || ""}
0 && selectTab === areaTabList[0].key ? 'block' : 'none' }}> 面积相关 加油信息 充电信息 服务信息 车位信息 经营信息
1 && selectTab === areaTabList[1].key ? 'block' : 'none' }}> {/* 对向信息 */}
{ // let list = session.get('shopregionList') // return list if (currentRow?.SERVERPART_ID) { const req: any = { ServerpartId: currentRow?.SERVERPART_ID } const regData = await handleNewGetSERVERPARTDetail(req) const list: any = regData.ServerPartInfo console.log('list', list); if (list && list.length > 0) { const obj: any = session.get('shopregionObj') const res: any = [] list.forEach((item: any) => { if (item.SERVERPART_REGION) { res.push({ label: obj[item.SERVERPART_REGION], value: item.SERVERPART_REGION }) } }) console.log('res', res); const other: any = formRef.current?.getFieldValue('currentArea') res.forEach((item: any) => { if (Number(item.value) !== Number(other)) { formRef.current?.setFieldsValue({ otherArea: res[1].value }) } }) return res } } }} />
面积相关 加油信息 充电信息 服务信息 车位信息 经营信息
); }; export default connect(({ user }: ConnectState) => ({ currentUser: user.currentUser }))(SERVERPARTTable);