Skip to content

Commit 5baccbd

Browse files
YunaiVgitee-org
authored andcommitted
!208 同步商城实现:会员列表、会员积分、会员签到、会员标签
Merge pull request !208 from 芋道源码/dev
2 parents 12e0d6a + be485cc commit 5baccbd

File tree

20 files changed

+501
-573
lines changed

20 files changed

+501
-573
lines changed

src/api/point/config/index.ts renamed to src/api/member/point/config/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ export interface ConfigVO {
1010

1111
// 查询积分设置详情
1212
export const getConfig = async () => {
13-
return await request.get({ url: `/point/config/get` })
13+
return await request.get({ url: `/member/point/config/get` })
1414
}
1515

1616
// 新增修改积分设置
1717
export const saveConfig = async (data: ConfigVO) => {
18-
return await request.put({ url: `/point/config/save`, data })
18+
return await request.put({ url: `/member/point/config/save`, data })
1919
}

src/api/member/point/record/index.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import request from '@/config/axios'
2+
3+
export interface RecordVO {
4+
id: number
5+
bizId: string
6+
bizType: string
7+
title: string
8+
description: string
9+
point: number
10+
totalPoint: number
11+
status: number
12+
userId: number
13+
freezingTime: Date
14+
thawingTime: Date
15+
createDate: Date
16+
}
17+
18+
// 查询用户积分记录列表
19+
export const getRecordPage = async (params) => {
20+
return await request.get({ url: `/member/point/record/page`, params })
21+
}

src/api/member/signin/config/index.ts

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

src/api/member/signin/record/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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: `/member/point/sign-in-record/page`, params })
13+
}

src/api/member/tag/index.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import request from '@/config/axios'
2+
3+
export interface TagVO {
4+
id: number
5+
name: string
6+
}
7+
8+
// 查询会员标签列表
9+
export const getMemberTagPage = async (params) => {
10+
return await request.get({ url: `/member/tag/page`, params })
11+
}
12+
13+
// 查询会员标签详情
14+
export const getMemberTag = async (id: number) => {
15+
return await request.get({ url: `/member/tag/get?id=` + id })
16+
}
17+
18+
// 新增会员标签
19+
export const createMemberTag = async (data: TagVO) => {
20+
return await request.post({ url: `/member/tag/create`, data })
21+
}
22+
23+
// 修改会员标签
24+
export const updateMemberTag = async (data: TagVO) => {
25+
return await request.put({ url: `/member/tag/update`, data })
26+
}
27+
28+
// 删除会员标签
29+
export const deleteMemberTag = async (id: number) => {
30+
return await request.delete({ url: `/member/tag/delete?id=` + id })
31+
}

