提交 1fca1bdd 作者: ZhangLingKun

功能:邀请新好友获取积分

上级 225f1927
#请求接口地址 #请求接口地址
VITE_REQUEST_BASE_URL='https://www.iuav.shop' VITE_REQUEST_BASE_URL='https://www.iuav.shop'
#VITE_REQUEST_BASE_URL='http://120.77.145.47'
#VITE_REQUEST_BASE_URL='https://test.iuav.shop' #VITE_REQUEST_BASE_URL='https://test.iuav.shop'
#VITE_REQUEST_BASE_URL='/api' #VITE_REQUEST_BASE_URL='/api'
#旧版接口地址 #旧版接口地址
......
// 活动-裂变优惠券下拉类型 // 活动-裂变优惠券下拉类型
import { InterFunction, InterItemFunction } from '~/api/interface'; import { InterFunction, InterItemFunction, InterListFunction } from '~/api/interface';
import { SplitCouponItemType } from '~/api/interface/couponManage'; import { SplitCouponItemType } from '~/api/interface/couponManage';
// 裂变优惠券-下拉 // 裂变优惠券-下拉
...@@ -69,3 +69,60 @@ export type SignInListType = InterFunction< ...@@ -69,3 +69,60 @@ export type SignInListType = InterFunction<
}>; }>;
}[] }[]
>; >;
// 活动列表
export type listActivityPagesType = InterListFunction<
{
activityId?: number;
activityStatus?: number;
activityType?: number;
userAccountId?: number;
},
{
activityName: string;
activityPartDTOS: null;
activityStatus: number;
activityType: number;
createTime: string;
description: string;
endTime: string;
id: number;
requireNum: number;
rewardType: number;
rewardValue: number;
startTime: string;
}
>;
// 添加活动
export type activityInsertType = InterFunction<
{
activityName: string;
activityStatus: number;
activityType: number;
description: string;
endTime: string;
id?: number;
requireNum: number;
rewardType: number;
rewardValue: number;
startTime: string;
},
null
>;
// 修改活动
export type activityUpdateType = InterFunction<
{
activityName: string;
activityStatus: number;
activityType: number;
description: string;
endTime: string;
id?: number;
requireNum: number;
rewardType: number;
rewardValue: number;
startTime: string;
},
null
>;
// 删除活动
export type activityDeleteType = InterFunction<{ id: number }, null>;
import { import {
activeTableItemType, activeTableItemType,
activityDataType, activityDataType,
activityDeleteType,
activityEditType, activityEditType,
activityInsertType,
activityUpdateType,
addActivityType, addActivityType,
DataInfoType, DataInfoType,
endActivityType, endActivityType,
listActivityPagesType,
SignInListType, SignInListType,
splitCouponDownType, splitCouponDownType,
} from '../interface/activityManage'; } from '../interface/activityManage';
...@@ -49,4 +53,24 @@ export class ActivityManageAPI { ...@@ -49,4 +53,24 @@ export class ActivityManageAPI {
}; };
// 小程序签到列表 // 小程序签到列表
static SignInList: SignInListType = (params) => axios.get('/userapp/SignInList', { params }); static SignInList: SignInListType = (params) => axios.get('/userapp/SignInList', { params });
// 活动列表
static listActivityPages: listActivityPagesType = (params) => {
return axios.post('/userapp/activity/listActivityPages', params);
};
// 添加活动
static activityInsert: activityInsertType = (params) => {
return axios.post('/userapp/activity/insert', params);
};
// 修改活动
static activityUpdate: activityUpdateType = (params) => {
return axios.post('/userapp/activity/update', params);
};
// 删除活动
static activityDelete: activityDeleteType = (params) => {
return axios.get('/userapp/activity/delete', { params });
};
} }
...@@ -8,7 +8,15 @@ const { RangePicker } = DatePicker; ...@@ -8,7 +8,15 @@ const { RangePicker } = DatePicker;
// 搜索列表的类型 // 搜索列表的类型
export interface searchColumns { export interface searchColumns {
type: 'input' | 'select' | 'rangePicker' | 'DatePicker' | 'Select' | 'TreeSelect' | 'Cascader'; type:
| 'input'
| 'select'
| 'rangePicker'
| 'DatePicker'
| 'Select'
| 'TreeSelect'
| 'Cascader'
| 'Input';
label?: string; label?: string;
name: string; name: string;
placeholder: string; placeholder: string;
...@@ -117,7 +125,7 @@ const Index: React.FC<propsType> = (props) => { ...@@ -117,7 +125,7 @@ const Index: React.FC<propsType> = (props) => {
key={item.name} key={item.name}
style={{ marginBottom: '10px' }} style={{ marginBottom: '10px' }}
> >
{item.type === 'input' ? ( {item.type === 'input' || item.type === 'Input' ? (
<Input <Input
placeholder={item.placeholder} placeholder={item.placeholder}
allowClear allowClear
......
import React, { FC, useEffect } from 'react';
import {
DatePicker,
Form,
Input,
InputNumber,
message,
Modal,
ModalProps,
Radio,
Select,
} from 'antd';
import { InterListType } from '~/api/interface';
import { listActivityPagesType } from '~/api/interface/activityManage';
import dayjs from 'dayjs';
import { ActivityManageAPI } from '~/api';
// 参数
interface selfProps {
data?: InterListType<listActivityPagesType>[0];
}
const AddOrEditModal: FC<ModalProps & selfProps> = ({ open, onCancel, title, data }) => {
// 表单钩子
const [editForm] = Form.useForm();
// 提交数据
const handleSubmit = async () => {
const valid = await editForm.validateFields();
if (!valid) return;
const res = await ActivityManageAPI[data?.id ? 'activityUpdate' : 'activityInsert']({
...data,
...valid,
startTime: dayjs(valid.rangeTime[0]).format('YYYY-MM-DD HH:mm:ss'),
endTime: dayjs(valid.rangeTime[1]).format('YYYY-MM-DD HH:mm:ss'),
});
if (res && res.code === '200') {
message.success('操作成功');
handleCancel();
}
};
// 关闭弹窗
const handleCancel = () => {
editForm.resetFields();
onCancel?.({} as any);
};
// 组件挂载
useEffect(() => {
if (data) {
editForm.setFieldsValue({
...data,
rangeTime: [dayjs(data.startTime), dayjs(data.endTime)],
});
} else {
editForm.resetFields();
}
console.log('组件挂载 --->', data);
}, [open]);
return (
<Modal open={open} onCancel={handleCancel} title={title} onOk={handleSubmit}>
<Form labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} form={editForm}>
<Form.Item
label='活动名称'
name='activityName'
rules={[{ required: true, message: '请输入活动名称' }]}
>
<Input placeholder='请输入连续签到天数' maxLength={25} allowClear />
</Form.Item>
<Form.Item
label='活动类型'
name='activityType'
rules={[{ required: true, message: '请选择活动类型' }]}
>
<Select
placeholder='请选择活动类型'
options={[{ label: '新用户邀请', value: 0 }]}
allowClear
/>
</Form.Item>
<Form.Item
label='活动状态'
name='activityStatus'
rules={[{ required: true, message: '请选择活动状态' }]}
initialValue={1}
>
<Select
placeholder='请选择活动状态'
options={[
{ label: '进行中', value: 1 },
{ label: '已结束', value: 0 },
]}
allowClear
/>
</Form.Item>
<Form.Item
label='活动说明'
name='description'
rules={[{ required: true, message: '请输入活动说明' }]}
>
<Input.TextArea placeholder='请输入活动说明' maxLength={200} allowClear showCount />
</Form.Item>
<Form.Item
label='活动时间'
name='rangeTime'
rules={[{ required: true, message: '请选择活动时间' }]}
>
<DatePicker.RangePicker placeholder={['活动开始时间', '活动结束时间']} showTime />
</Form.Item>
<Form.Item
label='奖励类型'
name='rewardType'
rules={[{ required: true, message: '请选择奖励类型' }]}
initialValue={0}
>
<Radio.Group
options={[
{ label: '积分', value: 0 },
{ label: '余额', value: 1 },
{ label: '优惠券', value: 2, disabled: true },
]}
/>
</Form.Item>
<Form.Item
label='奖励额度'
name='rewardValue'
rules={[
{ required: true, message: '请输入奖励额度' },
{ pattern: /^[0-9]*$/g, message: '请输入整数' },
]}
>
<InputNumber
min={1}
max={100000}
placeholder='请输入奖励额度'
style={{ width: '200px' }}
/>
</Form.Item>
<Form.Item
label='人数限制'
name='requireNum'
rules={[
{ required: true, message: '请输入人数限制' },
{ pattern: /^[0-9]*$/g, message: '请输入整数' },
]}
initialValue={0}
extra={'默认0,为不限制'}
>
<InputNumber
min={0}
max={100000}
placeholder='请输入人数限制'
style={{ width: '200px' }}
/>
</Form.Item>
</Form>
</Modal>
);
};
export default AddOrEditModal;
import React from 'react';
import { Form, Switch } from 'antd';
const RecommendManageView = () => {
// 表单钩子
const [formRefs] = Form.useForm();
return (
<>
<div className='recommend-form' style={{ width: '90%' }}>
<Form
labelCol={{ span: 3 }}
wrapperCol={{ offset: 1 }}
form={formRefs}
initialValues={{ show: 1, activityType: 1 }}
>
<Form.Item
label='是否启用'
name='status'
rules={[{ required: true, message: '请选择是否启用' }]}
valuePropName='checked'
>
<Switch />
</Form.Item>
</Form>
</div>
</>
);
};
export default RecommendManageView;
...@@ -173,7 +173,7 @@ import LimitInfo from '~/pages/systemManage/limitManage/limitInfo'; ...@@ -173,7 +173,7 @@ import LimitInfo from '~/pages/systemManage/limitManage/limitInfo';
import CustomListDetail from '~/pages/customManage/customList/detail'; import CustomListDetail from '~/pages/customManage/customList/detail';
import ServiceCategoryDetail from '~/pages/categoryManage/serviceCategoryList/detail'; import ServiceCategoryDetail from '~/pages/categoryManage/serviceCategoryList/detail';
import RewardsManageView from '~/pages/activityManage/rewardsManage'; import RewardsManageView from '~/pages/activityManage/rewardsManage';
import RecommendManageView from '~/pages/activityManage/recommendManage'; import ActivityListView from '~/pages/activityManage/activityList';
const AddressManageView = React.lazy(() => import('~/pages/systemManage/addressManage')); const AddressManageView = React.lazy(() => import('~/pages/systemManage/addressManage'));
// const IndustryListView = React.lazy(() => import('~/pages/mallManage/industryManage/industryList')); //行业列表 // const IndustryListView = React.lazy(() => import('~/pages/mallManage/industryManage/industryList')); //行业列表
...@@ -531,12 +531,12 @@ export const routerList: Array<RouteObjectType> = [ ...@@ -531,12 +531,12 @@ export const routerList: Array<RouteObjectType> = [
}, },
}, },
{ {
path: '/activityManage/recommendManage', path: '/activityManage/activityList',
element: withLoadingComponent(<RecommendManageView />), element: withLoadingComponent(<ActivityListView />),
errorElement: <ErrorPage />, errorElement: <ErrorPage />,
meta: { meta: {
id: 520, id: 520,
title: '推荐奖励', title: '活动管理',
icon: <WechatOutlined />, icon: <WechatOutlined />,
develop: true, develop: true,
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论