10
10
<el-form-item label =" hideId" v-show =" false" >
11
11
<el-input v-model =" formData.id" />
12
12
</el-form-item >
13
- <el-form-item label =" 积分抵扣" prop =" tradeDeductEnable" class =" item-bottom" >
14
- <el-switch v-model =" formData.tradeDeductEnable" style =" user-select : none " />
15
- </el-form-item >
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" >
20
- <el-input-number
21
- v-model =" computedTradeDeductUnitPrice"
22
- placeholder =" 请输入积分抵扣金额"
23
- style =" width : 300px "
24
- :precision =" 2"
25
- />
26
- </el-form-item >
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" >
33
- <el-input-number
34
- v-model =" formData.tradeDeductMaxPrice"
35
- placeholder =" 请输入积分抵扣最大值"
36
- style =" width : 300px "
37
- />
38
- </el-form-item >
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" >
43
- <el-input-number
44
- v-model =" formData.tradeGivePoint"
45
- placeholder =" 请输入 1 元赠送多少积分"
46
- style =" width : 300px "
47
- />
48
- </el-form-item >
49
- <el-form-item >
50
- <el-text class =" mx-1" size =" small" type =" info" >
51
- 下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)
52
- </el-text >
53
- </el-form-item >
13
+
14
+ <el-tabs >
15
+ <el-tab-pane label =" 积分" >
16
+ <el-form-item label =" 积分抵扣" prop =" tradeDeductEnable" class =" item-bottom" >
17
+ <el-switch v-model =" formData.tradeDeductEnable" style =" user-select : none " />
18
+ <el-text class =" w-full" size =" small" type =" info" >下单积分是否抵用订单金额</el-text >
19
+ </el-form-item >
20
+ <el-form-item label =" 积分抵扣" prop =" tradeDeductUnitPrice" >
21
+ <el-input-number
22
+ v-model =" computedTradeDeductUnitPrice"
23
+ placeholder =" 请输入积分抵扣金额"
24
+ :precision =" 2"
25
+ />
26
+ <el-text class =" w-full" size =" small" type =" info" >
27
+ 积分抵用比例(1 积分抵多少金额),单位:元
28
+ </el-text >
29
+ </el-form-item >
30
+ <el-form-item label =" 积分抵扣最大值" prop =" tradeDeductMaxPrice" >
31
+ <el-input-number
32
+ v-model =" formData.tradeDeductMaxPrice"
33
+ placeholder =" 请输入积分抵扣最大值"
34
+ />
35
+ <el-text class =" w-full" size =" small" type =" info" >
36
+ 单次下单积分使用上限,0 不限制
37
+ </el-text >
38
+ </el-form-item >
39
+ <el-form-item label =" 1 元赠送多少分" prop =" tradeGivePoint" >
40
+ <el-input-number
41
+ v-model =" formData.tradeGivePoint"
42
+ placeholder =" 请输入 1 元赠送多少积分"
43
+ />
44
+ <el-text class =" w-full" size =" small" type =" info" >
45
+ 下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)
46
+ </el-text >
47
+ </el-form-item >
48
+ </el-tab-pane >
49
+ <el-tab-pane label =" 分销" >
50
+ <el-form-item label =" 分佣启用" prop =" brokerageEnabled" >
51
+ <el-switch v-model =" formData.brokerageEnabled" style =" user-select : none " />
52
+ <el-text class =" w-full" size =" small" type =" info" > 商城是否开启分销模式 </el-text >
53
+ </el-form-item >
54
+ <el-form-item label =" 分佣模式" prop =" brokerageEnabledCondition" >
55
+ <el-radio-group v-model =" formData.brokerageEnabledCondition" >
56
+ <el-radio
57
+ v-for =" dict in getIntDictOptions(DICT_TYPE.BROKERAGE_ENABLED_CONDITION)"
58
+ :key =" dict.value"
59
+ :label =" dict.value"
60
+ >
61
+ {{ dict.label }}
62
+ </el-radio >
63
+ </el-radio-group >
64
+ <el-text class =" w-full" size =" small" type =" info" >
65
+ 人人分销:每个用户都可以成为推广员
66
+ </el-text >
67
+ <el-text class =" w-full" size =" small" type =" info" >
68
+ 指定分销:仅可在后台手动设置推广员
69
+ </el-text >
70
+ </el-form-item >
71
+ <el-form-item label =" 分销关系绑定" prop =" brokerageBindMode" >
72
+ <el-radio-group v-model =" formData.brokerageBindMode" >
73
+ <el-radio
74
+ v-for =" dict in getIntDictOptions(DICT_TYPE.BROKERAGE_BIND_MODE)"
75
+ :key =" dict.value"
76
+ :label =" dict.value"
77
+ >
78
+ {{ dict.label }}
79
+ </el-radio >
80
+ </el-radio-group >
81
+ <el-text class =" w-full" size =" small" type =" info" >
82
+ 没有推广人:只要用户没有推广人,随时都可以绑定推广关系
83
+ </el-text >
84
+ <el-text class =" w-full" size =" small" type =" info" >
85
+ 新用户:只有新用户注册时或首次进入系统时才可以绑定推广关系
86
+ </el-text >
87
+ </el-form-item >
88
+ <el-form-item label =" 分销海报图" >
89
+ <UploadImgs v-model =" formData.brokeragePostUrls" width =" 75px" height =" 125px" />
90
+ <el-text class =" w-full" size =" small" type =" info" >
91
+ 个人中心分销海报图片,建议尺寸600x1000
92
+ </el-text >
93
+ </el-form-item >
94
+ <el-form-item label =" 一级返佣比例" prop =" brokerageFirstPercent" >
95
+ <el-input-number
96
+ v-model =" formData.brokerageFirstPercent"
97
+ placeholder =" 请输入一级返佣比例"
98
+ />
99
+ <el-text class =" w-full" size =" small" type =" info" >
100
+ 订单交易成功后给推广人返佣的百分比
101
+ </el-text >
102
+ </el-form-item >
103
+ <el-form-item label =" 二级返佣比例" prop =" brokerageSecondPercent" >
104
+ <el-input-number
105
+ v-model =" formData.brokerageSecondPercent"
106
+ placeholder =" 请输入二级返佣比例"
107
+ />
108
+ <el-text class =" w-full" size =" small" type =" info" >
109
+ 订单交易成功后给推广人的推荐人返佣的百分比
110
+ </el-text >
111
+ </el-form-item >
112
+ <el-form-item label =" 佣金冻结天数" prop =" brokerageFrozenDays" >
113
+ <el-input-number
114
+ v-model =" formData.brokerageFrozenDays"
115
+ placeholder =" 请输入佣金冻结天数"
116
+ />
117
+ <el-text class =" w-full" size =" small" type =" info" >
118
+ 防止用户退款,佣金被提现了,所以需要设置佣金冻结时间,单位:天
119
+ </el-text >
120
+ </el-form-item >
121
+ <el-form-item label =" 提现最低金额" prop =" brokerageWithdrawMinPrice" >
122
+ <el-input-number
123
+ v-model =" formData.brokerageWithdrawMinPrice"
124
+ placeholder =" 请输入用户提现最低金额"
125
+ />
126
+ <el-text class =" w-full" size =" small" type =" info" >
127
+ 用户提现最低金额限制,单位:元
128
+ </el-text >
129
+ </el-form-item >
130
+ <el-form-item label =" 提现方式" prop =" brokerageWithdrawType" >
131
+ <el-checkbox-group v-model =" formData.brokerageWithdrawType" >
132
+ <el-checkbox
133
+ v-for =" dict in getIntDictOptions(DICT_TYPE.BROKERAGE_WITHDRAW_TYPE)"
134
+ :key =" dict.value"
135
+ :label =" dict.value"
136
+ >
137
+ {{ dict.label }}
138
+ </el-checkbox >
139
+ </el-checkbox-group >
140
+ <el-text class =" w-full" size =" small" type =" info" > 商城开通提现的付款方式 </el-text >
141
+ </el-form-item >
142
+ <el-form-item label =" 提现银行" prop =" brokerageBankNames" >
143
+ <el-select v-model =" formData.brokerageBankNames" placeholder =" 请选择提现银行" multiple >
144
+ <el-option
145
+ v-for =" dict in getIntDictOptions(DICT_TYPE.BROKERAGE_BANK_NAME)"
146
+ :key =" dict.value"
147
+ :label =" dict.label"
148
+ :value =" dict.value"
149
+ />
150
+ </el-select >
151
+ <el-text class =" w-full" size =" small" type =" info" > 商城开通提现的银行列表 </el-text >
152
+ </el-form-item >
153
+ </el-tab-pane >
154
+ </el-tabs >
155
+
54
156
<el-form-item >
55
157
<el-button type =" primary" @click =" onSubmit" >保存</el-button >
56
158
</el-form-item >
59
161
</template >
60
162
<script lang="ts" setup>
61
163
import * as ConfigApi from ' @/api/member/point/config'
164
+ import { DICT_TYPE , getIntDictOptions } from ' @/utils/dict'
165
+ import { BrokerageBindModeEnum , BrokerageEnabledConditionEnum } from ' @/utils/constants'
62
166
63
167
defineOptions ({ name: ' MemberPointConfig' })
64
168
@@ -68,10 +172,21 @@ const message = useMessage() // 消息弹窗
68
172
const dialogVisible = ref (false ) // 弹窗的是否展示
69
173
const formLoading = ref (false ) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
70
174
const formData = ref ({
175
+ id: undefined ,
71
176
tradeDeductEnable: true ,
72
177
tradeDeductUnitPrice: 0 ,
73
178
tradeDeductMaxPrice: 0 ,
74
- tradeGivePoint: 0
179
+ tradeGivePoint: 0 ,
180
+ brokerageEnabled: true ,
181
+ brokerageEnabledCondition: BrokerageEnabledConditionEnum .ALL .condition ,
182
+ brokerageBindMode: BrokerageBindModeEnum .ANYTIME .mode ,
183
+ brokeragePostUrls: [],
184
+ brokerageFirstPercent: 0 ,
185
+ brokerageSecondPercent: 0 ,
186
+ brokerageWithdrawMinPrice: 0 ,
187
+ brokerageBankNames: [],
188
+ brokerageFrozenDays: 0 ,
189
+ brokerageWithdrawType: []
75
190
})
76
191
77
192
// 创建一个计算属性,用于将 tradeDeductUnitPrice 显示为带两位小数的形式
@@ -95,6 +210,9 @@ const onSubmit = async () => {
95
210
formLoading .value = true
96
211
try {
97
212
const data = formData .value as unknown as ConfigApi .ConfigVO
213
+ data .brokeragePostUrls = formData .value .brokeragePostUrls .map ((item : any ) => {
214
+ return item ?.url ? item .url : item
215
+ })
98
216
await ConfigApi .saveConfig (data )
99
217
message .success (t (' common.updateSuccess' ))
100
218
dialogVisible .value = false
@@ -110,6 +228,7 @@ const getConfig = async () => {
110
228
if (data === null ) {
111
229
return
112
230
}
231
+ data .brokeragePostUrls = data .brokeragePostUrls .map ((url ) => ({ url }))
113
232
formData .value = data
114
233
} finally {
115
234
}
0 commit comments