Переглянути джерело

认证通v1.7版本上正式

yuwenjun1997 2 роки тому
батько
коміт
a1865c2097

+ 7 - 6
.env.development

@@ -4,12 +4,12 @@ NODE_ENV = development
 ENV = 'development'
 
 # 测试地址 API接口
-# VUE_APP_BASE_API = 'https://zplma-b.caimei365.com'
-VUE_APP_BASE_API = 'http://192.168.2.68:8012'
+VUE_APP_BASE_API = 'https://zplma-b.caimei365.com'
+# VUE_APP_BASE_API = 'http://192.168.2.68:8012'
 
 # 文件上传 API接口地址
-# VUE_APP_UPLOAD_API='https://zplma-b.caimei365.com'
-VUE_APP_UPLOAD_API='http://192.168.2.68:8012'
+VUE_APP_UPLOAD_API='https://zplma-b.caimei365.com'
+# VUE_APP_UPLOAD_API='http://192.168.2.68:8012'
 
 # 二维码生成链接location
 VUE_APP_BASE_SERVER = 'https://www-b.caimei365.com'
@@ -19,11 +19,12 @@ VUE_APP_SOCKET_SERVER = 'wss://zplma-b.caimei365.com/websocket?sessionSource=zpl
 # VUE_APP_SOCKET_SERVER = 'ws://192.168.2.68:8012/websocket?sessionSource=zplm_admin'
 
 # 网站地址
-# VUE_APP_LOCAL = 'http://192.168.2.81:9527'
+# VUE_APP_LOCAL = 'http://192.168.2.92:9527'
 VUE_APP_LOCAL = 'http://zplm-b.caimei365.com'
 
 # 认证通页面
-VUE_APP_WWW_HOST = 'http://192.168.2.92:8888'
+# VUE_APP_WWW_HOST = 'http://192.168.2.92:8888'
+VUE_APP_WWW_HOST = 'https://zp-b.caimei365.com'
 
 # 支付
 VUE_APP_PAY_LOCAL = 'http://192.168.2.68:18014'

+ 3 - 0
.env.production

@@ -20,3 +20,6 @@ VUE_APP_PAY_LOCAL = https://core.caimei365.com
 
 # 网站地址
 VUE_APP_LOCAL = 'https://zplm.caimei365.com'
+
+# 认证通页面
+VUE_APP_WWW_HOST = 'https://zp.caimei365.com'

+ 9 - 1
src/api/auth.js

@@ -136,6 +136,15 @@ export function getAuthUserList(params) {
   })
 }
 
