// 不动产管理 import { useEffect, useImperativeHandle, useRef, useState } from "react"; import LeftSelectTree from "@/components/leftSelectTree/leftSelectTree"; import { ActionType, FormInstance, ProForm, ProFormDatePicker, ProFormDateRangePicker, ProFormDigitRange, ProFormSelect, ProFormText, ProFormTextArea, ProTable } from "@ant-design/pro-components"; import { handleDeleteREALESTATE, handleGetREALESTATEList, handleSynchroREALESTATE } from "./service"; import moment from "moment"; import { encryptAES } from "@/utils/handleAes"; import { Button, Col, message, Modal, Row } from "antd"; import ModalFooter from "./components/modalFooter"; import { handleGetPassportInfoById } from "../DigitalElectronics/service"; // 引入地址解析工具 import { handleAddressChange, parseAddress } from "@/utils/addressParser"; import { handleGetServerpartDDL } from "../serverpartAssets/service"; import { handleGetSERVERPARTDetail } from "../operationReport/service"; const RealEstate = ({ serverPartId, isComponent, onRef, selectRealEstateId }: { serverPartId: string, isComponent: boolean, onRef?: any, selectRealEstateId?: any }) => { const actionRef = useRef(); const formRef = useRef(); const modalFormRef = useRef(); // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() const [collapsible, setCollapsible] = useState(false) // 添加不动产内容的悬浮框 const [showDetail, setShowDetail] = useState(false) // 当前行数据 const [currentRow, setCurrentRow] = useState() // 判断是不是第一次进入到页面 const [isFirst, setIsFirst] = useState(true) // 获取用户信息 const [userInfo, setUserInfo] = useState() // 拿到服务区列表 const [serverPartList, setServerPartList] = useState() // 悬浮框点击确认的按钮加载效果 const [confirmLoading, setConfirmLoading] = useState(false) // 选中的行数据详情 const [selectRowDetail, setSelectRowDetail] = useState() // 列表配置 const columns: any = [ { title: "统计日期", dataIndex: "staticDate", hideInTable: true, valueType: "dateRange", initialValue: [moment().startOf('M'), moment()], search: { transform: (value: any) => { return { START_LEASEDATE_End: moment().startOf('y').format('YYYY-MM-DD'), END_LEASEDATE_Start: moment().format('YYYY-MM-DD') }; }, }, fieldProps: { picker: "day", format: 'YYYY-MM-DD', } }, { title: "服务区名称", dataIndex: "SERVERPART_NAME", hideInSearch: true, ellipsis: true, width: 180, align: 'center' }, { title: "不动产类型", dataIndex: "REALESTATE_TYPE", width: 150, valueType: "select", align: 'center', valueEnum: { 1000: "房屋租赁", 2000: "车辆资产", } }, { title: "产权证号", dataIndex: "ESTATE_IDENTITY", hideInSearch: true, ellipsis: true, width: 150, align: 'center', render: (_, record) => { return record?.ESTATE_IDENTITY ? isComponent ? record?.ESTATE_IDENTITY : { setCurrentRow(record) setShowDetail(true) }}> {record?.ESTATE_IDENTITY} : "" } }, { title: "资料编码", dataIndex: "SPECIALINDUSTRY_NUMBER", hideInSearch: true, ellipsis: true, width: 150, align: 'center', render: (_, record) => { return record?.SPECIALINDUSTRY_NUMBER ? isComponent ? record?.ESTATE_IDENTITY : { setCurrentRow(record) setShowDetail(true) }}> {record?.SPECIALINDUSTRY_NUMBER} : "" } }, { title: "查询内容", dataIndex: "searchText", hideInTable: true, fieldProps: { placeholder: "请输入省份名称/城市名称", } }, { title: "省份名称", dataIndex: "PROVINCE_NAME", hideInSearch: true, ellipsis: true, width: 150, align: 'center' }, { title: "城市名称", dataIndex: "CITY_NAME", hideInSearch: true, ellipsis: true, width: 150, align: 'center' }, { title: "详细地址", dataIndex: "REALESTATE_ADDRESS", hideInSearch: true, ellipsis: true, width: 180, align: 'center' }, { title: "是否跨地", dataIndex: "CROSS_CITYSIGN", hideInSearch: true, ellipsis: true, width: 120, align: 'center', render: (_: any, record: any) => { return record?.CROSS_CITYSIGN ? "是" : "否" } }, { title: "面积单位", dataIndex: "AREA_UNIT", hideInSearch: true, ellipsis: true, width: 120, align: 'center' }, { title: "租赁期限", dataIndex: "LEASEDATE", hideInSearch: true, ellipsis: true, width: 250, align: 'center', render: (_: any, record: any) => { return `${record?.START_LEASEDATE || ""}${record?.END_LEASEDATE ? `-${record?.END_LEASEDATE}` : ''}` } } ] // 获取当前用户信息的方法 const handleGetUserInfo = async () => { const search = window.location.search; const addressParams: any = Object.fromEntries(new URLSearchParams(search).entries()); const req: any = { UserIdEncrypted: addressParams.UserIdEncrypted } const data = await handleGetPassportInfoById(req) console.log('dsajikajds', data); setUserInfo(data) } // 新增和同步不动产的方法 const handleAddOrUpdate = async (values: any) => { // 准备入参 let req: any = {} console.log('valuesvalues', values); let [start, end] = [moment(values?.LEASEDATE[0].$d).format('YYYY-MM-DD HH:mm:ss'), moment(values?.LEASEDATE[1].$d).format('YYYY-MM-DD HH:mm:ss')] if (currentRow?.REALESTATE_ID) { req = { ...currentRow, ...values, LEASEDATE: "", START_LEASEDATE: start || "", END_LEASEDATE: end || "", REALESTATE_STATE: 1, STAFF_ID: userInfo?.ID, STAFF_NAME: userInfo?.Name, OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss') } } else { req = { ...values, LEASEDATE: "", REALESTATE_STATE: 1, START_LEASEDATE: start || "", END_LEASEDATE: end || "", STAFF_ID: userInfo?.ID, STAFF_NAME: userInfo?.Name, OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss') } } console.log('reqreqreqreq', req); let reqData: any = { name: "", value: encryptAES(JSON.stringify(req)) } const data: any = await handleSynchroREALESTATE(reqData) setConfirmLoading(false) if (data?.Result_Code === 100) { message.success('添加成功!'); setCurrentRow(undefined) setShowDetail(false) actionRef.current?.reload() } else { message.error(data?.Result_Desc || '添加失败') } } // 删除不动产 const handleDeleteOrUpdate = async (id: string) => { const req: any = { REALESTATEId: id } let reqData: any = { name: "", value: encryptAES(JSON.stringify(req)) } const data: any = await handleDeleteREALESTATE(reqData) setConfirmLoading(false) if (data?.Result_Code === 100) { message.success('删除成功!'); setCurrentRow(undefined) setShowDetail(false) actionRef.current?.reload() } else { message.error(data?.Result_Desc || '删除失败') } } useEffect(() => { if (isFirst) { handleGetUserInfo() setIsFirst(false) } }, []) useImperativeHandle(onRef, () => ({ selectRowDetail })); return
{ isComponent ? '' : }
{ if (!selectedId && !isComponent) { return [] } const req: any = { searchParameter: { REALESTATE_TYPE: isComponent ? '' : params?.REALESTATE_TYPE || "",// 不动产类型 SERVERPART_IDS: isComponent ? serverPartId : selectedId, START_LEASEDATE_End: isComponent ? '' : params?.END_LEASEDATE_Start || "", END_LEASEDATE_Start: isComponent ? '' : params?.START_LEASEDATE_End || "", REALESTATE_STATE: 1 }, PageIndex: 1, PageSize: 999999, keyWord: { Key: "PROVINCE_NAME,CITY_NAME", Value: params?.searchText || "" } } let newReq: any = { name: "", value: encryptAES(JSON.stringify(req)) } const data: any = await handleGetREALESTATEList(newReq) console.log('datadatadata', data); if (data && data.length > 0) { return { data, success: true } } return { data: [], success: true } }} rowSelection={isComponent ? { type: 'checkbox', defaultSelectedRowKeys: selectRealEstateId || [], onChange: (_, row) => { console.log('__', _); console.log('row', row); setSelectRowDetail(row) } } : false} toolbar={{ actions: [ ] }} />
{ setCurrentRow(undefined) setShowDetail(false) }} confirmLoading={confirmLoading} footer={ { setConfirmLoading(true) await handleDeleteOrUpdate(currentRow?.REALESTATE_ID) }} handleCancel={() => { setCurrentRow(undefined) setShowDetail(false) }} handleOK={() => { modalFormRef.current?.validateFields().then(async (res) => { setConfirmLoading(true) await handleAddOrUpdate(res) }) }} /> } > { if (currentRow?.REALESTATE_ID) { return { ...currentRow, SERVERPART_ID: currentRow?.SERVERPART_ID.toString(), LEASEDATE: [moment(currentRow?.START_LEASEDATE), moment(currentRow?.END_LEASEDATE)] } } else { return {} } }} onFinish={() => { }} > { if (serverPartList && serverPartList.length > 0) { return serverPartList } else { const req: any = { ProvinceCode: "530000", } let list: any = [] const data = await handleGetServerpartDDL(req) if (data && data.length > 0) { list = data setServerPartList(list) } else { setServerPartList([]) } return list } }} fieldProps={{ showSearch: true, filterOption: (input, option) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()), optionFilterProp: 'label', onChange: async (value, option: any) => { modalFormRef.current?.setFieldsValue({ SERVERPART_NAME: option.title }) // 顺便拿个 服务区详情 let detail: any = await handleGetSERVERPARTDetail({ SERVERPARTId: value }) // 从地址里面 解出 城市(市区) let address: any = parseAddress(detail?.SERVERPART_ADDRESS); modalFormRef.current?.setFieldsValue({ PROVINCE_NAME: detail?.PROVINCE_NAME, CITY_NAME: address?.city, REALESTATE_ADDRESS: detail?.SERVERPART_ADDRESS }) } }} rules={[{ required: true, message: '请选择服务区!' }]} /> ({ validator(_: any, value: any) { if (value || getFieldValue('SPECIALINDUSTRY_NUMBER')) { return Promise.resolve(); } return Promise.reject(new Error('产权证号和资料编码至少填写一个')); }, }), ]} /> ({ validator(_: any, value: any) { if (value || getFieldValue('ESTATE_IDENTITY')) { return Promise.resolve(); } return Promise.reject(new Error('产权证号和资料编码至少填写一个')); }, }), ]} />
} export default RealEstate