odc.xiaohui
2023-11-09 b2ff79644a1ac74fc1f3ef3867e9e77f392eb7fa
src/views/login.vue
@@ -1,24 +1,24 @@
<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-item prop="username">
      <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 style="display: none" 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>
        </el-input>
      </el-form-item>
      <el-form-item prop="password">
      <el-form-item style="display: none" prop="password">
        <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="密码" @keyup.enter="handleLogin">
          <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
        </el-input>
      </el-form-item>
      <el-form-item prop="code" v-if="captchaEnabled">
      <el-form-item style="display: none" prop="code" v-if="captchaEnabled">
        <el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter="handleLogin">
          <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
        </el-input>
@@ -26,22 +26,22 @@
          <img :src="codeUrl" @click="getCode" class="login-code-img" />
        </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="width:100%;">
      <el-checkbox style="display: none;margin:0px 0px 25px 0px;" v-model="loginForm.rememberMe" >记住密码</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="display: none;width:100%;" >
        <el-button :loading="loading" size="large" type="primary" style="width:100%;" @click.prevent="handleLogin">
          <span v-if="!loading">登 录</span>
          <span v-else>登 录 中...</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,10 @@
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";
const userStore = useUserStore();
const router = useRouter();
@@ -82,7 +84,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 +92,7 @@
// 验证码开关
const captchaEnabled = ref(true);
// 租户开关
const tenantEnabled = ref(true);
const tenantEnabled = ref(false);
// 注册开关
@@ -125,7 +127,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;
@@ -201,12 +205,38 @@
  });
};
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();
onMounted(async () => {
  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')
  // getCode();
  // initTenantList();
  // getLoginData();
});
</script>