-
+
{
if (!selectAssociationServerpart) {
@@ -1059,7 +1068,13 @@ const MerchantInformation: React.FC<{ currentUser: CurrentUser | undefined }> =
const req: any = {
SearchParameter: {
SERVERPART_IDS: selectAssociationServerpart,
- ISVALID: 1
+ ISVALID: 1,
+ SHOPREGION: params?.SHOPREGION || "",
+ BUSINESS_STATE: params?.BUSINESS_STATE || ""
+ },
+ keyWord: {
+ Key: "SERVERPART_NAME,SHOPNAME",
+ Value: params?.searchText || ""
},
PageIndex: 1,
PageSize: 999999,
diff --git a/src/pages/travelMember/ActiveMemberStatistics/index.tsx b/src/pages/travelMember/ActiveMemberStatistics/index.tsx
index e762374..6bc2836 100644
--- a/src/pages/travelMember/ActiveMemberStatistics/index.tsx
+++ b/src/pages/travelMember/ActiveMemberStatistics/index.tsx
@@ -55,7 +55,7 @@ const ActiveMemberStatistics: React.FC<{ currentUser: CurrentUser | undefined }>
ExcludeTest: formData ? formData?.ExcludeTest === 1 ? true : false : true,
StartDate: start ? start : "",
EndDate: end ? end : "",
- MembershipType: formData?.MembershipType || "",
+ MembershipType: formData?.MembershipType === 1 ? "" : formData?.MembershipType || "",
// MembershipLevel: formData?.MembershipLevel || "",
MembershipLevel: "",
}
diff --git a/src/pages/travelMember/BookingMealOrder/index.tsx b/src/pages/travelMember/BookingMealOrder/index.tsx
index 74ac253..a920526 100644
--- a/src/pages/travelMember/BookingMealOrder/index.tsx
+++ b/src/pages/travelMember/BookingMealOrder/index.tsx
@@ -128,6 +128,8 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
width: 170,
ellipsis: true,
+ sorter: (a, b) => new Date(a.ORDER_DATE).getTime() - new Date(b.ORDER_DATE).getTime(),
+ defaultSortOrder: 'descend',
render: (_, record) => {
return record?.ORDER_DATE ? moment(record?.ORDER_DATE).format('YYYY-MM-DD HH:mm:ss') : ''
}
@@ -159,6 +161,7 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
width: 120,
ellipsis: true,
+ sorter: (a, b) => a.ORDER_AMOUNT - b.ORDER_AMOUNT,
},
{
dataIndex: 'COUPON_AMOUNT',
@@ -167,6 +170,7 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
width: 120,
ellipsis: true,
+ sorter: (a, b) => a.COUPON_AMOUNT - b.COUPON_AMOUNT,
},
{
dataIndex: 'PAY_AMOUNT',
@@ -175,6 +179,7 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
width: 120,
ellipsis: true,
+ sorter: (a, b) => a.PAY_AMOUNT - b.PAY_AMOUNT,
},
{
title: "获得积分",
@@ -183,6 +188,7 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
ellipsis: true,
align: "center",
+ sorter: (a, b) => a.MEMBERSHIP_POINT - b.MEMBERSHIP_POINT,
},
{
title: "获得成长值",
@@ -191,6 +197,7 @@ const BookingMealOrder: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
hideInSearch: true,
ellipsis: true,
align: "center",
+ sorter: (a, b) => a.MEMBERGROWTH_VALUE - b.MEMBERGROWTH_VALUE,
},
{
dataIndex: 'SERVERPART_NAME',
diff --git a/src/pages/travelMember/BusinessActivityStatistics/index.tsx b/src/pages/travelMember/BusinessActivityStatistics/index.tsx
index cb2e359..bcccbd2 100644
--- a/src/pages/travelMember/BusinessActivityStatistics/index.tsx
+++ b/src/pages/travelMember/BusinessActivityStatistics/index.tsx
@@ -59,8 +59,8 @@ const BusinessActivityStatistics: React.FC<{ currentUser: CurrentUser | undefine
ExcludeTest: formData ? formData?.ExcludeTest === 1 ? true : false : true,
StartDate: start ? start : "",
EndDate: end ? end : "",
- MembershipType: formData?.MembershipType || "",
- MembershipLevel: formData?.MembershipLevel || "",
+ MembershipType: formData?.MembershipType === 1 ? '' : formData?.MembershipType || "",
+ MembershipLevel: formData?.MembershipLevel === '1' ? '' : formData?.MembershipLevel || "",
}
const req2: any = {
@@ -68,8 +68,8 @@ const BusinessActivityStatistics: React.FC<{ currentUser: CurrentUser | undefine
StartDate: start ? start : "",
EndDate: end ? end : "",
SalebillType: "",
- MembershipType: formData?.MembershipType || "",
- MembershipLevel: formData?.MembershipLevel || "",
+ MembershipType: formData?.MembershipType === 1 ? '' : formData?.MembershipType || "",
+ MembershipLevel: formData?.MembershipLevel === '1' ? '' : formData?.MembershipLevel || "",
}
diff --git a/src/pages/travelMember/ConsumptionRecordSearch/index.tsx b/src/pages/travelMember/ConsumptionRecordSearch/index.tsx
index cfddedb..c08b091 100644
--- a/src/pages/travelMember/ConsumptionRecordSearch/index.tsx
+++ b/src/pages/travelMember/ConsumptionRecordSearch/index.tsx
@@ -147,7 +147,8 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
align: 'center',
ellipsis: true,
valueType: 'select',
- valueEnum: MEMBERSHIPLEVELYNObj
+ valueEnum: MEMBERSHIPLEVELYNObj,
+ sorter: true,
},
{
title: "会员类型",
@@ -160,6 +161,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
valueEnum: {
...MEMBERSHIPTYPEYNObj,
},
+ sorter: true,
},
{
title: "订单编号",
@@ -184,9 +186,11 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
align: 'center',
dataIndex: "CONSUMPTIONRECORD_DATE",
hideInSearch: true,
+ sorter: true,
render: (_, record) => {
return record?.CONSUMPTIONRECORD_DATE ? moment(record?.CONSUMPTIONRECORD_DATE).format('YYYY-MM-DD HH:mm:ss') : '-'
- }
+ },
+ defaultSortOrder: 'descend',
},
{
title: "消费类型",
@@ -199,7 +203,8 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
"0": "全部",
...CONSUMPTIONRECORDTYPEObj
},
- initialValue: "0"
+ initialValue: "0",
+ sorter: true,
},
{
title: "订单状态",
@@ -218,6 +223,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
"9000": "订单已关闭",
"9999": "订单已撤销",
},
+ sorter: true
},
{
title: "获得积分",
@@ -226,6 +232,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
hideInSearch: true,
align: 'center',
ellipsis: true,
+ sorter: true
},
{
title: "获得成长值",
@@ -234,6 +241,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
hideInSearch: true,
align: 'center',
ellipsis: true,
+ sorter: true
},
{
title: "订单金额",
@@ -243,6 +251,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
align: 'center',
valueType: 'digit',
ellipsis: true,
+ sorter: true
},
{
title: "消费金额",
@@ -252,6 +261,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
valueType: 'digit',
align: 'center',
ellipsis: true,
+ sorter: true
},
{
title: "消费积分",
@@ -261,6 +271,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
align: 'center',
valueType: 'digit',
ellipsis: true,
+ sorter: true
},
{
title: "实付金额",
@@ -270,6 +281,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
valueType: 'digit',
align: 'center',
ellipsis: true,
+ sorter: true
},
{
title: "优惠金额",
@@ -278,6 +290,7 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
hideInSearch: true,
align: 'center',
ellipsis: true,
+ sorter: true
},
{
@@ -331,16 +344,23 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
expandRowByClick: true
}}
headerTitle={isComponent ? '' : }
- scroll={{ x: '100%', y: isComponent ? '300px' : 'calc(100vh - 430px)' }}
- search={isComponent ? false : { span: 6 }}
+ scroll={{ x: '100%', y: isComponent ? '300px' : 'calc(100vh - 450px)' }}
+ search={isComponent ? false : { span: 6, defaultCollapsed: false }}
options={isComponent ? false : {
density: true,
reload: true,
setting: true
}}
- request={async (params) => {
+ request={async (params, sorter) => {
let req: any = {}
+ const sortstr = Object.keys(sorter).map(n => {
+ const value = sorter[n]
+ return value ? `${n} ${value.replace('end', '')}` : ''
+ })
+ console.log('sortstrsortstrsortstr', sortstr);
+
+
if (isComponent) {
req = {
SearchParameter: {
@@ -351,7 +371,8 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
},
PageIndex: params?.current,
PageSize: params?.pageSize,
- sortStr: "CONSUMPTIONRECORD_DATE desc"
+ // sortStr: "CONSUMPTIONRECORD_DATE desc"
+ sortStr: sortstr.toString()
}
} else {
if (!selectedId) {
@@ -373,7 +394,8 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
Key: "MEMBERSHIP_NAME,MEMBERSHIP_MOBILEPHONE,TICKET_CODE",
Value: params?.searchText || ""
},
- sortStr: "CONSUMPTIONRECORD_DATE desc"
+ // sortStr: "CONSUMPTIONRECORD_DATE desc"
+ sortStr: sortstr.toString()
}
}
@@ -390,10 +412,10 @@ const ConsumptionRecordSearch: React.FC<{ currentUser: CurrentUser, isComponent?
]
}}
- pagination={{
- defaultPageSize: 20,
- showTotal: (total) => `共 ${total} 条记录`
- }}
+ // pagination={{
+ // defaultPageSize: 20,
+ // showTotal: (total) => `共 ${total} 条记录`
+ // }}
/>
diff --git a/src/pages/travelMember/ConsumptionTypeConfig/index.tsx b/src/pages/travelMember/ConsumptionTypeConfig/index.tsx
new file mode 100644
index 0000000..09f2148
--- /dev/null
+++ b/src/pages/travelMember/ConsumptionTypeConfig/index.tsx
@@ -0,0 +1,527 @@
+// 消费类型配置
+import React, { useRef, useState, Suspense } 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, ProFormDateTimeRangePicker, ProFormDigit, ProFormMoney, ProFormSelect, ProFormText, ProFormTextArea, ProFormTreeSelect, 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 } 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 { handeDeleteFIELDENUM, handeGetFIELDENUMList, handeGetFIELDEXPLAINList, handeGetNestingFIELDENUMList, handeSynchroFIELDENUM, handlDeleteUSERDEFINEDTYPE, handlGetUSERDEFINEDTYPEList, handlSynchroUSERDEFINEDTYPE } from '../service';
+import PageTitleBox from '@/components/PageTitleBox';
+import { uploadPicture } from '@/services/picture';
+import defaultIcon from '../../../assets/brand/defaultIcon.png'
+import classNames from 'classnames';
+import session from '@/utils/session';
+import ModalFooter from '../scenicSpotConfig/component/modalFooter';
+import { handleSetlogSave } from '@/utils/format';
+
+
+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;
+}
+
+
+const ConsumptionTypeConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => {
+ const { currentUser } = props
+ const { confirm } = Modal;
+ const actionRef = useRef
();
+ const formRef = useRef();
+ const [currentRow, setCurrentRow] = useState();
+ const [showDetail, setShowDetail] = useState();
+ const [modalVisible, handleModalVisible] = useState();
+ const [confirmLoading, handleConfirmLoading] = useState(false) // 弹出框的内容表单是否在提交
+ const [searchParams, setSearchParams] = useState();
+ // 分类的树形结构数据
+ const [typeTreeData, setTypeTreeData] = useState()
+ // 表单里面的是否预售
+ const [formPRESALE_TYPE, setFormPRESALE_TYPE] = useState(false)
+
+ // 弹出框拖动效果
+ const [bounds, setBounds] = useState<{ left: number, right: number, top: number, bottom: number }>() // 移动的位置
+ const [disabled, setDraggleDisabled] = useState() // 是否拖动
+ const draggleRef = React.createRef()
+
+ let AFTERSALETYPEObj = session.get('AFTERSALETYPEObj')
+ const { data: FIELDEXPLAIN_ID } = useRequest(async () => {
+ const req: any = {
+ SearchParameter: {
+ FIELDEXPLAIN_FIELD: "CONSUMPTIONRECORD_TYPE"
+ }
+ }
+ const data = await handeGetFIELDEXPLAINList(req)
+ if (data && data.length > 0) {
+ let obj: any = data[0]
+ return obj.FIELDEXPLAIN_ID
+ }
+ })
+ // 文件列表
+ const [fileList, setFileList] = useState([])
+ const [imagePreviewVisible, setImagePreviewVisible] = useState(false) // 预览图片
+
+ 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 columns: any = [
+ {
+ dataIndex: 'FIELDENUM_NAME',
+ title: '类别名称',
+ align: 'center',
+ width: 300,
+ ellipsis: true,
+ hideInSearch: true,
+ hideInDescriptions: true,
+ render: (_, record) => {
+ return {
+ setCurrentRow({ ...record });
+ handleModalVisible(true);
+ }}
+ >{record?.FIELDENUM_NAME || ""}
+ }
+ },
+ {
+ dataIndex: 'FIELDENUM_VALUE',
+ title: '类型枚举',
+ align: 'center',
+ width: 120,
+ ellipsis: true,
+ // valueType: 'treeSelect',
+ // valueEnum: typeTreeData,
+ hideInSearch: true,
+ },
+ {
+ dataIndex: 'FIELDENUM_INDEX',
+ title: '类别索引',
+ align: 'center',
+ width: 120,
+ ellipsis: true,
+ hideInSearch: true,
+ },
+ {
+ dataIndex: 'FIELDENUM_STATUS',
+ title: '有效状态',
+ align: 'center',
+ width: 120,
+ ellipsis: true,
+ valueType: "select",
+ valueEnum: {
+ "1": "有效",
+ "0": "无效"
+ },
+ initialValue: "1"
+ },
+ {
+ dataIndex: 'FIELDENUM_DESC',
+ title: '备注说明',
+ align: 'center',
+ ellipsis: true,
+ hideInSearch: true,
+ },
+ // {
+ // dataIndex: 'option',
+ // title: '操作',
+ // width: 100,
+ // ellipsis: true,
+ // valueType: 'option',
+ // align: 'center',
+ // hideInSearch: true,
+ // render: (_, record) => {
+ // return (
+ //
+ // {
+ // setCurrentRow({ ...record });
+ // handleModalVisible(true);
+ // }}
+ // >
+ // 编辑
+ //
+ // {
+ // handelDelete(record.FIELDENUM_ID);
+ // }}
+ // >
+ // 删除
+ //
+ //
+ // );
+ // },
+ // },
+ ];
+
+ // 预览上传后的图片
+ const handlePreview = async () => {
+ setFileList(fileList)
+ setImagePreviewVisible(true)
+ };
+ const handleChangePreview = (val: any) => {
+ setImagePreviewVisible(val)
+ }
+
+ // 删除点餐类别
+ const handelDelete = async (id: any) => {
+ const req: any = {
+ FIELDENUMId: id
+ }
+ const result = await handeDeleteFIELDENUM(req)
+ if (result.Result_Code !== 100) {
+ message.error(`${result.Result_Desc}` || `${result.Result_Code}:删除失败`);
+ } else {
+ message.success('删除成功!');
+ handleSetlogSave(`删除【${currentRow?.FIELDENUM_NAME}】`)
+ actionRef.current?.reload()
+ handleConfirmLoading(false)
+ handleModalVisible(false)
+ setFormPRESALE_TYPE(false)
+ setFileList([])
+ }
+ }
+
+ // 同步点餐列表
+ const handleAddUpdate = async (res: any) => {
+ let req: any = {}
+ if (currentRow?.FIELDENUM_ID) {
+ req = {
+ ...currentRow,
+ ...res,
+ }
+ } else {
+ req = {
+ ...res,
+ FIELDEXPLAIN_ID: FIELDEXPLAIN_ID,
+ FIELDENUM_PID: -1,
+ }
+ }
+ const data = await handeSynchroFIELDENUM(req)
+ handleConfirmLoading(false)
+ if (data.Result_Code === 100) {
+ handleSetlogSave(`${currentRow?.FIELDENUM_ID ? '更新' : '新增'}【${data.Result_Data.FIELDENUM_NAME}】`)
+ message.success("新增成功!")
+ setCurrentRow(undefined)
+ formRef?.current?.resetFields()
+ handleModalVisible(false)
+ setFormPRESALE_TYPE(false)
+ setFileList([])
+ actionRef.current?.reload()
+ } else {
+ message.error(data.Result_Desc)
+ }
+ }
+
+ return (
+
+ {
+ return `${record?.FIELDENUM_PID}-${record?.FIELDENUM_ID}`
+ }}
+ formRef={formRef}
+ headerTitle={} // 列表表头
+ actionRef={actionRef}
+ search={{ span: 6, labelWidth: 'auto' }}
+ bordered
+ // 请求数据
+ request={async (params, sorter) => {
+ const req = {
+ FIELDEXPLAIN_FIELD: 'CONSUMPTIONRECORD_TYPE',
+ FIELDEXPLAIN_ID: "",
+ FIELDENUM_PID: "",
+ FIELDENUM_STATUS: params?.FIELDENUM_STATUS,
+ SearchKey: ""
+ }
+ const data = await handeGetNestingFIELDENUMList(req);
+ handleSetlogSave(`点击查询按钮`)
+ console.log('datadatadatadatadata', data);
+ if (data && data.length > 0) {
+ setTypeTreeData(data)
+ return { data: data, success: true, total: data.length }
+ }
+ return { data: [], success: true }
+ }}
+ columns={columns}
+ toolbar={{
+ actions: [
+ // 新增按钮
+ }
+ type="primary"
+ onClick={() => {
+ handleModalVisible(true);
+ }}
+ >
+ 消费类型
+ ,
+ ],
+ }}
+ />
+
+ {/* 图片预览组件 */}
+ {fileList && fileList.length > 0 &&
+ {
+ handleChangePreview(vis)
+ }
+ }}>
+ {
+ fileList.map((n) => )
+ }
+
+
}
+
+
+ {
+ if (disabled) {
+ setDraggleDisabled(false)
+ }
+ }}
+ onMouseOut={() => {
+ setDraggleDisabled(true)
+ }}
+
+ onFocus={() => { }}
+ onBlur={() => { }}
+ >
+ {currentRow ? '更新会员等级类别' : '新建会员等级类别'}
+
+ }
+ destroyOnClose={true}
+ width={900}
+ bodyStyle={{
+ height: '700px', // 你可以根据需要调整高度
+ overflowY: 'auto',
+ }}
+ visible={modalVisible}
+ confirmLoading={confirmLoading}
+ afterClose={() => {
+ formRef.current?.resetFields();
+ setCurrentRow(undefined);
+ }}
+ footer={