Forráskód Böngészése

1.页面加载时: 是否已有-> 有:直接调用获取邀请码。 没有:有生成邀请码标识->获取邀请码
// 2.刷新: 调用刷新邀请码接口->生成邀请码标识->获取邀请码

lifanagju_citu 10 hónapja
szülő
commit
a23d2c72ae

+ 25 - 0
src/api/recruit/enterprise/enterpriseInvite.js

@@ -0,0 +1,25 @@
+import request from '@/config/axios'
+
+// 生成邀请码标识
+export const enterpriseInviteGenerateCode = async (data) => {
+  return await request.post({
+    url: '/app-admin-api/menduner/system/enterprise-invite/generate/code',
+    data
+  })
+}
+
+// 获取邀请码
+export const enterpriseInviteGetCode = async (params) => {
+  return await request.get({
+    url: '/app-admin-api/menduner/system/enterprise-invite/get/code',
+    params
+  })
+}
+
+// 刷新邀请码
+export const enterpriseInviteRefresh = async (data) => {
+  return await request.post({
+    url: '/app-admin-api/menduner/system/enterprise-invite/refresh',
+    data
+  })
+}

+ 61 - 9
src/views/recruit/enterprise/systemManagement/groupAccount/components/invite.vue

@@ -4,7 +4,7 @@
     <div class="mt-5 color-777">将下面的公共邀请链接通过微信、00等任何方式发给同事,即可点击加入公司。请注意,用户同意后将自动加入到团队中,您需确保添加到的同事为同一公司招聘人员</div>
     <div class="mt-5 d-flex align-center">
       <div class="mr-5 shareUrlTxt">
-          {{ accessUrl + '/groupAccount/add?code=' + props.code }}
+        {{ shareUrlTxt }}
       </div>
       <v-btn color="primary" class="mr-3" @click="copy()">{{ $t('common.copy') }}</v-btn>
       <v-btn color="green" variant="outlined" @click="refresh()">{{ $t('common.refresh') }}</v-btn>
@@ -14,24 +14,76 @@
 </template>
 
 <script setup>
+import Snackbar from '@/plugins/snackbar'
+import {
+  enterpriseInviteGenerateCode,
+  enterpriseInviteGetCode,
+  enterpriseInviteRefresh,
+} from '@/api/recruit/enterprise/enterpriseInvite.js'
+import { computed, ref } from 'vue'
 defineOptions({name: 'groupAccount-component-invite'})
 const props = defineProps({
-  code: {
+  inviteType: {
     type: String,
-    default: '123'
+    default: '0' // 类型(0 邀请同事 | 1 邀请子公司),示例值(2)
   }
 })
 
-const day = '30'
-const copy = () => {
-  
+const day = 30
+const code = ref('')
+const accessUrl = import.meta.env.VITE_ACCESS_BASE_URL
+// const shareUrlTxt = ref(accessUrl + '/groupAccount/add?code=' + code.value )
+const shareUrlTxt = computed(() => {
+  return accessUrl + '/invite?code=' + code.value
+})
+
+// 逻辑:
+// 1.页面加载时: 是否已有-> 有:直接调用获取邀请码。 没有:有生成邀请码标识->获取邀请码
+// 2.刷新: 调用刷新邀请码接口->生成邀请码标识->获取邀请码
+
+// 获取邀请码
+const getCode = async (type) => {
+  try {
+    const data = await enterpriseInviteGetCode({ type: props.inviteType })
+    if (!data) getGenerateCode()
+    code.value = data
+    if (type === 'refresh') Snackbar.success('刷新成功')
+  } catch (err) {
+    console.err(err)
+  }
 }
-const refresh = () => {
+getCode()
 
+// 生成邀请码标识
+const getGenerateCode = async (type) => {
+  try {
+    const data = await enterpriseInviteGenerateCode({ type: props.inviteType, expireDay: 30 })
+    if (!data) console.err('生成邀请码标识失败')
+    getCode(type)
+  } catch (err) {
+    console.err(err)
+  }
+}
+
+// 刷新邀请码
+const refresh = async () => {
+  try {
+    await enterpriseInviteRefresh({ code: code.value })
+    getGenerateCode('refresh')
+  } catch (err) {
+    console.err(err)
+  }
+}
+
+const copy = async () => {
+  try {
+    await navigator.clipboard.writeText(shareUrlTxt.value)
+    Snackbar.success('复制成功')
+  } catch (err) {
+    Snackbar.error('复制失败,请手动复制。')
+  }
 }
 
-const accessUrl = import.meta.env.VITE_ACCESS_BASE_URL
-debugger
 </script>
 <style lang="scss" scoped>
 .shareUrlTxt {