浏览代码

薇旖美认证修改

zhengjinyi 2 天之前
父节点
当前提交
b62ace3277

+ 253 - 235
src/api/auth.js

@@ -1,235 +1,253 @@
-import request from '@/utils/request'
-
-// Excel表格导入
-export function authImportExcel(data) {
-  return request({
-    url: '/auth/import/excel',
-    method: 'post',
-    data,
-    headers: { 'Content-Type': 'multipart/form-data;charset=UTF-8' }
-  })
-}
-
-// Excel表格导出
-export function authExportExcel(params) {
-  return request({
-    url: '/auth/export/excel',
-    method: 'get',
-    params
-  })
-}
-
-// 授权列表
-export function fecthAuthList(params) {
-  return request({
-    url: '/auth/list',
-    method: 'get',
-    params
-  })
-}
-
-// 授权列表
-export function fecthAuthListAll(params) {
-  return request({
-    url: '/auth/listAll',
-    method: 'get',
-    params
-  })
-}
-
-// 添加品牌授权
-export function saveBrandAuth(data) {
-  return request({
-    url: '/auth/save',
-    method: 'post',
-    data
-  })
-}
-
-// 获取授权信息
-export function getAuthFormData(params) {
-  return request({
-    url: '/auth/form/data',
-    method: 'get',
-    params
-  })
-}
-
-// 修改授权状态
-export function changeAuthStatus(data) {
-  return request({
-    url: '/auth/update/status',
-    method: 'post',
-    data
-  })
-}
-
-// 删除授权
-export function removeAuth(data) {
-  return request({
-    url: '/auth/delete',
-    method: 'post',
-    data
-  })
-}
-
-// 审核状态
-export function auditAuth(data) {
-  return request({
-    url: '/auth/audit',
-    method: 'post',
-    data
-  })
-}
-
-// 审核-已查看
-export function auditAuthCheck(id) {
-  return request({
-    url: `/auth/check/${id}`,
-    method: 'post'
-  })
-}
-
-// 获取用户反馈信息列表
-export function getFeedbackList(params) {
-  return request({
-    url: '/shop/feedback/list',
-    method: 'get',
-    params
-  })
-}
-
-// 获取反馈信息
-export function getFeedbackDetail(params) {
-  return request({
-    url: '/shop/feedback/form/data',
-    method: 'get',
-    params
-  })
-}
-
-// 处理反馈信息
-export function handleFeedback(data) {
-  return request({
-    url: '/shop/feedback/handle',
-    method: 'post',
-    data
-  })
-}
-
-// 一键下载授权牌 / 二维码
-export function exportAd(params) {
-  return request({
-    url: '/download/shop/image',
-    method: 'get',
-    params
-  })
-}
-
-// 添加机构用户
-export function createClubUser(data) {
-  return request({
-    url: '/club/user/save',
-    method: 'post',
-    data
-  })
-}
-
-// 删除机构用户
-export function removeClubUser(data) {
-  return request({
-    url: '/club/user/delete',
-    method: 'post',
-    data
-  })
-}
-
-// 机构用户列表
-export function getAuthUserList(params) {
-  return request({
-    url: '/club/user/list',
-    method: 'get',
-    params
-  })
-}
-
-// 机构用户状态修改
-export function authUserStatusChange(data) {
-  return request({
-    url: '/club/user/status/update',
-    method: 'post',
-    data
-  })
-}
-
-// 机构生成邀请码
-export function makeGenerate(data) {
-  return request({
-    url: '/club/user/code/generate',
-    method: 'post',
-    data
-  })
-}
-
-// 更新邀请码
-export function updateGenerate(data) {
-  return request({
-    url: '/club/user/code/update',
-    method: 'post',
-    data
-  })
-}
-
-// 解绑邀请码
-export function unbindGenerate(data) {
-  return request({
-    url: '/club/user/code/unbind',
-    method: 'post',
-    data
-  })
-}
-
-// 重置密码
-export function resetClubUserPassword(data) {
-  return request({
-    url: '/club/user/reset/password',
-    method: 'post',
-    data
-  })
-}
-
-// 供应商用户导出
-export function exportClubUser(data) {
-  return request({
-    url: '/download/Clubuser/excel',
-    method: 'get',
-    data
-  })
-}
-
-// 设置明星机构
-export function setStarClub(data) {
-  return request({
-    url: '/auth/star',
-    method: 'post',
-    data
-  })
-}
-
-// 获取可绑定机构列表
-export function fetchClubBindList(params) {
-  return request({
-    url: '/auth/club/bind/list',
-    method: 'get',
-    params
-  })
-}
-
-// 更换绑定机构
-export function clubUserBindSave(data) {
-  return request({
-    url: '/club/user/bind/save',
-    method: 'post',
-    data
-  })
-}
+import request from '@/utils/request'
+
+// Excel表格导入
+export function authImportExcel(data) {
+  return request({
+    url: '/auth/import/excel',
+    method: 'post',
+    data,
+    headers: { 'Content-Type': 'multipart/form-data;charset=UTF-8' }
+  })
+}
+
+// Excel表格导出
+export function authExportExcel(params) {
+  return request({
+    url: '/auth/export/excel',
+    method: 'get',
+    params
+  })
+}
+
+// 授权列表
+export function fecthAuthList(params) {
+  return request({
+    url: '/auth/list',
+    method: 'get',
+    params
+  })
+}
+
+// 授权列表
+export function fecthAuthListAll(params) {
+  return request({
+    url: '/auth/listAll',
+    method: 'get',
+    params
+  })
+}
+
+// 获取采美机构列表
+export function fecthAuthCmClubList(params) {
+  return request({
+    url: '/auth/cmClub/list',
+    method: 'get',
+    params
+  })
+}
+
+// 添加导入采美机构
+export function saveCmClubAuth(data) {
+  return request({
+    url: '/auth/club/saves',
+    method: 'post',
+    data
+  })
+}
+
+// 添加品牌授权
+export function saveBrandAuth(data) {
+  return request({
+    url: '/auth/save',
+    method: 'post',
+    data
+  })
+}
+
+// 获取授权信息
+export function getAuthFormData(params) {
+  return request({
+    url: '/auth/form/data',
+    method: 'get',
+    params
+  })
+}
+
+// 修改授权状态
+export function changeAuthStatus(data) {
+  return request({
+    url: '/auth/update/status',
+    method: 'post',
+    data
+  })
+}
+
+// 删除授权
+export function removeAuth(data) {
+  return request({
+    url: '/auth/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 审核状态
+export function auditAuth(data) {
+  return request({
+    url: '/auth/audit',
+    method: 'post',
+    data
+  })
+}
+
+// 审核-已查看
+export function auditAuthCheck(id) {
+  return request({
+    url: `/auth/check/${id}`,
+    method: 'post'
+  })
+}
+
+// 获取用户反馈信息列表
+export function getFeedbackList(params) {
+  return request({
+    url: '/shop/feedback/list',
+    method: 'get',
+    params
+  })
+}
+
+// 获取反馈信息
+export function getFeedbackDetail(params) {
+  return request({
+    url: '/shop/feedback/form/data',
+    method: 'get',
+    params
+  })
+}
+
+// 处理反馈信息
+export function handleFeedback(data) {
+  return request({
+    url: '/shop/feedback/handle',
+    method: 'post',
+    data
+  })
+}
+
+// 一键下载授权牌 / 二维码
+export function exportAd(params) {
+  return request({
+    url: '/download/shop/image',
+    method: 'get',
+    params
+  })
+}
+
+// 添加机构用户
+export function createClubUser(data) {
+  return request({
+    url: '/club/user/save',
+    method: 'post',
+    data
+  })
+}
+
+// 删除机构用户
+export function removeClubUser(data) {
+  return request({
+    url: '/club/user/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 机构用户列表
+export function getAuthUserList(params) {
+  return request({
+    url: '/club/user/list',
+    method: 'get',
+    params
+  })
+}
+
+// 机构用户状态修改
+export function authUserStatusChange(data) {
+  return request({
+    url: '/club/user/status/update',
+    method: 'post',
+    data
+  })
+}
+
+// 机构生成邀请码
+export function makeGenerate(data) {
+  return request({
+    url: '/club/user/code/generate',
+    method: 'post',
+    data
+  })
+}
+
+// 更新邀请码
+export function updateGenerate(data) {
+  return request({
+    url: '/club/user/code/update',
+    method: 'post',
+    data
+  })
+}
+
+// 解绑邀请码
+export function unbindGenerate(data) {
+  return request({
+    url: '/club/user/code/unbind',
+    method: 'post',
+    data
+  })
+}
+
+// 重置密码
+export function resetClubUserPassword(data) {
+  return request({
+    url: '/club/user/reset/password',
+    method: 'post',
+    data
+  })
+}
+
+// 供应商用户导出
+export function exportClubUser(data) {
+  return request({
+    url: '/download/Clubuser/excel',
+    method: 'get',
+    data
+  })
+}
+
+// 设置明星机构
+export function setStarClub(data) {
+  return request({
+    url: '/auth/star',
+    method: 'post',
+    data
+  })
+}
+
+// 获取可绑定机构列表
+export function fetchClubBindList(params) {
+  return request({
+    url: '/auth/club/bind/list',
+    method: 'get',
+    params
+  })
+}
+
+// 更换绑定机构
+export function clubUserBindSave(data) {
+  return request({
+    url: '/club/user/bind/save',
+    method: 'post',
+    data
+  })
+}

+ 2 - 3
src/views/normal/club/cate/index.vue

@@ -39,8 +39,7 @@
       header-row-class-name="tableHeader"
     >
       <el-table-column label="序号" :index="indexMethod" type="index" align="center" width="80" />
-      <el-table-column label="设备名称" align="center" prop="name" />
-
+      <el-table-column :label=" authUserId === 130 ? '产品名称' : '设备名称'" align="center" prop="name" />
       <el-table-column label="审核状态" width="220px" align="center">
         <template slot-scope="{ row }">
           <audit-status :status="row.auditStatus" :reason="row.invalidReason" />
@@ -75,7 +74,7 @@
       <!-- <el-table-column v-if="false" label="创建人" width="180px" align="center" prop="createBy" /> -->
       <el-table-column label="操作" align="center" width="240px" class-name="small-padding fixed-width">
         <template slot-scope="{ row }">
-          <permission-button type="primary" size="mini" @click="handleQrcode(row)"> 设备二维码 </permission-button>
+          <permission-button v-if="authUserId !== 130" type="primary" size="mini" @click="handleQrcode(row)"> 设备二维码 </permission-button>
           <permission-button type="primary" size="mini" @click="handleEdit(row)"> 编辑 </permission-button>
           <permission-button type="danger" size="mini" @click="handleRemove(row)"> 删除 </permission-button>
         </template>

+ 141 - 0
src/views/normal/club/components/ClubDialog.vue

@@ -0,0 +1,141 @@
+<template>
+  <el-dialog title="导入采美机构" :visible.sync="visible" width="900px" :close-on-click-modal="false" :show-close="false">
+    <div class="filter-container">
+      <div class="filter-control">
+        <span>机构名称:</span>
+        <el-input
+          v-model="listQuery.clubName"
+          placeholder="机构名称"
+          clearable
+          style="width: 160px"
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>手机号:</span>
+        <el-input
+          v-model="listQuery.mobile"
+          placeholder="手机号"
+          clearable
+          style="width: 160px"
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <el-button type="primary" @click="getList"> 查询 </el-button>
+      </div>
+    </div>
+    <el-table
+      ref="table"
+      v-loading="isLoading"
+      :data="list"
+      height="400px"
+      border
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="50" align="center" />
+      <el-table-column label="机构名称" prop="name" align="center" />
+      <el-table-column label="联系人" prop="linkMan" align="center" />
+      <el-table-column label="手机号" prop="contractMobile" align="center" />
+    </el-table>
+    <!-- 页码 -->
+    <pagination
+      :total="total"
+      :page-sizes="[10]"
+      :page-size="10"
+      :page.sync="listQuery.pageNum"
+      :limit.sync="listQuery.pageSize"
+      @pagination="fecthAuthCmClubList"
+    />
+    <div slot="footer">
+      <el-button @click="handleCanle"> 取 消 </el-button>
+      <el-button type="primary" :disabled="disabled" @click="handleConfirm"> 确 定 </el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { fecthAuthCmClubList } from '@/api/auth'
+
+export default {
+  name: 'GoodsDialog',
+  data() {
+    return {
+      visible: true,
+      listQuery: {
+        clubName: '',
+        mobile: '',
+        pageNum: 1,
+        pageSize: 10
+      },
+      list: [],
+      total: 0,
+      clubadio: null,
+      isLoading: true
+    }
+  },
+  computed: {
+    disabled() {
+      return this.clubadio === null
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    // 获取机构列表
+    async getList() {
+      this.list = []
+      this.listQuery.pageNum = 1
+      this.fecthAuthCmClubList()
+    },
+    // 获取服务商采美机构列表
+    async fecthAuthCmClubList() {
+      try {
+        const res = await fecthAuthCmClubList(this.listQuery)
+        this.list = res.data.list
+        this.total = res.data.total
+        this.isLoading = false
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    // 选择服务商
+    handleSelectionChange(row) {
+      this.clubadio = row
+      console.log('row', row)
+    },
+    // 确认选择服务商
+    handleConfirm() {
+      this.$emit('confirm', this.clubadio)
+    },
+    handleCanle() {
+      // 取消弹窗
+      this.$emit('cancel')
+    },
+    // 已选择的禁用勾选框
+    selectable(row) {
+      if (row.flag) {
+        return true
+      } else {
+        return false
+      }
+    },
+    checkedInput(event, type) {
+      let pattern = ''
+      switch (type) {
+        case 1:
+          pattern = /[^\d]/g
+          break
+        case 2:
+          pattern = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
+          break
+      }
+      return event.replace(pattern, '')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped></style>

+ 5 - 3
src/views/normal/club/device/edit.vue

@@ -14,7 +14,7 @@
               />
             </el-select>
           </el-form-item>
-          <el-form-item label="设备SN码:" prop="snCode">
+          <el-form-item v-if="authUserId !== 24" label="设备SN码:" prop="snCode">
             <el-input v-model="formData.snCode" placeholder="设备SN码" />
           </el-form-item>
           <el-form-item label="购买渠道:" prop="purchaseWay">
@@ -49,7 +49,7 @@
               </div>
               <div v-else>无</div>
             </template>
-            <template v-if="formData.certificateImageType === 2">
+            <template v-if="authUserId !== 24 && formData.certificateImageType === 2">
               <upload-image
                 tip="建议尺寸:150px * 112px"
                 :image-list="certificateImageList"
@@ -59,7 +59,7 @@
               />
             </template>
           </el-form-item>
-          <el-form-item v-if="authTempFlag && formData.certificateImageType === 1" label="授权牌logo:" prop="authImageLogo">
+          <el-form-item v-if="authUserId !== 24 && authTempFlag && formData.certificateImageType === 1" label="授权牌logo:" prop="authImageLogo">
             <div class="form-label-tip">授权牌logo(提示:授权牌logo与机构名称组合)</div>
             <div style="margin-top: 8px">
               <upload-image
@@ -89,6 +89,7 @@
 </template>
 
 <script>
+import { mapGetters } from 'vuex'
 import UploadImage from '@/components/UploadImage'
 import { fetchProductSelectList, getProductById, saveProduct } from '@/api/product'
 import { isSnCode } from '@/utils/validate'
@@ -147,6 +148,7 @@ export default {
     }
   },
   computed: {
+    ...mapGetters(['authUserId']),
     authTypeName() {
       return this.formData.authType === 1 ? '新设备认证' : '关联已认证设备'
     },

+ 11 - 10
src/views/normal/club/device/index.vue

@@ -2,10 +2,10 @@
   <div class="app-container">
     <div class="filter-container">
       <div class="filter-control">
-        <span>设备名称:</span>
-        <el-input v-model="listQuery.productName" placeholder="设备名称" @keyup.enter.native="handleFilter" />
+        <span>{{ authUserId === 24 ? '产品名称' : '设备名称' }}:</span>
+        <el-input v-model="listQuery.productName" placeholder="" @keyup.enter.native="handleFilter" />
       </div>
-      <div class="filter-control">
+      <div v-if="authUserId !== 24" class="filter-control">
         <span>设备SN码:</span>
         <el-input v-model="listQuery.snCode" placeholder="设备SN码" @keyup.enter.native="handleFilter" />
       </div>
@@ -32,8 +32,10 @@
         <permission-button
           type="primary"
           @click="navigationTo(`device-add?type=add&isAdd=true`)"
-        >添加新设备认证</permission-button>
-        <permission-button type="primary" @click="navigationTo(`device-bind`)">关联已认证设备</permission-button>
+        > {{ authUserId === 24 ? '添加新产品认证' : '添加新设备认证' }}</permission-button>
+        <permission-button type="primary" @click="navigationTo(`device-bind`)">
+          {{ authUserId === 24 ? '关联已认证产品' : '关联已认证设备' }}
+        </permission-button>
       </div>
     </div>
     <!-- 表格区域 -->
@@ -47,9 +49,8 @@
       header-row-class-name="tableHeader"
     >
       <el-table-column label="序号" :index="indexMethod" type="index" align="center" width="80" />
-      <el-table-column label="设备名称" align="center" prop="productName" />
-      <el-table-column label="设备SN码" align="center" prop="snCode" />
-
+      <el-table-column :label=" authUserId === 24 ? '产品名称' : '设备名称'" align="center" prop="productName" />
+      <el-table-column v-if="authUserId !== 24" label="设备SN码" align="center" prop="snCode" />
       <el-table-column label="审核状态" width="120px" align="center">
         <template slot-scope="{ row }">
           <audit-status :status="row.auditStatus" :reason="row.invalidReason" />
@@ -97,7 +98,7 @@
             二维码
           </permission-button>
           <permission-button v-else type="info" size="mini" disabled> 二维码 </permission-button>
-          <permission-button type="primary" size="mini" @click="fetchDeviceAssClubList(row)">
+          <permission-button v-if="authUserId !== 24" type="primary" size="mini" @click="fetchDeviceAssClubList(row)">
             其他关联机构
           </permission-button>
           <permission-button type="danger" size="mini" @click="handleRemoveProduct(row)"> 删除 </permission-button>
@@ -165,7 +166,7 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(['userIdentity'])
+    ...mapGetters(['authUserId', 'userIdentity'])
   },
   created() {
     this.initPage()

+ 0 - 827
src/views/normal/club/edit copy.vue

@@ -1,827 +0,0 @@
-<template>
-  <div class="club-edit page-form-container">
-    <el-form ref="submitForm" label-width="140px" :model="formData" :rules="rules">
-      <el-form-item label="机构名称:" prop="authParty">
-        <el-input v-model="formData.authParty" placeholder="请输入机构名称" clearable />
-      </el-form-item>
-      <el-form-item label="所在地区:" prop="address">
-        <el-cascader
-          ref="cascader"
-          v-model="formData.address"
-          :class="{ display: cascaderDisplay }"
-          clearable
-          :props="cascaderProps"
-          style="width: 100%"
-          :placeholder="cascaderPlaceholder"
-          @change="handleChange"
-        />
-      </el-form-item>
-      <el-form-item label="详细地址:" prop="fullAddress">
-        <el-input v-model="formData.fullAddress" placeholder="请输入详细地址" clearable @blur="initGeocoder" />
-      </el-form-item>
-      <el-form-item label="经纬度:" prop="point">
-        <el-input
-          v-model="formData.point"
-          placeholder="请输入经纬度 (格式:纬度,经度,可通过右侧地图小按钮获取)"
-          clearable
-        >
-          <el-button slot="append" icon="el-icon-map-location" @click="initMap" />
-        </el-input>
-      </el-form-item>
-      <el-form-item label="联系电话:">
-        <el-input v-model="formData.mobile" placeholder="请输入联系方式" clearable />
-      </el-form-item>
-
-      <el-form-item label="运营联系人:">
-        <el-input v-model="formData.linkMan" placeholder="请输入运营联系人" clearable />
-      </el-form-item>
-
-      <el-form-item label="运营联系人手机号:">
-        <el-input
-          v-model="formData.linkMobile"
-          placeholder="请输入运营联系人手机号"
-          clearable
-          maxlength="11"
-          show-word-limit
-          @input="onMobileInput"
-        />
-      </el-form-item>
-
-      <el-form-item label="认证编号:" prop="authCode">
-        <el-input v-model="formData.authCode" placeholder="请输认证编号" clearable />
-      </el-form-item>
-
-      <el-form-item label="认证日期:" prop="authDate">
-        <el-date-picker v-model="formData.authDate" type="date" placeholder="选择日期" style="width: 100%" />
-      </el-form-item>
-      <!-- <el-form-item label="手机号:" prop="userMobile">
-        <el-input v-model="formData.userMobile" placeholder="请输入手机号" clearable maxlength="11" show-word-limit />
-      </el-form-item> -->
-      <el-form-item label="机构logo:" prop="logo">
-        <el-input v-show="false" v-model="formData.logo" />
-        <upload-image
-          tip="建议尺寸:242px * 242px"
-          :image-list="logoList"
-          :before-upload="beforeLogoUpload"
-          @success="uploadLogoSuccess"
-          @remove="handleLogoRemove"
-        />
-      </el-form-item>
-      <el-form-item label="门头照:" prop="banner">
-        <div class="form-label-tip">至少上传一张机构门店图,最多上传6张)</div>
-        <el-input v-show="false" v-model="formData.banner" />
-        <upload-image
-          tip="至少上传一张,最多6张;建议尺寸:542px * 542px"
-          :image-list="bannerList"
-          :before-upload="beforeBannerUpload"
-          :limit="6"
-          @success="uploadBannerSuccess"
-          @remove="handleBannerRemove"
-        />
-      </el-form-item>
-
-      <!-- **************** 新方法配置授权牌 START ******************* -->
-      <el-form-item label="授权牌:">
-        <el-radio-group v-model="formData.authImageType" size="mini">
-          <el-radio :label="1" border>模板库生成</el-radio>
-          <el-radio :label="2" border>自定义上传</el-radio>
-        </el-radio-group>
-        <div style="margin-top: 12px">
-          <template v-if="formData.authImageType === 2">
-            <upload-image
-              tip="建议尺寸:542px * 546px"
-              :image-list="authImageList"
-              :before-upload="beforeAuthImageUpload"
-              @success="uploadAuthImageSuccess"
-              @remove="handleAuthImageRemove"
-            />
-            <el-input v-show="false" v-model="formData.authImage" />
-          </template>
-          <template v-else>
-            <template v-if="authTempFlag">
-              <preview-image v-if="formData.authImage" width="148px" height="148px" :src="formData.authImage" />
-            </template>
-            <template v-else>无</template>
-          </template>
-        </div>
-      </el-form-item>
-
-      <el-form-item v-if="authTempFlag && formData.authImageType === 1" label="授权牌logo:">
-        <div class="form-label-tip">授权牌logo(提示:授权牌logo与机构名称组合)</div>
-        <div style="margin-top: 8px">
-          <upload-image
-            :tip="authImageLogoUploadTip"
-            :image-list="authImageLogoList"
-            :before-upload="beforeAuthImageLogoUpload"
-            @success="uploadAuthImageLogoSuccess"
-            @remove="handleAuthImageLogoRemove"
-          />
-          <el-input v-show="false" v-model="formData.authImageLogo" />
-        </div>
-      </el-form-item>
-
-      <!-- **************** 新方法配置授权牌 End ******************* -->
-
-      <el-form-item label="机构类型:">
-        <el-radio-group v-model="formData.firstClubType">
-          <el-radio :label="1">医美</el-radio>
-          <el-radio :label="2">生美</el-radio>
-          <el-radio :label="3">项目公司</el-radio>
-          <el-radio :label="4">个人</el-radio>
-          <el-radio :label="5">其他</el-radio>
-        </el-radio-group>
-      </el-form-item>
-
-      <el-form-item v-if="formData.firstClubType === 1" label="医美类型:">
-        <el-radio-group v-model="formData.secondClubType">
-          <el-radio :label="1">诊所</el-radio>
-          <el-radio :label="2">门诊</el-radio>
-          <el-radio :label="3">医院</el-radio>
-          <el-radio :label="4">其他</el-radio>
-        </el-radio-group>
-      </el-form-item>
-
-      <el-form-item v-if="formData.firstClubType === 2" label="生美类型:">
-        <el-radio-group v-model="formData.secondClubType">
-          <el-radio :label="5">美容院</el-radio>
-          <el-radio :label="6">养生馆</el-radio>
-          <el-radio :label="7">其他</el-radio>
-        </el-radio-group>
-      </el-form-item>
-
-      <el-form-item v-if="formData.firstClubType === 1" label="医疗许可证:" prop="medicalLicenseImage">
-        <el-input v-show="false" v-model="formData.medicalLicenseImage" />
-        <upload-image
-          tip="请上传医疗许可证;建议尺寸:542px * 542px"
-          :limit="1"
-          :image-list="licenseImageList"
-          :before-upload="beforeLicenseImageUpload"
-          @success="uploadLicenseImageSuccess"
-          @remove="handleLicenseImageRemove"
-        />
-      </el-form-item>
-
-      <el-form-item label="员工人数:" prop="empNum">
-        <el-input v-model.number="formData.empNum" placeholder="请输入员工人数" clearable />
-      </el-form-item>
-
-      <el-form-item label="自定义属性:">
-        <el-radio-group v-model="formData.customFlag" size="mini">
-          <el-radio :label="0" border>否</el-radio>
-          <el-radio :label="1" border>是</el-radio>
-        </el-radio-group>
-      </el-form-item>
-
-      <template v-if="formData.customFlag === 1">
-        <el-form-item label="店铺备注:" prop="remarks">
-          <el-input v-model="formData.remarks" placeholder="店铺备注" clearable />
-        </el-form-item>
-      </template>
-
-      <el-form-item label="已关联机构:">
-        <el-button size="mini" type="primary" @click="onChooseAssClub">关联机构</el-button>
-      </el-form-item>
-      <el-form-item>
-        <associated-club-list
-          :selection="false"
-          :control="true"
-          :list="filterSelectAssClubList"
-          @filter="onFilterSelectAssClubList"
-        >
-          <template #control="{ row }">
-            <el-button size="mini" type="danger" @click="onAssClubListRemove(row)">删除</el-button>
-          </template>
-        </associated-club-list>
-      </el-form-item>
-    </el-form>
-
-    <!-- 表单提交 返回 -->
-    <div class="control-box">
-      <el-button type="primary" @click="submit">保存</el-button>
-      <el-button type="warning" @click="navigateBack">返回</el-button>
-    </div>
-
-    <!-- 地图坐标拾取 -->
-    <el-dialog
-      class="map-dialog"
-      title="坐标拾取(请拖动标记点选取准确位置)"
-      :visible.sync="dialogMapVisible"
-      width="80%"
-    >
-      <a-map ref="aMap" :lnglat="lnglat" :address="locationAddress" @position="onPosition" />
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="mini" @click="dialogMapVisible = false">确 定</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 关联机构 -->
-    <el-dialog title="添加关联机构" :visible.sync="assClubListVisible" width="30%" :show-close="false">
-      <associated-club-list
-        v-if="assClubListVisible"
-        :selection="true"
-        :control="false"
-        height="280"
-        :list="assClubList"
-        @filter="onFilterAssClubList"
-        @selected="onAssClubListChange"
-      />
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="mini" @click="onAssClubListCancel">取 消</el-button>
-        <el-button type="primary" size="mini" @click="onAssClubListConfirm">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import SimpleAMap from '@/components/SimpleAMap'
-import UploadImage from '@/components/UploadImage'
-import { AssociatedClubList } from '@/views/components/index'
-import { mapGetters } from 'vuex'
-import { saveBrandAuth, getAuthFormData, fecthAuthList } from '@/api/auth'
-import { getAddress } from '@/api/common'
-import { isMobile, isNumber } from '@/utils/validate'
-import { formatDate } from '@/utils'
-import { authTempUsed } from '@/api/system'
-import { initGeocoder } from '@/components/SimpleAMap/common/utils'
-
-export default {
-  components: {
-    [SimpleAMap.name]: SimpleAMap,
-    UploadImage,
-    AssociatedClubList
-  },
-  data() {
-    // var validatePoint = (rule, value, callback) => {
-    //   if (value === '') {
-    //     callback(new Error('经纬度坐标不能为空'))
-    //   } else {
-    //     if (isPoint(value)) {
-    //       callback()
-    //     } else {
-    //       callback(new Error('经纬度坐标格式不正确,(例如:114.095294,22.536004)'))
-    //     }
-    //   }
-    // }
-
-    var validateMobile = (rule, value, callback) => {
-      if (value === '') {
-        callback(new Error('联系方式不能为空'))
-      } else {
-        if (isNumber(value)) {
-          callback()
-        } else {
-          callback(new Error('联系方式格式不正确'))
-        }
-      }
-    }
-
-    var validatePhoneNumber = (rule, value, callback) => {
-      if (!value || isMobile(value)) {
-        callback()
-      } else {
-        callback(new Error('手机号格式不正确'))
-      }
-    }
-
-    return {
-      editType: 'add',
-      dialogMapVisible: false,
-      point: {},
-      value: [],
-      options: [],
-
-      assClubListVisible: false,
-
-      authId: '',
-      disabled: false,
-      area: '',
-      formData: {
-        authParty: '',
-        address: [],
-        fullAddress: '',
-        point: '',
-        mobile: '',
-        userMobile: '',
-        logo: '',
-        banner: '',
-        customFlag: 0,
-        remarks: '',
-        empNum: '',
-        firstClubType: 1,
-        secondClubType: 1,
-        medicalLicenseImage: '',
-        // 新增授权牌字段
-        authCode: '',
-        authDate: '',
-        authImageType: 1,
-        authImageLogo: '',
-        authImage: '',
-        // 新增运营人字段
-        linkMan: '',
-        linkMobile: '',
-        // 机构关联
-        relationId: '',
-        relationName: ''
-      },
-      rules: {
-        authParty: [{ required: true, message: '机构名称不能为空', trigger: ['blur', 'change'] }],
-        address: [{ required: true, message: '地址不能为空', trigger: 'change', type: 'array' }],
-        fullAddress: [{ required: true, message: '详细不能为空', trigger: ['blur', 'change'] }],
-        // point: [{ required: true, validator: validatePoint, trigger: ['blur', 'change'] }],
-        mobile: [{ required: true, validator: validateMobile, trigger: ['blur', 'change'] }],
-        logo: [{ required: true, message: '请上传机构logo', trigger: 'change' }],
-        banner: [{ required: true, message: '请至少上传一张banner图片', trigger: 'change' }],
-        remarks: [{ required: true, message: '店铺备注不能为空', trigger: 'blur' }],
-        medicalLicenseImage: [{ required: true, message: '请上传医疗许可证', trigger: 'change' }],
-        empNum: [{ required: true, message: '员工人数不能为空', trigger: 'change' }],
-        userMobile: [{ validator: validatePhoneNumber, trigger: 'change' }],
-        authImageLogo: [{ required: true, message: '请上传授权牌logo', trigger: 'change' }]
-      },
-      // logo图片列表
-      logoList: [],
-      // banner图片列表
-      bannerList: [],
-      // 级联选择的地址
-      address: '',
-      // 医疗许可证图片
-      licenseImageList: [],
-      // 授权牌照图片列表
-      authImageList: [],
-      // 授权牌logo列表
-      authImageLogoList: [],
-      // 验证
-      validatorFields: {
-        authImageLogoWidth: 100,
-        authImageLogoHeight: 100
-      },
-      // 授权牌模板标识
-      authTempFlag: false,
-      // 关联机构相关
-      assClubQuery: {
-        pageNum: 1,
-        pageSize: 1000,
-        authParty: ''
-      },
-      assClubList: [], // 关联机构列表
-      selectAssClubList: [], // 当前选中关联机构列表
-      selectAssClubListAll: [], // 全部选中关联机构列表
-      filterSelectAssClubList: [] // 筛选后的关联机构列表
-    }
-  },
-  computed: {
-    ...mapGetters(['authUserId', 'proxyInfo']),
-    // 级联选择器
-    cascaderProps() {
-      return {
-        lazy: true,
-        lazyLoad: async(node, resolve) => {
-          const { level, value = 0 } = node
-          const result = await getAddress({ parentId: value, type: level })
-          const nodes = result.data.map((item) => ({ value: item.id, label: item.name, leaf: level >= 2 }))
-          resolve(nodes)
-        }
-      }
-    },
-    cascaderDisplay() {
-      return this.formData.address.length > 0
-    },
-    cascaderPlaceholder() {
-      return this.cascaderDisplay ? this.area : '请选择所在区域'
-    },
-    // 定位使用的地址
-    locationAddress() {
-      // 广东省/深圳市/福田区景峰大厦
-      return this.address + this.formData.fullAddress
-    },
-    // 位置坐标
-    lnglat() {
-      return this.formData.point ? this.formData.point.split(',') : null
-    },
-    // 授权牌logo上传提示
-    authImageLogoUploadTip() {
-      return `限制尺寸:${this.validatorFields.authImageLogoWidth}px *${this.validatorFields.authImageLogoHeight}px`
-    }
-  },
-  created() {
-    this.editType = this.$route.query.type || 'add'
-    this.authId = this.$route.query.id
-    this.initFormData()
-    this.fetchAuthTempUsed()
-  },
-  methods: {
-    // 关联机构选择
-    onChooseAssClub() {
-      this.fetchAssClubList()
-      this.assClubListVisible = true
-    },
-    // 获取关联机构列表
-    async fetchAssClubList() {
-      try {
-        const excludeId = this.selectAssClubListAll.map((item) => item.authId)
-        if (this.authId) {
-          excludeId.push(parseInt(this.authId))
-        }
-        const res = await fecthAuthList(this.assClubQuery)
-        this.assClubList = res.data.list.filter((item) => !excludeId.includes(item.authId))
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 关联机构列表筛选
-    onFilterAssClubList(query) {
-      this.assClubQuery.authParty = query.authParty
-      this.fetchAssClubList()
-    },
-    // 关联机构列表选中
-    onAssClubListChange(value) {
-      this.selectAssClubList = value
-    },
-    // 关联机构选中列表确认
-    onAssClubListConfirm() {
-      this.selectAssClubListAll = [...this.selectAssClubListAll, ...this.selectAssClubList]
-      this.filterSelectAssClubList = this.selectAssClubListAll
-      this.assClubQuery.authParty = ''
-      this.assClubList = []
-      this.assClubListVisible = false
-    },
-    // 关联机构选中列表取消
-    onAssClubListCancel() {
-      this.selectAssClubList = []
-      this.filterSelectAssClubList = this.selectAssClubListAll
-      this.assClubQuery.authParty = ''
-      this.assClubList = []
-      this.assClubListVisible = false
-    },
-    // 已关联机构列表筛选
-    onFilterSelectAssClubList(query) {
-      if (query.authParty) {
-        this.filterSelectAssClubList = this.selectAssClubListAll.filter((item) =>
-          new RegExp(query.authParty, 'ig').test(item.authParty)
-        )
-      } else {
-        this.filterSelectAssClubList = this.selectAssClubListAll
-      }
-    },
-    // 已关联机构列表删除
-    onAssClubListRemove(row) {
-      this.selectAssClubListAll = this.selectAssClubListAll.filter((item) => item.authId !== row.authId)
-      this.filterSelectAssClubList = this.selectAssClubListAll
-    },
-
-    // 根据地址信息定位
-    async initGeocoder() {
-      try {
-        const geocoder = await initGeocoder()
-        return new Promise((resolve, reject) => {
-          geocoder.getLocation(this.locationAddress, (status, result) => {
-            if (status === 'complete' && result.info === 'OK') {
-              const position = result.geocodes[0].location
-              this.onPosition(position)
-              resolve()
-            } else {
-              console.log(result)
-              reject()
-            }
-          })
-        })
-      } catch (error) {
-        console.log(error)
-      }
-    },
-
-    // 地图定位
-    initMap() {
-      this.dialogMapVisible = true
-      this.$nextTick(() => {
-        this.$refs.aMap.init()
-      })
-    },
-
-    // 获取位置坐标
-    onPosition(lnglat) {
-      this.formData.point = `${lnglat.lng},${lnglat.lat}`
-    },
-
-    // 获取地址
-    initAddress() {
-      return getAddress({
-        parentId: 19,
-        type: 1
-      })
-    },
-
-    // 地图标记变化
-    markerChange(point) {
-      this.formData.point = `${point.lng},${point.lat}`
-    },
-
-    // 数据回显
-    initFormData() {
-      if (!this.authId) return
-      getAuthFormData({ authId: this.authId }).then((res) => {
-        console.log(res)
-        this.formData.authParty = res.data.authParty
-
-        this.formData.fullAddress = res.data.address
-        this.formData.point = res.data.lngAndLat
-        this.formData.mobile = res.data.mobile
-        this.formData.logo = res.data.logo || ''
-        this.formData.banner = res.data.bannerList.length || ''
-        this.formData.relationId = res.data.relationId
-        this.formData.relationName = res.data.relationName
-
-        this.formData.customFlag = res.data.customFlag
-        this.formData.remarks = res.data.remarks
-
-        if (res.data.logo) {
-          this.logoList = [{ name: '机构logo', url: res.data.logo }]
-        }
-
-        if (res.data.bannerList.length > 0) {
-          this.bannerList = res.data.bannerList.map((item, index) => ({ name: `门头照${index}`, url: item }))
-        }
-
-        this.formData.address = [res.data.provinceId, res.data.cityId, res.data.townId]
-        // this.formData.address = '广东省/深圳市/福田区'
-        this.area = res.data.area
-        this.address = res.data.area
-
-        this.formData.empNum = res.data.empNum
-        this.formData.firstClubType = res.data.firstClubType
-        this.formData.secondClubType = res.data.secondClubType
-
-        this.formData.medicalLicenseImage = res.data.medicalLicenseImage
-        if (res.data.medicalLicenseImage) {
-          this.licenseImageList = [{ name: '医疗许可证', url: res.data.medicalLicenseImage }]
-        }
-
-        this.formData.userMobile = res.data.userMobile
-
-        // 授权牌相关字段
-        this.formData.authCode = res.data.authCode
-        this.formData.authDate = res.data.authDate
-        this.formData.authImageType = res.data.authImageType
-
-        this.formData.authImageLogo = res.data.authImageLogo
-        if (res.data.authImageLogo) {
-          this.authImageLogoList = [{ name: '授权牌logo', url: res.data.authImageLogo }]
-        }
-
-        this.formData.authImage = res.data.authImage
-        if (res.data.authImage) {
-          this.authImageList = [{ name: '自定义授权牌', url: res.data.authImage }]
-        }
-
-        // 运营人相关
-        this.formData.linkMan = res.data.linkMan
-        this.formData.linkMobile = res.data.linkMobile
-
-        // 关联机构列表
-        if (res.data.releationClubList) {
-          this.selectAssClubListAll = res.data.releationClubList
-          this.filterSelectAssClubList = this.selectAssClubListAll
-        }
-
-        // 如果经纬度为空
-        if (!res.data.lngAndLat && this.locationAddress) {
-          this.initGeocoder()
-        }
-      })
-    },
-
-    // 表单提交保存
-    async submit() {
-      this.$refs.submitForm.validate(async(valide) => {
-        if (!valide) return
-
-        // 如果经纬度为空
-        if (!this.formData.point && this.locationAddress) {
-          await this.initGeocoder()
-        }
-
-        const {
-          authParty,
-          address: [provinceId, cityId, townId],
-          mobile,
-          logo,
-          point: lngAndLat,
-          customFlag,
-          remarks,
-          empNum,
-          firstClubType,
-          secondClubType,
-          medicalLicenseImage,
-          userMobile,
-          authCode,
-          authDate,
-          authImageType,
-          authImageLogo,
-          authImage,
-          linkMan,
-          linkMobile
-        } = this.formData
-
-        const authUserId = this.proxyInfo?.authUserId || this.authUserId
-
-        const data = {
-          authId: parseInt(this.authId),
-          authParty,
-          authUserId,
-          createBy: authUserId,
-          provinceId,
-          cityId,
-          townId,
-          address: this.formData.fullAddress,
-          mobile,
-          logo,
-          lngAndLat,
-          remarks,
-          customFlag,
-          empNum,
-          firstClubType,
-          secondClubType,
-          medicalLicenseImage,
-          userMobile,
-          authCode,
-          authDate: authDate ? formatDate(authDate, 'yyyy.MM.DD') : '',
-          authImageType,
-          authImageLogo,
-          authImage,
-          linkMan,
-          linkMobile,
-          relationId: this.selectAssClubListAll.map((item) => item.authId).join(','),
-          relationName: this.selectAssClubListAll.map((item) => item.authParty).join(',')
-        }
-
-        data.bannerList = this.bannerList.map((item) => (item.response ? item.response.data : item.url))
-
-        // const data = deepClone(this.formatDate)
-        // const [provinceId, cityId, townId] = this.formData.address
-        // const lngAndLat = this.formData.point
-
-        console.log(data)
-
-        // return
-        saveBrandAuth(data)
-          .then((res) => {
-            const h = this.$createElement
-            this.$notify.success({
-              title: `修改授权机构`,
-              message: h('i', { style: 'color: #333' }, `已修改授权机构:"${this.formData.authParty}"`),
-              duration: 3000
-            })
-            // this.$refs.submitForm.resetFields()
-            this.$store.dispatch('tagsView/delView', this.$route)
-            this.$router.push('/club/list')
-          })
-          .catch((err) => {
-            console.log(err)
-          })
-      })
-    },
-    handleChange(e) {
-      const node = this.$refs.cascader.getCheckedNodes()
-      if (node.length <= 0) return
-      this.address = node[0].pathLabels.join()
-      this.initGeocoder()
-    },
-
-    // 获取当前机构可用授权牌模板
-    async fetchAuthTempUsed() {
-      try {
-        const res = await authTempUsed({
-          authUserId: this.authUserId,
-          authFlag: 1,
-          status: 1
-        })
-        if (res.data) {
-          const [width, height] = res.data.logoSize.split(',')
-          this.validatorFields.authImageLogoWidth = width
-          this.validatorFields.authImageLogoHeight = height
-          this.authTempFlag = true
-        } else {
-          this.authTempFlag = false
-        }
-      } catch (error) {
-        console.log(error)
-      }
-    },
-
-    // logo上传
-    uploadLogoSuccess({ response, file, fileList }) {
-      this.logoList = fileList
-      this.formData.logo = fileList[0].response.data
-    },
-    handleLogoRemove({ file, fileList }) {
-      this.logoList = fileList
-      this.formData.logo = ''
-    },
-    beforeLogoUpload(file) {
-      const flag = file.size / 1024 < 500
-      if (!flag) {
-        this.$message.error('上传logo图片大小不能超过 500kb!')
-      }
-      return flag
-    },
-
-    // banner上传
-    uploadBannerSuccess({ response, file, fileList }) {
-      this.bannerList = fileList
-      console.log(this.bannerList)
-      this.formData.banner = fileList.length > 0 ? fileList.length : ''
-    },
-    handleBannerRemove({ file, fileList }) {
-      this.bannerList = fileList
-      this.formData.banner = fileList.length > 0 ? fileList.length : ''
-    },
-    beforeBannerUpload(file) {
-      const flag = file.size / 1024 / 1024 < 1
-      if (!flag) {
-        this.$message.error('上传banner图片大小不能超过 1MB!')
-      }
-      return flag
-    },
-
-    // 医疗许可证图片上传
-    uploadLicenseImageSuccess({ response, file, fileList }) {
-      this.licenseImageList = fileList
-      console.log(this.licenseImageList)
-      this.formData.medicalLicenseImage = response.data
-    },
-    handleLicenseImageRemove({ file, fileList }) {
-      this.licenseImageList = fileList
-      this.formData.medicalLicenseImage = ''
-    },
-    beforeLicenseImageUpload(file) {
-      const flag = file.size / 1024 / 1024 < 1
-      if (!flag) {
-        this.$message.error('医疗许可证图片大小不能超过 1MB!')
-      }
-      return flag
-    },
-
-    // 授权牌照上传
-    beforeAuthImageUpload(file) {
-      const flag = file.size / 1024 / 1024 < 5
-      if (!flag) {
-        this.$message.error('上传授权牌图片大小不能超过 5MB!')
-      }
-      return flag
-    },
-    uploadAuthImageSuccess({ response, file, fileList }) {
-      this.authImageList = fileList
-      this.formData.authImage = response.data
-    },
-    handleAuthImageRemove({ file, fileList }) {
-      this.authImageList = fileList
-      this.formData.authImage = ''
-    },
-
-    // 授权牌logo上传
-    beforeAuthImageLogoUpload(file) {
-      return new Promise((resolve, reject) => {
-        if (file.size > 5 * 1024 * 1024) {
-          this.$message.error('授权牌logo图片大小不能超过 5MB!')
-          reject('图片大小超出最大限制')
-        }
-        const image = new Image()
-        image.src = URL.createObjectURL(file)
-        image.onload = (e) => {
-          const { naturalWidth, naturalHeight } = e.path ? e.path[0] : e.target
-          const { authImageLogoWidth: width, authImageLogoHeight: height } = this.validatorFields
-          if (naturalWidth > width || naturalHeight > height) {
-            this.$message.error('图片尺寸校验未通过')
-            reject('图片尺寸校验未通过')
-          } else {
-            resolve('图片尺寸校验通过')
-          }
-        }
-      })
-    },
-    uploadAuthImageLogoSuccess({ response, file, fileList }) {
-      this.authImageLogoList = fileList
-      this.formData.authImageLogo = response.data
-    },
-    handleAuthImageLogoRemove({ file, fileList }) {
-      this.authImageLogoList = fileList
-      this.formData.authImageLogo = ''
-    },
-    // 输入手机号时
-    onMobileInput() {
-      this.formData.mobile = this.formData.mobile.replace(/[^\w\.\/]/gi, '')
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-#allmap {
-  width: 100%;
-  height: 600px;
-}
-
-.attributes {
-  padding-top: 16px;
-}
-</style>

+ 72 - 24
src/views/normal/club/index.vue

@@ -39,25 +39,38 @@
         <permission-button type="primary" @click="getList">查询</permission-button>
         <permission-button type="primary" @click="navigationTo('club-add?type=edit&isAdd=true')">添加</permission-button>
       </div>
-      <div class="filter-control">
-        <permission-button type="primary" @click="downLoadTemplate">机构导入模板</permission-button>
-      </div>
-      <!-- 机构设备信息导出  -->
-      <div class="filter-control">
-        <permission-button type="primary" @click="improtDialogVisible = true">导入机构信息</permission-button>
-        <permission-button type="primary" @click="onHandleExport(5)">导出机构信息</permission-button>
-        <permission-button type="primary" @click="onHandleExport(6)">导出设备信息</permission-button>
-      </div>
-      <!-- 机构设备授权牌导出 -->
-      <div class="filter-control">
-        <permission-button type="primary" @click="onHandleExport(1)">下载机构授权牌</permission-button>
-        <permission-button type="primary" @click="onHandleExport(2)">下载设备授权牌</permission-button>
-      </div>
-      <!-- 机构设备二维码下载 -->
-      <div class="filter-control">
-        <permission-button type="primary" @click="onHandleExport(3)">一键下载机构二维码</permission-button>
-        <permission-button type="primary" @click="onHandleExport(4)">一键下载设备二维码</permission-button>
-      </div>
+      <template v-if="authUserId === 24">
+        <!-- 导入采美机构 -->
+        <div class="filter-control">
+          <permission-button type="primary" @click="dialogVisible = true">导入采美机构</permission-button>
+        </div>
+        <!-- 机构设备授权牌导出 -->
+        <div class="filter-control">
+          <permission-button type="primary" @click="onHandleExport(1)">下载机构授权牌</permission-button>
+          <!--<permission-button type="primary" @click="onHandleExport(2)">下载产品授权牌</permission-button>-->
+        </div>
+      </template>
+      <template v-else>
+        <div class="filter-control">
+          <permission-button type="primary" @click="downLoadTemplate">机构导入模板</permission-button>
+        </div>
+        <!-- 机构设备信息导出  -->
+        <div class="filter-control">
+          <permission-button type="primary" @click="improtDialogVisible = true">导入机构信息</permission-button>
+          <permission-button type="primary" @click="onHandleExport(5)">导出机构信息</permission-button>
+          <permission-button type="primary" @click="onHandleExport(6)">导出设备信息</permission-button>
+        </div>
+        <!-- 机构设备授权牌导出 -->
+        <div class="filter-control">
+          <permission-button type="primary" @click="onHandleExport(1)">下载机构授权牌</permission-button>
+          <permission-button type="primary" @click="onHandleExport(2)">下载设备授权牌</permission-button>
+        </div>
+        <!-- 机构设备二维码下载 -->
+        <div class="filter-control">
+          <permission-button type="primary" @click="onHandleExport(3)">一键下载机构二维码</permission-button>
+          <permission-button type="primary" @click="onHandleExport(4)">一键下载设备二维码</permission-button>
+        </div>
+      </template>
     </div>
     <!-- 表格区域 -->
     <el-table
@@ -67,6 +80,7 @@
       fit
       highlight-current-row
       style="width: 100%"
+      height="660px"
       header-row-class-name="tableHeader"
     >
       <el-table-column label="序号" :index="indexMethod" align="center" width="80" type="index" />
@@ -129,16 +143,17 @@
             编辑
           </permission-button>
           <!-- <permission-button type="danger" size="mini" @click="handleRemoveAuth(row)"> 删除 </permission-button> -->
-          <permission-button type="primary" size="mini" @click="navigationTo(`device-list?id=${row.authId}`)">
+          <permission-button v-if="authUserId !== 24" type="primary" size="mini" @click="navigationTo(`device-list?id=${row.authId}`)">
             设备认证
           </permission-button>
           <permission-button type="primary" size="mini" :disabled="row.status !== 1" @click="createClubQrcode(row)">
             二维码
           </permission-button>
-          <permission-button type="primary" size="mini" @click="cotyClubLink($event, row)">
+          <permission-button v-if="authUserId !== 24" type="primary" size="mini" @click="cotyClubLink($event, row)">
             复制注册链接
           </permission-button>
           <permission-button
+            v-if="authUserId !== 24"
             type="primary"
             size="mini"
             :disabled="row.status !== 1 || row.sendStatus === 0"
@@ -181,20 +196,23 @@
     <transition name="fade">
       <qrcode-club v-if="showQRcode" :qrcode-data="clubInfo" @close="showQRcode = false" />
     </transition>
+    <!--  导入采美机构 -->
+    <club-dialog v-if="dialogVisible" ref="clubDialog" @confirm="handleAddGroupConfirm" @cancel="handleCancel" />
   </div>
 </template>
 
 <script>
 import FileUpload from '@/components/FileUpload'
 import QrcodeClub from '@/components/QrcodeClub'
+import ClubDialog from './components/ClubDialog'
 import { ClubListSelector } from '@/views/components'
-import { fecthAuthListAll, changeAuthStatus, removeAuth, authImportExcel, setStarClub } from '@/api/auth'
+import { fecthAuthListAll, changeAuthStatus, removeAuth, authImportExcel, setStarClub, saveCmClubAuth } from '@/api/auth'
 import { mapGetters } from 'vuex'
 import { debounce, downloadWithUrl } from '@/utils/tools'
 import handleClipboard from '@/utils/clipboard'
 export default {
   name: 'ClubList',
-  components: { FileUpload, QrcodeClub, ClubListSelector },
+  components: { FileUpload, QrcodeClub, ClubListSelector, ClubDialog },
   data() {
     return {
       showQRcode: false,
@@ -234,7 +252,8 @@ export default {
       chooseFile: '',
       exportDialogVisible: false,
       exportType: '',
-      exportClubList: []
+      exportClubList: [],
+      dialogVisible: false
     }
   },
   computed: {
@@ -348,7 +367,36 @@ export default {
       this.exportDialogVisible = true
       this.exportType = type
     },
+    // 确认选择成员
+    handleAddGroupConfirm(data) {
+      console.log('data', data)
+      const clubIds = []
+      data.forEach((ele) => {
+        clubIds.push(ele.clubId)
+      })
+      this.saveCmClubAuth({ authUserId: this.authUserId, clubIds: clubIds.join(',') })
+    },
+    // 确认导入采美机构
+    async saveCmClubAuth(params) {
+      try {
+        await saveCmClubAuth(params)
+        this.$notify({
+          title: '',
+          message: '导入机构成功',
+          type: 'success'
+        })
+        this.handleCancel()
+        this.getList()
+      } catch (error) {
+        console.log(error)
+      }
+    },
 
+    // 取消选择采美机构
+    handleCancel() {
+      this.dialogVisible = false
+      this.$refs.clubDialog.visible = false
+    },
     // 导出
     async onExport(type) {
       const confirmText = ['', '机构授权牌', '设备授权牌', '机构二维码', '设备二维码', '机构信息', '设备信息'][type]