Commit 14b70f40 authored by XieZhiXiong's avatar XieZhiXiong

feat: 对接 待提交商家优惠劵

parent a33add65
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-22 11:10:04
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-28 16:58:45
* @LastEditTime: 2021-07-01 17:22:41
* @Description: 待提交商家优惠劵
*/
import React, { useState, useRef } from 'react';
......@@ -11,11 +11,15 @@ import {
Card,
Space,
Button,
message,
Modal,
} from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { createFormActions } from '@formily/antd';
import { DatePicker } from '@formily/antd-components';
import moment from 'moment';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
......@@ -25,14 +29,33 @@ import useSpliceArray from '@/hooks/useSpliceArray';
import verifySchema from '../common/schemas/verify';
import commonColumn from '../common/columns/coupon';
const { confirm } = Modal;
const formActions = createFormActions();
type fetchParams = {
name: string,
id: number,
effectiveTimeStart: string | number,
effectiveTimeEnd: string | number,
type: number,
}
const MerchantCouponToConfirm: React.FC = () => {
const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<number[]>([]);
const fetchData = async (params: any) => {
let res = await PublicApi.getMemberAbilityMaintenancePage(params);
const fetchData = async (params: fetchParams) => {
const { effectiveTimeStart = null, effectiveTimeEnd = null } = params;
const newParams: fetchParams = { ...params };
if (effectiveTimeStart) {
newParams.effectiveTimeStart = moment(effectiveTimeStart).valueOf();
}
if (effectiveTimeEnd) {
newParams.effectiveTimeEnd = moment(effectiveTimeEnd).valueOf();
}
let res = await PublicApi.getMarketingCouponWaitSubmitPage(newParams as any);
return res.data;
};
......@@ -45,7 +68,7 @@ const MerchantCouponToConfirm: React.FC = () => {
<>
<Button
type="link"
onClick={() => history.push(`/memberCenter/marketingAbility/merchantCoupon/toConfirm/verify?id=${record.validateId}`)}
onClick={() => history.push(`/memberCenter/marketingAbility/merchantCoupon/toConfirm/verify?id=${record.id}`)}
>
提交
</Button>
......@@ -64,35 +87,53 @@ const MerchantCouponToConfirm: React.FC = () => {
};
// 初始化高级筛选选项
const fetchSelectOptions = async () => {
const res = await PublicApi.getMemberAbilityInfoPageitems();
const fetchTypeEnums = async () => {
const res = await PublicApi.getMarketingCouponTypeList();
if (res.code === 1000) {
const { data = {} }: any = res;
const {
outerStatus = [],
} = data;
const outerIndex = columns.findIndex((item) => item.dataIndex === 'memberTypeName');
if (outerIndex) {
columnsHandle.replace(outerIndex, {
...columns[outerIndex],
filters: outerStatus.map(item => ({ text: item.text, value: item.id })).filter(item => item.value !== 0),
});
}
const { data = [] } = res;
return {
innerStatus: outerStatus.map(item => ({ label: item.text, value: item.id })),
type: data.map(item => ({ label: item.name, value: item.value })),
};
}
return {};
};
const handleBatchVerify = () => {
if (!selectedRowKeys.length) {
message.warning('未选择任何优惠券');
return;
}
confirm({
title: '提示',
icon: <QuestionCircleOutlined />,
content: '确定要通过选中的优惠券吗?',
onOk() {
return new Promise<void>((resolve, reject) => {
PublicApi.postMarketingCouponWaitSubmitSubmitBatch({
ids: selectedRowKeys,
})
.then(res => {
if (res.code === 1000) {
ref.current.reload();
setSelectedRowKeys([]);
resolve();
}
reject();
})
.catch(() => {
reject();
});
});
},
});
};
const ControllerBtns = () => (
<Space size={16}>
<Button
onClick={() => {}}
onClick={handleBatchVerify}
>
批量审核通过
</Button>
......@@ -103,7 +144,7 @@ const MerchantCouponToConfirm: React.FC = () => {
<Card>
<StandardTable
tableProps={{
rowKey: 'validateId',
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
......@@ -125,8 +166,8 @@ const MerchantCouponToConfirm: React.FC = () => {
FORM_FILTER_PATH,
);
useAsyncInitSelect(
['outerStatus'],
fetchSelectOptions,
['type'],
fetchTypeEnums,
);
}}
schema={verifySchema}
......
......@@ -6,17 +6,16 @@
* @Description:
*/
import React, { useState } from 'react';
import { history } from 'umi';
import { Button } from 'antd';
import { CheckCircleOutlined } from '@ant-design/icons';
import { usePageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import fetchDetailHoc from '../../common/hoc/fetchDetailHoc';
import CouponDetail from '../../components/CouponDetail';
import VerifyModal, { ValueType as VerifyData } from '../../components/VerifyModal';
const MerchantCouponConfirm: React.FC = () => {
const { id } = usePageStatus();
const [visibleVerifyModal, setVisibleVerifyModal] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const CouponDetailPro = fetchDetailHoc({
......@@ -25,13 +24,22 @@ const MerchantCouponConfirm: React.FC = () => {
}),
}, CouponDetail);
const handleVisibleVerifyModal = (flag?) => {
setVisibleVerifyModal(!!flag);
};
const handleSubmit = (value: VerifyData) => {
const handleSubmit = () => {
setSubmitLoading(true);
console.log('提交审核', value)
PublicApi.postMarketingCouponWaitSubmitSubmitBatch({
ids: [+id],
}, {
timeout: 0,
}).then(res => {
if (res.code !== 1000) {
return;
}
setTimeout(() => {
history.goBack();
}, 800);
}).finally(() => {
setSubmitLoading(false);
});
};
return (
......@@ -41,19 +49,13 @@ const MerchantCouponConfirm: React.FC = () => {
<Button
type="primary"
icon={<CheckCircleOutlined />}
onClick={() => handleVisibleVerifyModal(true)}
loading={submitLoading}
onClick={handleSubmit}
>
单据审核
提交
</Button>
)}
/>
<VerifyModal
visible={visibleVerifyModal}
onClose={() => handleVisibleVerifyModal(false)}
submitLoading={submitLoading}
onSubmit={handleSubmit}
/>
</div>
);
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment