vue3--第三方登陆代码

<template>	
<el-form ref="FormRef" :model="loginForm" :rules="loginRules">

<el-form-item prop="username">
<el-input v-model="loginForm.username" placeholder="用户名:admin / user">
<template #prefix>
<el-icon class="el-input__icon"><user /></el-icon>
</template>
</el-input></el-form-item>
<el-form-item prop="password">
<el-input type="password" v-model="loginForm.password" placeholder="密码:123456" show-password autocomplete="new-password">
<template #prefix>
<el-icon class="el-input__icon"><lock /></el-icon>
</template>
</el-input></el-form-item>
</el-form>
	

<el-button :icon="CircleClose" round @click="resetForm(FormRef)" size="large">重置</el-button>
<div class="login-btn">		
<a :href="feishuUrl" class="el-button el-button--primary"> <i class="UserFilled"></i>飞书登录 </a>			
</div>

</template>
<script setup lang="ts">
import { ref, reactive, onMounted } from "vue";
import { useRouter } from "vue-router";
import { Login } from "@/api/Login ";
import { CircleClose, UserFilled } from "@element-plus/icons-vue";
import type { ElForm } from "element-plus";
import { ElMessage } from "element-plus";
import { loginApi } from "@/api/modules/login";
import { GbStore } from "@/store";
import { MenuStore } from "@/store/modules/menus";
import { TabsStore } from "@/store/modules/tabs";
import md5 from "js-md5";


const globalStore = GbStore ();
const menuStore = MenuStore();
const tabStore = TabsStore();// 定义 formRef(校验规则)type FormInstance = InstanceType<typeof ElForm>;
const loginFormRef = ref<FormInstance>();
const loginRules = reactive({	
username: [{ required: true, message: "请输入用户名", trigger: "blur" }],	
password: [{ required: true, message: "请输入密码", trigger: "blur" }]});


const loginForm = reactive<Login.ReqLoginForm>({	username: "",	password: ""});
const redirectUri = window.location.origin + "/login";
const loading = ref<boolean>(false);const feishuUrl = ref<string>(	`https://passport.feishu.cn/suite/passport/oauth/authorize?client_id=${cli_a6bfedf23fbcd88d"}&redirect_uri=${encodeURIComponent(redirectUri)}&response_type=code`);

const router = useRouter();
const login = async (code: string) => {	loading.value = true;	
globalStore.setToken("");
globalStore.setOrganizationCode("");
globalStore.setFunctionGroup("");
globalStore.setUserInfo("");

try {
const requestLoginForm: any = {	
entrance: "PC",
loginType: "FEISHU",
redirectUri,
code,systemCode: "developerConsole",
clientId: "4f8e1f28-2356-4の24-8479-fd45790dc35a"
};

const res = await loginApi(requestLoginForm);	globalStore.setToken(res.data!.access_token);
menuStore.setMenuList([]);
tabStore.closeMultipleTab();
ElMessage.success("登录成功!");	
router.push({ name: "home" });	
} finally {
loading.value = false;	}};

onMounted(() => {	let code: string = window.location.href.match(/\=(.*?)\#/) ? (window.location.href.match(/\=(.*?)\#/) as any)[1] : "";	

if (code) {		
window.location.href = window.location.origin + "/login?code=" + code;	
} else if (router.currentRoute.value.query.code) {

let code1: any = router.currentRoute.value.query.code;
login(code1);
}



</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小可爱的小飞云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值