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