无人机管理后台前端(已迁走)
zrj
2024-07-17 70d56d7abee4786ceca3ba7b54c4e439091c17c3
登录对接调整
8 files modified
118 ■■■■■ changed files
index.html 17 ●●●● patch | view | raw | blame | history
src/api/user.js 2 ●●● patch | view | raw | blame | history
src/axios.js 20 ●●●● patch | view | raw | blame | history
src/config/website.js 4 ●●●● patch | view | raw | blame | history
src/lang/zh.js 4 ●●●● patch | view | raw | blame | history
src/page/login/index.vue 34 ●●●● patch | view | raw | blame | history
src/page/login/userlogin.vue 34 ●●●● patch | view | raw | blame | history
src/store/modules/user.js 3 ●●●● patch | view | raw | blame | history
index.html
@@ -17,21 +17,22 @@
  <link rel='stylesheet' href='/iconfont/saber/iconfont.css'>
  <link rel='stylesheet' href='/css/loading.css'>
  <link rel='stylesheet' href='/css/saber.css'>
  <title>Saber企业级开发平台</title>
  <title>无人机后台管理系统</title>
</head>
<body>
<div id='app'>
  <div id='loader-wrapper'>
    <div class='loader-box'>
      <span>Saber</span>
      <span>企</span>
      <span>业</span>
      <span>级</span>
      <span>开</span>
      <span>发</span>
      <span>平</span>
      <span>无</span>
      <span>人</span>
      <span>机</span>
      <span>后</span>
      <span>台</span>
      <span>管</span>
      <span>理</span>
      <span>系</span>
      <span>统</span>
    </div>
    <div class='loader-title'>系统加载中</div>
  </div>
src/api/user.js
@@ -17,7 +17,7 @@
      tenantId,
      username,
      password,
      grant_type: website.captchaMode ? 'captcha' : 'password',
      grant_type: 'password',
      scope: 'all',
      type,
    },
