scorpio 2 years ago
parent
commit
50c1b336a9
2 changed files with 63 additions and 1 deletions
  1. 8 0
      src/api/role/index.js
  2. 55 1
      src/views/user/manage.vue

+ 8 - 0
src/api/role/index.js

@@ -67,5 +67,13 @@ export default {
    */
   managerList(params) {
     return fetch('blade-project-manage-v2/roledept/v2/list', params)
+  },
+  /**
+   * 邀请二维码
+   * @param params
+   * @returns {Promise<unknown>}
+   */
+  invitation(params) {
+    return fetch('/blade-project-manage-v2/qrcode/v2/getQrcode', params)
   }
 }

+ 55 - 1
src/views/user/manage.vue

@@ -27,6 +27,11 @@
           {{ row.clientId.indexOf('project_web') === -1 ? '停用' : '启用' }}
         </el-tag>
       </template>
+      <template #menu-left>
+        <el-button type="primary" plain @click="showQrCode = true"
+          >通过微信邀请
+        </el-button>
+      </template>
     </avue-crud>
     <el-dialog
       v-model="showEdit"
@@ -161,6 +166,38 @@
         </el-form>
       </div>
     </el-dialog>
+    <el-dialog v-model="showQrCode" title="邀请二维码" width="500">
+      <div>
+        <div class="full-width flex flex-center">
+          <span class="mr-20">用户所属部门</span>
+          <el-select
+            v-model="userInfoForm.deptId"
+            placeholder="选择用户所属部门"
+            @change="qrCodeSelect"
+          >
+            <el-option
+              v-for="item in deptList"
+              :key="item.id"
+              :label="item.deptName"
+              :value="item.id"
+            />
+          </el-select>
+        </div>
+        <div v-if="qrCodeText.length > 0" class="flex flex-center flex-col">
+          <vue-qr
+            class="mt-20"
+            :currentLevel="3"
+            :logoCornerRadius="4"
+            :logoScale="0.25"
+            :logoSrc="logoSrc"
+            :text="qrCodeText"
+            size="260"
+          />
+          <span>- 复制二维码图片,通过微信发送邀请 -</span>
+        </div>
+        <el-empty v-else description="暂无数据" />
+      </div>
+    </el-dialog>
   </basic-container>
 </template>
 
@@ -176,12 +213,14 @@ import BasicContainer from '@/components/basic-container/main.vue'
 import { useStore } from '@/store/user.js'
 import baseButton from '@/components/base-button.vue'
 import { ElMessageBox } from 'element-plus'
+import VueQr from 'vue-qr/src/packages/vue-qr.vue'
 
 export default {
   name: 'manage',
   components: {
     BasicContainer,
-    baseButton
+    baseButton,
+    VueQr
   },
   setup() {
     const user = useStore()
@@ -190,7 +229,11 @@ export default {
   data() {
     return {
       showAdd: false,
+      showQrCode: false,
       showEdit: false,
+      qrCodeText: '',
+      sessionId: '',
+      logoSrc: new URL('@/assets/img/logo.png', import.meta.url).href,
       form: {},
       page: {
         curren: 1,
@@ -487,6 +530,17 @@ export default {
             }
           })
       })
+    },
+    qrCodeSelect(deptId) {
+      this.$api.role.invitation({ deptId, type: 4 }).then(res => {
+        if (res.code === 200) {
+          this.qrCodeText =
+            'https://dev.wutongresearch.club/apply?id=' +
+            res.data.qrcodeId +
+            '&deptId=' +
+            deptId
+        }
+      })
     }
   }
 }