Browse Source

企业微信扫码登录

WorkWeChat
初十 3 years ago
parent
commit
fbd2745856
  1. 39
      vben28/src/views/sys/login/LoginForm.vue
  2. 44
      vben28/src/views/sys/login/WorkWeChatQrCodeForm.vue

39
vben28/src/views/sys/login/LoginForm.vue

@ -40,17 +40,17 @@
</Button> </Button>
</ACol> </ACol>
</ARow> </ARow>
<Divider class="enter-x">{{ t('sys.login.otherSignIn') }}</Divider> <Divider class="enter-x">{{ t('sys.login.otherSignIn') }}</Divider>
<div class="flex justify-evenly enter-x" :class="`${prefixCls}-sign-in-way`"> <div class="flex justify-evenly enter-x" :class="`${prefixCls}-sign-in-way`">
<a-button type="link" @click="workWechatLogin" aria-placeholder="sf" <a-button type="link" @click="workWechatLogin" aria-placeholder="sf"
><WechatFilled/> ><WechatFilled />
</a-button> </a-button>
</div> </div>
</Form> </Form>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, toRaw, unref, computed } from 'vue'; import { reactive, ref, toRaw, unref, computed, watch } from 'vue';
import { Checkbox, Form, Input, Row, Col, Button, Divider } from 'ant-design-vue'; import { Checkbox, Form, Input, Row, Col, Button, Divider } from 'ant-design-vue';
import { import {
@ -67,15 +67,10 @@
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
import { import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin';
LoginStateEnum,
useLoginState,
useFormRules,
useFormValid,
} from './useLogin';
import { useDesign } from '/@/hooks/web/useDesign'; import { useDesign } from '/@/hooks/web/useDesign';
//import { onKeyStroke } from '@vueuse/core'; //import { onKeyStroke } from '@vueuse/core';
import { useRouter, useRoute } from 'vue-router';
const ACol = Col; const ACol = Col;
const ARow = Row; const ARow = Row;
const FormItem = Form.Item; const FormItem = Form.Item;
@ -96,16 +91,28 @@
account: 'admin', account: 'admin',
password: '1q2w3E*', password: '1q2w3E*',
}); });
const router = useRouter();
const { currentRoute } = router;
const { validForm } = useFormValid(formRef); const { validForm } = useFormValid(formRef);
//onKeyStroke('Enter', handleLogin); //onKeyStroke('Enter', handleLogin);
const a = computed(() => {
const route = unref(currentRoute);
const query = route.query;
console.log(query);
debugger;
if (query) {
console.log(query);
debugger;
}
return;
});
const getShow = computed(() => unref(getLoginState) === LoginStateEnum.LOGIN); const getShow = computed(() => unref(getLoginState) === LoginStateEnum.LOGIN);
function workWechatLogin(){
function workWechatLogin() {
setLoginState(LoginStateEnum.WORKWECHAT_QR_CODE); setLoginState(LoginStateEnum.WORKWECHAT_QR_CODE);
debugger }
};
async function handleLogin() { async function handleLogin() {
const data = await validForm(); const data = await validForm();
@ -118,7 +125,7 @@
username: data.account, username: data.account,
tenantId: '', tenantId: '',
mode: 'none', // mode: 'none', //
}) }),
); );
if (userInfo) { if (userInfo) {
notification.success({ notification.success({

44
vben28/src/views/sys/login/WorkWeChatQrCodeForm.vue

@ -1,52 +1,38 @@
<template> <template>
<!-- <template> --> <!-- <template> -->
<div v-show="getShow"> <div v-show="getShow">
<!-- <LoginFormTitle class="enter-x" /> --> <!-- <LoginFormTitle class="enter-x" /> -->
<div class="enter-x min-w-64 min-h-64"> <div class="enter-x min-w-64 min-h-64">
<div class="qr_login" id="qr_login"></div> <div class="qr_login" id="qr_login"></div>
<Divider class="enter-x">{{ t('sys.login.scanSign') }}</Divider>
<Button size="large" block class="mt-4 enter-x" @click="handleBackLogin"> <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">
{{ t('sys.login.backSignIn') }} {{ t('sys.login.backSignIn') }}
</Button> </Button>
</div> </div>
</div> </div>
<!-- </template> --> <!-- </template> -->
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, unref,nextTick } from 'vue'; import { computed, unref, nextTick } from 'vue';
import LoginFormTitle from './LoginFormTitle.vue'; import LoginFormTitle from './LoginFormTitle.vue';
import { Button, Divider } from 'ant-design-vue'; import { Button, Divider } from 'ant-design-vue';
import { QrCode } from '/@/components/Qrcode/index'; import { QrCode } from '/@/components/Qrcode/index';
import { useRouter } from 'vue-router';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { useLoginState, LoginStateEnum } from './useLogin'; import { useLoginState, LoginStateEnum } from './useLogin';
const qrCodeUrl = 'https://vvbin.cn/next/login';
const { t } = useI18n(); const { t } = useI18n();
const { handleBackLogin, getLoginState } = useLoginState(); const { handleBackLogin, getLoginState } = useLoginState();
const getShow = computed(() => unref(getLoginState) === LoginStateEnum.WORKWECHAT_QR_CODE); const getShow = computed(() => unref(getLoginState) === LoginStateEnum.WORKWECHAT_QR_CODE);
nextTick(()=>{ nextTick(() => {
var wwLogin =new WwLogin({ var wwLogin = new WwLogin({
id: 'qr_login', id: 'qr_login',
appid: "wwd54b6d4fa4de4ac1", appid: 'wwd54b6d4fa4de4ac1',
agentid: "1000003", agentid: '1000003',
redirect_uri: encodeURI('http://myapp.com:4200/redirect'), redirect_uri: encodeURI('http://myapp.com:4200/login'),
state: "hellowecom", state: 'hellowecom',
href: "", href: '',
lang: "zh",}); lang: 'zh',
});
});
})
/**
* 使用watch监控当前 router 的变化
*/
// const router = useRouter()
// watch(() => router.currentRoute.value.path,(toPath) => {
// debugger
// //
// },{immediate: true,deep: true})
</script> </script>

Loading…
Cancel
Save