Browse Source

【新增】子账号

howie 3 years ago
parent
commit
78830a2b42

+ 225 - 209
src/api/setting.js

@@ -1,469 +1,485 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 获取个人信息
 export function getUserInfo(params) {
   return request({
-    url: '/admin/user/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 修改密码
 export function changePassword(params) {
   return request({
-    url: '/admin/user/password/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/password/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取账户列表
 export function getAccountList(params) {
   return request({
-    url: '/admin/user/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取角色列表
 export function getRoleList(params) {
   return request({
-    url: '/admin/role/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/role/list",
+    method: "get",
+    params,
+  });
 }
 
 // 重置密码
 export function resetPassword(params) {
   return request({
-    url: '/admin/user/password/reset',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/password/reset",
+    method: "post",
+    params,
+  });
 }
 
 // 更改账户状态
 export function changeAccountStatus(params) {
   return request({
-    url: '/admin/user/status/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/status/update",
+    method: "post",
+    params,
+  });
 }
 
 // 新增账户
 export function addAccount(params) {
   return request({
-    url: '/admin/user/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/user/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑账户
 export function editAccount(params) {
   return request({
-    url: '/admin/user/user/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/user/user/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取账户详情
 export function getAccountDetail(params) {
   return request({
-    url: '/admin/user/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取字段列表
 export function getFieldList(params) {
   return request({
-    url: '/sys/dict/list/page',
-    method: 'get',
-    params
-  })
+    url: "/sys/dict/list/page",
+    method: "get",
+    params,
+  });
 }
 
 // 更改字段状态
 export function changeFieldStatus(params) {
   return request({
-    url: '/sys/dict/status/update',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/status/update",
+    method: "post",
+    params,
+  });
 }
 
 // 删除字段
 export function deleteField(params) {
   return request({
-    url: '/sys/dict/delete',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 新增字段
 export function addField(params) {
   return request({
-    url: '/sys/dict/add',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/add",
+    method: "post",
+    params,
+  });
 }
 
 // 编辑字段
 export function editField(params) {
   return request({
-    url: '/sys/dict/update',
-    method: 'post',
-    params
-  })
+    url: "/sys/dict/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取字段详情
 export function getFieldDetail(params) {
   return request({
-    url: '/sys/dict/detail',
-    method: 'get',
-    params
-  })
+    url: "/sys/dict/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取操作日志列表
 export function getOplogList(params) {
   return request({
-    url: '/admin/operation/log/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/operation/log/list",
+    method: "get",
+    params,
+  });
 }
 
 // 检查工程机帐号是否有效
 export function checkEngineAccount() {
   return request({
-    url: '/admin/user/engin/checkuser',
-    method: 'post'
-  })
+    url: "/admin/user/engin/checkuser",
+    method: "post",
+  });
 }
 
 // 绑定工程机帐号
 export function bindEngineAccount(params) {
   return request({
-    url: '/admin/user/engin/bind',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/engin/bind",
+    method: "post",
+    params,
+  });
 }
 
 // 删除工程机帐号
 export function delEngineAccount(params) {
   return request({
-    url: '/admin/user/engin/account/del',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/engin/account/del",
+    method: "post",
+    params,
+  });
 }
 
 // 更改轮播图状态
 export function changeBannerStatus(params) {
   return request({
-    url: '/carouselMap/state/update',
-    method: 'post',
-    params
-  })
+    url: "/carouselMap/state/update",
+    method: "post",
+    params,
+  });
 }
 
 // 删除轮播图
 export function deleteBanner(params) {
   return request({
-    url: '/carouselMap/delete',
-    method: 'post',
-    params
-  })
+    url: "/carouselMap/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 新增轮播图
 export function addBanner(params) {
   return request({
-    url: '/carouselMap/add',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑轮播图
 export function editBanner(params) {
   return request({
-    url: '/carouselMap/update',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取轮播图详情
 export function getBannerDetail(params) {
   return request({
-    url: '/carouselMap/detail',
-    method: 'get',
-    params
-  })
+    url: "/carouselMap/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 新增角色
 export function addRole(params) {
   return request({
-    url: '/admin/role/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/role/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑角色
 export function editRole(params) {
   return request({
-    url: '/admin/role/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/role/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除角色
 export function deleteRole(params) {
   return request({
-    url: '/admin/role/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/role/delete",
+    method: "post",
+    params,
+  });
 }
 
-
 // 获取角色详情
 export function getRoleDetail(params) {
   return request({
-    url: '/admin/role/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/role/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取权限列表
 export function getMenuRoleList(params) {
   return request({
-    url: '/admin/user/module/all',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/all",
+    method: "get",
+    params,
+  });
 }
 
 // 获取已选权限数组
 export function getMenuRoleIds(params) {
   return request({
-    url: '/admin/user/module/id/checked',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/id/checked",
+    method: "get",
+    params,
+  });
 }
 
 // 提交设置权限
 export function setMenuRole(params) {
   return request({
-    url: '/admin/user/module/grant',
-    method: 'post',
-    params
-  })
+    url: "/admin/user/module/grant",
+    method: "post",
+    params,
+  });
 }
 
 // 获取商品列表
 export function getGoodsList(params) {
   return request({
-    url: '/carouselMap/list/goods',
-    method: 'get',
-    params
-  })
+    url: "/carouselMap/list/goods",
+    method: "get",
+    params,
+  });
 }
 
 // 批量删除轮播图
 export function batchDeleteBanner(params) {
   return request({
-    url: '/carouselMap/batch/delete',
-    method: 'post',
-    data: params
-  })
+    url: "/carouselMap/batch/delete",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取通告
 export function getNotice(params) {
   return request({
-    url: '/notice/mini/select',
-    method: 'get',
-    params
-  })
+    url: "/notice/mini/select",
+    method: "get",
+    params,
+  });
 }
 
 // 新增通告
 export function addNotice(params) {
   return request({
-    url: '/notice/mini/add',
-    method: 'post',
-    data: params
-  })
+    url: "/notice/mini/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑通告
 export function editNotice(params) {
   return request({
-    url: '/notice/mini/update',
-    method: 'post',
-    data: params
-  })
+    url: "/notice/mini/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取菜单列表
 export function getMenuList(params) {
   return request({
-    url: '/admin/user/module/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/module/list",
+    method: "get",
+    params,
+  });
 }
 
 // 添加菜单
 export function addMenu(params) {
   return request({
-    url: '/admin/module/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/module/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑菜单
 export function editMenu(params) {
   return request({
-    url: '/admin/module/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/module/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除菜单
 export function deleteMenu(params) {
   return request({
-    url: '/admin/module/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/module/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 获取菜单详情
 export function getMenuDetail(params) {
   return request({
-    url: '/admin/module/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/module/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取商户列表
 export function getMerchantList(params) {
   return request({
-    url: '/admin/user/mch/list',
-    method: 'get',
-    params
-  })
+    url: "/admin/user/mch/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取经销商列表
 export function getDealerList(params) {
   return request({
-    url: '/customer/list',
-    method: 'get',
-    params
-  })
+    url: "/customer/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取用户协议
 export function getAgreement(params) {
   return request({
-    url: '/admin/company/other/getOne',
-    method: 'get',
-    params
-  })
+    url: "/admin/company/other/getOne",
+    method: "get",
+    params,
+  });
 }
 
 // 更新用户协议
 export function editAgreement(params) {
   return request({
-    url: '/admin/company/other/update',
-    method: 'post',
-    params
-  })
+    url: "/admin/company/other/update",
+    method: "post",
+    params,
+  });
 }
 
 // 获取部门列表
 export function getDepartmentList(params) {
   return request({
-    url: '/admin/websit/tree',
-    method: 'get',
-    params
-  })
+    url: "/admin/websit/tree",
+    method: "get",
+    params,
+  });
 }
 
 // 添加部门
 export function addDepartment(params) {
   return request({
-    url: '/admin/websit/add',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/websit/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 修改部门
 export function editDepartment(params) {
   return request({
-    url: '/admin/websit/update',
-    method: 'post',
-    data: params
-  })
+    url: "/admin/websit/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 删除部门
 export function deleteDepartment(params) {
   return request({
-    url: '/admin/websit/delete',
-    method: 'post',
-    params
-  })
+    url: "/admin/websit/delete",
+    method: "post",
+    params,
+  });
 }
 
 // 获取部门详情
 export function getDepartmentDetail(params) {
   return request({
-    url: '/admin/websit/detail',
-    method: 'get',
-    params
-  })
+    url: "/admin/websit/detail",
+    method: "get",
+    params,
+  });
 }
 
 // 获取接口状态列表
 export function getApiList(params) {
   return request({
-    url: '/common/interface/list',
-    method: 'get',
-    params
-  })
+    url: "/common/interface/list",
+    method: "get",
+    params,
+  });
 }
 
 // 仓库仓位对应关系列表
 export function getStockListStock(params) {
   return request({
-    url: '/stock/listStock',
-    method: 'get',
-    params
-  })
+    url: "/stock/listStock",
+    method: "get",
+    params,
+  });
+}
+
+// 新建经销商子账号
+export function addSubAccount(params) {
+  return request({
+    url: "/admin/user/user/child/add",
+    method: "post",
+    params,
+  });
+}
+// 新建经销商子账号
+export function editSubAccount(params) {
+  return request({
+    url: "/admin/user/user/child/update",
+    method: "post",
+    params,
+  });
 }

+ 0 - 1
src/views/basic_data/material/modify_list.vue

@@ -285,7 +285,6 @@
               <template slot-scope="scope">
                 <template v-for="(item, index) in scope.row.wallets">
                      <template v-if="item.type === 'REBATE'">
-
                         <el-tag
                   type="success"
                   style="margin: 0 10px"

+ 156 - 1
src/views/engin_deposit/components/deposit-apply-surrender.vue

@@ -222,6 +222,117 @@
               <imageUpload :file-list="fileList" :multiple="true" :start-restricting="true" :restrict-filename="restrictFilename" />
             </el-form-item>
           </el-col>
+          <el-col :xs="24" :sm="12" :lg="24">
+            <!-- 列表 -->
+            <div class="mymain-container">
+              <div class="table">
+                <el-table
+                  v-loading="listLoading"
+                  :data="details.dataList"
+                  element-loading-text="Loading"
+                  border
+                  fit
+                  highlight-current-row
+                  stripe
+                >
+                  <el-table-column
+                    align="center"
+                    label="资料描述"
+                    prop="dataDescribe"
+                    min-width="160"
+                    show-overflow-tooltip
+                  />
+                  <el-table-column
+                    align="center"
+                    label="原文件名"
+                    prop="fileName"
+                    min-width="160"
+                    show-overflow-tooltip
+                  />
+                  <el-table-column
+                    align="center"
+                    label="缩略图"
+                    prop="fileUrl"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      <el-image
+                        v-if="checkFileType(scope.row.fileUrl) == 'image'"
+                        ref="img"
+                        :src="imageURL + scope.row.fileUrl"
+                        style="width: 120px; height: 120px"
+                        fit="cover"
+                        :preview-src-list="[imageURL + scope.row.fileUrl]"
+                      />
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'word'"
+                        class="file"
+                        src="@/assets/common/word.png"
+                      >
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'excel'"
+                        class="file"
+                        src="@/assets/common/excel.png"
+                      >
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'ppt'"
+                        class="file"
+                        src="@/assets/common/ppt.png"
+                      >
+
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'pdf'"
+                        class="file"
+                        style="cursor: pointer;"
+                        src="@/assets/common/pdf.png"
+                        @click="openPdf(scope.row.fileUrl)"
+                      >
+
+                      <img
+                        v-if="checkFileType(scope.row.fileUrl) == 'file'"
+                        class="file aaa"
+                        src="@/assets/common/zip.jpeg"
+                      >
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    align="center"
+                    label="下载文件名称"
+                    prop="fileName"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      {{ "资料_" + scope.row.fileName }}
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    align="center"
+                    label="操作"
+                    min-width="160"
+                    show-overflow-tooltip
+                  >
+                    <template slot-scope="scope">
+                      <el-button
+                        type="text"
+                        class="textColor"
+                        @click="downLoadFn(scope.row.fileUrl,scope.row.fileName)"
+                      >下载</el-button>
+                      <!--                <el-button-->
+                      <!--                  v-if="checkFileType(scope.row.fileUrl) == 'pdf'"-->
+                      <!--                  type="text"-->
+                      <!--                  class="textColor"-->
+                      <!--                  @click="openPdf(scope.row.fileUrl)"-->
+                      <!--                >-->
+                      <!--                  查看-->
+                      <!--                </el-button>-->
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </div>
+            </div>
+          </el-col>
           <el-col :xs="24" :sm="12" :lg="6">
             <el-form-item label="申请人" prop="submitBy">
               <el-input
@@ -279,6 +390,9 @@
 import { applyDeposit, geDetail } from '@/api/engin_deposit.js'
 
 import imageUpload from '@/components/Common/image-upload.vue'
+import { downloadFiles, downloadPdf } from '@/utils/util'
+
+import { getFileUrl } from '@/api/common'
 
 export default {
   components: {
@@ -286,6 +400,7 @@ export default {
   },
   data() {
     return {
+      isDis: true,
       listLoading: false,
       baseURL: process.env.VUE_APP_BASE_API,
       fileList: [],
@@ -331,7 +446,47 @@ export default {
     },
     handleReset() {
       this.$refs.form.resetFields()
-    }
+    },
+    // 批量下载
+    async batchDownloadFn() {
+      downloadFiles('/deposit-manage/downZip', { parentId: this.$parent.depositManageId })
+    },
+    // 下载
+    downLoadFn(v, fileName) {
+      if (this.checkFileType(v) === 'pdf') {
+        downloadPdf(this.$imageUrl + v, fileName)
+        return
+      }
+      getFileUrl({ key: v }).then((res) => {
+        window.open(res.data)
+      })
+    },
+    openPdf(pdfUrl) {
+      window.open(this.$imageUrl + pdfUrl)
+    },
+    // 检查文件类型
+    checkFileType(url) {
+      if (!url) return ''
+      const fileSuffix = url.substring(url.lastIndexOf('.') + 1)
+
+      if (['jpg', 'jpeg', 'png'].includes(fileSuffix)) {
+        return 'image'
+      } else if (['doc', 'docx', 'dot', 'wps', 'wpt'].includes(fileSuffix)) {
+        return 'word'
+      } else if (['xls', 'xlsx', 'xlt', 'et', 'ett'].includes(fileSuffix)) {
+        return 'excel'
+      } else if (
+        ['ppt', 'pptx', 'dps', 'dpt', 'pot', 'pps'].includes(fileSuffix)
+      ) {
+        return 'ppt'
+      } else if (['pdf'].includes(fileSuffix)) {
+        return 'pdf'
+      } else if (['zip', 'rar', 'gz', 'apk'].includes(fileSuffix)) {
+        return 'file'
+      } else {
+        return ''
+      }
+    },
   }
 }
 </script>

+ 2 - 2
src/views/engin_deposit/components/deposit_list-detail.vue

@@ -332,11 +332,11 @@
         <el-row :gutter="0">
           <el-col :xs="12" :sm="12" :lg="12" class="item">
             <div class="label">申请人</div>
-            <div class="value">{{ details.submitName }}</div>
+            <div class="value">{{ details.createBy }}</div>
           </el-col>
           <el-col :xs="12" :sm="12" :lg="12" class="item">
             <div class="label">申请日期</div>
-            <div class="value">{{ details.submitTime }}</div>
+            <div class="value">{{ details.createTime }}</div>
           </el-col>
           <el-col :xs="24" :sm="24" :lg="24" class="item">
             <div class="label">申请退押金</div>

+ 386 - 0
src/views/setting/sub_account.vue

@@ -0,0 +1,386 @@
+<template>
+  <div class="app-container">
+    <div class="setting_title">子账号</div>
+    <el-divider />
+
+    <div class="mymain-container">
+      <div class="btn-group clearfix">
+        <div class="fl">
+          <el-button v-if="checkBtnRole('add')" size="small" type="primary" icon="el-icon-plus" @click="addOrEdit('add')">新增账号</el-button>
+        </div>
+        <div class="fr">
+          <ImportButton :im-url="'stock/importToll'" @importSuccess="getList" />
+        </div>
+      </div>
+
+      <div class="table">
+        <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
+          <el-table-column align="center" label="序号" type="index" width="50" />
+          <el-table-column align="center" label="账号" prop="userName" />
+          <el-table-column align="center" label="创建时间" prop="createTime" />
+          <el-table-column align="center" label="最后登录时间" prop="lastLoginTime" />
+          <el-table-column align="center" label="操作" width="180">
+            <template slot-scope="scope">
+              <el-button type="text" @click="addOrEdit('edit',scope.row)">编辑</el-button>
+              <el-button v-if="checkBtnRole('detail')" type="text" @click="setMenuRole(scope.row.adminUserId,'role')">设置权限</el-button>
+
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <div class="pagination clearfix">
+        <div class="fr">
+          <el-pagination
+            :current-page="currentPage"
+            :page-sizes="[10, 20, 30, 50]"
+            :page-size="10"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="listTotal"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </div>
+    </div>
+
+    <!-- 设置权限 -->
+    <el-dialog title="设置权限" :visible.sync="roleFormVisible" :show-close="false" width="40%" :close-on-click-modal="false" custom-class="tree-dialog" top="50px">
+      <el-tree
+        ref="tree"
+        :data="menuRoleList"
+        show-checkbox
+        :check-strictly="true"
+        :default-expand-all="true"
+        :expand-on-click-node="false"
+        node-key="moduleId"
+        highlight-current
+        :props="defaultProps"
+      >
+        <span slot-scope="{ node, data }" class="custom-tree-node">
+          <span>{{ node.label }}</span>
+          <span v-if="data.type < 3">
+            <el-button type="text" size="mini" @click="() => quickSelection(data)">一键全选</el-button>
+            <el-button type="text" size="mini" style="color: #f56c6c" @click="() => quickCancel(data)">一键取消</el-button>
+          </span>
+        </span>
+      </el-tree>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="roleFormVisible = false">{{ editId != 1 ? '取 消':'关 闭' }}</el-button>
+        <el-button v-if="editId != 1" type="primary" @click="submitRoleForm('role')">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      width="45%"
+      :title="'add'===addFormType?'新增':'编辑'"
+      @close="cancelAddForm"
+    >
+      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
+        <el-form-item label="账号" prop="account">
+          <el-input v-model="ruleForm.account" type="text" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="密码" prop="password">
+          <el-input v-model="ruleForm.password" type="password" autocomplete="off" />
+        </el-form-item>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" style="float: left;" @click="setMenuRole">设置权限</el-button>
+        <el-button @click="cancelAddForm">取 消</el-button>
+        <el-button type="primary" @click="submitAddForm">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import {
+  addSubAccount,
+  deleteRole,
+  editRole,
+  editSubAccount,
+  getAccountList,
+  getMenuList,
+  getMenuRoleIds,
+  setMenuRole
+} from '@/api/setting'
+
+export default {
+  data() {
+    return {
+      imageURL: this.$imageUrl,
+      dataList: null, // 列表数据
+      listLoading: true, // 列表加载loading
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+
+      editId: null,
+      addFormType: 'add',
+      addFormVisible: false,
+      addForm: {
+        name: '' // 角色名
+      },
+      addFormRules: {
+        name: [
+          { required: true, message: '请输入角色名', trigger: 'blur' }
+        ]
+      },
+
+      roleFormVisible: false,
+
+      menuRoleList: [],
+      defaultProps: {
+        children: 'children',
+        label: 'moduleName'
+      },
+      dialogVisible: false,
+      ruleForm: {
+        account: '',
+        password: ''
+      },
+      rules: {
+        account: [
+          { required: true, message: '请输入账号', trigger: 'blur' }
+        ],
+        password: [
+          { required: true, message: '请输入密码', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'userid',
+      'name'
+    ])
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    // 查询按钮权限
+    checkBtnRole(value) {
+      // let btnRole = this.$route.meta.roles;
+      // if(!btnRole) {return true}
+      // let index = btnRole.indexOf(value);
+      // return index >= 0 ? true : false;
+      return true
+    },
+
+    getList() {
+      this.listLoading = true
+
+      const params = {
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        customerId: ''
+      }
+
+      getAccountList(params).then(res => {
+        this.dataList = res.data.records
+        this.listTotal = res.data.total
+        this.listLoading = false
+      })
+    },
+
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val
+      this.currentPage = 1
+      this.getList()
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val
+      this.getList()
+    },
+
+    // 操作 - 删除
+    handleDelete(id) {
+      deleteRole({ adminRoleId: id }).then(res => {
+        this.getList()
+        this.$successMsg()
+      })
+    },
+
+    // 新增编辑
+    addOrEdit(type, row) {
+      this.addFormType = type
+      this.dialogVisible = true
+      if (type === 'edit') {
+        this.$nextTick(() => {
+          this.ruleForm = {
+            account: row.userName,
+            password: row.password
+          }
+        })
+      }
+    },
+
+    // 取消 新增编辑
+    cancelAddForm() {
+      this.dialogVisible = false
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys([])
+      })
+      this.$refs.ruleForm.resetFields()
+    },
+
+    // 提交 新增编辑
+    submitAddForm() {
+      this.$refs.ruleForm.validate((valid) => {
+        const params = {
+          userName: this.ruleForm.account,
+          password: this.ruleForm.password,
+          adminModuleIds: this.$refs.tree ? this.$refs.tree.getCheckedKeys().join(',') : ''
+        }
+        if (valid) {
+          if (this.addFormType === 'edit') {
+            params.adminRoleId = this.editId
+            editSubAccount(params).then(res => {
+              this.cancelAddForm()
+              this.getList()
+              this.$successMsg('编辑成功')
+            })
+          } else {
+            addSubAccount(params).then(res => {
+              this.cancelAddForm()
+              this.getList()
+              this.$successMsg('新增成功')
+            })
+          }
+        }
+      })
+    },
+
+    // 设置权限 - 获取列表
+    setMenuRole(id, type) {
+      this.roleFormVisible = true
+      this.editId = id
+      getMenuList({ adminUserId: this.userid }).then(res => {
+        this.menuRoleList = res.data
+      })
+      if (type === 'role') {
+
+        getMenuRoleIds({ adminRoleId: id }).then(res => {
+          console.log(78888,res.data)
+          this.$refs.tree.setCheckedKeys(res.data)
+        })
+      }
+    },
+
+    // 设置权限 - 提交数据
+    submitRoleForm(type) {
+      if (type === 'role') {
+        const params = {
+          adminModuleIds: this.$refs.tree.getCheckedKeys().join(','),
+          adminRoleId: this.editId
+        }
+        setMenuRole(params).then(res => {
+          this.getList()
+          this.$successMsg()
+        })
+      }
+      this.roleFormVisible = false
+    },
+
+    // 一键全选
+    quickSelection(data) {
+      const nowChecked = this.$refs.tree.getCheckedKeys()
+      const thisId = data.moduleId
+      let childId = []
+      if (data.children.length) {
+        childId = this.familyTree(data.children)
+      }
+
+      const setChecked = nowChecked.concat([thisId]).concat(childId)
+
+      this.$refs.tree.setCheckedKeys(setChecked)
+    },
+
+    // 一键取消
+    quickCancel(data) {
+      const nowChecked = this.$refs.tree.getCheckedKeys()
+      const thisId = data.moduleId
+      let childId = []
+      if (data.children.length) {
+        childId = this.familyTree(data.children)
+      }
+
+      const setChecked = nowChecked
+      if (setChecked.indexOf(thisId) >= 0) {
+        setChecked.splice(setChecked.indexOf(thisId), 1)
+      }
+
+      if (childId.length) {
+        for (var i = 0; i < childId.length; i++) {
+          if (setChecked.indexOf(childId[i]) >= 0) {
+            setChecked.splice(setChecked.indexOf(childId[i]), 1)
+          }
+        }
+      }
+
+      this.$refs.tree.setCheckedKeys(setChecked)
+    },
+
+    // 递归子id
+    familyTree(arr) {
+      var temp = []
+      var forFn = function(list) {
+        for (var i = 0; i < list.length; i++) {
+          var item = list[i]
+          if (item.children) {
+            temp.push(item.moduleId)
+            forFn(item.children)
+          }
+        }
+      }
+      forFn(arr)
+      return temp
+    },
+
+    changeStatus(id, status) {
+      editRole({
+        adminRoleId: id,
+        visitSysStatus: status
+      }).then(res => {
+        this.getList()
+        this.$successMsg('编辑成功')
+      })
+    }
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .tree-dialog {
+  .el-dialog__body {
+    padding: 20px;
+    .el-tree {
+      max-height: calc(100vh - 140px - 54px - 70px);
+      overflow-y: scroll;
+      padding: 0 30px;
+      >.el-tree-node {
+        padding: 15px 0;
+        border: 1px dashed #ddd;
+        margin-bottom: 15px;
+        border-radius: 10px;
+      }
+    }
+  }
+}
+::v-deep .custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+</style>