From 4e6fe8ef95e23d2f997deb0b90721388b5eb49c9 Mon Sep 17 00:00:00 2001 From: ylj20011123 Date: Mon, 21 Jul 2025 19:52:53 +0800 Subject: [PATCH] update --- .vercel/project.json | 1 + config/routes.ts | 5 + .../reports/contractWarningQuery/index.tsx | 999 ++++++++++++++++++ .../component/yearExamineProcess.tsx | 6 + .../travelMember/BookingMealOrder/index.tsx | 16 + .../ConsumptionRecordSearch/index.tsx | 21 + .../GrowthValueRecordSearch/index.tsx | 14 + .../MallEvaluationManage/index.tsx | 3 +- .../travelMember/MallOrderManage/index.tsx | 16 + .../MallSummaryStatistics/index.tsx | 18 +- .../MerchantEvaluationManage.less | 10 + .../MerchantEvaluationManage/index.tsx | 259 ++++- .../travelMember/PointsRecordSearch/index.tsx | 5 + .../component/LeftSelectMallType.tsx | 12 +- .../RegistrationRetentionAnalysis/index.tsx | 5 + .../SummaryOfReservation/index.tsx | 16 + .../memberInfor/component/CollectProducts.tsx | 1 + .../component/LicensePlateManage.tsx | 1 + .../memberInfor/component/MemberDiscounts.tsx | 1 + src/pages/travelMember/memberInfor/index.tsx | 9 + src/pages/travelMember/service.ts | 74 ++ 21 files changed, 1468 insertions(+), 24 deletions(-) create mode 100644 .vercel/project.json create mode 100644 src/pages/reports/contractWarningQuery/index.tsx create mode 100644 src/pages/travelMember/MerchantEvaluationManage/MerchantEvaluationManage.less diff --git a/.vercel/project.json b/.vercel/project.json new file mode 100644 index 0000000..72bc78c --- /dev/null +++ b/.vercel/project.json @@ -0,0 +1 @@ +{"projectName":"trae_cloud-platform_lsb2"} \ No newline at end of file diff --git a/config/routes.ts b/config/routes.ts index 0bef39a..fcde868 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -247,6 +247,11 @@ export default [ name: 'reports/serverpartOfComparison', component: './reports/comparisonOfServerpart/index', }, + { + path: 'reports/warningQueryContract', + name: 'reports/warningQueryContract', + component: './reports/contractWarningQuery/index', + }, ], }, { diff --git a/src/pages/reports/contractWarningQuery/index.tsx b/src/pages/reports/contractWarningQuery/index.tsx new file mode 100644 index 0000000..5f2d8ec --- /dev/null +++ b/src/pages/reports/contractWarningQuery/index.tsx @@ -0,0 +1,999 @@ +// 合同预警查询 +import moment from "moment"; +import numeral from 'numeral'; +import { connect } from "umi"; +import React, { useRef, useState } from "react"; +import { PageContainer } from "@ant-design/pro-layout"; +import ProTable from "@ant-design/pro-table"; +import { FormInstance, Spin, Tooltip } from "antd"; +import { Col, Row } from "antd"; +import { Button, DatePicker, Drawer, message, Modal, Popconfirm, Select, Typography } from "antd"; +import { ExclamationCircleOutlined, FileSearchOutlined, PlusOutlined } from "@ant-design/icons"; + +import type { CurrentUser } from '@/models/user'; +import type { ConnectState } from "@/models/connect"; +import type { ActionType, ProColumns } from "@ant-design/pro-table"; +import { exportExcel, getBase64 } from '@/utils/utils'; +import ProForm, { ProFormDatePicker, ProFormSelect, ProFormTextArea, ProFormUploadButton } from "@ant-design/pro-form"; +import { getProjectList } from "@/pages/BussinessProject/service"; +import useRequest from "@ahooksjs/use-request"; +import { deletePicture, uploadPicture } from "@/services/picture"; +import type { UploadFile } from "antd/es/upload/interface"; +import fileIcon from '@/assets/detail/fileIcon.svg' +import session from "@/utils/session"; +import PageTitleBox from "@/components/PageTitleBox"; +import { delCompact, getList, handleContractSupple } from "@/pages/contract/service"; +import { ContractListModel } from "@/pages/contract/data"; +import { contractType } from "@/pages/contract/emun"; +import ContractDetail from "@/pages/contract/components/detail"; +import ContractEdit from "@/pages/contract/components/editor"; +import ReactHTMLTableToExcel from "react-html-table-to-excel"; + +// 删除数据 +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; + } +}; + +// 上传附件 +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 uploadPicture(formData) + if (success) { + return true + } + return false +} + +// const contractWarningQuery: React.FC<{ currentUser?: CurrentUser }> = ({ currentUser }) => { +const contractWarningQuery: React.FC<{ currentUser: CurrentUser }> = (props) => { + const { currentUser } = props + const downloadBtnRef = useRef() + // props + + const [currentRow, setCurrentRow] = useState(undefined) + const [showDetail, setShowDetail] = useState(0) + const actionRef = useRef() + const [searchParams, setSearchParams] = useState(); + const [showBtn, setShowBtn] = useState(false) + const editorRef = useRef() + const modalRef = useRef() + // 显示附属合同的悬浮框 + const [showModal, setShowModal] = useState(false) + // 悬浮弹出框选中的内容 + const [contract, setContract] = useState() + // 悬浮框表格数据 + const [modalTableData, setModalTableData] = useState() + // 结算模式枚举对象 + const [modesObj, setModesObj] = useState() + // 切換日期的时间 + const [changeDayDate, setChangeDayDate] = useState() + // modal的loading + const [modalLoading, setModalLoading] = useState(false) + // 拿到结算模式列表 + const SETTLEMENT_MODESList = session.get("SETTLEMENT_MODESList") + const SETTLEMENT_MODESObj = session.get("SETTLEMENT_MODESObj") + // 合同类型对象 + const compactType = session.get("COMPACT_CHARACTERObj") + // 合同类型子项 + const COMPACT_DETAILS = session.get("COMPACT_DETAILSObj") + // 右上角选择的类型 + const [BIGCOMPACT_DETAILS, SETBIGCOMPACT_DETAILS] = useState() + // 退场时间 + const [exitTime, setExitTime] = useState() + // 子组件详情数据 + const [childrenData, setChildrenData] = useState() + // 是否显示新增附属合同 + const [addSubsidiary, setAddSubsidiary] = useState(false) + const [reqDetailList, setReqDetailList] = useState(); // 合计项数据源 + // 查询的条件 + // 拿到子组件详情 + const handleGetChildrenData = (obj: any) => { + if (obj.COMPACT_DETAILS === 1000) { + setAddSubsidiary(true) + } else { + setAddSubsidiary(false) + } + setChildrenData(obj) + } + // 拿到改变的合同类型子项 + const handleGetContractChild = (obj: any) => { + if (obj === 1000) { + setAddSubsidiary(true) + } else { + setAddSubsidiary(false) + } + } + // 附件文件 + const [fileList, setFileList] = useState([]) // 需要上传的附件图片列表 + const [priviewImage, setPriviewImage] = useState(); // 预览的文件地址 + const [COMPACTLIST, setCOMPACTLIST] = useState() + const [printIndex, setPrintIndex] = useState(new Date().getTime()) + 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 [showLoading, setShowLoading] = useState(false) + // 是否显示打印的表格 + const [showExportTable, setShowExportTable] = useState(false) + const [columnsStateMap, setColumnsStateMap] = useState({ + THREEPART_LINKMAN: { + show: false, + } + }); + const columns: ProColumns[] = [ + // { + // title: '所属服务区', + // dataIndex: 'SERVERPART_ID', + // valueType: 'select', + // request: async () => { + // return await getServerpartOption(); + // } + // }, + { + title: '查询合同', + dataIndex: 'searchKey', + hideInTable: true, + hideInDescriptions: true, + fieldProps: { + placeholder: "请输入合同编号/名称/乙方" + }, + + }, + { + title: '合同编号', + dataIndex: 'COMPACT_CODE', + hideInSearch: true, + hideInTable: true, + }, + { + title: '合同名称', + dataIndex: 'COMPACT_NAME', + // ellipsis: true, + hideInSearch: true, + hideInDescriptions: true, + // width:'25%', + sorter: true, + ellipsis: true, + render: (_, record) => { + return { + setCurrentRow(record) + setShowDetail(1) + }}>{record.COMPACT_NAME} + }, + }, + { + title: '经营模式', + dataIndex: 'BUSINESS_TYPE', + valueType: 'select', + valueEnum: contractType, + width: 110, + align: "center", + // hideInSearch: true, + }, + + { + title: '合同金额(万元)', + dataIndex: 'COMPACT_AMOUNT', + hideInSearch: true, + align: 'right', + width: 130, + sorter: true, + render: (_) => { + return {numeral(_).format('0,0.00')} + }, + }, + { + title: '乙方', + dataIndex: 'SECONDPART_NAME', + hideInDescriptions: true, + hideInSearch: true, + sorter: true, + width: 130, + ellipsis: true, + }, + { + title: '丙方联系人', + dataIndex: 'THREEPART_LINKMAN', + hideInDescriptions: true, + hideInSearch: true, + align: 'center', + width: 130, + sorter: true, + }, + { + title: '合同主体', + dataIndex: 'SERVERPART_NAME', + ellipsis: true, + hideInDescriptions: true, + hideInSearch: true, + width: 120, + align: 'center', + }, + { + title: '关联合同', + dataIndex: 'RELATE_COMPACT', + hideInDescriptions: true, + hideInSearch: true, + width: 100, + align: 'center', + render: (_, record) => { + return {record?.RELATE_COMPACT > 0 ? '是' : ''} + } + }, + { + title: '附件', + dataIndex: 'ATTACHMENT_STATE', + hideInSearch: true, + align: 'center', + width: 60, + render: (_, record) => { + return
+ { + record?.ATTACHMENT_STATE === 1000 ? + : '' + } +
+ } + }, + { + title: '到期日期', + dataIndex: 'dateRange', + valueType: "dateRange", + hideInTable: true, + hideInDescriptions: true, + fieldProps: { + ranges: Number(moment().format('MM')) > 6 ? { + "一月内": [moment(), moment().add(1, 'months')], + "三月内": [moment(), moment().add(3, 'months')], + "六月内": [moment(), moment().add(6, 'months')], + "截止年底": [moment(), moment().endOf('y')], + "明年上半年": [moment(), moment(`${moment(moment().add(1, 'y')).format('YYYY')}-06-30`)], + + + } : { + "一月内": [moment(), moment().add(1, 'months')], + "三月内": [moment(), moment().add(3, 'months')], + "六月内": [moment(), moment().add(6, 'months')], + "截止上半年": [moment(), moment(`${moment().format('YYYY')}-06-30`)], + "下半年": [moment(), moment(moment().endOf('y'))], + } + }, + initialValue: [moment(), moment().add(1, 'months')], + }, + { + title: '合同状态', + dataIndex: 'COMPACT_STATE', + valueType: 'select', + initialValue: '1000', + // hideInSearch: true, + hideInTable: true, + valueEnum: { 0: { text: '无效', status: 'error' }, 1: { text: '待补充', status: 'process' }, 1000: { text: '有效', status: 'success' } }, + }, + { + title: '合同类型', + dataIndex: 'COMPACT_TYPE', + valueType: 'select', + align: 'center', + width: 130, + valueEnum: compactType, + ellipsis: true, + initialValue: "340001" + }, + { + title: '类型子项', + dataIndex: 'COMPACT_DETAILS', + valueType: 'select', + align: 'center', + width: 130, + valueEnum: COMPACT_DETAILS, + ellipsis: true, + initialValue: "1000" + }, + { + title: '开始日期', + hideInSearch: true, + dataIndex: 'COMPACT_STARTDATE', + valueType: 'date', + sorter: true, + width: 110 + }, + { + title: '结束日期', + hideInSearch: true, + dataIndex: 'COMPACT_ENDDATE', + valueType: 'date', + sorter: true, + width: 110 + }, + { + title: '撤场时间', + hideInSearch: true, + dataIndex: 'CLOSED_DATE', + valueType: 'date', + sorter: true, + width: 110 + }, + { + title: '操作人', + dataIndex: 'STAFF_NAME', + hideInSearch: true, + hideInTable: true + }, + { + dataIndex: 'OPERATE_DATE', + title: '更新时间', + valueType: 'fromNow', + hideInTable: true, + hideInSearch: true, + }, + { + // 如果是商户账号,则只能查看合同信息,不能做编辑、删除操作 + title: '操作', + dataIndex: 'option', + valueType: 'option', + hideInDescriptions: true, + hideInSearch: true, + hideInTable: currentUser?.UserPattern === 2000, + width: 120, + render: (_, record) => { + return [ + // { history.push(`/contract/detail/${record.REGISTERCOMPACT_ID}`) }}>查看, + { + setCurrentRow(record) + setShowDetail(2) + // history.push(`contract/edit/${record.REGISTERCOMPACT_ID}`) + }}>编辑, + { + const sucesse = await handelDelete(record.REGISTERCOMPACT_ID); + if (sucesse && actionRef.current) { + actionRef.current.reload(); + } + }} + > + 删除 + + ] + } + } + ]; + // 附属合同的表格字段 + const modalColumns: any = [ + { + dataIndex: 'BUSINESSPROJECT_NAME', + title: '项目名称', + align: 'center', + ellipsis: true, + hideInSearch: true, + }, + { + dataIndex: 'SERVERPARTSHOP_NAME', + title: '门店名称', + align: 'center', + hideInSearch: true, + ellipsis: true + }, + { + title: '合同金额', + dataIndex: 'GUARANTEE_PRICE', + hideInSearch: true, + width: 130, + align: "center", + render: (_) => { + return
{_}
+ } + }, + { + title: '开始日期', + hideInSearch: true, + dataIndex: 'PROJECT_STARTDATE', + valueType: 'date', + align: 'center', + sorter: true, + width: 110 + }, + { + title: '结束日期', + hideInSearch: true, + dataIndex: 'PROJECT_ENDDATE', + valueType: 'date', + align: 'center', + sorter: true, + width: 110 + }, + { + title: '结算模式', + width: 110, + dataIndex: 'SETTLEMENT_MODES', + align: 'center', + valueEnum: SETTLEMENT_MODESObj + }, + { + title: '切换结算模式', + width: 140, + dataIndex: 'SWITCH_MODES', + align: 'center', + render: (_, record) => { + return + } + }, + { + title: '切换日期', + width: 130, + dataIndex: 'SwitchDate', + align: 'center', + render: (_, record) => { + return { + const list = JSON.parse(JSON.stringify(modalTableData)) + list.forEach((item: any) => { + if (item.BUSINESSPROJECT_ID === record.BUSINESSPROJECT_ID) { + item.SwitchDate = moment(e._d) + } + }) + setModalTableData(list) + }} /> + } + }, + { + title: '退场日期', + hideInSearch: true, + dataIndex: 'exitTime', + valueType: 'date', + sorter: true, + width: 140, + render: (_, record) => { + return { + + const list = JSON.parse(JSON.stringify(modalTableData)) + + list.forEach((item: any) => { + if (item.BUSINESSPROJECT_ID === record.BUSINESSPROJECT_ID) { + if (e) { + item.exitTime = moment(e._d) + } else { + item.exitTime = undefined + } + } + }) + setModalTableData(list) + }} /> + } + }, + ] + const exportTable = (e) => { + e.stopPropagation(); // 防止Collapse组件收起 + const main = document.getElementsByClassName(`saleReportHideBox${printIndex}`)[0] + const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点 + const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点 + const container = document.querySelector('#hiddenBox'); + + const tempTable = document.createElement('table'); + tempTable.appendChild(thead); + tempTable.appendChild(tbody); + + tempTable.setAttribute('id', 'table-to-xls-saleRankReport'); // 给table添加id,值与按钮上的table字段对应 + + container.appendChild(tempTable); // 把创建的节点添加到页面容器中 + + setShowLoading(false) + + downloadBtnRef.current.handleDownload(); + setShowExportTable(false) + tempTable.remove() // 防止重复打印一个内容 + } + + + return ( + + + { + showLoading ? +
+
+ + 数据导出中... +
+
: '' + } +
+ { + showExportTable && reqDetailList && reqDetailList.length > 0 ? + : '' + } +
+ +
+ + + + headerTitle={} + rowKey="REGISTERCOMPACT_ID" + request={async (params, sorter) => { + const sortstr = Object.keys(sorter).map(n => { + const value = sorter[n] + return value ? `${n} ${value.replace('end', '')}` : '' + }) + const [start, end] = params?.dateRange || ['', ''] + const searchWholeParams = { + searchParameter: { + ...params, + COMPACT_STARTDATE: start, + COMPACT_ENDDATE: end, + Due_StartDate: start, + Due_EndDate: end, + // COMPACT_TYPE: "340001", + // COMPACT_DETAILS: "1000" + }, + sortstr: sortstr.length ? sortstr.toString() : "", + keyWord: params.searchKey ? { key: "COMPACT_CODE,SECONDPART_NAME,COMPACT_NAME", value: params.searchKey } : null, // 关键词查询 + pagesize: 999999 + } + const list = await getList(searchWholeParams) + console.log('listlistlist', list); + setReqDetailList(list.data) + setSearchParams(searchWholeParams); + return list + }} + actionRef={actionRef} + search={{ span: 6 }} + columns={columns} + toolbar={{ + // 如果是商户账号,则只能查看合同信息,不能做新增操作 + actions: currentUser?.UserPattern !== 2000 ? [ + + + , + 单位:万元, + , + , + ] : [], + }} + columnsState={{ + value: columnsStateMap, + onChange: setColumnsStateMap, + }} + pagination={{ defaultPageSize: 10 }} + /> + { + setCurrentRow(undefined); + setShowDetail(0); + SETBIGCOMPACT_DETAILS(undefined) + }} + destroyOnClose + title={showDetail === 2 ? +
+
{!currentRow ? "新增合同" : currentRow?.COMPACT_NAME}
+ { + currentRow && addSubsidiary ? + { + + } + }} + > + { + // const options = session.get("COMPACT_DETAILSList") + // return options; + // }} + options={COMPACTLIST} + addonAfter={showBtn ? + : + false + } + fieldProps={{ + onChange: (e: any) => { + SETBIGCOMPACT_DETAILS(e) + if (e === 3000 || e === 2002) { + setShowBtn(true) + } else { + setShowBtn(false) + } + }, + }} + /> + : '' + } +
+ : ""} + closable={false} + bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }} + > + {/* 编辑/查看合同 */} + {showDetail !== 0 && currentRow !== undefined && (showDetail === 1 ? + : + ) + } + {/* 新增合同 */} + { + !currentRow && showDetail !== 0 && + } +
+ + { + modalRef.current?.validateFields().then(async (res) => { + if (res) { + setModalLoading(true) + if (contract && contract.length > 0) { + + } else { + message.error('请先选择附属合同') + setModalLoading(false) + return + } + const list: any = [] + const completeList: any = [] + modalTableData.forEach((item: any) => { + if (contract.indexOf(item.BUSINESSPROJECT_ID) !== -1) { + list.push({ label: item.BUSINESSPROJECT_ID, value: item.SWITCH_MODES }) + completeList.push(item) + } + }) + const descValue: string = modalRef.current?.getFieldsValue() + let req + if (BIGCOMPACT_DETAILS === 2002) { + if (!completeList[0].exitTime) { + message.error('请选择退场日期') + return + } + req = { + CompactDetails: BIGCOMPACT_DETAILS,// 补充协议类型 + ContractId: childrenData?.REGISTERCOMPACT_ID,// 主合同内码 + // ClosedDate:moment(exitTime).format('YYYY-MM-DD'),// 撤场日期 + ClosedDate: moment(completeList[0].exitTime).format('YYYY-MM-DD'),// 撤场日期 + SettlementModes: list[0].value,// 切换后的结算模式 + SwitchDate: completeList[0].SwitchDate ? moment(completeList[0].SwitchDate).format('YYYY-MM-DD') : '',// 切换日期 + ProjectList: list,// 变更经营项目列表 + StaffId: currentUser?.ID,// 操作人内码 + StaffName: currentUser?.Name,// 操作人员 + CompactDPDesc: descValue && descValue.COMPACT_DPDESC ? descValue.COMPACT_DPDESC : '',// 注意事项 + } + } else { + if (list[0].value) { + req = { + CompactDetails: BIGCOMPACT_DETAILS,// 补充协议类型 + ContractId: childrenData?.REGISTERCOMPACT_ID,// 主合同内码 + SettlementModes: list[0].value,// 切换后的结算模式 + SwitchDate: completeList[0].SwitchDate ? moment(completeList[0].SwitchDate).format('YYYY-MM-DD') : '',// 切换日期 + ProjectList: list,// 变更经营项目列表 + StaffId: currentUser?.ID,// 操作人内码 + StaffName: currentUser?.Name,// 操作人员 + CompactDPDesc: descValue && descValue.COMPACT_DPDESC ? descValue.COMPACT_DPDESC : '',// 注意事项 + } + } else { + message.error('请选择结算模式') + setModalLoading(false) + return + } + + } + const data = await handleContractSupple(req) + + if (data) { + const waitUpload = fileList.filter(n => n.status !== 'done') + if (waitUpload.length > 0) { + await customUploadRequest(waitUpload, data.Result_Data?.REGISTERCOMPACT_ID) + } + // actionRef.current.reload(); + } + + if (data.Result_Code === 100) { + message.success(data.Result_Desc) + setShowModal(false) + setFileList([]) + actionRef.current?.reload() + } else { + message.error(data.Result_Desc) + } + setModalLoading(false) + } + }) + }} + onCancel={() => { + setModalTableData([]) + setShowModal(false) + setContract([]) + setFileList([]) + setExitTime(undefined) + setModalLoading(false) + }}> + { + + } + }} + > + { + 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') + deleteLoading() + if (success) { + const files = [...fileList] + files.splice(index, 1) + setFileList(files) + } + else { + message.error("删除失败") + } + }, + onCancel() { + }, + }); + } + } + }} + /> + + {/* { */} + {/* BIGCOMPACT_DETAILS===2002? */} + {/* { */} + {/* if (e){ */} + {/* setExitTime(e._d) */} + {/* } */} + {/* } */} + {/* }} */} + {/* />:'' */} + {/* } */} + + {/*
*/} + {/*

退场时间

*/} + {/* { */} + {/* }} /> */} + {/*
*/} + { + const req = { + PROJECT_VALID: 1, + REGISTERCOMPACT_ID: currentRow?.REGISTERCOMPACT_ID, + PageIndex: 1, + pagesize: 9999, + keyWord: null + } + const data = await getProjectList(req) + setModalTableData(data.data) + // return data + }} + dataSource={modalTableData} + rowSelection={{ // 可选择的表格配置 + type: "checkbox", // 该表格为单选 + onChange: (selectedRowKeys, selectedRows) => { + // 选中行发生改变时,存储选中行的数据 + setContract(selectedRowKeys) + } + }} + /> +
+ + ); +} + +export default connect(({ user }: ConnectState) => ({ + currentUser: user?.currentUser +}))(contractWarningQuery); diff --git a/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx b/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx index d3a6c5f..75cadeb 100644 --- a/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx +++ b/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx @@ -905,6 +905,12 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare list = list.filter((item: any) => item.value !== 827); } + // 剔除 结算时间在2025年4月1日 之前的数据 不给陶杰 + if (parentRow?.PROJECT_ENDDATE && new Date(parentRow?.PROJECT_ENDDATE).getTime() < new Date('2025-04-01 00:00:00').getTime()) { + list = list.filter((item: any) => item.value !== 1802); + } + + if (currentUser?.ID === 2785) { list.push({ label: '严琅杰', value: 2785 }) diff --git a/src/pages/travelMember/BookingMealOrder/index.tsx b/src/pages/travelMember/BookingMealOrder/index.tsx index 37127ba..7868803 100644 --- a/src/pages/travelMember/BookingMealOrder/index.tsx +++ b/src/pages/travelMember/BookingMealOrder/index.tsx @@ -141,6 +141,22 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr width: 120, ellipsis: true, }, + { + title: "获得积分", + dataIndex: "MEMBERSHIP_POINT", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, + { + title: "获得成长值", + dataIndex: "MEMBERGROWTH_VALUE", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, // { // dataIndex: 'COUPON_SEND_ID', // title: '优惠券名', diff --git a/src/pages/travelMember/ConsumptionRecordSearch/index.tsx b/src/pages/travelMember/ConsumptionRecordSearch/index.tsx index 484e28c..c78870e 100644 --- a/src/pages/travelMember/ConsumptionRecordSearch/index.tsx +++ b/src/pages/travelMember/ConsumptionRecordSearch/index.tsx @@ -193,6 +193,22 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent? align: 'center', ellipsis: true, }, + { + title: "获得积分", + width: 120, + dataIndex: "MEMBERSHIP_POINT", + hideInSearch: true, + align: 'center', + ellipsis: true, + }, + { + title: "获得成长值", + width: 120, + dataIndex: "MEMBERGROWTH_VALUE", + hideInSearch: true, + align: 'center', + ellipsis: true, + }, { title: "消费时间 ", width: 150, @@ -238,6 +254,11 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent? headerTitle={} scroll={{ x: '100%', y: isComponent ? '300px' : 'calc(100vh - 430px)' }} search={isComponent ? false : { span: 6 }} + options={isComponent ? false : { + density: true, + reload: true, + setting: true + }} request={async (params) => { let req: any = {} diff --git a/src/pages/travelMember/GrowthValueRecordSearch/index.tsx b/src/pages/travelMember/GrowthValueRecordSearch/index.tsx index 6dd4540..d8c459e 100644 --- a/src/pages/travelMember/GrowthValueRecordSearch/index.tsx +++ b/src/pages/travelMember/GrowthValueRecordSearch/index.tsx @@ -102,6 +102,15 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent? ellipsis: true, valueType: 'digit' }, + { + title: "实付金额", + width: 120, + dataIndex: "PAY_AMOUNT", + hideInSearch: true, + align: 'center', + ellipsis: true, + valueType: 'digit' + }, { title: "成长来源", width: 120, @@ -180,6 +189,11 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent? headerTitle={} scroll={{ x: '100%', y: isComponent ? '300px' : 'calc(100vh - 430px)' }} search={isComponent ? false : { span: 6 }} + options={isComponent ? false : { + density: true, + reload: true, + setting: true + }} request={async (params) => { const req: any = isComponent ? { searchParameter: { diff --git a/src/pages/travelMember/MallEvaluationManage/index.tsx b/src/pages/travelMember/MallEvaluationManage/index.tsx index 472a3f9..198cad1 100644 --- a/src/pages/travelMember/MallEvaluationManage/index.tsx +++ b/src/pages/travelMember/MallEvaluationManage/index.tsx @@ -252,7 +252,7 @@ const MallEvaluationManage: React.FC<{ currentUser: CurrentUser | undefined, isC
{ isComponent ? '' : - + }
} // 列表表头 actionRef={actionRef} search={isComponent ? false : { span: 6, labelWidth: 'auto' }} diff --git a/src/pages/travelMember/MallOrderManage/index.tsx b/src/pages/travelMember/MallOrderManage/index.tsx index 6f5b4e2..8ff00f5 100644 --- a/src/pages/travelMember/MallOrderManage/index.tsx +++ b/src/pages/travelMember/MallOrderManage/index.tsx @@ -226,6 +226,22 @@ const MallOrderManage: React.FC<{ currentUser: CurrentUser }> = (props) => { ellipsis: true, align: "center", }, + { + title: "获得积分", + dataIndex: "MEMBERSHIP_POINT", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, + { + title: "获得成长值", + dataIndex: "MEMBERGROWTH_VALUE", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, { title: "订单时间", dataIndex: "ORDER_DATE", diff --git a/src/pages/travelMember/MallSummaryStatistics/index.tsx b/src/pages/travelMember/MallSummaryStatistics/index.tsx index 7cab7d0..fc631dc 100644 --- a/src/pages/travelMember/MallSummaryStatistics/index.tsx +++ b/src/pages/travelMember/MallSummaryStatistics/index.tsx @@ -1,4 +1,4 @@ -// 订单汇总统计 +// 订单汇总统计 商城的 import { ConnectState } from "@/models/connect"; import { useEffect, useRef, useState } from "react"; import { connect, CurrentUser } from "umi"; @@ -129,6 +129,22 @@ const MallSummaryStatistics: React.FC<{ currentUser: CurrentUser | undefined }> width: 120, ellipsis: true, }, + { + title: "获得积分", + dataIndex: "MEMBERSHIP_POINT", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, + { + title: "获得成长值", + dataIndex: "MEMBERGROWTH_VALUE", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, { dataIndex: 'ORDER_DATE', title: '订单时间', diff --git a/src/pages/travelMember/MerchantEvaluationManage/MerchantEvaluationManage.less b/src/pages/travelMember/MerchantEvaluationManage/MerchantEvaluationManage.less new file mode 100644 index 0000000..88e65de --- /dev/null +++ b/src/pages/travelMember/MerchantEvaluationManage/MerchantEvaluationManage.less @@ -0,0 +1,10 @@ +.proformList { + .ant-form-item-control-input-content>div:first-of-type { + width: 100% !important; + max-width: none !important; + + .ant-pro-form-list-item { + display: block !important; + } + } +} \ No newline at end of file diff --git a/src/pages/travelMember/MerchantEvaluationManage/index.tsx b/src/pages/travelMember/MerchantEvaluationManage/index.tsx index cd392c3..7115214 100644 --- a/src/pages/travelMember/MerchantEvaluationManage/index.tsx +++ b/src/pages/travelMember/MerchantEvaluationManage/index.tsx @@ -4,18 +4,20 @@ import type { CurrentUser } from "umi"; import type { ConnectState } from "@/models/connect"; import React, { useRef, useState } from "react"; import type { FormInstance } from "antd"; -import { Button, Col, message, Modal, Row, Space, Spin, Tree } from "antd"; +import { Button, Col, message, Modal, Row, Space, Spin, Tree, Image } from "antd"; import useRequest from "@ahooksjs/use-request"; import type { ActionType } from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table"; import LeftSelectTree from "@/pages/reports/settlementAccount/component/leftSelectTree"; import PageTitleBox from "@/components/PageTitleBox"; -import { handeGetCOMMENTList, handeSynchroCOMMENT } from "../service"; +import { handeDeleteCOMMENT, handeDeleteREPLY, handeGetCOMMENTDetail, handeGetCOMMENTList, handeGetREPLYDetail, handeSynchroCOMMENT, handeSynchroREPLY, handeSynchroReplyList } from "../service"; import moment from 'moment' import session from "@/utils/session"; import { handleSetlogSave } from "@/utils/format"; import Draggable from "react-draggable"; -import ProForm, { ProFormText, ProFormTextArea } from "@ant-design/pro-form"; +import ProForm, { ProFormList, ProFormText, ProFormTextArea, ProFormUploadButton } from "@ant-design/pro-form"; +import { getBase64 } from "@/utils/utils"; +import './MerchantEvaluationManage.less' @@ -33,6 +35,13 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent const [showDetailDrawer, setShowDetailDrawer] = useState(false) // 点击的当前数据 const [currentRow, setCurrentRow] = useState() + // 评论的附件 + const [fileList, setFileList] = useState() + const [imagePreviewVisible, setImagePreviewVisible] = useState(false) // 预览图片 + const [priviewImage, setPriviewImage] = useState(); // 预览的图片地址 + // 删除回复的加载效果 + const [deleteREPLYLoading, setDeleteREPLYLoading] = useState(false) + const MEMBERSHIPLEVELYNObj = session.get('MEMBERSHIPLEVELYNObj') // 树相关的属性和方法 @@ -152,7 +161,23 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent align: "center", render: (_, record) => { return record?.COMMENT_CONTENT ? { - setCurrentRow(record) + console.log('recordrecord', record); + + if (record?.ImageList && record?.ImageList.length > 0) { + let list: any = [] + record?.ImageList.forEach((item: any) => { + list.push({ + name: "", + url: item?.ImageUrl + }) + }) + setFileList(list) + } + + setCurrentRow({ + ...record, + ReplyList: record?.ReplyList || [] + }) setShowDetailDrawer(true) }}>{record?.COMMENT_CONTENT} : "-" } @@ -169,7 +194,48 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent // 删除评论 const handleDeleteEvaluation = async () => { - + const req: any = { + COMMENTId: currentRow?.COMMENT_ID + } + const data = await handeDeleteCOMMENT(req) + if (data.Result_Code === 100) { + message.success(data.Result_Desc) + setShowDetailDrawer(false) + setCurrentRow(undefined); + setFileList([]) + actionRef.current?.reload() + } else { + message.error(data.Result_Desc) + } + } + + + // 删除回复 + const handleDeleteEvaluationREPLY = async (REPLY_ID: string) => { + const req: any = { + REPLYId: REPLY_ID + } + setDeleteREPLYLoading(true) + const data = await handeDeleteREPLY(req) + setDeleteREPLYLoading(false) + if (data.Result_Code === 100) { + message.success(data.Result_Desc) + actionRef?.current?.reload() + return true + } else { + message.error(data.Result_Desc) + return false + } + } + + + // 预览上传后的图片 + const handlePreview = async () => { + setFileList(fileList) + setImagePreviewVisible(true) + }; + const handleChangePreview = (val: any) => { + setImagePreviewVisible(val) } return ( @@ -194,6 +260,7 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent expandable={{ expandRowByClick: true }} + options={false} scroll={{ x: "100%", y: isComponent ? '300px' : "calc(100vh - 410px)" }} headerTitle={} // 列表表头 search={isComponent ? false : { span: 6 }} @@ -250,7 +317,20 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent />
- + {/* 图片预览组件 */} + {fileList && fileList.length > 0 &&
+ { + handleChangePreview(vis) + } + }}> + { + fileList.map((n) => ) + } + +
} { }} bodyStyle={{ - maxHeight: '850px', // 你可以根据需要调整高度 + height: '700px', // 你可以根据需要调整高度 overflowY: 'auto', }} onCancel={() => { setShowDetailDrawer(false) setCurrentRow(undefined); + setFileList([]) }} - footer={
+ footer={
@@ -310,15 +392,64 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent { - const req: any = { + console.log('currentRowcurrentRowcurrentRow', currentRow); + console.log('resresresresres', res); + if (res.ReplyList && res.ReplyList.length > 0) { + let list: any = [] + res.ReplyList.forEach((item: any) => { + list.push({ + COMMENT_ID: currentRow?.COMMENT_ID || "", + COMMENT_CONTENT: currentRow?.COMMENT_CONTENT || "", + // COMMENT_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + STAFF_ID: currentUser?.ID, + STAFF_NAME: currentUser?.Name, + REPLY_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + REPLY_CONTENT: item.REPLY_CONTENT, + REPLY_STATE: 1 + }) + }) + console.log('list', list); + + const data = await handeSynchroReplyList({ + list: list + }) + console.log('datadatadatadata', data); + if (data.Result_Code === 100) { + message.success(data.Result_Desc) + setFileList([]) + setShowDetailDrawer(false) + setCurrentRow(undefined); + actionRef.current?.reload() + } else { + message.error(data.Result_Desc) + } + } else { + setFileList([]) + setShowDetailDrawer(false) + setCurrentRow(undefined); + actionRef.current?.reload() } - // const data = await handeSynchroCOMMENT(req) - - }} + // request={async () => { + // if (currentRow?.ReplyList && currentRow?.ReplyList.length > 0) { + // const req: any = { + // REPLYId: currentRow?.ReplyList[0].REPLY_ID + // } + // const data = await handeGetREPLYDetail(req) + // console.log('datadatadata', data); + // return { + // ...data, + // ReplyToEvaluation: data.REPLY_CONTENT + // } + // } else { + // return {} + // } + + // }} > @@ -328,22 +459,118 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent readonly /> + + + + + + + + {(field, index, action) => { + const isInitialItem = index < (currentRow?.ReplyList?.length || 0); + return ( +
+
+ +
+
+ {isInitialItem ? ( + + ) : ( + + )} +
+
+ ); + }} +
+ + + {/* 0 ? true : false} /> - + */}
- -
+ +
) } diff --git a/src/pages/travelMember/PointsRecordSearch/index.tsx b/src/pages/travelMember/PointsRecordSearch/index.tsx index 7d59dea..26e2a16 100644 --- a/src/pages/travelMember/PointsRecordSearch/index.tsx +++ b/src/pages/travelMember/PointsRecordSearch/index.tsx @@ -175,6 +175,11 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?: Boo headerTitle={} search={isComponent ? false : { span: 6 }} scroll={{ x: '100%', y: isComponent ? '300px' : 'calc(100vh - 430px)' }} + options={isComponent ? false : { + density: true, + reload: true, + setting: true + }} request={async (params) => { const req: any = isComponent ? { SearchParameter: { diff --git a/src/pages/travelMember/ProductListingManagement/component/LeftSelectMallType.tsx b/src/pages/travelMember/ProductListingManagement/component/LeftSelectMallType.tsx index c7bf160..72cebb8 100644 --- a/src/pages/travelMember/ProductListingManagement/component/LeftSelectMallType.tsx +++ b/src/pages/travelMember/ProductListingManagement/component/LeftSelectMallType.tsx @@ -29,13 +29,14 @@ type DetailProps = { noWj?: any // 把万佳商贸隐藏 selectOnly?: boolean// 传入的时候 仅支持单选 setData?: any // 把树形的数据 传出去 + isShowAllInTree?: boolean } -const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, width, otherFun, setCollapsible, collapsible, haveTest, handleGetLeftTreeData, noWj, selectOnly, setData }: DetailProps) => { +const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, width, otherFun, setCollapsible, collapsible, haveTest, handleGetLeftTreeData, noWj, selectOnly, setData, isShowAllInTree }: DetailProps) => { const searchTreeRef = useRef(); // 默认的服务区树 const [allTreeViews, setAllTreeViews] = useState() // 是否要显示全部 - const [isShowAllInTree, setIsShowAllInTree] = useState(false) + // const [isShowAllInTree, setIsShowAllInTree] = useState(false) // 加载服务区树 const { loading: treeLoading, data: treeViews } = useRequest(async () => { @@ -205,19 +206,18 @@ const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, wid : convertTreeForSelectOnly(treeView)) : (isShowAllInTree ? [{ - label: '全部', + USERDEFINEDTYPE_NAME: '全部', value: 0, - key: '0-0', + USERDEFINEDTYPE_ID: '0-0', children: treeView }] : treeView)} blockNode // defaultExpandAll={isShowAllInTree ? false : true} - // defaultExpandedKeys={isShowAllInTree ? treeShowRow && treeShowRow.length > 0 ? treeShowRow : ['0-0'] : []} + defaultExpandedKeys={isShowAllInTree ? treeShowRow && treeShowRow.length > 0 ? treeShowRow : ['0-0'] : []} onCheck={(checkedKeys: React.Key[] | any, info) => { console.log('checkedKeyscheckedKeyscheckedKeys', checkedKeys); console.log('infoinfoinfoinfoinfoinfo', info); - // 多选逻辑 // const selectedIds = info.checkedNodes.filter((n: any) => n?.USERDEFINEDTYPE_PID !== -1) const selectedIds = info.checkedNodes.filter((n: any) => n?.USERDEFINEDTYPE_ID) diff --git a/src/pages/travelMember/RegistrationRetentionAnalysis/index.tsx b/src/pages/travelMember/RegistrationRetentionAnalysis/index.tsx index 40bba25..70c4fa2 100644 --- a/src/pages/travelMember/RegistrationRetentionAnalysis/index.tsx +++ b/src/pages/travelMember/RegistrationRetentionAnalysis/index.tsx @@ -397,6 +397,11 @@ const RegistrationRetentionAnalysis: React.FC<{ currentUser: CurrentUser, isComp pagination={{ pageSize: 100 }} dataSource={tableData} loading={tableLoading} + options={isComponent ? false : { + density: true, + reload: true, + setting: true + }} request={async (params) => { handleGetTableData() // if (!isFirst) { diff --git a/src/pages/travelMember/SummaryOfReservation/index.tsx b/src/pages/travelMember/SummaryOfReservation/index.tsx index 6861d44..0cfea38 100644 --- a/src/pages/travelMember/SummaryOfReservation/index.tsx +++ b/src/pages/travelMember/SummaryOfReservation/index.tsx @@ -129,6 +129,22 @@ const SummaryOfReservation: React.FC<{ currentUser: CurrentUser | undefined }> = width: 120, ellipsis: true, }, + { + title: "获得积分", + dataIndex: "MEMBERSHIP_POINT", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, + { + title: "获得成长值", + dataIndex: "MEMBERGROWTH_VALUE", + width: 120, + hideInSearch: true, + ellipsis: true, + align: "center", + }, { dataIndex: 'ORDER_DATE', title: '订单时间', diff --git a/src/pages/travelMember/memberInfor/component/CollectProducts.tsx b/src/pages/travelMember/memberInfor/component/CollectProducts.tsx index 7df6d4d..0d36d1c 100644 --- a/src/pages/travelMember/memberInfor/component/CollectProducts.tsx +++ b/src/pages/travelMember/memberInfor/component/CollectProducts.tsx @@ -103,6 +103,7 @@ const CollectProducts = ({ parentDetail, currentUser }: DetailProps) => { expandable={{ expandRowByClick: true }} + options={false} search={false} scroll={{ x: "100%", y: '300px' }} // headerTitle={} // 列表表头 diff --git a/src/pages/travelMember/memberInfor/component/LicensePlateManage.tsx b/src/pages/travelMember/memberInfor/component/LicensePlateManage.tsx index 3d663be..b20c3d8 100644 --- a/src/pages/travelMember/memberInfor/component/LicensePlateManage.tsx +++ b/src/pages/travelMember/memberInfor/component/LicensePlateManage.tsx @@ -68,6 +68,7 @@ const LicensePlateManage = ({ parentDetail }: DetailProps) => { expandRowByClick: true }} search={false} + options={false} scroll={{ x: "100%", y: '300px' }} // headerTitle={} // 列表表头 request={async (params) => { diff --git a/src/pages/travelMember/memberInfor/component/MemberDiscounts.tsx b/src/pages/travelMember/memberInfor/component/MemberDiscounts.tsx index f4574c8..b9c26af 100644 --- a/src/pages/travelMember/memberInfor/component/MemberDiscounts.tsx +++ b/src/pages/travelMember/memberInfor/component/MemberDiscounts.tsx @@ -93,6 +93,7 @@ const MemberDiscounts = ({ parentDetail }: DetailProps) => { expandRowByClick: true }} search={false} + options={false} scroll={{ x: "100%", y: '300px' }} // headerTitle={} // 列表表头 request={async (params) => { diff --git a/src/pages/travelMember/memberInfor/index.tsx b/src/pages/travelMember/memberInfor/index.tsx index 4ce686e..18e8327 100644 --- a/src/pages/travelMember/memberInfor/index.tsx +++ b/src/pages/travelMember/memberInfor/index.tsx @@ -245,6 +245,15 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { sorter: true, align: 'center', }, + { + title: "会员成长值", + width: 120, + dataIndex: "MEMBERGROWTH_VALUE", + hideInSearch: true, + ellipsis: true, + sorter: true, + align: 'center', + }, // { // title: "付费会员", // width: 120, diff --git a/src/pages/travelMember/service.ts b/src/pages/travelMember/service.ts index 494c9c9..869a835 100644 --- a/src/pages/travelMember/service.ts +++ b/src/pages/travelMember/service.ts @@ -884,3 +884,77 @@ export async function handeGetGetOnlineOrderSummary(params: any) { } return data.Result_Data.List } + + +// 同步回复表 +export async function handeSynchroREPLY(params: any) { + const data = await requestEncryption(`/Comment/SynchroREPLY`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data +} + +// 拿到回复详情 +export async function handeGetREPLYDetail(params: any) { + const data = await requestEncryption(`/Comment/GetREPLYDetail`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data.Result_Data +} + +// 拿到评价表明细 +export async function handeGetCOMMENTDetail(params: any) { + const data = await requestEncryption(`/Comment/GetCOMMENTDetail`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data.Result_Data +} + +// 删除评价 +export async function handeDeleteCOMMENT(params: any) { + const data = await requestEncryption(`/Comment/DeleteCOMMENT`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data +} + + +// 删除回复 +export async function handeDeleteREPLY(params: any) { + const data = await requestEncryption(`/Comment/DeleteREPLY`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data +} + +// 批量添加回复 +export async function handeSynchroReplyList(params: any) { + const data = await requestEncryption(`/Comment/SynchroReplyList`, { + method: 'POST', + data: { ...params, requestEncryption: true } + }) + if (data.Result_Code !== 100) { + return data + } + return data +} \ No newline at end of file