import { connect } from "umi"; import type { ConnectState } from "@/models/connect"; import { Col, Divider, FormInstance, message, Modal, Row } from "antd"; import { useRef, useState } from "react"; import ProForm, { ProFormDatePicker, ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadButton } from "@ant-design/pro-form"; import { handeGetCOUPONDetail, handeGetWECHATAPPSIGNList } from "@/pages/travelMember/service"; import session from "@/utils/session"; import { handleDeleteCOUPON, handleGetCOOPSHOP_RULEList, handleSynchroCOUPONService } from "../../service"; import { uploadPicture } from "@/services/picture"; import { ExclamationCircleOutlined } from "@ant-design/icons"; import ModalFooter from "@/pages/travelMember/scenicSpotConfig/component/modalFooter"; import { handleSetlogSave } from "@/utils/format"; import moment from 'moment' const beforeUpload = (file: any) => { const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; if (!isJpgOrPng) { message.error('请上传JPEG、jpg、png格式的图片文件!'); } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { message.error('图片大小不超过 2MB!'); } return isJpgOrPng && isLt2M; } type DetailProps = { showDetail: boolean currentRow: any currentUser: any parentRef?: any setShowDetail: any setCurrentRow: any readonly?: boolean // 判断是不是只读 } const CardInfo = ({ showDetail, currentRow, currentUser, parentRef, setShowDetail, setCurrentRow, readonly }: DetailProps) => { const { confirm } = Modal; // 表单数据 const ModalFormRef = useRef(); // 卡券详情 const [couponDetail, setCouponDetail] = useState() // 小程序列表数据 const [wxMinList, setWxMinList] = useState([]) // 文件列表 const [fileList, setFileList] = useState([]) const [imagePreviewVisible, setImagePreviewVisible] = useState(false) // 预览图片 // 悬浮框 按钮加载的属性 const [modalLoading, setModalLoading] = useState(false) // 预览上传后的图片 const handlePreview = async () => { setFileList(fileList) setImagePreviewVisible(true) }; // 删除的方法 const handleDeleteShopRule = async (id: any) => { const req: any = { COUPONId: id } const data = await handleDeleteCOUPON(req) console.log('datadatadatadata', data); if (data.Result_Code === 100) { handleSetlogSave(`删除【${couponDetail?.COUPON_NAME || "-"}(${id})】卡券`) message.success(data.Result_Desc) if (parentRef) { parentRef.current?.reload() } ModalFormRef?.current?.resetFields() setCurrentRow(null) setShowDetail(false) setFileList([]) } else { message.error(data.Result_Desc) } } // 同步的方法 const handleSynchroCOUPON = async (res: any) => { let req: any = {} let minDetail: any = {} if (wxMinList && wxMinList.length > 0 && res.WECHATAPPSIGN_ID) { let filterObj: any = wxMinList.filter((n: any) => n.WECHATAPPSIGN_ID === res.WECHATAPPSIGN_ID) if (filterObj && filterObj.length > 0) { let obj = filterObj[0] minDetail = { WECHATAPPSIGN_ID: obj.WECHATAPPSIGN_ID, WECHATAPPSIGN_NAME: obj.WECHATAPPSIGN_NAME, WECHATAPP_APPID: obj.WECHATAPP_APPID } } } if (currentRow?.COUPON_ID) { req = { ...couponDetail, ...res, END_TIME: moment(res.END_TIME).format("YYYY-MM-DD"), START_TIME: moment(res.START_TIME).format("YYYY-MM-DD"), VALID_END_TIME: moment(res.VALID_END_TIME).format("YYYY-MM-DD"), VALID_START_TIME: moment(res.VALID_START_TIME).format("YYYY-MM-DD"), UPDATE_STAFF_ID: currentUser?.ID, UPDATE_STAFF_NAME: currentUser?.Name, UPDATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), COUPON_IMAGEURL: fileList && fileList.length > 0 ? fileList[0].url : "", ...minDetail } } else { req = { ...res, END_TIME: moment(res.END_TIME).format("YYYY-MM-DD"), START_TIME: moment(res.START_TIME).format("YYYY-MM-DD"), VALID_END_TIME: moment(res.VALID_END_TIME).format("YYYY-MM-DD"), VALID_START_TIME: moment(res.VALID_START_TIME).format("YYYY-MM-DD"), COUPON_IMAGEURL: fileList && fileList.length > 0 ? fileList[0].url : "", CREATE_STAFF_ID: currentUser?.ID, CREATE_STAFF_NAME: currentUser?.Name, CREATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), ...minDetail } } console.log('reqreqreqreq', req); const data = await handleSynchroCOUPONService(req) console.log('datadatadatadata', data); if (data.Result_Code === 100) { handleSetlogSave(`${currentRow?.COUPON_ID ? '更新' : '新增'}【${data.Result_Data.COUPON_NAME}】卡券`) message.success(data.Result_Desc) ModalFormRef?.current?.resetFields() setCurrentRow(undefined) setShowDetail(false) if (parentRef) { parentRef.current?.reload() } } else { message.error(data.Result_Desc) } } return (
{ ModalFormRef?.current?.resetFields() setCurrentRow(null) setShowDetail(false) setFileList([]) }} confirmLoading={modalLoading} width={1400} bodyStyle={{ height: '700px', // 你可以根据需要调整高度 overflowY: 'auto', }} destroyOnClose title={currentRow?.COUPON_ID ? currentRow?.COUPON_NAME : "新增卡券"} onOk={() => { ModalFormRef?.current?.validateFields().then(async (res) => { await handleSynchroCOUPON(res) }) }} footer={readonly ? false : { await handleDeleteShopRule(currentRow?.COUPON_ID) }} handleCancel={() => { ModalFormRef?.current?.resetFields() setCurrentRow(null) setShowDetail(false) setFileList([]) }} handleOK={() => { ModalFormRef?.current?.validateFields().then(async (res) => { setModalLoading(true) await handleSynchroCOUPON(res) setModalLoading(false) }) }} />} >
{ if (currentRow?.COUPON_ID) { const req: any = { COUPONId: currentRow?.COUPON_ID } const data = await handeGetCOUPONDetail(req) setCouponDetail(data) return data } else { return {} } }} > 基本信息 { const COUPONTYPEList = session.get('COUPONTYPEList') return COUPONTYPEList }} // options={COUPONTYPEList} rules={[ { required: true, message: '请选择卡券类型' } ]} readonly={readonly} /> 基本规则 { const req: any = { SearchParameter: { OWNERUNIT_ID: 911, ISVALID: 1 }, PageIndex: 1, PageSize: 999999 } const data = await handleGetCOOPSHOP_RULEList(req) let list: any = [] console.log('data', data); if (data && data.length > 0) { data.forEach((item: any) => { list.push({ label: item.COOPSHOP_RULE_NAME, value: item.COOPSHOP_RULE_ID }) }) } // setCOOPSHOPRULEIDOPTIONS(list) return list }} rules={[ { required: true, message: '请选择适用门店' } ]} readonly={readonly} /> 上架信息 { const req: any = { SearchParameter: { OWNERUNIT_ID: 911, } } const data = await handeGetWECHATAPPSIGNList(req) console.log('datadatadatadata', data); setWxMinList(data || []) let list: any = [] if (data && data.length > 0) { data.forEach((item: any) => { list.push({ label: item.WECHATAPPSIGN_NAME, value: item.WECHATAPPSIGN_ID }) }) } return list }} // options={[ // { label: "彩云驿", value: 37 }, // { label: "彩云驿出行", value: 38 }, // ]} rules={[ { required: true, message: '请选择小程序' } ]} readonly={readonly} /> 详情介绍 卡券图标 { const formData = new FormData(); formData.append('files', info.file); formData.append('TableType', '1208'); formData.append('ImageName', typeof info.file !== 'string' ? info.file?.name : ''); if (info.filename) { const success = await uploadPicture(formData) if (success) { const list = [{ // uid: `${success.ImageId}`, // 注意,这个uid一定不能少,否则上传失败 name: success.Result_Data.ImageName, // status: 'done', url: success.Result_Data.ImageUrl, // url 是展示在页面上的绝对链接 // imgUrl: success.ImagePath // + success.ImageUrl, }] setFileList(list) } } else { message.error("您上传的图片不存在.") } }, onChange: async (info: any) => { if (info.file.status === 'removed') { confirm({ title: '确认删除该图片吗?', icon: , async onOk() { setFileList([]) } }); } } }} disabled={readonly} />
) } export default connect(({ user, }: ConnectState) => ({ currentUser: user.currentUser, }))(CardInfo);