zhuhao il y a 2 ans
Parent
commit
dcf48ea876

+ 28 - 0
src/api/admin.js

@@ -422,5 +422,33 @@ export default {
     addRolePersonnelBatch(params) {
         return axios.post('/permission/api/role/addRolePersonnelBatch', params)
     },
+    
+    /**
+     * 会员类别权限管理新增
+     */
+    addNewTenantVipType(params) {
+        return axios.post('/permission/api/tenantVipType/addNew', params)
+  },
+    
+    /**
+     * 会员类别权限管理查询
+     */
+    queryTenantVipType(params) {
+        return axios.post('/permission/api/tenantVipType/queryTenantVipType', params)
+  },
+    
+    /**
+     * 会员类别权限管理更新
+     */
+    updateNewTenantVipType(params) {
+        return axios.post('/permission/api/tenantVipType/update', params)
+  },
+    
+    /**
+     * 会员类别权限管理删除
+     */
+    deleteTenantVipType(params) {
+        return axios.get('/permission/api/tenantVipType/delete', {params})
+    },
 
 }

+ 1 - 1
src/assets/css/layout.less

@@ -26,7 +26,7 @@
   color: #606266 !important;
 }
 .el-cascader-menu {
-  height: 350px !important;
+  height: 200px !important;
 }
 .el-cascader-menu__wrap {
   height: 100% !important;

+ 8 - 0
src/router/index.js

@@ -105,6 +105,14 @@ const routes = [
         },
         component: () => import('@/views/group/index.vue')
       },
+      {
+        path: 'memberType',
+        meta: {
+          title: '会员类别管理',
+          active: 'memberType'
+        },
+        component: () => import('@/views/memberType/index.vue')
+      },
       // {
       //   path: 'dataPermission',
       //   meta: {

+ 56 - 2
src/views/client/index.vue

@@ -51,6 +51,7 @@
     <div class="pagination">
       <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total" @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
     </div>
+    <!-- 新增、编辑租户弹框 -->
     <el-dialog :title="title" :visible.sync="visible" width="500px" :before-close="close">
       <el-form v-if="visible" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="110px" label-position="left">
 
@@ -137,6 +138,25 @@
         </el-row>
         <el-row :gutter="24">
           <el-col :span="24">
+            <el-form-item label="会员类别" prop="memberType">
+              <el-col  style="padding-left: 0px;">
+                <el-select v-model="ruleForm.memberType" placeholder="请选择会员类别" filterable="true" style="width: 230px; margin-right: 10px;">
+                  <el-option v-for="item in memberTypes"
+                  :key="item.id"
+                  :label="item.tenantVipName"
+                  :value="item.id">
+                  </el-option>
+                </el-select>
+                <el-tooltip content="点击进入查看、修改会员类别" placement="top">
+                  <!-- <el-link type="primary" @click="memberTypeBtn">会员类别</el-link> -->
+                  <el-button @click="memberTypeBtn">会员类别</el-button>
+                </el-tooltip>
+              </el-col>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- <el-row :gutter="24">
+          <el-col :span="24">
             <el-form-item label="功能权限" prop="function">
            <el-cascader
               ref="FunctionCascader"
@@ -148,10 +168,9 @@
               clearable
               @change="downloadChange"
               style="width:100%"></el-cascader>
-          <!-- <el-input v-model="ruleForm.function" placeholder="请输入功能权限"></el-input> -->
         </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
         <el-form-item label="是否启用" prop="state">
                   <el-switch
           :active-value="1" 
@@ -213,12 +232,22 @@
         </el-form>
 
     </el-dialog>