+// 机构用户状态修改
+export function authUserStatusChange(data) {
+  return request({
+    url: '/club/user/status/update',
+    method: 'post',
+    data
+  })
+}
+
 // 机构生成邀请码
 export function makeGenerate(data) {
   return request({
@@ -171,4 +180,3 @@ export function resetClubUserPassword(data) {
     data
   })
 }
-

BIN
src/assets/img/qrcode-bg-club-down.png


BIN
src/assets/img/qrcode-bg-club-show.png


+ 52 - 18
src/components/qrcode/club-qrcode.vue

@@ -1,10 +1,11 @@
 <template>
   <div class="code-container">
     <div class="qrcode">
-      <div class="title">{{ qrcodeData.authParty }}正品授权</div>
+      <div class="title">{{ name }}正品授权</div>
       <div class="content">
         <img :src="imgUrl" alt="">
       </div>
+      <div class="sub-title">{{ qrcodeData.authParty }}</div>
       <div class="btn down-btn" @click="handleDown">下载二维码</div>
       <div class="btn close-btn" @click="handleClose">关闭</div>
     </div>
@@ -39,7 +40,7 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(['authUserId'])
+    ...mapGetters(['authUserId', 'name'])
   },
   created() {
     this.initQrcode()
@@ -80,7 +81,8 @@ export default {
     // 生成下载的文件
     async createDownFile(callback) {
       this.qrcodePath = `${this.wwwServer}/${this.authUserId}/app/approve/club/detail?id=${this.qrcodeData.authId}`
-      const strHeader = this.qrcodeData.authParty + '正品授权'
+      const strHeader = this.name + '正品授权'
+      const strFooter = this.qrcodeData.authParty
       // 生成二维码参数信息
       const options = {
         width: 720,
@@ -115,24 +117,44 @@ export default {
         // 绘制二维码
         ctx.drawImage(downImg, 185, 342)
         // 绘制顶部文字描述
-        const chr = strHeader.split('')
-        let temp = ''
-        const row = []
-        for (let a = 0; a < chr.length; a++) {
-          if (ctx.measureText(temp).width >= w - 290) {
-            row.push(temp)
-            temp = ''
+        const chr1 = strHeader.split('')
+        let temp1 = ''
+        const row1 = []
+        for (let a = 0; a < chr1.length; a++) {
+          if (ctx.measureText(temp1).width >= w - 290) {
+            row1.push(temp1)
+            temp1 = ''
           }
-          temp += chr[a]
+          temp1 += chr1[a]
         }
-        row.push(temp)
-        if (row.length === 1) {
-          ctx.fillText(row[0], w / 2, 170)
+        row1.push(temp1)
+        if (row1.length === 1) {
+          ctx.fillText(row1[0], w / 2, 170)
         } else {
-          for (var b = 0; b < row.length; b++) {
-            ctx.fillText(row[b], w / 2, 170 - (row.length - b - 1) * 65)
+          for (let b = 0; b < row1.length; b++) {
+            ctx.fillText(row1[b], w / 2, 170 - (row1.length - b - 1) * 65)
           }
         }
+
+        const chr2 = strFooter.split('')
+        let temp2 = ''
+        const row2 = []
+        for (let a = 0; a < chr2.length; a++) {
+          if (ctx.measureText(temp2).width >= w - 290) {
+            row2.push(temp2)
+            temp2 = ''
+          }
+          temp2 += chr2[a]
+        }
+        row2.push(temp2)
+        if (row2.length === 1) {
+          ctx.fillText(row2[0], w / 2, 170 + 1040)
+        } else {
+          for (let b = 0; b < row2.length; b++) {
+            ctx.fillText(row2[b], w / 2, 170 + 1070 - (row2.length - b - 1) * 65)
+          }
+        }
+
         // 绘制完成后的回调
         callback(downCanvas)
       }
@@ -169,7 +191,7 @@ export default {
     height: 192px;
     position: absolute;
     left: 54px;
-    bottom: 66px;
+    bottom: 85px;
   }
   .down-btn {
     left: 0;
@@ -179,7 +201,19 @@ export default {
   }
   .title {
     position: absolute;
-    top: 48px;
+    top: 30px;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 256px;
+    text-align: center;
+    font-size: 16px;
+    color: #fff;
+    font-weight: bold;
+  }
+
+  .sub-title {
+    position: absolute;
+    bottom: 20px;
     left: 50%;
     transform: translateX(-50%);
     width: 256px;

+ 2 - 0
src/views/admin/audit/club/device/review.vue

@@ -90,6 +90,7 @@ export default {
         purchaseWay: ''
       },
       auditForm: {
+        productId: '',
         auditBy: '', // 审核人id
         authId: '', // 机构id
         auditStatus: 1, // 审核状态
@@ -122,6 +123,7 @@ export default {
     },
     // 提交审核信息
     submit() {
+      this.auditForm.productId = this.productInfo.productId
       this.$refs.auditForm.validate((valid) => {
         if (valid) {
           this.isLoading = true

+ 1 - 1
src/views/admin/audit/club/review.vue

@@ -89,7 +89,7 @@
         </div>
       </div>
 
-      <div class="row">
+      <div v-if="clubInfo.firstClubType === 1" class="row">
         <div class="col">医疗许可证:</div>
         <div class="col">
           <el-image

+ 13 - 11
src/views/components/PermissionButton/index.vue

@@ -11,26 +11,28 @@ export default {
     }
   },
   methods: {
-    handleClick() {
+    handleClick($event) {
       const { freeUseFlag, vipStatus } = this.$store.getters.vipInfo
       // (已过期 or 非会员) and 非试用期
       this.hasPermission = !((vipStatus === 0 || vipStatus === 3) && freeUseFlag === 0)
       if (this.hasPermission) {
-        this.$emit('click')
+        this.$emit('click', $event)
       } else {
         this.$confirm('对不起,您的会员账号已到期,请尽快续费,以免影响正常使用!', '提示', {
           confirmButtonText: '开通会员',
           cancelButtonText: '取消'
-        }).then(() => {
-          // jumpAction()
-          // console.log('开通会员')
-          this.$router.push('/vip/vip-open')
-        }).catch(() => {
-          this.$message({
-            type: 'info',
-            message: '已取消操作'
-          })
         })
+          .then(() => {
+            // jumpAction()
+            // console.log('开通会员')
+            this.$router.push('/vip/vip-open')
+          })
+          .catch(() => {
+            this.$message({
+              type: 'info',
+              message: '已取消操作'
+            })
+          })
       }
     }
   }

+ 26 - 18
src/views/normal/audit/club/components/club-list.vue

@@ -3,7 +3,7 @@
     <div class="filter-container">
       <div class="filter-control">
         <span>机构名称:</span>
-        <el-input v-model="listQuery.shopName" placeholder="机构名称" @keyup.enter.native="handleFilter" />
+        <el-input v-model="listQuery.authParty" placeholder="机构名称" @keyup.enter.native="handleFilter" />
       </div>
       <div class="filter-control">
         <span>手机号:</span>
@@ -35,15 +35,15 @@
       <el-table-column label="手机号" width="120px" align="center" prop="mobile" />
       <el-table-column label="审核状态" width="220px" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.auditStatus === 2" size="small" type="warning">待审核</el-tag>
-          <el-tag v-if="row.auditStatus === 1" size="small" type="success">审核通过</el-tag>
+          <el-tag v-if="row.shopAuditStatus === 2" size="small" type="warning">待审核</el-tag>
+          <el-tag v-if="row.shopAuditStatus === 1" size="small" type="success">审核通过</el-tag>
           <!-- 未通过原因展示 -->
-          <template v-if="row.auditStatus === 0">
+          <template v-if="row.shopAuditStatus === 0">
             <!-- <span class="status danger">审核未通过&nbsp;</span> -->
             <el-popover placement="top-start" title="审核说明" width="400" trigger="hover" :content="row.invalidReason">
               <el-tag slot="reference" size="small" type="danger" class="reason">
                 <span>审核未通过</span>
-                <span class="el-icon-question status danger " />
+                <span class="el-icon-question status danger" />
               </el-tag>
             </el-popover>
             <!-- 未通过原因展示END -->
@@ -52,19 +52,19 @@
       </el-table-column>
       <el-table-column label="审核人" align="center" width="200px">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditBy }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.shopAuditBy }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
       <el-table-column label="审核时间" width="250px" align="center">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditTime | formatTime }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.shopAuditTime | formatTime }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
       <el-table-column label="注册时间" width="250px" align="center">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditTime | formatTime }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.createTime | formatTime }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
@@ -75,10 +75,10 @@
           <el-button
             type="warning"
             size="mini"
-            style="margin-right:5px"
+            style="margin-right: 5px"
             @click="$_navigationTo(`/supplier-audit/club/club-detail?authId=${row.authId}`)"
           >审核</el-button>
-          <el-badge :hidden="row.lowerAuditStatus === 1" :value="row.waitAuditNum" :max="99">
+          <el-badge :hidden="row.shopWaitAuditNum === 0" :value="row.shopWaitAuditNum" :max="99">
             <el-button
               type="primary"
               size="mini"
@@ -106,12 +106,12 @@
         </div>
         <el-form ref="formRef" :model="dialogData" label-width="85px" :rules="dialogFormRules">
           <el-form-item label="审核状态:">
-            <el-radio-group v-model="dialogData.auditStatus">
+            <el-radio-group v-model="dialogData.shopAuditStatus">
               <el-radio :label="1">通过</el-radio>
               <el-radio :label="0">不通过</el-radio>
             </el-radio-group>
           </el-form-item>
-          <el-form-item v-if="dialogData.auditStatus === 0" label="原因:" prop="invalidReason">
+          <el-form-item v-if="dialogData.shopAuditStatus === 0" label="原因:" prop="invalidReason">
             <el-input v-model="dialogData.invalidReason" type="textarea" placeholder="请说明原因" />
           </el-form-item>
         </el-form>
@@ -139,6 +139,12 @@ export default {
       return formatDate(time, 'yyyy-MM-DD HH:mm:ss')
     }
   },
+  props: {
+    shopAuditStatus: {
+      type: Number,
+      default: 0
+    }
+  },
   data() {
     return {
       // 是否显示dialog
@@ -146,20 +152,21 @@ export default {
       listLoading: false,
       // 查询参数
       listQuery: {
-        listType: 2,
+        listType: 3,
         authParty: '', // 授权机构
         authUserId: '', // 供应商用户id
         pageNum: 1, // 页码
         pageSize: 10, // 分页
         auditStatus: '', // 审核状态
-        lowerAuditStatus: '' // 下属内容审核状态
+        lowerAuditStatus: '', // 下属内容审核状态
+        shopAuditStatus: 0
       },
       total: 0,
       dialogData: {
         auditBy: '', // 审核人
         authId: '', // 授权机构id
         authParty: '', // 授权机构名称
-        auditStatus: 1, // 审核状态
+        shopAuditStatus: 1, // 审核状态
         invalidReason: '' // 审核信息
       },
       dialogFormRules: {
@@ -184,9 +191,10 @@ export default {
     ...mapMutations({ setMessageState: 'webSocket/SET_MESSAGE_STATE' }),
     // 获取授权列表
     getList() {
+      this.listQuery.shopAuditStatus = this.shopAuditStatus
       this.listLoading = true
       fecthAuthList(this.listQuery)
-        .then(response => {
+        .then((response) => {
           if (response.code !== 0) return
           const { list, total } = response.data
           this.list = list
@@ -198,13 +206,13 @@ export default {
     },
     // 审核
     auditStatusHandle() {
-      this.$refs.formRef.validate(valid => {
+      this.$refs.formRef.validate((valid) => {
         if (valid) {
           // 指定审核人
           this.dialogData.auditBy = this.authUserId
           // 提交审核信息
           auditAuth(this.dialogData)
-            .then(res => {
+            .then((res) => {
               if (res.code !== 0) return
               this.$message.success(res.data)
               this.setMessageState({ id: this.dialogData.authId, type: 1 })

+ 17 - 10
src/views/normal/audit/club/components/device-list.vue

@@ -31,10 +31,10 @@
       <el-table-column prop="snCode" label="设备SN码" align="center" />
       <el-table-column label="审核状态" width="220px" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.auditStatus === 2" size="small" type="warning">待审核</el-tag>
-          <el-tag v-if="row.auditStatus === 1" size="small" type="success">审核通过</el-tag>
+          <el-tag v-if="row.shopAuditStatus === 2" size="small" type="warning">待审核</el-tag>
+          <el-tag v-if="row.shopAuditStatus === 1" size="small" type="success">审核通过</el-tag>
           <!-- 未通过原因展示 -->
-          <template v-if="row.auditStatus === 0">
+          <template v-if="row.shopAuditStatus === 0">
             <!-- <span class="status danger">审核未通过&nbsp;</span> -->
             <el-popover placement="top-start" title="审核说明" width="400" trigger="hover" :content="row.invalidReason">
               <el-tag slot="reference" size="small" type="danger" class="reason">
@@ -48,26 +48,26 @@
       </el-table-column>
       <el-table-column label="审核人" align="center">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditBy }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.shopAuditBy }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
       <el-table-column label="审核时间" width="250px" align="center">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditTime | formatTime }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.shopAuditTime | formatTime }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
       <el-table-column label="注册时间" width="250px" align="center">
         <template slot-scope="{ row }">
-          <span v-if="row.auditStatus !== 2">{{ row.auditTime | formatTime }}</span>
+          <span v-if="row.shopAuditStatus !== 2">{{ row.createTime | formatTime }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
       <el-table-column label="操作" width="240px" align="center">
         <template slot-scope="{ row }">
           <el-button
-            v-if="row.auditStatus !== 1"
+            v-if="row.shopAuditStatus !== 1"
             type="primary"
             icon="el-icon-s-check"
             size="mini"
@@ -103,18 +103,24 @@ export default {
       return formatDate(time, 'yyyy-MM-DD HH:mm:ss')
     }
   },
-
+  props: {
+    shopAuditStatus: {
+      type: Number,
+      default: 0
+    }
+  },
   data() {
     return {
       listLoading: false,
       listQuery: {
-        listType: 2,
+        listType: 3,
         authId: '',
         productName: '',
         reviewStatus: '',
         snCode: '',
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
+        shopAuditStatus: 0
       },
       total: 0,
       list: []
@@ -129,6 +135,7 @@ export default {
     handleFilter() {},
     // 获取列表信息
     getList() {
+      this.listQuery.shopAuditStatus = this.shopAuditStatus
       this.listLoading = true
       getProdList(this.listQuery)
         .then((res) => {

+ 2 - 2
src/views/normal/audit/club/device/index.vue

@@ -2,10 +2,10 @@
   <div class="app-container">
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <el-tab-pane label="未审核" name="first">
-        <device-list />
+        <device-list v-if="activeName === 'first'" :shop-audit-status="0" />
       </el-tab-pane>
       <el-tab-pane label="已审核" name="second">
-        <device-list />
+        <device-list v-if="activeName === 'second'" :shop-audit-status="1" />
       </el-tab-pane>
     </el-tabs>
   </div>

+ 2 - 1
src/views/normal/audit/club/device/review.vue

@@ -94,7 +94,8 @@ export default {
         auditBy: '', // 审核人id
         authId: '', // 机构id
         auditStatus: 1, // 审核状态
-        invalidReason: '' // 审核信息
+        invalidReason: '', // 审核信息
+        source: 2
       },
       rules: {
         invalidReason: { required: true, message: '不通过原因不能为空', tigger: 'blur' }

+ 2 - 2
src/views/normal/audit/club/index.vue

@@ -2,10 +2,10 @@
   <div class="app-container">
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <el-tab-pane label="未审核" name="first">
-        <club-list />
+        <club-list v-if="activeName === 'first'" :shop-audit-status="0" />
       </el-tab-pane>
       <el-tab-pane label="已审核" name="second">
-        <club-list />
+        <club-list v-if="activeName === 'second'" :shop-audit-status="1" />
       </el-tab-pane>
     </el-tabs>
   </div>

+ 3 - 2
src/views/normal/audit/club/review.vue

@@ -90,7 +90,7 @@
         </div>
       </div>
 
-      <div class="row">
+      <div v-if="clubInfo.firstClubType === 1" class="row">
         <div class="col">医疗许可证:</div>
         <div class="col">
           <el-image
@@ -197,7 +197,8 @@ export default {
         auditBy: '', // 审核人id
         authId: '', // 机构id
         auditStatus: 1, // 审核状态
-        invalidReason: '' // 审核信息
+        invalidReason: '', // 审核信息
+        source: 2
       },
       rules: {
         invalidReason: { required: true, message: '不通过原因不能为空', tigger: 'blur' }

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

@@ -32,9 +32,9 @@
       <el-form-item label="联系电话:" prop="mobile">
         <el-input v-model="formData.mobile" placeholder="请输入联系方式" clearable />
       </el-form-item>
-      <el-form-item label="手机号:" prop="userMobile">
+      <!-- <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> -->
       <el-form-item label="机构logo:" prop="logoImage">
         <el-input v-show="false" v-model="formData.logoImage" />
         <upload-image
@@ -84,7 +84,7 @@
         </el-radio-group>
       </el-form-item>
 
-      <el-form-item label="医疗许可证:" prop="medicalLicenseImage">
+      <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"

+ 10 - 2
src/views/normal/club/index.vue

@@ -108,7 +108,7 @@
             查看设备认证
           </permission-button>
           <permission-button type="primary" size="mini" @click="createClubQrcode(row)"> 二维码 </permission-button>
-          <permission-button type="primary" size="mini" @click="cotyClubLink"> 复制链接 </permission-button>
+          <permission-button type="primary" size="mini" @click="cotyClubLink($event, row)"> 复制链接 </permission-button>
           <permission-button
             type="primary"
             size="mini"
@@ -185,6 +185,7 @@ import Pagination from '@/components/Pagination' // secondary package based on e
 import { mapGetters } from 'vuex'
 import { formatDate } from '@/utils'
 import { debounce, downLoadWithATag } from '@/utils/tools'
+import handleClipboard from '@/utils/clipboard'
 export default {
   name: 'ComplexTable',
   components: { Pagination, FileUpload, PermissionButton, Qrcode },
@@ -274,7 +275,14 @@ export default {
     },
 
     // 复制链接
-    cotyClubLink() {},
+    cotyClubLink($event, row) {
+      // http://192.168.2.92:8888/114/app/record/club/detail
+      handleClipboard(
+        `${process.env.VUE_APP_WWW_HOST}/${this.authUserId}/app/form/link-register?type=link&authId=${row.authId}`,
+        '链接已复制到粘贴板',
+        $event
+      )
+    },
 
     // 上传文件
     submitUpload() {

+ 23 - 13
src/views/normal/user/index.vue

@@ -67,16 +67,13 @@
       </el-table-column>
       <el-table-column label="状态" width="240px" align="center">
         <template slot-scope="{ row }">
-          <!-- 只有审核通过了才能操作上下线 auditStatus :审核状态 -->
-          <template v-if="row.auditStatus === 1">
-            <template v-if="row.status === 0">
-              <span style="margin-right: 10px" class="status danger">停用</span>
-              <permission-button type="primary" size="mini" @click="handleChangeStatus(row)">启用</permission-button>
-            </template>
-            <template v-else>
-              <span style="margin-right: 10px" class="status success">启用</span>
-              <permission-button type="info" size="mini" @click="handleChangeStatus(row)">停用</permission-button>
-            </template>
+          <template v-if="row.status === 0">
+            <span style="margin-right: 10px" class="status danger">停用</span>
+            <permission-button type="primary" size="mini" @click="handleChangeStatus(row)">启用</permission-button>
+          </template>
+          <template v-else>
+            <span style="margin-right: 10px" class="status success">启用</span>
+            <permission-button type="info" size="mini" @click="handleChangeStatus(row)">停用</permission-button>
           </template>
         </template>
       </el-table-column>
@@ -98,7 +95,7 @@
       :total="total"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="getList(listQuery)"
+      @pagination="fetchUserList"
     />
 
     <el-dialog title="添加用户" width="30%" :visible.sync="dialogVisible" @close="onDialogClose">
@@ -123,7 +120,7 @@ import PermissionButton from '@/views/components/PermissionButton'
 import Pagination from '@/components/Pagination' // secondary package based on el-pagination
 import { formatDate } from '@/utils'
 import { mapGetters } from 'vuex'
-import { createClubUser, getAuthUserList, resetClubUserPassword } from '@/api/auth'
+import { authUserStatusChange, createClubUser, getAuthUserList, resetClubUserPassword } from '@/api/auth'
 import { isMobile } from '@/utils/validate'
 
 const resetFormData = () => ({
@@ -220,7 +217,20 @@ export default {
       this.editType = 'edit'
     },
 
-    handleChangeStatus() {},
+    async handleChangeStatus(row) {
+      try {
+        const status = row.status === 0 ? 1 : 0
+        await authUserStatusChange({
+          clubUserId: row.clubUserId,
+          status
+        })
+        this.getList()
+        this.$message.success('用户状态修改成功')
+      } catch (error) {
+        console.log(error)
+        this.$message.error('用户状态修改失败')
+      }
+    },
 
     // 保存用户信息
     async onSave() {