Эх сурвалжийг харах

全民营销/价格配置:佣金比例功能开发

shipeng 1 долоо хоног өмнө
parent
commit
69d020e46f

+ 65 - 3
src/views/priceConfigurationUilt/dialog/addAndEdit.vue

@@ -100,11 +100,26 @@
         </el-form-item>
         <el-form-item :label="setSaleAmounttile()" prop="saleAmount">
-          <el-input-number v-model="form.saleAmount" style="width: 350px"></el-input-number>
+          <el-input-number v-model="form.saleAmount" style="width: 350px" @change="saleAmountChange"></el-input-number>
           {{ !['group'].includes(channelType) ? '元':form.touristLimit==2?'元':'元/人' }}
         </el-form-item>
+        <el-form-item v-if="channelType == 'retail'" label="佣金比例" prop="retailRate">
+          <!-- <el-input-number 
+            v-model="form.retailRate" 
+            :min="0"
+            :precision="2"
+            :step="0.01"
+            step-strictly 
+            style="width: 350px">
+          </el-input-number> -->
+          <el-input v-model="form.retailRate" placeholder="请输入佣金比例" type="number" @change="handleChange" style="width: 350px">
+            <template slot="append">%</template>
+          </el-input>
+        </el-form-item>
         <el-form-item v-if="channelType == 'retail'" label="佣金:" prop="retailAmount">
-          <el-input-number v-model="form.retailAmount" style="width: 350px"></el-input-number>
+          <el-input v-model="form.retailAmount" disabled style="width: 350px">
+          </el-input>
+          <!-- <el-input-number v-model="form.retailAmount" style="width: 350px"></el-input-number> -->
         </el-form-item>
         <el-form-item label="备注:" prop="remark">
@@ -133,6 +148,7 @@
 import { saveAndEdit,saveAndUpdate } from "@/api/priceConfiguration/index";
 import { pageList as goodsPageListApi } from '@/api/ticketMr/ticketMr'
 import moment from "moment"
+import * as math from 'mathjs';
 export default {
   name: "addAndEdit",
   props: {
@@ -141,6 +157,17 @@ export default {
     }
   },
   data() {
+    let checkInput = (rule, value, callback) => {
+      if (value === null || value === '') {
+        callback(new Error('请输入有效的数字'));
+      } else if (value < 0) {
+        callback(new Error('佣金比例不能小于0'));
+      } else if ((!/^\d+(\.\d{1,2})?$/.test(value.toString()))) {
+        callback(new Error('最多保留两位小数'));
+      } else {
+        callback();
+      }
+    };
     return {
       title: "编辑",
       model: "EDIT",
@@ -151,6 +178,7 @@ export default {
         id: undefined,
         weekName: [],
         weekType: 0,
+        retailRate: 0,
       },
       rules: {
         performDate: [{ required: true, message: "请选择日期", trigger: ["change","blur"] }],
@@ -159,7 +187,11 @@ export default {
         seatTypeId: [{ required: true, message: "请选择票档名称", trigger: ["change","blur"] }],
         originalAmount: [{ required: true, message: "请输入划线价", trigger: ["change","blur"] }],
         saleAmount: [{ required: true, message: "请输入价格", trigger: ["change","blur"] }],
-        retailAmount: [{ required: true, message: "请输入佣金", trigger: ["change","blur"] }],
+        retailRate: [
+          { required: true, message: "请输入佣金比例", trigger: 'change' },
+          { required: true, validator: checkInput, trigger: 'change'}
+        ],
+        // retailAmount: [{ required: true, message: "请输入佣金", trigger: ["change","blur"] }],
         remark: [{ required: false, message: "请输入备注", trigger: ["change","blur"] }],
       
         touristLimit: [{ required: true, message: "请选择成团要求", trigger: ["change","blur"] }],
@@ -222,6 +254,8 @@ export default {
           this.form = {
             weekName: [],
             weekType: 0,
+            retailRate: 0,
+
           };
         }
       }
@@ -250,6 +284,34 @@ export default {
       } catch (error) {      
       }
     },
+    // 分销价格
+    saleAmountChange() {
+      if(this.form.retailRate) {
+        // 使用 mathjs 进行计算
+        const result = math.evaluate(`${this.form.saleAmount} * ${this.form.retailRate} / 100`);
+        // 返回结果,保留两位小数
+        this.form.retailAmount = parseFloat(result.toFixed(2))
+      }
+    },
+    // 分佣比例
+    handleChange(value) {
+      if (value === null || value === undefined) {
+        this.form.retailRate = null;
+        return;
+      }
+      const num = Number(value);
+      if (isNaN(num) || num < 0) {
+        this.form.retailRate = 0;
+      } else {
+        this.form.retailRate = parseFloat(num.toFixed(2));
+        if(this.form.saleAmount) {
+          // 使用 mathjs 进行计算
+          const result = math.evaluate(`${this.form.saleAmount} * ${this.form.retailRate} / 100`);
+          // 返回结果,保留两位小数
+          this.form.retailAmount = parseFloat(result.toFixed(2))
+        }
+      }
+    },
     /**  选择票务  */
     selectGoodsId(value){
       this.$set(this.form,'seatTypeId','')

+ 1 - 0
src/views/priceConfigurationUilt/index.vue

@@ -66,6 +66,7 @@
       </el-table-column>
       <el-table-column v-if="!['window','group'].includes(channelType)" :label="setSaleAmounttile1()" align="center" prop="originalAmount" />
       <el-table-column :label="setSaleAmounttile()" align="center" prop="saleAmount" />
+      <el-table-column label="佣金比例(%)" align="center" prop="retailRate" />
       <el-table-column v-if="['retail'].includes(channelType)" label="佣金(元)" align="center" prop="retailAmount" />
       <el-table-column label="创建人" align="center" prop="createBy" />
       <el-table-column label="最后修改时间" align="center" prop="updateTime" />