Skip to content

Commit b809945

Browse files
YunaiVgitee-org
authored andcommitted
!171 积分模块
Merge pull request !171 from QingX/master
2 parents 3e549a6 + 1dca847 commit b809945

File tree

13 files changed

+1485
-1
lines changed

13 files changed

+1485
-1
lines changed

src/api/point/config/index.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import request from '@/config/axios'
2+
3+
export interface ConfigVO {
4+
id: number
5+
tradeDeductEnable: number
6+
tradeDeductUnitPrice: number
7+
tradeDeductMaxPrice: number
8+
tradeGivePoint: number
9+
}
10+
11+
// 查询积分设置列表
12+
export const getConfigPage = async (params) => {
13+
return await request.get({ url: `/point/config/page`, params })
14+
}
15+
16+
// 查询积分设置详情
17+
export const getConfig = async (id: number) => {
18+
return await request.get({ url: `/point/config/get?id=` + id })
19+
}
20+
21+
// 新增积分设置
22+
export const createConfig = async (data: ConfigVO) => {
23+
return await request.post({ url: `/point/config/create`, data })
24+
}
25+
26+
// 修改积分设置
27+
export const updateConfig = async (data: ConfigVO) => {
28+
return await request.put({ url: `/point/config/update`, data })
29+
}
30+
31+
// 删除积分设置
32+
export const deleteConfig = async (id: number) => {
33+
return await request.delete({ url: `/point/config/delete?id=` + id })
34+
}
35+
36+
// 导出积分设置 Excel
37+
export const exportConfig = async (params) => {
38+
return await request.download({ url: `/point/config/export-excel`, params })
39+
}

src/api/point/record/index.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import request from '@/config/axios'
2+
3+
export interface RecordVO {
4+
id: number
5+
bizId: string
6+
bizType: string
7+
type: string
8+
title: string
9+
description: string
10+
point: number
11+
totalPoint: number
12+
status: number
13+
userId: number
14+
freezingTime: Date
15+
thawingTime: Date
16+
createDate: Date
17+
}
18+
19+
// 查询用户积分记录列表
20+
export const getRecordPage = async (params) => {
21+
return await request.get({ url: `/point/record/page`, params })
22+
}
23+
24+
// 查询用户积分记录详情
25+
export const getRecord = async (id: number) => {
26+
return await request.get({ url: `/point/record/get?id=` + id })
27+
}
28+
29+
// 新增用户积分记录
30+
export const createRecord = async (data: RecordVO) => {
31+
return await request.post({ url: `/point/record/create`, data })
32+
}
33+
34+
// 修改用户积分记录
35+
export const updateRecord = async (data: RecordVO) => {
36+
return await request.put({ url: `/point/record/update`, data })
37+
}
38+
39+
// 删除用户积分记录
40+
export const deleteRecord = async (id: number) => {
41+
return await request.delete({ url: `/point/record/delete?id=` + id })
42+
}
43+
44+
// 导出用户积分记录 Excel
45+
export const exportRecord = async (params) => {
46+
return await request.download({ url: `/point/record/export-excel`, params })
47+
}

src/api/point/signInConfig/index.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import request from '@/config/axios'
2+
3+
export interface SignInConfigVO {
4+
id: number
5+
day: number
6+
point: number
7+
}
8+
9+
// 查询积分签到规则列表
10+
export const getSignInConfigPage = async (params) => {
11+
return await request.get({ url: `/point/sign-in-config/page`, params })
12+
}
13+
14+
// 查询积分签到规则详情
15+
export const getSignInConfig = async (id: number) => {
16+
return await request.get({ url: `/point/sign-in-config/get?id=` + id })
17+
}
18+
19+
// 新增积分签到规则
20+
export const createSignInConfig = async (data: SignInConfigVO) => {
21+
return await request.post({ url: `/point/sign-in-config/create`, data })
22+
}
23+
24+
// 修改积分签到规则
25+
export const updateSignInConfig = async (data: SignInConfigVO) => {
26+
return await request.put({ url: `/point/sign-in-config/update`, data })
27+
}
28+
29+
// 删除积分签到规则
30+
export const deleteSignInConfig = async (id: number) => {
31+
return await request.delete({ url: `/point/sign-in-config/delete?id=` + id })
32+
}
33+
34+
// 导出积分签到规则 Excel
35+
export const exportSignInConfig = async (params) => {
36+
return await request.download({ url: `/point/sign-in-config/export-excel`, params })
37+
}

src/api/point/signInRecord/index.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import request from '@/config/axios'
2+
3+
export interface SignInRecordVO {
4+
id: number
5+
userId: number
6+
day: number
7+
point: number
8+
}
9+
10+
// 查询用户签到积分列表
11+
export const getSignInRecordPage = async (params) => {
12+
return await request.get({ url: `/point/sign-in-record/page`, params })
13+
}
14+
15+
// 查询用户签到积分详情
16+
export const getSignInRecord = async (id: number) => {
17+
return await request.get({ url: `/point/sign-in-record/get?id=` + id })
18+
}
19+
20+
// 新增用户签到积分
21+
export const createSignInRecord = async (data: SignInRecordVO) => {
22+
return await request.post({ url: `/point/sign-in-record/create`, data })
23+
}
24+
25+
// 修改用户签到积分
26+
export const updateSignInRecord = async (data: SignInRecordVO) => {
27+
return await request.put({ url: `/point/sign-in-record/update`, data })
28+
}
29+
30+
// 删除用户签到积分
31+
export const deleteSignInRecord = async (id: number) => {
32+
return await request.delete({ url: `/point/sign-in-record/delete?id=` + id })
33+
}
34+
35+
// 导出用户签到积分 Excel
36+
export const exportSignInRecord = async (params) => {
37+
return await request.download({ url: `/point/sign-in-record/export-excel`, params })
38+
}

