Browse Source

trade:优化交易配置的参数校验

YunaiV 1 year ago
parent
commit
74de8e9687
2 changed files with 45 additions and 18 deletions
  1. 10 6
      src/utils/constants.ts
  2. 35 12
      src/views/mall/trade/config/index.vue

+ 10 - 6
src/utils/constants.ts

@@ -278,12 +278,16 @@ export const PromotionDiscountTypeEnum = {
  */
 export const BrokerageBindModeEnum = {
   ANYTIME: {
-    mode: 0,
-    name: '没有推广人'
+    mode: 1,
+    name: '首次绑定'
   },
   REGISTER: {
-    mode: 1,
-    name: '新用户'
+    mode: 2,
+    name: '注册绑定'
+  },
+  OVERRIDE: {
+    mode: 3,
+    name: '覆盖绑定'
   }
 }
 /**
@@ -291,11 +295,11 @@ export const BrokerageBindModeEnum = {
  */
 export const BrokerageEnabledConditionEnum = {
   ALL: {
-    condition: 0,
+    condition: 1,
     name: '人人分销'
   },
   ADMIN: {
-    condition: 1,
+    condition: 2,
     name: '指定分销'
   }
 }

+ 35 - 12
src/views/mall/trade/config/index.vue

@@ -10,7 +10,7 @@
       <el-form-item label="hideId" v-show="false">
         <el-input v-model="formData.id" />
       </el-form-item>
-
+      <!-- 配送 -->
       <el-tabs>
         <el-tab-pane label="配送">
           <el-form-item label="启用包邮" prop="deliveryExpressFreeEnabled">
@@ -22,10 +22,15 @@
               v-model="formData.deliveryExpressFreePrice"
               placeholder="请输入满额包邮"
               class="!w-xs"
+              :precision="2"
+              :min="0"
             />
-            <el-text class="w-full" size="small" type="info"> 商城商品满多少金额即可包邮 </el-text>
+            <el-text class="w-full" size="small" type="info">
+              商城商品满多少金额即可包邮,单位:元
+            </el-text>
           </el-form-item>
         </el-tab-pane>
+        <!-- 分销 -->
         <el-tab-pane label="分销">
           <el-form-item label="分佣启用" prop="brokerageEnabled">
             <el-switch v-model="formData.brokerageEnabled" style="user-select: none" />
@@ -59,16 +64,16 @@
               </el-radio>
             </el-radio-group>
             <el-text class="w-full" size="small" type="info">
-              没有推广人:只要用户没有推广人,随时都可以绑定推广关系
+              首次绑定:只要用户没有推广人,随时都可以绑定推广关系
             </el-text>
             <el-text class="w-full" size="small" type="info">
-              新用户:只有新用户注册时或首次进入系统时才可以绑定推广关系
+              注册绑定:只有新用户注册时或首次进入系统时才可以绑定推广关系
             </el-text>
           </el-form-item>
           <el-form-item label="分销海报图">
             <UploadImgs v-model="formData.brokeragePosterUrls" width="75px" height="125px" />
             <el-text class="w-full" size="small" type="info">
-              个人中心分销海报图片,建议尺寸600x1000
+              个人中心分销海报图片,建议尺寸 600x1000
             </el-text>
           </el-form-item>
           <el-form-item label="一级返佣比例" prop="brokerageFirstPercent">
@@ -76,6 +81,8 @@
               v-model="formData.brokerageFirstPercent"
               placeholder="请输入一级返佣比例"
               class="!w-xs"
+              :min="0"
+              :max="100"
             />
             <el-text class="w-full" size="small" type="info">
               订单交易成功后给推广人返佣的百分比
@@ -86,6 +93,8 @@
               v-model="formData.brokerageSecondPercent"
               placeholder="请输入二级返佣比例"
               class="!w-xs"
+              :min="0"
+              :max="100"
             />
             <el-text class="w-full" size="small" type="info">
               订单交易成功后给推广人的推荐人返佣的百分比
@@ -96,6 +105,7 @@
               v-model="formData.brokerageFrozenDays"
               placeholder="请输入佣金冻结天数"
               class="!w-xs"
+              :min="0"
             />
             <el-text class="w-full" size="small" type="info">
               防止用户退款,佣金被提现了,所以需要设置佣金冻结时间,单位:天
@@ -106,6 +116,8 @@
               v-model="formData.brokerageWithdrawMinPrice"
               placeholder="请输入提现最低金额"
               class="!w-xs"
+              :precision="2"
+              :min="0"
             />
             <el-text class="w-full" size="small" type="info">
               用户提现最低金额限制,单位:元
@@ -116,9 +128,12 @@
               v-model="formData.brokerageWithdrawFeePercent"
               placeholder="请输入提现手续费"
               class="!w-xs"
+              :min="0"
+              :max="100"
             />
             <el-text class="w-full" size="small" type="info">
-              提现手续费百分比,范围0-100,0为无提现手续费,例:设置10,即收取10%手续费,提现100元,到账90元,10元手续费
+              提现手续费百分比,范围 0-100,0 为无提现手续费。例:设置 10,即收取 10% 手续费,提现
+              10 元,到账 9 元,1 元手续费
             </el-text>
           </el-form-item>
           <el-form-item label="提现方式" prop="brokerageWithdrawTypes">
@@ -146,7 +161,7 @@
           </el-form-item>
         </el-tab-pane>
       </el-tabs>
-
+      <!-- 保存 -->
       <el-form-item>
         <el-button type="primary" @click="submitForm" :loading="formLoading"> 保存 </el-button>
       </el-form-item>
@@ -167,11 +182,11 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
 const formRef = ref()
 const formData = ref({
   id: null,
-  deliveryExpressFreeEnabled: true,
+  deliveryExpressFreeEnabled: false,
   deliveryExpressFreePrice: 0,
-  brokerageEnabled: true,
-  brokerageEnabledCondition: BrokerageEnabledConditionEnum.ALL.condition,
-  brokerageBindMode: BrokerageBindModeEnum.ANYTIME.mode,
+  brokerageEnabled: false,
+  brokerageEnabledCondition: undefined,
+  brokerageBindMode: undefined,
   brokeragePosterUrls: [],
   brokerageFirstPercent: 0,
   brokerageSecondPercent: 0,
@@ -211,10 +226,15 @@ const submitForm = async () => {
   // 提交请求
   formLoading.value = true
   try {
-    const data = formData.value as unknown as ConfigApi.ConfigVO
+    const data = {
+      ...formData.value
+    } as unknown as ConfigApi.ConfigVO
     data.brokeragePosterUrls = formData.value.brokeragePosterUrls.map((item: any) => {
       return item?.url ? item.url : item
     })
+    // 金额放大
+    data.deliveryExpressFreePrice = data.deliveryExpressFreePrice * 100
+    data.brokerageWithdrawMinPrice = data.brokerageWithdrawMinPrice * 100
     await ConfigApi.saveTradeConfig(data)
     message.success('保存成功')
   } finally {
@@ -230,6 +250,9 @@ const getConfig = async () => {
     if (data != null) {
       data.brokeragePosterUrls = data.brokeragePosterUrls.map((url) => ({ url }))
       formData.value = data
+      // 金额缩小
+      formData.value.deliveryExpressFreePrice = data.deliveryExpressFreePrice / 100
+      formData.value.brokerageWithdrawMinPrice = data.brokerageWithdrawMinPrice / 100
     }
   } finally {
     formLoading.value = false