+    <!-- 会员类别管理弹窗 -->
+    <el-dialog title="会员类别管理" :visible.sync="memberVisible" :before-close="closeMember" append-to-body width="1000px">
+        <MemberType></MemberType>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="closeMember">取 消</el-button>
+        <el-button type="primary" @click="submitMember">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import MemberType from "@/views/memberType/index.vue"
 export default {
   components: {
+    MemberType,
   },
   data() {
     return {
@@ -234,6 +263,9 @@ export default {
       btnLoading: false,
       total: 0,
       tableData: [],
+      memberTypes: [],
+      memberVisible: false,
+      MemberLoading: false,
       title: '',
       queryParams: {
         size: 10,
@@ -260,6 +292,7 @@ export default {
   mounted() {
     this.getList()
     this.getFunction()
+    this.getListMemberType()
     // this.translate()
     // console.log(this.select)
   },
@@ -324,6 +357,25 @@ export default {
         this.loading = false
       });
     },
+    getListMemberType() { 
+      this.$api.queryTenantVipType({}).then(res => {
+        if (res.code == 200) {
+          this.memberTypes = res.data.list
+        }
+      })
+    },
+    //会员类别按钮
+    memberTypeBtn() {
+      this.memberVisible=true
+    },
+    // 会员类别弹窗确定
+    submitMember() {
+      this.memberVisible=false
+    },
+    // 会员类别弹窗取消
+    closeMember() {
+      this.memberVisible=false
+    },
     // getCheckedNodes(){
     //  var List = this.$refs.FunctionCascader.getCheckedNodes()
     //  List.forEach(item => {
@@ -350,6 +402,7 @@ export default {
         this.findAllNode(item)
       })
       this.functions = [...this.saveNodeTmp]
+      
     },
 
     getFunction(val) {
@@ -391,6 +444,7 @@ export default {
               this.btnLoading = false
             })
           } else {
+            console.log(this.ruleForm);
             this.$api.addTenant(this.ruleForm).then(response => {
               this.$message.success('新增成功')
               this.btnLoading = false

+ 0 - 0
src/views/clientType/index.vue


+ 5 - 0
src/views/layout/index.vue

@@ -27,6 +27,11 @@
               <i class="el-icon-film"></i>
               <span slot="title">租户管理</span>
             </el-menu-item>
+            <!-- v-if="$permission('/admin/memberType')" -->
+            <el-menu-item index="memberType">
+              <i class="el-icon-help"></i>
+              <span slot="title">会员类别管理</span>
+            </el-menu-item>
             <!-- <el-menu-item index="apply">
               <i class="el-icon-present"></i>
               <span slot="title">应用管理</span>

+ 303 - 0
src/views/memberType/index.vue

@@ -0,0 +1,303 @@
+<template>
+  <div>
+    <!-- 搜索 -->
+    <el-form :inline="true">
+      <!-- <el-form-item v-if="$permission('/admin/memberType/check')"> -->
+      <!-- <el-form-item>
+        <el-input v-model="queryParams.name" size="small" placeholder="请输入"></el-input>
+      </el-form-item> -->
+      <!-- <el-form-item class="tenant" v-if="userinfo.rList?(userinfo.rList.filter(item=>item.roleId==1))[0]:''"> -->
+      <el-form-item class="tenant" >
+        <el-input
+          placeholder="根据会员类型/名称或创建人查询"
+          v-model="queryParams.likeName"
+          clearable
+          style="width: 280px;">
+        </el-input>
+        <!-- <el-autocomplete
+          class="inline-input"
+          v-model="tenant"
+          :fetch-suggestions="querySearch"
+          placeholder="根据会员类型/名称或创建人查询"
+          :trigger-on-focus="false"
+          @select="handleSelect"
+          style="width: 280px;"
+        ></el-autocomplete> -->
+        <!-- <el-select v-model="queryParams.tenant" @change="getList" clearable placeholder="根据租户/租户类别查询">
+          <el-option
+              v-for="item in tenantList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+          </el-option>
+        </el-select> -->
+      </el-form-item>
+      <el-form-item>
+        <!-- <el-button type="" size="small" @click="getList2" v-if="$permission('/admin/memberType/check')">查询</el-button>
+        <el-button type="primary" size="small" @click="handleAdd()" v-if="$permission('/admin/memberType/add')">新增</el-button> -->
+        <el-button type="" size="small" @click="getList" >查询</el-button>
+        <el-button type="primary" size="small" @click="handleAdd()">新增</el-button>
+      </el-form-item>
+    </el-form>
+    <!-- 表格 -->
+    <el-table
+        v-loading="loading"
+        :data="tableData"
+        border
+        @sort-change="sortMethod"
+        header-row-class-name="custom-table-header"
+    >
+      <el-table-column prop="tenantVipName" label="会员类型/名称" sortable align="center" width="200px">
+
+      </el-table-column>
+      <el-table-column label="功能权限" align="center" show-overflow-tooltip>
+        <template slot-scope="scope">
+          <span v-for="item in scope.row.functionIdPathNameDescriptions" :key="item.functionId">{{ item.functionName  }} &nbsp; </span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="createPersonName" label="创建人" sortable align="center" width="100px"></el-table-column>
+      <el-table-column prop="createTime" label="创建时间" sortable align="center" ></el-table-column>
+      <el-table-column prop="remark" label="备注" align="center" width="200px"></el-table-column>
+      <el-table-column label="操作" align="center" width="150">
+        <template slot-scope="scope">
+          <el-dropdown split-button type="primary" size="small">
+            <p v-if="$permission('/admin/memberType/modify')" @click="handleEdit(scope.row)">编辑</p>
+            <p v-else @click="handleEdit(scope.row)">编辑</p>
+            <el-dropdown-menu slot="dropdown" class="text-align_center">
+              <el-dropdown-item @click.native="handleDelete(scope.row.id)">删除</el-dropdown-item>
+              <!-- <el-dropdown-item @click.native="handleAdd(scope.row.id)">新增</el-dropdown-item> -->
+              <!-- <el-dropdown-item class="color-red" @click.native="handleDelete(scope.row)" divided
+                                v-if="$permission('/admin/memberType/delete')">删除
+              </el-dropdown-item> -->
+              <!-- <el-dropdown-item @click.native="distributionPersonnel(scope.row)" divided>分配人员
+              </el-dropdown-item> -->
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 表格分页 -->
+    <div class="pagination">
+      <el-pagination :current-page.sync="queryParams.page" :page-size="queryParams.pageSize" :total="total"
+                     @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper"
+      background></el-pagination>
+    </div>
+    <!-- 新增/编辑弹窗 -->
+    <el-dialog :title="title" :visible.sync="visible" width="600px" max-height="800" :before-close="close" append-to-body>
+      <div style="height: 280px">
+        <el-form v-if="visible" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="80px" label-position="left">
+          <el-form-item label="会员类型" prop="tenantVipName">
+            <el-input v-model="ruleForm.tenantVipName" placeholder="请输入会员类型名称"></el-input>
+            <!-- <el-select style="width:100%" v-model="ruleForm.memberType"
+                       :disabled="(userinfo.rList?!(userinfo.rList.filter(item=>item.roleId==1))[0]:'')||disabled"
+                       placeholder="请选择">
+              <el-option
+                  v-for="item in tenantList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
+              </el-option>
+            </el-select> -->
+          </el-form-item>
+          <el-form-item label="创建人" prop="createPersonName">
+            <el-input v-model="ruleForm.createPersonName" placeholder="请输入创建人" disabled></el-input>
+          </el-form-item>
+          <el-form-item label="功能权限" prop="functions" style="margin-top: 20px;">
+                          <el-cascader
+                              ref="FunctionCascader"
+                              v-model="ruleForm.functions"
+                              :options="authority"
+                              :props="{multiple:true,value:'id',label:'name' }"
+                              collapse-tags
+                              placeholder="请选择功能权限"
+                              clearable
+                              @change="downloadChange"
+                              style="width:100%"></el-cascader>
+                              <el-button @click="btnCody">复制</el-button>
+          </el-form-item>
+          <!-- <el-form-item label="创建时间" prop="createTime">
+              <el-date-picker
+                v-model="ruleForm.createTime"
+                type="date"
+                placeholder="选择日期"
+                format="yyyy-MM-dd"
+                disabled
+                style="width: 100%;">
+              </el-date-picker>
+          </el-form-item>           -->
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="ruleForm.remark" placeholder="请输入备注" type="textarea" maxlength="100"
+                      show-word-limit></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="close">取 消</el-button>
+        <el-button type="primary" @click="submit" :loading="btnLoading">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+
+  export default {
+  data() {
+      return {
+        total:0,
+        tenantList: [],
+        tableData: [],
+        authority: [],//权限功能面板数据
+        ruleForm: {},//新增、编辑数据
+        queryParams: {
+          pageSize: 10,
+          page: 1,
+          likeName:'',
+        },
+        visible: false,
+        title:'',
+        loading:false,
+        btnLoading: false,
+        rules: {
+          tenantVipName: [{ required: true, message: '请输入会员类型/名称', trigger: 'blur' },],
+          functions: [{ required: true, message: '请选择功能权限', trigger: 'change' },],
+        },
+        tenant: '',
+        isMemberType: false,
+      }
+  },
+  computed: {
+    userinfo() {
+      return this.$store.state.admin.userinfo
+    },
+  },
+  mounted() {
+    this.getFunction()
+    this.getList()
+  },
+  methods: {
+    // 表格数据
+    getList() { 
+      this.loading = true
+      this.$api.queryTenantVipType(this.queryParams).then(res => {
+        if (res.code == 200) {
+          this.tableData = res.data.list
+          this.total = res.data.totalCount
+          this.loading = false
+        }
+      })
+    },
+    // 复制
+    btnCody(){},
+    //排序
+    sortMethod({ column, prop, order }) {
+      console.log(column, prop, order);
+    },
+    // 新增类别
+    handleAdd() {
+      this.title = '新增会员类型功能权限'
+      this.ruleForm.createPersonName = this.userinfo.name
+      this.visible = true
+
+    },
+    // 表格编辑
+    handleEdit(row) {
+      this.title='编辑会员类型功能权限'
+      this.visible = true
+      this.isMemberType = true
+      let rows=JSON.parse(JSON.stringify(row))
+      this.ruleForm=rows
+     
+    },
+    handleDelete(id) {
+       this.$api.deleteTenantVipType({id:id}).then(res => {
+        if (res.code == 200) {
+          this.$confirm('此操作将删除该会员类型,不可恢复, 是否继续?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            this.$message.success('删除成功!');
+            this.getList()
+          }).catch(() => {
+            this.$message.info('已取消删除');          
+          });
+        }
+      })
+    },
+    // 表格分页
+    handleCurrentChange(val) { 
+      this.queryParams.page = val;
+      this.getList();
+    },
+    // 新增、编辑弹窗功能权限选择
+    downloadChange() { },
+    //权限功能 
+    getFunction(val) {
+      this.$api.getAllFunctionList({type:val}).then(response => {
+        this.authority = []
+        this.authority = response.data
+      }).catch(error => {
+        this.loading = true
+      })
+    },
+    // 新增、编辑弹窗关闭
+    close() { 
+      this.visible = false
+      this.ruleForm={}
+    },
+    // 新增、编辑弹窗确定
+    submit() { 
+      console.log(this.ruleForm,this.userinfo);
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          this.btnLoading=true
+          if (this.ruleForm.hasOwnProperty('functions')) {
+            var functionModifyPaths=[]
+            this.ruleForm.functions.forEach(item => {
+              let a=item.join(',')
+              functionModifyPaths.push(a)
+            })
+            this.ruleForm.functionModifyPaths=functionModifyPaths
+          }
+          this.ruleForm.createPersonId = this.userinfo.id
+          console.log(this.ruleForm);
+          if (this.ruleForm.id) {
+            this.$api.updateNewTenantVipType(this.ruleForm).then(res => {
+              // console.log(11);
+              if (res.code==200) {
+                this.$message.success("更新会员功能权限成功")
+                this.btnLoading=false
+                this.getList()
+                this.close()
+              }
+            })
+          } else {
+            this.$api.addNewTenantVipType(this.ruleForm).then(res => {
+              // console.log(11);
+              if (res.code==200) {
+              this.$message.success("新增会员功能权限成功")
+                this.btnLoading=false
+                this.getList()
+                this.close()
+              }
+            })
+          }
+        }
+      })
+    },
+    // 租户/租户类别查询
+    handleSelect(item) { 
+      this.tenant=item
+    },
+    querySearch(queryString, cb){},
+    
+  },
+    
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>