浏览代码

分销商标签与批量佣金税率设置

gcz 1 年之前
父节点
当前提交
628c6caa85

+ 9 - 0
src/api/distribution/personnelMr.js

@@ -84,3 +84,12 @@ export function getRetailQrcode(query) {
     params: query
   })
 }
+
+// 批量设置税率
+export const batchUpdateRetailRate = (data) => {
+  return request({
+    url: '/member/marketPersons/batchUpdateRetailRate',
+    method: 'post',
+    data: data
+  })
+}

+ 22 - 4
src/views/distribution/personnelMr/dialog/addAndEdit.vue

@@ -2,9 +2,9 @@
  * @Description: 新增/编辑弹框
  * @Author: Sugar.
  * @Date: 2023-11-24 13:55:00
- * @LastEditors: Sugar.
- * @LastEditTime: 22023-11-24 13:55:00
- * @FilePath: \cattle_webui\src\views\distribution\personnelMr\AddOrEditDialog.vue
+ * @LastEditors: gcz
+ * @LastEditTime: 2024-04-22 14:24:12
+ * @FilePath: \great_webui\src\views\distribution\personnelMr\dialog\addAndEdit.vue
  * @Copyright: Copyright (c) 2016~2023 by Sugar., All Rights Reserved.
 -->
 <template>
@@ -41,6 +41,21 @@
             />
           </el-select>
         </el-form-item>
+        <el-form-item label="分销商标签:" prop="personsType">
+          <el-select
+            v-model="form.personsType"
+            placeholder="分销商标签"
+            clearable
+            style="width: 100%;"
+          >
+            <el-option
+              v-for="dict in dict.type.persons_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="负责人:" prop="contact">
           <el-input
             v-model="form.contact"
@@ -131,7 +146,7 @@ import Editor from "@/components/Editor";
 import { getToken } from "@/utils/auth";
 export default {
   name: "addAndEdit",
-  dicts:['user_allow_withdraw','distribution_type'],
+  dicts:['user_allow_withdraw','distribution_type','persons_type'],
   components: {
     Editor,
   },
@@ -148,6 +163,7 @@ export default {
       rules: {
         name: [{ required: true, message: "请输入分销商名称", trigger: ["change","blur"] }],
         type: [{ required: true, message: "请选择分销商类型", trigger: ["change","blur"] }],
+        personsType: [{ required: true, message: "请选择分销商标签", trigger: ["change","blur"] }],
         contact: [{ required: true, message: "请输入负责人", trigger: ["change","blur"] }],
         mobile: [{ required: true, message: "请输入账号/联系电话", trigger: ["change","blur"] }],
         allowWithdraw: [{ required: true, message: "请选择是否可提现", trigger: ["change","blur"] }],
@@ -207,6 +223,7 @@ export default {
           this.$set(this.form, 'parentId', obj.parentId && obj.parentId != 0 ? obj.parentId : null);
           this.$set(this.form, 'salePerson', obj.salePerson);
           this.$set(this.form, 'postLabel', obj.postLabel);
+          this.$set(this.form, 'personsType', obj.personsType);
         });
       });
       
