提交 1fca1bdd 作者: ZhangLingKun

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

上级 225f1927
#请求接口地址
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='/api'
#旧版接口地址
......
// 活动-裂变优惠券下拉类型
import { InterFunction, InterItemFunction } from '~/api/interface';
import { InterFunction, InterItemFunction, InterListFunction } from '~/api/interface';
import { SplitCouponItemType } from '~/api/interface/couponManage';
// 裂变优惠券-下拉
......@@ -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 {
activeTableItemType,
activityDataType,
activityDeleteType,
activityEditType,
activityInsertType,
activityUpdateType,
addActivityType,
DataInfoType,
endActivityType,
listActivityPagesType,
SignInListType,
splitCouponDownType,
} from '../interface/activityManage';
......@@ -49,4 +53,24 @@ export class ActivityManageAPI {
};
// 小程序签到列表
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;
// 搜索列表的类型
export interface searchColumns {
type: 'input' | 'select' | 'rangePicker' | 'DatePicker' | 'Select' | 'TreeSelect' | 'Cascader';
type:
| 'input'
| 'select'
| 'rangePicker'
| 'DatePicker'
| 'Select'
| 'TreeSelect'
| 'Cascader'
| 'Input';
label?: string;
name: string;
placeholder: string;
......@@ -117,7 +125,7 @@ const Index: React.FC<propsType> = (props) => {
key={item.name}
style={{ marginBottom: '10px' }}
>
{item.type === 'input' ? (
{item.type === 'input' || item.type === 'Input' ? (
<Input
placeholder={item.placeholder}
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';
import CustomListDetail from '~/pages/customManage/customList/detail';
import ServiceCategoryDetail from '~/pages/categoryManage/serviceCategoryList/detail';
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 IndustryListView = React.lazy(() => import('~/pages/mallManage/industryManage/industryList')); //行业列表
......@@ -531,12 +531,12 @@ export const routerList: Array<RouteObjectType> = [
},
},
{
path: '/activityManage/recommendManage',
element: withLoadingComponent(<RecommendManageView />),
path: '/activityManage/activityList',
element: withLoadingComponent(<ActivityListView />),
errorElement: <ErrorPage />,
meta: {
id: 520,
title: '推荐奖励',
title: '活动管理',
icon: <WechatOutlined />,
develop: true,
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论