Parcourir la source

feat: 商家登录名额限制

zh il y a 2 ans
Parent
commit
0e0b77e080
2 fichiers modifiés avec 333 ajouts et 0 suppressions
  1. 47 0
      src/api/basic_data/numerusClausus.js
  2. 286 0
      src/views/basic_data/numerusClausus.vue

+ 47 - 0
src/api/basic_data/numerusClausus.js

@@ -0,0 +1,47 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getMerchantLoginQuotaLimitList(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportMerchantLoginQuotaLimit(data, name) {
+  return postBlob({
+    url: '/config/merchantLoginQuotaLimit/export',
+    data,
+    name
+  })
+}
+
+export function editMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function addMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getMerchantLoginQuotaLimitDetail(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/detail`,
+    method: 'post',
+    params
+  })
+}
+
+export function delMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/del`,
+    method: 'post',
+    data: params
+  })
+}

+ 286 - 0
src/views/basic_data/numerusClausus.vue

@@ -0,0 +1,286 @@
+<template>
+  <!-- 名额限制 -->
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :operation="operation()"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+    :table-attributes="tableAttributes"
+    :table-events="tableEvents"
+  >
+    <el-dialog
+      title="商家登录名称限制"
+      :visible.sync="visible"
+      width="40%"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      @close="handleClose"
+    >
+      <el-form ref="formData" :model="formData" :rules="rules" label-width="150px" :inline="false" size="mini" :disabled="isDetail">
+        <el-form-item label="商家信息" prop="customerId">
+          <el-select v-model="formData.customerId" placeholder="请选择" clearable filterable style="width: 100%;" @change="handleChange">
+            <el-option v-for="item in customerList" :key="item.id" :label="item.name" :value="item.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="商家编号" prop="customerNumber">
+          <el-input v-model="formData.customerNumber" placeholder="根据选择自动带出商家编号" readonly />
+        </el-form-item>
+        <el-form-item label="工装登录名额限制" prop="workLoginLimit">
+          <el-input v-model.number="formData.workLoginLimit" type="number" placeholder="请输入正整数" />
+        </el-form-item>
+        <el-form-item label="家装登录名额限制" prop="homeLoginLimit">
+          <el-input v-model.number="formData.homeLoginLimit" type="number" placeholder="请输入正整数" />
+        </el-form-item>
+        <el-form-item label="跨区登录名额限制" prop="spanLoginLimit">
+          <el-input v-model.number="formData.spanLoginLimit" type="number" placeholder="请输入正整数" />
+        </el-form-item>
+        <el-form-item label="状态" prop="state">
+          <el-radio-group v-model="formData.state">
+            <el-radio
+              v-for="item in [
+                { label: '开启', vlaue: true },
+                { label: '停用', vlaue: false }
+              ]"
+              :key="item.key"
+              :label="item.vlaue"
+            >
+              {{ item.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <span slot="footer">
+        <el-button @click="handleClose">取消</el-button>
+        <el-button type="primary" :disabled="isDetail" @click="onSubmit">确定</el-button>
+      </span>
+    </el-dialog>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import { getDealerListV2 } from '@/api/basic_data/dealer'
+import {
+  getMerchantLoginQuotaLimitList,
+  exportMerchantLoginQuotaLimit,
+  delMerchantLoginQuotaLimit,
+  editMerchantLoginQuotaLimit,
+  addMerchantLoginQuotaLimit,
+  getMerchantLoginQuotaLimitDetail
+} from '@/api/basic_data/numerusClausus'
+
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: this.addOn(() => {
+                this.formData.id = ''
+                this.getDealerListV2()
+                this.visible = true
+              })
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '批量删除',
+              click: async() => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.error('请选择需要删除的数据')
+                  return
+                }
+                const ids = this.recordSelected.map(v => {
+                  return v.id
+                })
+                const idList = ids
+                await delMerchantLoginQuotaLimit(idList)
+                this.$refs.pageRef.refreshList()
+                this.$message.success('批量删除成功')
+              }
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+
+      detailsId: '',
+      formData: {
+        id: '',
+        customerId: '',
+        customerNumber: '',
+        customerName: '',
+        homeLoginLimit: 0,
+        spanLoginLimit: 0,
+        state: true,
+        workLoginLimit: 0
+      },
+      customerList: [],
+      rules: {
+        customerId: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        customerNumber: [
+          { required: true, message: '请填写', trigger: 'change' }
+        ],
+        homeLoginLimit: [
+          { required: true, message: '请填写', trigger: 'change' }
+        ],
+        spanLoginLimit: [
+          { required: true, message: '请填写', trigger: 'change' }
+        ],
+        workLoginLimit: [
+          { required: true, message: '请填写', trigger: 'change' }
+        ],
+        state: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ]
+      },
+      isDetail: false
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getMerchantLoginQuotaLimitList(...p)
+    },
+    // 列表导出函数
+    exportList: exportMerchantLoginQuotaLimit,
+    // 表格列解析渲染数据更改
+    columnParsing(_item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (_h, { row, index, column }) => {
+        return (
+          <div class='operation-btns'>
+            <el-button
+              size='mini'
+              type='text'
+              onClick={() => {
+                this.getDealerListV2()
+                this.getMerchantLoginQuotaLimitDetail(row.id)
+                this.visible = true
+              }}
+            >
+              编辑
+            </el-button>
+            <el-button
+              size='mini'
+              type='text'
+              onClick={() => {
+                this.getDealerListV2()
+                this.getMerchantLoginQuotaLimitDetail(row.id)
+                this.isDetail = true
+                this.visible = true
+              }}
+            >
+              详情
+            </el-button>
+            {
+              <el-popconfirm
+                title='确定删除吗?'
+                onOnConfirm={() => {
+                  delMerchantLoginQuotaLimit([row.id]).then(res => {
+                    this.$refs.pageRef.refreshList()
+                    this.$successMsg('删除成功')
+                  })
+                }}
+              >
+                <el-button slot='reference' type='text' size='mini'>
+                  删除
+                </el-button>
+              </el-popconfirm>
+            }
+          </div>
+        )
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.$refs.formData.resetFields()
+        this.visible = false
+        this.isDetail = false
+        this.$refs.pageRef.refreshList()
+      })()
+    },
+    getMerchantLoginQuotaLimitDetail(id) {
+      getMerchantLoginQuotaLimitDetail({ id }).then(res => {
+        this.formData = {
+          ...res.data
+        }
+      })
+    },
+    getDealerListV2() {
+      getDealerListV2({
+        pageNum: 1,
+        pageSize: 100
+      }).then(res => {
+        this.customerList = res.data.records
+      })
+    },
+    handleChange(e) {
+      if (e) {
+        const item = this.customerList.find(k => k.id === e)
+        this.formData.customerNumber = item.number
+        this.formData.customerName = item.name
+      } else {
+        this.formData.customerNumber = ''
+        this.formData.customerName = ''
+      }
+    },
+    onSubmit() {
+      this.$refs.formData.validate(valid => {
+        const params = {
+          ...this.formData
+        }
+        if (valid) {
+          if (this.formData.id) {
+            editMerchantLoginQuotaLimit(params).then(res => {
+              this.visible = false
+              this.$successMsg('编辑成功')
+            })
+          } else {
+            addMerchantLoginQuotaLimit(params).then(res => {
+              this.visible = false
+              this.$successMsg('新增成功')
+            })
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>