@@ -252,6 +269,7 @@ export default {
       this.$set(this.form, 'parentId', '');
       this.$set(this.form, 'salePerson', '');
       this.$set(this.form, 'postLabel', '');
+      this.$set(this.form, 'personsType', '');
     },
     /**
      * 关闭弹框

+ 134 - 4
src/views/distribution/personnelMr/index.vue

@@ -25,6 +25,21 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="分销商标签">
+        <el-select
+          v-model="queryParams.personsType"
+          placeholder="分销商标签"
+          clearable
+          style="width: 140px"
+        >
+          <el-option
+            v-for="dict in dict.type.persons_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -62,10 +77,22 @@
           v-hasPermi="['personnelMr:personnelMr:codeSet']"
         >推广码海报设置</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-s-tools"
+          size="mini"
+          @click="openRetailRate"
+          v-hasPermi="['personnelMr:personnelMr:codeSet']"
+        >批量设置佣金税率</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+    <el-table ref="tables" v-loading="loading" :data="dataList" @selection-change="handleSelectionChange" border>
+      <el-table-column type="selection" width="55">
+    </el-table-column>
       <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
       <el-table-column label="分销商名称" align="center" prop="name" />
       <el-table-column label="分销商类型" align="center" prop="type">
@@ -73,6 +100,17 @@
           <dict-tag :options="dict.type.distribution_type" :value="scope.row.type"/>
         </template>
       </el-table-column>
+      <el-table-column label="分销商标签" align="center" prop="type">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.persons_type" :value="scope.row.personsType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="佣金税率" align="center" prop="type">
+        <template slot-scope="scope">
+          <span>{{ scope.row.retailRate }}%</span>
+        </template>
+      </el-table-column>
+      <!-- <el-table-column label="佣金税率" align="center" prop="retailRate" /> -->
       <el-table-column label="负责人" align="center" prop="contact" />
       <el-table-column label="账号/联系电话" align="center" prop="mobile" />
       <el-table-column label="被扫次数" align="center" prop="scanCounts" />
@@ -232,7 +270,43 @@
           type="primary"
           @click="submitForm"
           v-loading.fullscreen.lock="setLoading"
-          element-loading-text="提交中..."
+          element-loading-text="请等待..."
+          element-loading-spinner="el-icon-loading"
+          element-loading-background="rgba(0, 0, 0, 0.8)"
+        >
+          <span v-if="loading">提交中...</span>
+          <span v-else>保存</span>
+        </el-button>
+      </div>
+    </el-dialog>
+    <el-dialog
+      title="佣金税率设置"
+      :visible.sync="showRetailRate"
+      width="650px"
+      :destroy-on-close="true"
+      :close-on-click-modal="false"
+    >
+      <el-form :model="retailRateForm" ref="retailRateForm" :rules="retailRateFormRules" label-width="120px">
+        <el-form-item label="佣金税率设置" prop="retailRate">
+          <el-input
+            type="number"
+            v-model="retailRateForm.retailRate"
+            placeholder="请输入佣金税率"
+            clearable
+            @change="retailRateChange"
+            style="width: 260px;"
+          >
+            <template slot="append">%</template>
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="showRetailRate = false">取消</el-button>
+        <el-button
+          type="primary"
+          @click="submitRetailRateForm"
+          v-loading.fullscreen.lock="loading"
+          element-loading-text="请等待..."
           element-loading-spinner="el-icon-loading"
           element-loading-background="rgba(0, 0, 0, 0.8)"
         >
@@ -246,7 +320,7 @@
 
 <script>
 
-import { pageList, deleteById, updateStatus, configUpdate, getSetInfo, getRetailQrcode } from '@/api/distribution/personnelMr'
+import { pageList, deleteById, updateStatus, configUpdate, getSetInfo, getRetailQrcode ,batchUpdateRetailRate} from '@/api/distribution/personnelMr'
 import addAndEdit from "./dialog/addAndEdit.vue";
 import promotionCode from "./dialog/promotionCode.vue";
 import { Message } from 'element-ui'
@@ -260,7 +334,7 @@ export default {
       return url
     }
   },
-  dicts: ['distribution_type','user_allow_withdraw'],
+  dicts: ['distribution_type','user_allow_withdraw','persons_type'],
   components: { addAndEdit, promotionCode },
   data() {
     let validateNumber = (rule, value, callback) => {
@@ -341,6 +415,13 @@ export default {
       setRules: [],
       setLoading: false,
       getShareImgBase64Loading: false,
+      showRetailRate: false,//税率设置弹窗
+      retailRateForm: {ids:[],retailRate:undefined},
+      retailRateFormRules: {
+        retailRate: [
+          { required: true, message: '请输入佣金税率', trigger: ['change','blur'] },
+        ],
+      },
     };
   },
   created() {
@@ -394,6 +475,15 @@ export default {
     openSet() {
       this.setStatus = true
       this.getSetApi();
+    },
+     /** 佣金税率设置 */
+     openRetailRate() {
+      if(this.ids.length == 0){
+        this.$message.warning("请选择分销商");
+        return;
+      }
+      console.log('ids',this.ids)
+      this.showRetailRate = true;
     },
     /** 海报设置按钮操作 */
     codeSet() {
@@ -454,6 +544,40 @@ export default {
         }
       });
     },
+    /** 佣金税率输入事件 */
+    retailRateChange(value) {
+      // 检查输入值是否大于0
+      if (value <= 0) {
+        // 如果小于等于0,则将输入值置为0
+        this.retailRateForm.retailRate = 0;
+      } else {
+        // 如果大于0,则保留输入值
+        this.retailRateForm.retailRate = value;
+      }
+    },
+    // 佣金税率设置
+    submitRetailRateForm(){
+      this.retailRateForm.ids = this.ids;
+      this.$refs["retailRateForm"].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+            const { code } = await batchUpdateRetailRate({ ...this.retailRateForm });
+            if (code === 200) {
+              this.setLoading = false;
+              this.$message.success("操作成功!");
+              this.getList();
+              this.retailRateForm={ids:[],retailRate:undefined};
+              this.showRetailRate = false;
+            }
+          } catch (error) {
+          } finally {
+            this.loading = false;
+          }
+        }
+      });
+      
+    },
 
     /** 禁用或者启用发布按钮操作 */
     ionlineApi(row) {
@@ -546,6 +670,12 @@ export default {
         }, 300); // 这里加上 300ms 的延迟是为了让 DOM 元素完全渲染完成后再进行图片的生成
       });
     },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
   }
 };
 </script>

+ 3 - 3
src/views/distribution/ticketMr/index.vue

@@ -27,7 +27,7 @@
               v-hasPermi="['distributionTicketMr:distributionTicketMr:add']"
             >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
               type="primary"
               plain
@@ -35,7 +35,7 @@
               @click="handleSetTaxRateAdd"
               v-hasPermi="['distributionTicketMr:distributionTicketMr:add']"
             >佣金税率设置</el-button>
-      </el-col>
+      </el-col> -->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -64,7 +64,7 @@
           <span>{{ brokeragePriceRate(scope.row) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="佣金税率(%)" align="center" prop="brokerageTaxRate" />
+      <!-- <el-table-column label="佣金税率(%)" align="center" prop="brokerageTaxRate" /> -->
       <el-table-column label="状态" align="center">
         <template slot-scope="scope">
           <el-tag type="success" v-if="scope.row.status == 1">己上架</el-tag>