QrCodeForm.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <template v-if="getShow">
  3. <LoginFormTitle class="enter-x" />
  4. <div class="enter-x min-w-64 min-h-64">
  5. <QrCode
  6. :value="qrCodeUrl"
  7. class="enter-x flex justify-center xl:justify-start"
  8. :width="280"
  9. />
  10. <Divider class="enter-x">{{ t('sys.login.scanSign') }}</Divider>
  11. <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
  12. {{ t('sys.login.backSignIn') }}
  13. </Button>
  14. </div>
  15. </template>
  16. </template>
  17. <script lang="ts">
  18. import { defineComponent, computed, unref } from 'vue';
  19. import LoginFormTitle from './LoginFormTitle.vue';
  20. import { Button, Divider } from 'ant-design-vue';
  21. import { QrCode } from '/@/components/Qrcode/index';
  22. import { useI18n } from '/@/hooks/web/useI18n';
  23. import { useLoginState, LoginStateEnum } from './useLogin';
  24. const qrCodeUrl = 'https://vvbin.cn/next/login';
  25. export default defineComponent({
  26. name: 'QrCodeForm',
  27. components: {
  28. Button,
  29. QrCode,
  30. Divider,
  31. LoginFormTitle,
  32. },
  33. setup() {
  34. const { t } = useI18n();
  35. const { handleBackLogin, getLoginState } = useLoginState();
  36. const getShow = computed(() => unref(getLoginState) === LoginStateEnum.QR_CODE);
  37. return {
  38. t,
  39. handleBackLogin,
  40. qrCodeUrl,
  41. getShow,
  42. };
  43. },
  44. });
  45. </script>