无人机管理后台前端(已迁走)
GuLiMmo
2024-08-29 de14896f6b19aeafc074ec85131f46ed1fb3e83e
fix:免密登录
7 files modified
96 ■■■■ changed files
src/main.js 13 ●●●●● patch | view | raw | blame | history
src/permission.js 15 ●●●●● patch | view | raw | blame | history
src/store/modules/user.js 1 ●●●● patch | view | raw | blame | history
src/utils/validate.js 13 ●●●●● patch | view | raw | blame | history
src/views/device/airport.vue 33 ●●●●● patch | view | raw | blame | history
vite.config.mjs 4 ●●●● patch | view | raw | blame | history
yarn.lock 17 ●●●●● patch | view | raw | blame | history
src/main.js
@@ -12,6 +12,9 @@
import '@smallwei/avue/lib/index.css';
import crudCommon from '@/mixins/crud.js';
import { getScreen } from './utils/util';
import { getUrlParams } from './utils/validate'
import { setToken, setRefreshToken } from './utils/auth';
import { setStore } from './utils/store';
import './permission';
import error from './error';
import avueUeditor from 'avue-plugin-ueditor';
@@ -27,6 +30,16 @@
// 业务组件
import tenantPackage from './views/system/tenantpackage.vue';
// 获取url中是否存在token
const urlParams = getUrlParams(window.location.href)
if (urlParams?.token) {
  // 设置cookie和localStorage
  setStore('saber-token', urlParams.token)
  setToken(urlParams.token)
  setRefreshToken(urlParams.token)
}
window.$crudCommon = crudCommon;
window.axios = axios;
const app = createApp(App);
src/permission.js
@@ -1,10 +1,22 @@
/*
 * @Author: GuLiMmo 2820890765@qq.com
 * @Date: 2024-08-23 10:51:53
 * @LastEditors: GuLiMmo 2820890765@qq.com
 * @LastEditTime: 2024-08-29 14:10:56
 * @FilePath: /drone-web-manage/src/permission.js
 * @Description:
 * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
 */
import router from './router/';
import store from './store';
import { getToken } from '@/utils/auth';
import { getUrlParams } from './utils/validate'
import NProgress from 'nprogress'; // progress bar
import 'nprogress/nprogress.css'; // progress bar style
NProgress.configure({ showSpinner: false });
const lockPage = '/lock'; //锁屏页
const urlParams = getUrlParams(window.location.href)
router.beforeEach((to, from, next) => {
  const meta = to.meta || {};
  const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
@@ -17,7 +29,8 @@
      //如果登录成功访问登录页跳转到主页
      next({ path: '/' });
    } else {
      if (store.getters.token.length === 0) {
      const systemToken = store.getters.token || urlParams?.token
      if (systemToken === 0) {
        store.dispatch('FedLogOut').then(() => {
          next({ path: '/login' });
        });
src/store/modules/user.js
@@ -236,7 +236,6 @@
            commit('CLEAR_LOCK');
            removeToken();
            removeRefreshToken();
            removeToken();
            resolve();
          })
          .catch(error => {
src/utils/validate.js
@@ -272,3 +272,16 @@
  }
  return false;
}
// 获取url中的参数
export function getUrlParams(url) {
  const urlObj = new URL(window.location.href);
  const params = new URLSearchParams(urlObj.search);
  const urlParams = {};
  // 遍历每个参数
  for (let [key, value] of params) {
    // 将参数添加到对象中
    urlParams[key] = value;
  }
  return urlParams;
}
src/views/device/airport.vue
@@ -59,19 +59,26 @@
          v-if="row.firmware_status == 1"
          style="display: flex; flex-direction: row; align-items: center"
        >
          <div style="background-color: #f1f1f1; border-radius: 4px">无需升级</div>
          <el-tag type="info">无需升级</el-tag>
          <!-- <div style="background-color: #f1f1f1; border-radius: 4px">无需升级</div> -->
        </div>
        <div
          v-if="row.firmware_status == 2"
          style="display: flex; flex-direction: row; align-items: center"
        >
          <div @click="updateFirmware(row)" class="firmware_status">升级固件</div>
          <el-tag type="success" effect="dark" class="active-element" @click="updateFirmware(row)"
            >升级固件</el-tag
          >
          <!-- <div @click="updateFirmware(row)" class="firmware_status">升级固件</div> -->
        </div>
        <div
          v-if="row.firmware_status == 3"
          style="display: flex; flex-direction: row; align-items: center"
        >
          <div @click="updateFirmware(row)" class="firmware_status">一致性升级</div>
          <el-tag type="success" effect="dark" class="active-element" @click="updateFirmware(row)"
            >一致性升级</el-tag
          >
          <!-- <div @click="updateFirmware(row)" class="firmware_status">一致性升级</div> -->
        </div>
        <div
          v-if="row.firmware_status == 4"
@@ -129,9 +136,7 @@
  ota,
} from '@/api/device/device';
import {
  getLazyTree
} from '@/api/base/region';
import { getLazyTree } from '@/api/base/region';
import { mapGetters } from 'vuex';
import FirmwareManage from './components/firmwareManage.vue';
@@ -319,12 +324,12 @@
            prop: 'area_code',
            type: 'cascader',
            labelWidth: 130,
            hide:true,
            hide: true,
            props: {
              label: 'title',
              value: 'value',
            },
            dataType:"string",
            dataType: 'string',
            rules: [
              {
                required: true,
@@ -350,7 +355,7 @@
                  list = res.data.data;
                  callback();
                });
              } else if (level>0 && level<5 ) {
              } else if (level > 0 && level < 5) {
                getLazyTree(node.value).then(res => {
                  list = res.data.data;
                  callback();
@@ -710,7 +715,7 @@
};
</script>
<style>
<style lang="scss" scoped>
.firmware_status {
  background-color: aqua;
  border-radius: 4px;
@@ -719,4 +724,12 @@
  cursor: pointer;
  /* color: aqua; */
}
.active-element {
  cursor: pointer;
  &:hover {
    background-color: #409eff;
    border-color: #409eff;
  }
}
</style>
vite.config.mjs
@@ -46,8 +46,8 @@
      port: 2888,
      proxy: {
        '/api': {
          target: 'http://localhost',
          // target: 'https://wrj.shuixiongit.com/api',
          // target: 'http://localhost',
          target: 'https://wrj.shuixiongit.com/api',
          changeOrigin: true,
          rewrite: path => path.replace(/^\/api/, ''),
        },
yarn.lock
@@ -37,10 +37,10 @@
  resolved "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz"
  integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
"@esbuild/win32-x64@0.20.2":
"@esbuild/darwin-arm64@0.20.2":
  version "0.20.2"
  resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz"
  integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz"
  integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
"@floating-ui/core@^1.5.3":
  version "1.5.3"
@@ -175,10 +175,10 @@
    estree-walker "^2.0.2"
    picomatch "^2.3.1"
"@rollup/rollup-win32-x64-msvc@4.18.0":
"@rollup/rollup-darwin-arm64@4.18.0":
  version "4.18.0"
  resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz"
  integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==
  resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz"
  integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==
"@saber/nf-design-base-elp@^1.2.0":
  version "1.2.0"
@@ -853,6 +853,11 @@
    jsonfile "^6.0.1"
    universalify "^2.0.0"
fsevents@~2.3.2, fsevents@~2.3.3:
  version "2.3.3"
  resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
glob-parent@^5.1.2, glob-parent@~5.1.2:
  version "5.1.2"
  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"