/* * @Author: cclu * @Date: 2021-12-13 11:01:23 * @LastEditTime: 2024-10-29 16:42:14 * @LastEditors: cclu 1106109051@qq.com * @Description: 编辑/新增合同组件 * @FilePath: \cloud-platform\src\pages\contract\components\editor.tsx */ import moment from 'moment'; import { connect } from "umi"; import React, { useRef, useState, useImperativeHandle } from 'react'; import useRequest from "@ahooksjs/use-request"; import ProTable from '@ant-design/pro-table'; import type { ProFormInstance } from '@ant-design/pro-form'; import ProForm, { ProFormDateRangePicker, ProFormDateTimePicker, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadButton } from '@ant-design/pro-form'; import { FooterToolbar, PageContainer } from '@ant-design/pro-layout'; import { Button, Card, Col, Menu, message, Modal, Row, Avatar, Image, Popconfirm, Select, Descriptions, Upload, Drawer, Tooltip } from 'antd'; import { ExclamationCircleOutlined, FileSearchOutlined, MinusOutlined, MinusSquareOutlined, PlusOutlined } from '@ant-design/icons'; import type { FormInstance } from 'antd'; import type { ConnectState } from "@/models/connect"; import type { ActionType } from '@ant-design/pro-table'; import type { MerchantModel } from '@/pages/basicManage/Merchats/data' import type { ContractListModel, ContractSubModel, ServerpartContractModel } from '../data'; import type { BrandModel } from '@/pages/basicManage/Brand/data'; import type { CurrentUser } from '@/models/user'; import { businessType, contractType, severpartType } from '../emun'; import type { ServerpartTree } from '@/services/options'; import { getServerpartOption, getServerpartTree } from '@/services/options'; import { getList as getMerchatsList } from '@/pages/basicManage/Merchats/service' import { getList as getBrandList } from '@/pages/basicManage/Brand/service' import { getBusniessBrandTree, getBusinessMerchatsList } from '@/pages/basicManage/service'; import { delCompact, getContractServerpartList, getDetail, getList as getContractList, getSubDetail, handleGetRelatedList, updateContract, updateSubContract } from '../service'; import { getBase64 } from '@/utils/utils'; import { getPictureList, deletePicture, uploadPicture, uploadAHYDPicture, deleteAHYDPicture } from '@/services/picture'; import type { UploadFile } from 'antd/es/upload/interface'; import type { PictureModel } from '@/services/options/typings'; import '../style.less'; import Draggable from "react-draggable"; import type { BusinessProjectModel } from "@/pages/BussinessProject/data"; import { handleGetServiceShopList } from "@/pages/DataVerification/service"; import './editor.less' import addPartyC from '/src/assets/detail/addPartyC.svg' import fileIcon from "@/assets/detail/fileIcon.svg"; import ContractDetail from './detail'; import session from '@/utils/session'; import { handleGetRegisterCompactDetail } from '@/pages/reports/component/service'; const { SubMenu } = Menu; const { confirm } = Modal; /** * @description: 根据服务区类型 和 经营业态 计算每平方物业费 * @param {number} a 服务区类型 * @param {number} b 经营业态 * @return {*} 每平方米物业费 元/月 */ const calcServiceCoast = (a: number | string, b: number | string) => { const coastRule: Record = { 1000: [0, 13, 32, 15, 5, 3], 2000: [0, 10, 25, 12, 4, 2], 3000: [0, 8, 20, 10, 2, 1], 4000: [0, 5, 10, 5, 1, 0.5] } return a && b ? coastRule[a][b] : '' } // 创建或更新合同 const handleAddUpdate = async (fields: ContractListModel & ContractSubModel & any) => { const hide = message.loading('正在提交...'); const result = await updateContract(fields); if (result.Result_Code !== 100) { message.error(`${result.Result_Desc}` || `${result.Result_Code}:提交失败`); return false; } const subResult = await updateSubContract({ ...fields, REGISTERCOMPACT_ID: result.Result_Data.REGISTERCOMPACT_ID }) hide(); if (subResult.Result_Code !== 100) { message.error(`${subResult.Result_Desc}` || `${subResult.Result_Code}:提交失败`); return false; } message.success(fields.REGISTERCOMPACT_ID ? '更新成功!' : '新建成功!'); return result.Result_Data; }; // 上传附件 const customUploadRequest = async (fileList: UploadFile[], tableId: string) => { if (!fileList.length) { message.error("您上传的附件不存在.") return false } const formData = new FormData(); fileList.forEach(file => { formData.append('files[]', file); }); formData.append('TableType', '1115'); formData.append('TableId', tableId); const success = await uploadAHYDPicture(formData) if (success) { return true } return false } // 删除数据 const handelDelete = async (registerCompactId: number) => { const hide = message.loading('正在删除...'); try { const result = await delCompact(registerCompactId); hide(); if (result.Result_Code !== 100) { message.error(`${result.Result_Desc}`); return false; } message.success('删除成功!'); return true; } catch (error) { hide(); message.error('删除失败'); return false; } }; function getMenuDomModal(data: ServerpartTree[], callback?: Function) { // 遍历菜单数据源并返回相应的菜单子父级节点 return ( data.map((element: any) => { // 判断数据是否为父级菜单 是则返回父级菜单容器并生成包含的子菜单 if (element.type === 0) { return ( { // 点击父级菜单标题方法 执行传入的回调方法 callback?.call(callback, item); item.domEvent.stopPropagation(); }} > {/* 父级菜单有子级存在,则遍历子级数据生成子菜单 */} {element.children && element.children.length > 0 && getMenuDomModal(element.children, callback)} ); } // 返回子菜单 return ( {element.label}); // 子级菜单andt组件 }) ); } const EditContract = ({ contractId: id, actionRef, setShowDetail, showDelete, currentUser, handleGetChildrenData, handleGetContractChild, showType }: { contractId?: number, actionRef: any, setShowDetail: any, showDelete?: boolean, type?: string, currentUser?: CurrentUser, handleGetChildrenData?: any, handleGetContractChild?: any, showType?: string }) => { // const EditContract: React.FC<{ contractId?: number, actionRef: any, setShowDetail: any, showDelete?: boolean,type?: string, currentUser?: CurrentUser,onRef?: any }> = ({ // contractId: id, actionRef, setShowDetail, showDelete, currentUser ,onRef}) => { const formRef = useRef(); const compayActionRef = useRef(); const brandActionRef = useRef(); const [visible, setVisible] = useState() const [brandVisible, setBrandVisible] = useState() // 选择品牌弹出框 const [brand, setBrand] = useState() // 选中的品牌 // 关联合同列表 const [relatedContractsList, setRelatedContractsList] = useState() // 选中的关联合同 const [childrenRow, setChildrenRow] = useState() // 显示关联合同的抽屉 const [showChildDetailDrawer, setShowChildDetailDrawer] = useState(false) const [selectName, setSelectName] = useState() // 当前选中的商户名称 甲乙丙三方 const [company, setCompany] = useState() // 选中的商户数据对象 const [fields, setFields] = useState(); // 当前组件显示的 合同详情 包括主表和子表数据 const [currenMenu, setCurrenMenu] = useState(); // 当前弹出的左侧菜单选中的详细数据 const [selectedKeys, setSelectedKeys] = useState(); // 当前弹出的左侧菜单选中的ids值 const [fileList, setFileList] = useState([]) // 需要上传的附件图片列表 const [priviewImage, setPriviewImage] = useState(); // 预览的文件地址 const [showBtn, setShowBtn] = useState(false) const [confirmLoading, handleConfirmLoading] = useState(false) // 弹出框的内容表单是否在提交 const [contract, setContract] = useState() // 当前选择的合同 const [currentRow, setCurrentRow] = useState(undefined) const [selectShops, setSelectShops] = useState() // 选择的门店数据 const draggleRef = React.createRef() // 显示关联合同的附件 const [showChildrenFile, setShowChildrenFile] = useState(false) // 关联合同的附件 const [childrenFile, setChildrenFile] = useState() // 拖动开始 const [bounds, setBounds] = useState<{ left: number, right: number, top: number, bottom: number }>() // 移动的位置 const [disabled, setDraggleDisabled] = useState() // 是否拖动 const [COMPACTLIST, setCOMPACTLIST] = useState() // 获取合同类型子项 const { loading: COMPACTLoading, data: COMPACTLISTS } = useRequest(async () => { const options = session.get("COMPACT_DETAILSList") if (options && options.length > 0) { options.forEach((item: any) => { if (item.value === 2002 || item.value === 3000) { item.disabled = true item.label = {item.label} } }) } setCOMPACTLIST(options) const obj: any = session.get("COMPACT_DETAILSObj") return obj; }) const onDraggaleStart = (event, uiData) => { const { clientWidth, clientHeight } = window.document.documentElement; const targetRect = draggleRef.current?.getBoundingClientRect(); if (!targetRect) { return; } setBounds({ left: -targetRect.left + uiData.x, right: clientWidth - (targetRect.right - uiData.x), top: -targetRect.top + uiData.y, bottom: clientHeight - (targetRect.bottom - uiData.y), }); }; // 拖动结束 // 请求服务区树列表 const { loading: serverPartLoading, data: serverpartTree } = useRequest(async () => { const data = await getServerpartTree() return data }) const [serverpartId, setServerpartId] = useState() // 合同包含的服务区ids const [shopId, setShopId] = useState()// 搜索框选择的门店id const [shopList, setShopList] = useState() const [contractId, setContractId] = useState() // 合同列表内容 const compactColumns = [ { dataIndex: 'COMPACT_NAME', title: '合同名称', ellipsis: true, // hideInSearch: true }, { dataIndex: 'shopName', title: '门店列表', hideInTable: true, renderFormItem: (_, record) => { return } }, { dataIndex: 'SERVERPARTSHOP_NAME', title: '门店名称', hideInSearch: true, }, { title: '合同金额', dataIndex: 'COMPACT_AMOUNT', hideInSearch: true, width: 130, align: "center", render: (_) => { return
{_}
} }, { title: '开始日期', hideInSearch: true, dataIndex: 'COMPACT_STARTDATE', valueType: 'date', sorter: true, width: 110 }, { title: '结束日期', hideInSearch: true, dataIndex: 'COMPACT_ENDDATE', valueType: 'date', sorter: true, width: 110 }, ] // 选择了的门店列表 const contractActionRef = useRef() // 合同列表对象 const contractFormRef = useRef(); // 合同列表查询对象 // 是否显示丙方 const [showAddPartyC, setAddPartyC] = useState(false) // 请求经营品牌树 const { loading, data: busiessBrand = [] } = useRequest(getBusniessBrandTree) const [contractVisible, setContractVisible] = useState(0) // 0关闭 1 合同 2 门店 // 根据选中的经营业态或品牌查询经营商户 const searchBusiness = (item: any) => { setSelectedKeys(item.selectedKeys || []) const [key, value] = item.key.split('-') setCurrenMenu({ [key]: value, current: 1 }) compayActionRef.current?.reload() } const renderOption = (option: any) => { if (option.disabled) { return (
{option.label}
); } return (
{option.label}
); }; // 根据选中的经营业态查询品牌 const searchBrand = (item: any) => { setSelectedKeys(item.selectedKeys || []) const [_, value] = item.key.split('-') setCurrenMenu({ 'BRAND_INDUSTRY': value, current: 1 }) brandActionRef.current?.reload() } // 生成商户左侧菜单 const getMenuDom = (data: any[], callback: () => void, noBrand?: boolean) => { return (data.map((element: any) => { if ((!noBrand && element.BrandTreeList && element.BrandTreeList.length > 0) || element.children) { return ( } key={`BUSINESSTRADE_ID-${element.BusinessTrade_Id}`} onTitleClick={(item) => { if (!currenMenu || item.key !== `BUSINESSTRADE_ID-${currenMenu?.BUSINESSTRADE_ID}`) { callback.call(callback, item) } item.domEvent.stopPropagation(); }} > {!noBrand && element.BrandTreeList.length > 0 && element.BrandTreeList.map((c: any) => } > {c.Brand_Name} )} {element.children && element.children.length > 0 && getMenuDom(element.children, callback, noBrand || undefined)} ) } return (} key={`BUSINESSTRADE_ID-${element.BusinessTrade_Id}`}>{element.BusinessTrade_Name}) })) } // 选择甲乙丙三方公司 const openModal = (value: string) => { setSelectName(value) setVisible(true) if (compayActionRef) { compayActionRef.current?.reset() } } // 拿到关联合同列表 const handleGetRelatedContracts = async (id: number) => { const req = { SearchParameter: { REGISTERCOMPACT_HOSTID: id, COMPACT_STATE: 1000 }, PageIndex: 1, PageSize: 999999 } const data = await handleGetRelatedList(req) if (data && data.data && data.data.length > 0) { const list: any = [] data.data.forEach((item: any) => { if (item.COMPACT_DETAILS !== 1000) { list.push(item) } }) setRelatedContractsList(list) } } return ( ( {[...dom, showDelete && id && { const sucesse = await handelDelete(id || 0); if (sucesse && actionRef.current) { actionRef.current.reload(); setShowDetail(0) } }} > ]} ) }} request={async (value) => { // 初始化数据 const data: any = { STAFF_NAME: currentUser ? currentUser.Name : '', USER_ID: currentUser ? currentUser.ID : '', OPERATE_DATE: moment().format('YYYY-MM-DD hh:mm:ss'), }; // 如果是编辑数据 则需要请求原数据 if (id) { const orgData: any = await getDetail(id); // 主表合同详情 if (orgData && orgData.REGISTERCOMPACT_ID) { handleGetRelatedContracts(orgData.REGISTERCOMPACT_ID) } if (handleGetChildrenData) { handleGetChildrenData(orgData) } const subData: any = await getSubDetail(id); // 子表合同详情 const serverpart: any = await getContractServerpartList(id) // 合同包含的服务区 const serverpartIds: [] = serverpart.map((n: ServerpartContractModel) => n.SERVERPART_ID) || [] const newData = { ...orgData, ...subData, BUSINESS_TYPE: `${subData?.BUSINESS_TYPE}`, BUSINESS_TRADE: subData?.BUSINESS_TRADE ? `${subData?.BUSINESS_TRADE.toString()}` : "", BUSINESS_BRAND: subData?.BUSINESS_BRAND ? `${subData?.BUSINESS_BRAND.toString()}` : "", SERVERPART_TYPE: subData?.SERVERPART_TYPE ? `${subData?.SERVERPART_TYPE}` : "", serverpartIds, SERVERPART_IDS: serverpartIds.toString(), contractRangeDate: [orgData?.COMPACT_STARTDATE, orgData?.COMPACT_ENDDATE], contractRentrfreeRangeDate: [subData?.RENTFREE_STARTDATE, subData?.RENTFREE_ENDDATE], contractDecorateRangeDate: [subData?.DECORATE_STARTDATE, subData?.DECORATE_ENDDATE], SERVERPARTREGION: subData?.SERVERPARTREGION ? subData?.SERVERPARTREGION.split(',') : [] } const pictureList = await getPictureList(id, '1115') const files = pictureList && pictureList?.total > 0 ? pictureList?.data.map((n: PictureModel) => { return { uid: n.ImageId, name: n.ImageName, status: 'done', url: n.ImageUrl, deletepath: n.ImagePath } }) : [] setFields(newData); setFileList(files); if (newData.COMPACT_DETAILS !== 1000) { setShowBtn(true) } else { setShowBtn(false) } return newData; } return { ...data }; }} params={{ id }} onFinish={async (values) => { let newValue: any = { ...values }; if (fields && fields.REGISTERCOMPACT_ID) { // 编辑数据 newValue = { ...fields, ...values }; } else { newValue.COMPACT_STATE = 1000; newValue.FIRSTPART_ID = fields?.FIRSTPART_ID; newValue.SECONDPART_ID = fields?.SECONDPART_ID; } let [COMPACT_STARTDATE, COMPACT_ENDDATE] = ["", ""] // 格式化数据 if (values.contractRangeDate) { [COMPACT_STARTDATE, COMPACT_ENDDATE] = values.contractRangeDate } newValue.COMPACT_STARTDATE = COMPACT_STARTDATE newValue.COMPACT_ENDDATE = COMPACT_ENDDATE newValue.REPAIR_TIME = values.REPAIR_TIME ? values.REPAIR_TIME : null newValue.WATER_CHARGE = values.WATER_CHARGE ? values.WATER_CHARGE : null newValue.ELECTRICITY_FEES = values.ELECTRICITY_FEES ? values.ELECTRICITY_FEES : null newValue.OTHER_SCHARGE = values.OTHER_SCHARGE ? values.OTHER_SCHARGE : null newValue.EQUIPMENT_DEPOSIT = values.EQUIPMENT_DEPOSIT ? values.EQUIPMENT_DEPOSIT : null // newValue.BUSINESS_BRAND = brand?.BRAND_ID || fields?.BUSINESS_BRAND // 装修周期 if (values.contractDecorateRangeDate) { newValue.DECORATE_STARTDATE = values.contractDecorateRangeDate[0] || '' newValue.DECORATE_ENDDATE = values.contractDecorateRangeDate[1] || '' } else { newValue.DECORATE_STARTDATE = '' newValue.DECORATE_ENDDATE = '' } // 免租周期 if (values.contractRentrfreeRangeDate) { newValue.RENTFREE_STARTDATE = values.contractRentrfreeRangeDate[0] || '' newValue.RENTFREE_ENDDATE = values.contractRentrfreeRangeDate[1] || '' } else { newValue.RENTFREE_STARTDATE = '' newValue.RENTFREE_ENDDATE = '' } if (fields?.SERVERPART_IDS !== newValue.serverpartIds.toString()) { newValue.SERVERPART_IDS = newValue.serverpartIds.toString() } // 所属区域 if (newValue?.SERVERPARTREGION && typeof newValue.SERVERPARTREGION === 'object') { newValue.SERVERPARTREGION = newValue.SERVERPARTREGION.toString() } if (contractId) { newValue.REGISTERCOMPACT_HOSTID = contractId } // 提交编辑后的数据 const success = await handleAddUpdate({ ...newValue }); if (success) { const waitUpload = fileList.filter(n => n.status !== 'done') if (waitUpload.length > 0) { await customUploadRequest(waitUpload, success?.REGISTERCOMPACT_ID) } actionRef.current.reload(); } return true; }} > {/* 上传文件组件 */} { if (file.type && file.type?.indexOf('image/') > -1) { // 未上传的文件 如果是图片类型的 if (!file.url && !file.preview) { setPriviewImage(await getBase64(file.lastModifiedDate)) } else { setPriviewImage(file?.url) } } else { const filenameSplitPointArr = file.fileName?.split('.') || [] if (['png', 'jpg', 'jpeg'].indexOf(filenameSplitPointArr[filenameSplitPointArr?.length - 1]) > -1) { setPriviewImage(file?.url) } else if (file?.url) { window.open(file?.url) } } }, beforeUpload: (file, files) => { setFileList([...fileList, ...files]) return false }, onChange: async (info: any) => { if (info.file.status === 'removed') { // 如果在待上传列表中找到,则说明当前图片没有上传服务器,可直接删除 const index = fileList.findIndex(n => n.uid === info.file.uid); if (!info.file?.deletepath) { const newFileList = fileList.slice(); newFileList.splice(index, 1); setFileList(newFileList) return } confirm({ title: '确认删除该文件吗?', icon: , async onOk() { const deleteLoading = message.loading('正在删除...') // const success = await deletePicture(info.file?.deletepath, info.file?.uid, '', '3000') const success = await deleteAHYDPicture(info.file?.deletepath, info.file?.uid, '', '3000') deleteLoading() if (success) { const files = [...fileList] files.splice(index, 1) setFileList(files) } else { message.error("删除失败") } }, onCancel() { }, }); } } }} /> {/* 查看文件组件 */}
{ if (!value) { setPriviewImage(''); } }, }} />
{ relatedContractsList && relatedContractsList.length > 0 ?
{ relatedContractsList.map((item: any) => { return
{ setChildrenRow(item) setShowChildDetailDrawer(true) }}>{`${item.COMPACT_NAME}(${COMPACTLISTS[item.COMPACT_DETAILS]})`} { item.ATTACHMENT_STATE === 1000 ? { const data = await getPictureList(item.REGISTERCOMPACT_ID, '1115') const files = data && data?.total > 0 ? data?.data.map((n: PictureModel) => { return { uid: n.ImageId, name: n.ImageName, status: 'done', url: n.ImageUrl, deletepath: n.ImagePath } }) : [] setChildrenFile(files) setShowChildrenFile(true) }} /> : '' }
}) }
: '' }
合同概况} bordered={false}> { const options = session.get("COMPACT_CHARACTERList") return options; }} /> } onClick={() => { setContractVisible(1) }}>选择 : false } fieldProps={{ onChange: (e: any) => { console.log('e', e); if (handleGetContractChild) { handleGetContractChild(e) } if (e !== 1000) { setShowBtn(true) } else { setShowBtn(false) } }, }} /> { const options = await getServerpartOption(); return options; }} /> + } wrapperCol={{ span: 21 }} > { const options = session.get("COMPACTREGPROINSTList"); return options; }} /> { const options = session.get("COMPACT_CHILDTYPEList") return options; }} rules={[ { required: showDelete, message: '请选择合同附属类型', }, ]} // valueEnum={compactType} /> {/*
甲方信息
*/} } onClick={() => { openModal("FIRSTPART") }}>选择} wrapperCol={{ span: 21 }} /> {/*
乙方信息
*/} } onClick={() => { openModal("SECONDPART") }}>选择} wrapperCol={{ span: 21 }} />
{ showAddPartyC ? // 去除
{/*
丙方信息
*/} { showAddPartyC ? } onClick={() => { openModal("THREEPART") }}>选择} wrapperCol={{ span: 21 }} /> : '' }
合同要素} bordered={false} style={{ marginTop: 24 }}> { if (dates && dates[0] && dates[1]) { const longOfDate = moment.duration(dates[1].diff(dates[0])) const compactDays = longOfDate.asDays() const compactYears = longOfDate.asYears() formRef.current?.setFieldsValue({ DURATIONDAY: compactDays, DURATION: Math.ceil(compactYears) }) } } }} /> {/* */} {/* */} { const options = session.get("SETTLEMENT_MODESList") return options; }} /> { const options = session.get("SETTLEMENT_CYCLEList") return options; }} // rules={[ // { // required: true, // message: '请选择结算周期', // }, // ]} /> { const coast = calcServiceCoast(value, formRef.current?.getFieldValue('BUSINESS_TRADE')) formRef.current?.setFieldsValue({ PROPERTY_FEE: coast * formRef.current?.getFieldValue('OPERATING_AREA') }) } }} rules={[ { required: showDelete, message: '请选择服务区类型', }, ]} /> { const coast = calcServiceCoast(formRef.current?.getFieldValue('SERVERPART_TYPE'), value) formRef.current?.setFieldsValue({ PROPERTY_FEE: coast * formRef.current?.getFieldValue('OPERATING_AREA') }) } }} rules={[ { required: true, message: '请选择经营业态', }, ]} /> {/* } onClick={() => { setBrandVisible(true) }}>} /> */} { const numberValue = Number(value) const coast = calcServiceCoast(formRef.current?.getFieldValue('SERVERPART_TYPE'), formRef.current?.getFieldValue('BUSINESS_TRADE')) formRef.current?.setFieldsValue({ PROPERTY_FEE: numberValue ? coast * numberValue : 0 }) } }} placeholder="请输入经营面积" rules={[ { required: showDelete, message: '请输入经营面积', }, ]} /> {/* */} {/* 经营约束} bordered={false} style={{ marginTop: 24 }}> */} {/* */} {/* */} 合同说明} style={{ marginTop: 24 }}>
{ setVisible(false) const name = `${selectName}_NAME` const linkman = `${selectName}_LINKMAN` const mobile = `${selectName}_MOBILE` const sid = `${selectName}_ID` const data = { [name]: company?.COOPMERCHANTS_NAME, [linkman]: selectName !== 'FIRSTPART' ? company?.COOPMERCHANTS_LINKMAN : company?.LINKER_NAME, [mobile]: selectName !== 'FIRSTPART' ? company?.COOPMERCHANTS_MOBILEPHONE : company?.LINKER_MOBILEPHONE, [sid]: company?.COOPMERCHANTS_ID } if (fields) { fields[sid] = company?.COOPMERCHANTS_ID setFields({ ...fields }) } else { setFields({ ...data }) } formRef.current?.setFieldsValue(data) }} onCancel={() => setVisible(false)} bodyStyle={{ padding: 0 }} > {!loading && selectName !== 'FIRSTPART' && { searchBusiness(item) }} selectedKeys={selectedKeys} >{getMenuDom(busiessBrand, searchBusiness)} } {visible && rowKey={selectName !== "FIRSTPART" ? "RTCOOPMERCHANTS_ID" : "COOPMERCHANTS_ID"} size="small" columns={[ { dataIndex: 'COOPMERCHANTS_NAME', title: '商户名称', }, { dataIndex: 'LINKER_NAME', title: '联系人', hideInSearch: true, hideInTable: selectName !== 'FIRSTPART', }, { dataIndex: 'LINKER_MOBILEPHONE', title: '联系方式', hideInSearch: true, hideInTable: selectName !== 'FIRSTPART', }, { dataIndex: 'BUSINESSTRADE_NAME', title: '经营业态', hideInSearch: true, hideInTable: selectName === 'FIRSTPART', }, { dataIndex: 'BRAND_NAME', title: '品牌', hideInSearch: true, hideInTable: selectName === 'FIRSTPART', }, { dataIndex: 'COOPMERCHANTS_LINKMAN', title: '联系人', hideInSearch: true, hideInTable: selectName === 'FIRSTPART', }, { dataIndex: 'COOPMERCHANTS_MOBILEPHONE', title: '联系方式', hideInSearch: true, hideInTable: selectName === 'FIRSTPART', }, ]} request={async (params) => { if (selectName === 'FIRSTPART') { const data = await getMerchatsList({ COOPMERCHANTS_STATE: 1, MERCHANTTYPE_ID: 2000, pagesize: params.pageSize, current: params.current, keyWord: params.COOPMERCHANTS_NAME ? { value: params.COOPMERCHANTS_NAME, key: 'COOPMERCHANTS_NAME' } : null }) return data } if (selectName !== '') { const data = await getBusinessMerchatsList({ ...currenMenu, pagesize: params.pageSize, current: params.current, keyWord: params.COOPMERCHANTS_NAME ? { value: params.COOPMERCHANTS_NAME, key: 'COOPMERCHANTS_NAME' } : null }) return data } return { data: [], success: true } }} defaultData={[]} search={{ span: 12 }} defaultSize="small" pagination={{ defaultPageSize: 10, size: 'small', showSizeChanger: false }} onReset={() => { setCurrenMenu({}) compayActionRef.current?.reload() }} options={false} style={{ minHeight: 580 }} actionRef={compayActionRef} rowSelection={{ type: "radio", onChange: (_, selectedRows) => { // setSelectedRowKeys(selectedRowKeys) setCompany(selectedRows[0]) } }} tableAlertRender={false} > } {/* 选择合同或门店的弹出框 */} { if (disabled) { setDraggleDisabled(false) } }} onMouseOut={() => { setDraggleDisabled(true) }} onFocus={() => { }} onBlur={() => { }} > {contractVisible === 1 ? '请选择合同进行关联' : '请选择门店进行关联'} } destroyOnClose={true} width={1400} confirmLoading={confirmLoading} onOk={async () => { // 弹出框点击确认按钮时的回调方法 setContractId(contract?.REGISTERCOMPACT_ID) setContractVisible(0) if (showType === 'add') { // 调用合同详情 默认帮选上更多 handleConfirmLoading(true) const data = await handleGetRegisterCompactDetail({ RegisterCompactId: contract?.REGISTERCOMPACT_ID }) console.log('contract', contract); console.log('data', data); handleConfirmLoading(false) let serverpartList: any = [] if (contract?.SERVERPART_IDS) { let list: any = contract?.SERVERPART_IDS.split(',') if (list && list.length > 0) { list.forEach((item: any) => { serverpartList.push(Number(item)) }) } } formRef.current?.setFieldsValue({ serverpartIds: serverpartList, COMPACT_CODE: data?.COMPACT_CODE, COMPACT_NAME: data?.COMPACT_NAME, ORGANIZER_TEL: data?.ORGANIZER_TEL, FIRSTPART_NAME: data?.FIRSTPART_NAME, FIRSTPART_LINKMAN: data?.FIRSTPART_LINKMAN, FIRSTPART_MOBILE: data?.FIRSTPART_MOBILE, SECONDPART_NAME: data?.SECONDPART_NAME, SECONDPART_LINKMAN: data?.SECONDPART_LINKMAN, SECONDPART_MOBILE: data?.SECONDPART_MOBILE, THREEPART_NAME: data?.THREEPART_NAME, THREEPART_LINKMAN: data?.THREEPART_LINKMAN, THREEPART_MOBILE: data?.THREEPART_MOBILE, DURATIONDAY: data?.DURATIONDAY, DURATION: data?.DURATION, RENEWAL_YEARS: data?.RENEWAL_YEARS, COMPACT_AMOUNT: data?.COMPACT_AMOUNT, SECURITYDEPOSIT: data?.SECURITYDEPOSIT, BUSINESS_TYPE: contract?.BUSINESS_TYPE?.toString(), SETTLEMENT_MODES: contract?.SETTLEMENT_MODES, SETTLEMENT_CYCLE: contract?.SETTLEMENT_CYCLE, }) } }} onCancel={() => { // 点击弹出框关闭按钮时,重置弹出框弹出状态 setContractVisible(0) // setContract(undefined) }} afterClose={() => { }} modalRender={(modal) => { return onDraggaleStart(event, uiData)} >
{modal}
}} bodyStyle={{ padding: 0 }} > {/* contractVisible 为1 时,表示弹出框内容为 合同列表数据 */} {contractVisible === 1 && {/* 弹出框左侧服务区菜单 */} { !serverPartLoading && // 当服务区数据请求完成时渲染 菜单节点集 { // 点击子级菜单时 将菜单id (服务区id) 存起来 setShopId(null) if (item.key) { setServerpartId(item.key) const req = { ProvinceCode: '340000', ServerpartId: item.key, ShowWholePower: true } const data = await handleGetServiceShopList(req) setShopList(data.List) } else { setShopList([]) } }} > 全部{ getMenuDomModal(serverpartTree || []) // 函数返回菜单节点集 } } {/* 合同列表 */} // 合同表格主体 rowKey="REGISTERCOMPACT_ID" size="small" columns={compactColumns} request={async (params, sorter) => { // 请求表格数据的方法 const sortstr = Object.keys(sorter).map(n => { const value = sorter[n] return value ? `${n} ${value.replace('end', '')}` : '' }) if (contractVisible) { // 如果是合同选择弹出窗时 请求合同表格数据 ...params, const data = await getContractList({ searchParameter: { SERVERPART_IDS: params.SERVERPART_IDS, COMPACT_STATE: 1000, current: 1, SERVERPARTSHOP_IDS: shopId, COMPACT_DETAILS: 1000 }, sortstr: sortstr.toString(), pagesize: 999, keyWord: params.COMPACT_NAME ? { value: params.COMPACT_NAME, key: 'COMPACT_NAME' } : null }) return data } return { data: [], success: true } }} params={{ SERVERPART_IDS: serverpartId || '' }} // 查询合同表格默认参数 search={{ span: 8 }} pagination={{ defaultPageSize: 10, size: 'small' }} onReset={() => { // 表格查询栏 点击重置按钮时 清空存储的服务区id并刷新查询表格 setServerpartId('') contractActionRef.current?.reload() // 调用 合同表格操作对象进行刷新 }} options={false} style={{ minHeight: 580 }} actionRef={contractActionRef} formRef={contractFormRef} rowSelection={{ // 可选择的表格配置 type: "radio", // 该表格为单选 onChange: (selectedRowKeys, selectedRows) => { // 选中行发生改变时,存储选中行的数据 setContract(selectedRows[0]) } }} tableAlertRender={false} // 关闭 选中行时的弹出提示 > }
{ setBrandVisible(false) const data = { BUSINESS_BRAND: brand?.BRAND_ID, BRAND_NAME: brand?.BRAND_NAME, } formRef.current?.setFieldsValue(data) }} onCancel={() => { setBrandVisible(false) setBrand(undefined) }} afterClose={() => { setCurrenMenu({}) brandActionRef.current?.reset() }} bodyStyle={{ padding: 0 }} > { { searchBrand(item) }} >{getMenuDom(busiessBrand, searchBrand, true)} } rowKey="BRAND_ID" size="small" columns={[ { dataIndex: 'BRAND_INTRO', hideInSearch: true, width: 48, render: (_, record) => { return {record.BRAND_NAME.substring(0, 1)} }, hideInDescriptions: true, }, { dataIndex: 'BRAND_NAME', title: '品牌名称', hideInSearch: true }, { dataIndex: 'keyWord', title: '品牌名称', hideInTable: true // hideInSearch: true }, ]} request={async (params) => { if (brandVisible) { const data = await getBrandList({ ...params, keyWord: params.keyWord ? { value: params.keyWord, key: 'BRAND_NAME' } : null }) return data } return { data: [], success: true } }} params={currenMenu} search={{ span: 12, }} pagination={{ defaultPageSize: 10, size: 'small', showSizeChanger: false }} onReset={() => { setCurrenMenu({}) brandActionRef.current?.reload() }} options={false} style={{ minHeight: 610 }} actionRef={brandActionRef} rowSelection={{ type: "radio", onChange: (selectedRowKeys, selectedRows) => { setBrand(selectedRows[0]) } }} tableAlertRender={false} > {/* 关联合同的详情抽屉 */} { setShowChildDetailDrawer(false) setChildrenRow(undefined) }} destroyOnClose title={'关联合同详情'} closable={false} bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }} > {/* 显示关联合同附件 */} { setShowChildrenFile(false) }} footer={() => { }} >
); }; // export default connect(({ user }: ConnectState) => ({ // currentUser: user.currentUser // }))(EditContract); export default EditContract