xiangpei
2024-11-12 79b9c73e0717c244391ab1e15c6f6da9975f2610
src/views/login.vue
@@ -1,13 +1,13 @@
<template>
  <div class="login">
    <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
      <h3 class="title">RuoYi-Vue-Plus多租户管理系统</h3>
      <el-form-item prop="tenantId" v-if="tenantEnabled">
        <el-select v-model="loginForm.tenantId" filterable placeholder="请选择/输入公司名称" style="width: 100%">
          <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>
          <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
        </el-select>
      </el-form-item>
    <el-form style="display: none" ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
      <h3 class="title">跨网文件同步系统</h3>
<!--      <el-form-item prop="tenantId" v-if="tenantEnabled">-->
<!--        <el-select v-model="loginForm.tenantId" filterable placeholder="请选择/输入公司名称" style="width: 100%">-->
<!--          <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>-->
<!--          <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>-->
<!--        </el-select>-->
<!--      </el-form-item>-->
      <el-form-item prop="username">
        <el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号">
          <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
@@ -27,20 +27,20 @@
        </div>
      </el-form-item>
      <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
      <el-form-item style="float: right;">
        <el-button circle title="微信登录" @click="doSocialLogin('wechat')">
          <svg-icon icon-class="wechat" />
        </el-button>
        <el-button circle title="MaxKey登录" @click="doSocialLogin('maxkey')">
          <svg-icon icon-class="maxkey" />
        </el-button>
        <el-button circle title="Gitee登录" @click="doSocialLogin('gitee')">
          <svg-icon icon-class="gitee" />
        </el-button>
        <el-button circle title="Github登录" @click="doSocialLogin('github')">
          <svg-icon icon-class="github" />
        </el-button>
      </el-form-item>
      <!--      <el-form-item style="float: right;">-->
      <!--        <el-button circle title="微信登录" @click="doSocialLogin('wechat')">-->
<!--          <svg-icon icon-class="wechat" />-->
<!--        </el-button>-->
<!--        <el-button circle title="MaxKey登录" @click="doSocialLogin('maxkey')">-->
<!--          <svg-icon icon-class="maxkey" />-->
<!--        </el-button>-->
<!--        <el-button circle title="Gitee登录" @click="doSocialLogin('gitee')">-->
<!--          <svg-icon icon-class="gitee" />-->
<!--        </el-button>-->
<!--        <el-button circle title="Github登录" @click="doSocialLogin('github')">-->
<!--          <svg-icon icon-class="github" />-->
<!--        </el-button>-->
<!--      </el-form-item>-->
      <el-form-item style="width:100%;">
        <el-button :loading="loading" size="large" type="primary" style="width:100%;" @click.prevent="handleLogin">
          <span v-if="!loading">登 录</span>
@@ -53,7 +53,7 @@
    </el-form>
    <!--  底部  -->
    <div class="el-login-footer">
      <span>Copyright © 2018-2023 疯狂的狮子Li All Rights Reserved.</span>
      <span>Copyright © 优创力.</span>
    </div>
  </div>
</template>
@@ -63,8 +63,11 @@
import { authBinding } from '@/api/system/social/auth';
import { useUserStore } from '@/store/modules/user';
import { LoginData, TenantVO } from '@/api/types';
import { to } from 'await-to-js';
import { to as tos, to } from "await-to-js";
import { HttpStatus } from "@/enums/RespEnum";
import { createUser } from "@/api/system/oss";
import { setToken } from "@/utils/auth";
import FingerprintJS from '@fingerprintjs/fingerprintjs'
const userStore = useUserStore();
const router = useRouter();
@@ -82,7 +85,7 @@
  tenantId: [{ required: true, trigger: "blur", message: "请输入您的租户编号" }],
  username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
  password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
  code: [{ required: false, trigger: 'change', message: '请输入验证码' }]
  code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
};
const codeUrl = ref('');
@@ -90,7 +93,7 @@
// 验证码开关
const captchaEnabled = ref(true);
// 租户开关
const tenantEnabled = ref(true);
const tenantEnabled = ref(false);
// 注册开关
@@ -125,7 +128,9 @@
      console.log(loginForm.value);
      const [err] = await to(userStore.login(loginForm.value));
      if (!err) {
        await router.push({ path: redirect.value || '/' });
        console.log(redirect.value);
        // await router.push({ path: redirect.value || '/' });
        await router.push({ path: '/oss' || '/' });
        loading.value = false;
      } else {
        loading.value = false;
@@ -202,11 +207,54 @@
};
const setAddUser = async (val: any | number | (string | number)[]) => {
  console.log(val);
  const res = await createUser(val)
  console.log(res);
  if (res.code == 200) {
    const data = res.data;
    setToken(data.access_token);
onMounted(() => {
  getCode();
  initTenantList();
  getLoginData();
  }
}
function getRandomSixDigitNumber(): number {
  return Math.floor(Math.random() * 900000) + 100000;
}
const randomSixDigitNumber = getRandomSixDigitNumber();
onMounted(async () => {
  FingerprintJS.load().then(fp => {
    fp.get().then(result => {
      const visitorId = result.visitorId;
      console.log(visitorId,'浏览器指纹识别码');
    });
  });
  let obj = {
    username: randomSixDigitNumber
  }
await setAddUser(obj)
  // try {
  //   // 使用fetch API获取当前IP地址
  //   await fetch('https://api.ipify.org/?format=json')
  //     .then(response => response.json())
  //     .then(async data => {
  //       let obj = {
  //         username: data.ip
  //       }
  //       await setAddUser(obj)
  //     })
  //     .catch(error => {
  //       console.error('获取IP地址失败:', error);
  //     });
  // } catch (error) {
  //   console.log(error);
  // }
  // router.push('index')
});
</script>