From fa3ac93010bea3805438ee3ab0a182bfbf7423da Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期一, 27 五月 2024 16:19:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/system/loginmini/MiniCodelogin.vue | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 165 insertions(+), 0 deletions(-) diff --git a/src/views/system/loginmini/MiniCodelogin.vue b/src/views/system/loginmini/MiniCodelogin.vue new file mode 100644 index 0000000..1ee5aa4 --- /dev/null +++ b/src/views/system/loginmini/MiniCodelogin.vue @@ -0,0 +1,165 @@ +<template> + <div class="aui-content"> + <div class="aui-container"> + <div class="aui-form"> + <div class="aui-image"> + <div class="aui-image-text"> + <img :src="adTextImg" alt="" /> + </div> + </div> + <div class="aui-formBox aui-formEwm"> + <div class="aui-formWell"> + <form> + <div class="aui-flex aui-form-nav investment_title" style="padding-bottom: 19px"> + <div class="aui-flex-box activeNav">{{t('sys.login.qrSignInFormTitle')}}</div> + </div> + <div class="aui-form-box"> + <div class="aui-account" style="padding: 30px 0"> + <div class="aui-ewm"> + <QrCode :value="qrCodeUrl" class="enter-x flex justify-center xl:justify-start" :width="280" /> + </div> + </div> + </div> + <div class="aui-formButton"> + <a class="aui-linek-code aui-link-register" @click="goBackHandleClick">{{t('sys.login.backSignIn')}}</a> + </div> + </form> + </div> + <div class="aui-flex aui-third-text"> + <div class="aui-flex-box aui-third-border"> + <span>{{ t('sys.login.otherSignIn') }}</span> + </div> + </div> + <div class="aui-flex" :class="`${prefixCls}-sign-in-way`"> + <div class="aui-flex-box"> + <div class="aui-third-login"> + <a href="" title="github" @click="onThirdLogin('github')"><GithubFilled /></a> + </div> + </div> + <div class="aui-flex-box"> + <div class="aui-third-login"> + <a href="" title="浼佷笟寰俊" @click="onThirdLogin('wechat_enterprise')"><icon-font class="item-icon" type="icon-qiyeweixin3" /></a> + </div> + </div> + <div class="aui-flex-box"> + <div class="aui-third-login"> + <a href="" title="閽夐拤" @click="onThirdLogin('dingtalk')"><DingtalkCircleFilled /></a> + </div> + </div> + <div class="aui-flex-box"> + <div class="aui-third-login"> + <a href="" title="寰俊" @click="onThirdLogin('wechat_open')"><WechatFilled /></a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <!-- 绗笁鏂圭櫥褰曠浉鍏冲脊妗� --> + <ThirdModal ref="thirdModalRef"></ThirdModal> +</template> + +<script lang="ts" setup name="mini-code-login"> + import { ref, onUnmounted } from 'vue'; + import { getLoginQrcode, getQrcodeToken } from '/@/api/sys/user'; + import { useUserStore } from '/@/store/modules/user'; + import { QrCode } from '/@/components/Qrcode/index'; + import ThirdModal from '/@/views/sys/login/ThirdModal.vue'; + import logoImg from '/@/assets/loginmini/icon/lanpu_logo.png'; + import adTextImg from '/@/assets/loginmini/icon/jeecg_ad_text.png'; + import { useI18n } from '/@/hooks/web/useI18n'; + import { useDesign } from "/@/hooks/web/useDesign"; + import { GithubFilled, WechatFilled, DingtalkCircleFilled, createFromIconfontCN } from '@ant-design/icons-vue'; + + const IconFont = createFromIconfontCN({ + scriptUrl: '//at.alicdn.com/t/font_2316098_umqusozousr.js', + }); + const { prefixCls } = useDesign('minilogin'); + const { t } = useI18n(); + const qrCodeUrl = ref<string>(''); + let timer: IntervalHandle; + const state = ref('0'); + const thirdModalRef = ref(); + const userStore = useUserStore(); + const emit = defineEmits(['go-back', 'success', 'register']); + + //鍔犺浇浜岀淮鐮佷俊鎭� + function loadQrCode() { + state.value = '0'; + getLoginQrcode().then((res) => { + qrCodeUrl.value = res.qrcodeId; + if (res.qrcodeId) { + openTimer(res.qrcodeId); + } + }); + } + //鐩戞帶鎵爜鐘舵�� + function watchQrcodeToken(qrcodeId) { + getQrcodeToken({ qrcodeId: qrcodeId }).then((res) => { + let token = res.token; + if (token == '-2') { + //浜岀淮鐮佽繃鏈熼噸鏂拌幏鍙� + loadQrCode(); + clearInterval(timer); + } + //鎵爜鎴愬姛 + if (res.success) { + state.value = '2'; + clearInterval(timer); + setTimeout(() => { + userStore.qrCodeLogin(token); + }, 500); + } + }); + } + + /** 寮�鍚畾鏃跺櫒 */ + function openTimer(qrcodeId) { + watchQrcodeToken(qrcodeId); + closeTimer(); + timer = setInterval(() => { + watchQrcodeToken(qrcodeId); + }, 1500); + } + + /** 鍏抽棴瀹氭椂鍣� */ + function closeTimer() { + if (timer) clearInterval(timer); + } + + /** + * 绗笁鏂圭櫥褰� + * @param type + */ + function onThirdLogin(type) { + thirdModalRef.value.onThirdLogin(type); + } + + /** + * 鍒濆鍖栬〃鍗� + */ + function initFrom() { + loadQrCode(); + } + + /** + * 杩斿洖 + */ + function goBackHandleClick() { + emit('go-back'); + closeTimer(); + } + + onUnmounted(() => { + closeTimer(); + }); + + defineExpose({ + initFrom, + }); +</script> +<style lang="less" scoped> +@import '/@/assets/loginmini/style/home.less'; +@import '/@/assets/loginmini/style/base.less'; +</style> -- Gitblit v1.9.3