src/api/point/record/index.ts

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/api/point/signInConfig/index.ts

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/api/point/signInRecord/index.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/utils/dict.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ export enum DICT_TYPE {
142142

143143
// ========== MALL - 会员模块 ==========
144144
MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型
145-
MEMBER_POINT_STATUS = 'member_point_status', // 积分的状态
146145

147146
// ========== MALL - 商品模块 ==========
148147
PRODUCT_UNIT = 'product_unit', // 商品单位

src/views/member/point/config/index.vue

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,53 +10,78 @@
1010
<el-form-item label="hideId" v-show="false">
1111
<el-input v-model="formData.id" />
1212
</el-form-item>
13-
<!-- TODO @xiaqing:展示给用户的字段名,可以和 crmeb 保持一直,然后每一个表单都有类似 crmeb 的 tip;例如说:积分抵用比例(1积分抵多少金额)单位:元 -->
14-
<el-form-item label="积分抵扣" prop="tradeDeductEnable">
15-
<el-switch v-model="formData.tradeDeductEnable" />
13+
<el-form-item label="积分抵扣" prop="tradeDeductEnable" class="item-bottom">
14+
<el-switch v-model="formData.tradeDeductEnable" style="user-select: none" />
1615
</el-form-item>
17-
<!-- TODO @xiaqing:用户看到的是元,最多 2 位;分是后端的存储哈 -->
18-
<el-form-item label="抵扣单位(分)" prop="tradeDeductUnitPrice">
16+
<el-form-item>
17+
<el-text class="mx-1" size="small" type="info">下单积分是否抵用订单金额</el-text>
18+
</el-form-item>
19+
<el-form-item label="积分抵扣" prop="tradeDeductUnitPrice" class="item-bottom">
1920
<el-input-number
20-
v-model="formData.tradeDeductUnitPrice"
21-
placeholder="请输入抵扣单位(分)"
21+
v-model="computedTradeDeductUnitPrice"
22+
placeholder="请输入积分抵扣金额"
2223
style="width: 300px"
24+
:precision="2"
2325
/>
2426
</el-form-item>
25-
<el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice">
27+
<el-form-item>
28+
<el-text class="mx-1" size="small" type="info">
29+
积分抵用比例(1 积分抵多少金额),单位:元
30+
</el-text>
31+
</el-form-item>
32+
<el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice" class="item-bottom">
2633
<el-input-number
2734
v-model="formData.tradeDeductMaxPrice"
2835
placeholder="请输入积分抵扣最大值"
2936
style="width: 300px"
3037
/>
3138
</el-form-item>
32-
<el-form-item label="1 元赠送多少分" prop="tradeGivePoint">
39+
<el-form-item>
40+
<el-text class="mx-1" size="small" type="info">单次下单积分使用上限,0 不限制</el-text>
41+
</el-form-item>
42+
<el-form-item label="1 元赠送多少分" prop="tradeGivePoint" class="item-bottom">
3343
<el-input-number
3444
v-model="formData.tradeGivePoint"
3545
placeholder="请输入 1 元赠送多少积分"
3646
style="width: 300px"
3747
/>
3848
</el-form-item>
3949
<el-form-item>
40-
<el-button type="primary" @click="onSubmit">提交</el-button>
50+
<el-text class="mx-1" size="small" type="info">
51+
下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)
52+
</el-text>
53+
</el-form-item>
54+
<el-form-item>
55+
<el-button type="primary" @click="onSubmit">保存</el-button>
4156
</el-form-item>
4257
</el-form>
4358
</ContentWrap>
4459
</template>
4560
<script lang="ts" setup>
46-
import * as ConfigApi from '@/api/point/config'
61+
import * as ConfigApi from '@/api/member/point/config'
62+
63+
defineOptions({ name: 'MemberPointConfig' })
4764
4865
const { t } = useI18n() // 国际化
4966
const message = useMessage() // 消息弹窗
5067
5168
const dialogVisible = ref(false) // 弹窗的是否展示
5269
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
5370
const formData = ref({
54-
id: undefined,
55-
tradeDeductEnable: undefined,
56-
tradeDeductUnitPrice: undefined,
57-
tradeDeductMaxPrice: undefined,
58-
tradeGivePoint: undefined
71+
tradeDeductEnable: true,
72+
tradeDeductUnitPrice: 0,
73+
tradeDeductMaxPrice: 0,
74+
tradeGivePoint: 0
75+
})
76+
77+
// 创建一个计算属性,用于将 tradeDeductUnitPrice 显示为带两位小数的形式
78+
const computedTradeDeductUnitPrice = computed({
79+
get: () => (formData.value.tradeDeductUnitPrice / 100).toFixed(2),
80+
set: (newValue) => {
81+
formData.value.tradeDeductUnitPrice = Math.round(newValue * 100)
82+
}
5983
})
84+
6085
const formRules = reactive({})
6186
const formRef = ref() // 表单 Ref
6287
@@ -82,6 +107,9 @@ const onSubmit = async () => {
82107
const getConfig = async () => {
83108
try {
84109
const data = await ConfigApi.getConfig()
110+
if (data === null) {
111+
return
112+
}
85113
formData.value = data
86114
} finally {
87115
}
@@ -91,3 +119,9 @@ onMounted(() => {
91119
getConfig()
92120
})
93121
</script>
122+
123+
<style scoped>
124+
.item-bottom {
125+
margin-bottom: 0;
126+
}
127+
</style>

0 commit comments

Comments
 (0)