src/utils/dict.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,8 @@ export enum DICT_TYPE {
150150
PRODUCT_UNIT = 'product_unit', // 商品单位
151151
PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态
152152
// ========== MALL 交易模块 ==========
153-
EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode' //快递的计费方式
153+
EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式
154+
//积分模块//
155+
POINT_BIZ_TYPE = 'point_biz_type',
156+
POINT_STATUS = 'point_status'
154157
}

src/views/point/config/ConfigForm.vue

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<template>
2+
<Dialog :title="dialogTitle" v-model="dialogVisible" style="width: 600px">
3+
<el-form
4+
ref="formRef"
5+
:model="formData"
6+
:rules="formRules"
7+
label-width="120px"
8+
v-loading="formLoading"
9+
>
10+
<el-form-item label="积分抵扣" prop="tradeDeductEnable">
11+
<el-select v-model="formData.tradeDeductEnable" placeholder="请选择是否开启">
12+
<el-option
13+
v-for="dict in options"
14+
:key="dict.value"
15+
:label="dict.label"
16+
:value="dict.value"
17+
/>
18+
</el-select>
19+
</el-form-item>
20+
<el-form-item label="抵扣单位(元)" prop="tradeDeductUnitPrice">
21+
<el-input v-model="formData.tradeDeductUnitPrice" placeholder="请输入抵扣单位(元)" />
22+
</el-form-item>
23+
<el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice">
24+
<el-input v-model="formData.tradeDeductMaxPrice" placeholder="请输入积分抵扣最大值" />
25+
</el-form-item>
26+
<el-form-item label="1元赠送多少分" prop="tradeGivePoint">
27+
<el-input v-model="formData.tradeGivePoint" placeholder="请输入1元赠送多少分" />
28+
</el-form-item>
29+
</el-form>
30+
<template #footer>
31+
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
32+
<el-button @click="dialogVisible = false">取 消</el-button>
33+
</template>
34+
</Dialog>
35+
</template>
36+
<script setup lang="ts">
37+
import * as ConfigApi from '@/api/point/config'
38+
39+
const { t } = useI18n() // 国际化
40+
const message = useMessage() // 消息弹窗
41+
42+
const dialogVisible = ref(false) // 弹窗的是否展示
43+
const dialogTitle = ref('') // 弹窗的标题
44+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
45+
const formType = ref('') // 表单的类型:create - 新增;update - 修改
46+
const formData = ref({
47+
id: undefined,
48+
tradeDeductEnable: undefined,
49+
tradeDeductUnitPrice: undefined,
50+
tradeDeductMaxPrice: undefined,
51+
tradeGivePoint: undefined
52+
})
53+
const formRules = reactive({})
54+
const formRef = ref() // 表单 Ref
55+
56+
const options = [
57+
{
58+
value: '1',
59+
label: ''
60+
},
61+
{
62+
value: '0',
63+
label: ''
64+
}
65+
]
66+
67+
/** 打开弹窗 */
68+
const open = async (type: string, id?: number) => {
69+
dialogVisible.value = true
70+
dialogTitle.value = t('action.' + type)
71+
formType.value = type
72+
resetForm()
73+
// 修改时,设置数据
74+
if (id) {
75+
formLoading.value = true
76+
try {
77+
formData.value = await ConfigApi.getConfig(id)
78+
} finally {
79+
formLoading.value = false
80+
}
81+
}
82+
}
83+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
84+
85+
/** 提交表单 */
86+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
87+
const submitForm = async () => {
88+
// 校验表单
89+
if (!formRef) return
90+
const valid = await formRef.value.validate()
91+
if (!valid) return
92+
// 提交请求
93+
formLoading.value = true
94+
try {
95+
const data = formData.value as unknown as ConfigApi.ConfigVO
96+
if (formType.value === 'create') {
97+
await ConfigApi.createConfig(data)
98+
message.success(t('common.createSuccess'))
99+
} else {
100+
await ConfigApi.updateConfig(data)
101+
message.success(t('common.updateSuccess'))
102+
}
103+
dialogVisible.value = false
104+
// 发送操作成功的事件
105+
emit('success')
106+
} finally {
107+
formLoading.value = false
108+
}
109+
}
110+
111+
/** 重置表单 */
112+
const resetForm = () => {
113+
formData.value = {
114+
id: undefined,
115+
tradeDeductEnable: undefined,
116+
tradeDeductUnitPrice: undefined,
117+
tradeDeductMaxPrice: undefined,
118+
tradeGivePoint: undefined
119+
}
120+
formRef.value?.resetFields()
121+
}
122+
</script>

0 commit comments

Comments
 (0)