src/axios.js
@@ -67,16 +67,16 @@
        : 'bearer ' + token;
    }
    // 开启报文加密
    if (cryptoData) {
      if (config.params) {
        const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
        config.params = { data };
      }
      if (config.data) {
        config.text = true;
        config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
      }
    }
    // if (cryptoData) {
    //   if (config.params) {
    //     const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
    //     config.params = { data };
    //   }
    //   if (config.data) {
    //     config.text = true;
    //     config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
    //   }
    // }
    //headers中配置text请求
    if (config.text === true) {
      config.headers['Content-Type'] = 'text/plain';
src/config/website.js
@@ -6,8 +6,8 @@
  logo: 'S',
  key: 'saber', //配置主键,目前用于存储
  indexTitle: 'Saber Admin',
  clientId: 'saber3', // 客户端id
  clientSecret: 'saber3_secret', // 客户端密钥
  clientId: 'drone', // 客户端id
  clientSecret: 'drone_secret', // 客户端密钥
  tenantMode: true, // 是否开启租户模式
  tenantId: '000000', // 管理组租户编号
  captchaMode: true, // 是否开启验证码模式
src/lang/zh.js
@@ -1,5 +1,5 @@
export default {
  title: 'Saber企业级开发平台',
  title: '无人机后台管理系统',
  logoutTip: '退出系统, 是否继续?',
  submitText: '确定',
  cancelText: '取消',
@@ -78,7 +78,7 @@
  },
  login: {
    title: '登录 ',
    info: 'BladeX 企业级开发平台',
    info: '无人机后台管理系统',
    tenantId: '请输入租户ID',
    username: '请输入账号',
    password: '请输入密码',
src/page/login/index.vue
@@ -6,46 +6,24 @@
          {{ time }}
        </div>
        <p class="title">{{ $t('login.info') }}</p>
        <div style="font-size: 15px">
          <span>----------------------------------------------</span>
          <br />
          <span>管理租户编号:000000</span>
          <br />
          <span>超级管理员账号: admin / admin</span>
          <br />
          <span>人事账号: hr / hr</span>
          <br />
          <span>经理账号: manager / manager</span>
          <br />
          <span>老板账号: boss / boss</span>
          <br />
          <span>----------------------------------------------</span>
          <br />
          <span>普通租户编号:详见租户管理模块</span>
          <br />
          <span>租户管理员账号: admin / admin</span>
          <br />
          <span>----------------------------------------------</span>
        </div>
        <!--<img class="img" src="/img/logo.png" alt="">-->
      </div>
      <div class="login-border">
        <div class="login-main">
          <h4 class="login-title">
            {{ $t('login.title') }}{{ website.title }}
            <top-lang></top-lang>
            {{ $t('login.title') }}
            <!-- <top-lang></top-lang> -->
          </h4>
          <userLogin v-if="activeName === 'user'"></userLogin>
          <codeLogin v-else-if="activeName === 'code'"></codeLogin>
          <thirdLogin v-else-if="activeName === 'third'"></thirdLogin>
          <div class="login-menu">
          <!-- <codeLogin v-else-if="activeName === 'code'"></codeLogin> -->
          <!-- <thirdLogin v-else-if="activeName === 'third'"></thirdLogin> -->
          <!-- <div class="login-menu">
            <a href="#" @click.stop="activeName = 'user'">{{ $t('login.userLogin') }}</a>
            <a href="#" @click.stop="activeName = 'code'">{{ $t('login.phoneLogin') }}</a>
            <a href="#" @click.stop="activeName = 'third'">{{ $t('login.thirdLogin') }}</a>
            <a :href="website.oauth2.ssoUrl + website.oauth2.redirectUri">{{
              $t('login.ssoLogin')
            }}</a>
          </div>
          </div> -->
        </div>
      </div>
    </div>
src/page/login/userlogin.vue
@@ -7,7 +7,7 @@
    :model="loginForm"
    label-width="0"
  >
    <el-form-item v-if="tenantMode" prop="tenantId">
    <!-- <el-form-item v-if="tenantMode" prop="tenantId">
      <el-input
        @keyup.enter="handleLogin"
        v-model="loginForm.tenantId"
@@ -18,7 +18,7 @@
          <i class="icon-quanxian" />
        </template>
      </el-input>
    </el-form-item>
    </el-form-item> -->
    <el-form-item prop="username">
      <el-input
        @keyup.enter="handleLogin"
@@ -47,7 +47,7 @@
        </template>
      </el-input>
    </el-form-item>
    <el-form-item v-if="this.website.captchaMode" prop="code">
    <!-- <el-form-item v-if="this.website.captchaMode" prop="code">
      <el-row :span="24">
        <el-col :span="16">
          <el-input
@@ -67,7 +67,7 @@
          </div>
        </el-col>
      </el-row>
    </el-form-item>
    </el-form-item> -->
    <el-form-item>
      <el-button
        type="primary"
@@ -75,20 +75,20 @@
        :class="this.registerMode ? 'login-submit' : 'btn-submit'"
        >{{ $t('login.submit') }}
      </el-button>
      <el-button
      <!-- <el-button
        v-if="this.registerMode"
        type="danger"
        @click.prevent="handleRegister"
        class="register-submit"
        >{{ $t('login.register') }}
      </el-button>
      </el-button> -->
    </el-form-item>
    <el-dialog title="用户信息选择" append-to-body v-model="userBox" width="350px">
    <!-- <el-dialog title="用户信息选择" append-to-body v-model="userBox" width="350px">
      <avue-form :option="userOption" v-model="userForm" @submit="submitLogin" />
    </el-dialog>
    <el-dialog title="用户信息注册" append-to-body v-model="registerBox" width="350px">
      <avue-form :option="registerOption" v-model="registerForm" @submit="submitRegister" />
    </el-dialog>
    </el-dialog> -->
  </el-form>
</template>
@@ -112,9 +112,9 @@
        //角色ID
        roleId: '',
        //用户名
        username: 'admin',
        username: '',
        //密码
        password: 'admin',
        password: '',
        //账号类型
        type: 'account',
        //验证码的值
@@ -313,13 +313,13 @@
  props: [],
  methods: {
    refreshCode() {
      if (this.website.captchaMode) {
        getCaptcha().then(res => {
          const data = res.data;
          this.loginForm.key = data.key;
          this.loginForm.image = data.image;
        });
      }
      // if (this.website.captchaMode) {
      //   getCaptcha().then(res => {
      //     const data = res.data;
      //     this.loginForm.key = data.key;
      //     this.loginForm.image = data.image;
      //   });
      // }
    },
    showPassword() {
      this.passwordType === '' ? (this.passwordType = 'password') : (this.passwordType = '');
src/store/modules/user.js
@@ -23,6 +23,7 @@
import { formatPath } from '@/router/avue-router';
import { ElMessage } from 'element-plus';
import { encrypt } from '@/utils/sm2';
import md5 from 'js-md5';
const user = {
  state: {
@@ -45,7 +46,7 @@
          userInfo.deptId,
          userInfo.roleId,
          userInfo.username,
          encrypt(userInfo.password),
          md5(userInfo.password),
          userInfo.type,
          userInfo.key,
          userInfo.code