无人机管理后台前端(已迁走)
zrj
2024-07-19 f8c9a8c7e4e99d329aa0bc78ec3407320571da5b
动态系统名称
10 files modified
160 ■■■■ changed files
index.html 81 ●●●●● patch | view | raw | blame | history
src/api/user.js 7 ●●●●● patch | view | raw | blame | history
src/config/website.js 2 ●●● patch | view | raw | blame | history
src/lang/zh.js 2 ●●● patch | view | raw | blame | history
src/page/index/logo.vue 7 ●●●● patch | view | raw | blame | history
src/page/login/index.vue 14 ●●●●● patch | view | raw | blame | history
src/page/login/userlogin.vue 1 ●●●● patch | view | raw | blame | history
src/store/getters.js 1 ●●●● patch | view | raw | blame | history
src/store/modules/user.js 10 ●●●●● patch | view | raw | blame | history
src/views/system/dept.vue 35 ●●●●● patch | view | raw | blame | history
index.html
@@ -1,29 +1,32 @@
<!DOCTYPE html>
<html lang='en'>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="renderer" content="webkit" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"
    />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="format-detection" content="telephone=no" />
    <link rel="icon" href="/favicon.png" />
    <link rel="stylesheet" href="/iconfont/index.css" />
    <link rel="stylesheet" href="/iconfont/avue/iconfont.css" />
    <link rel="stylesheet" href="/iconfont/saber/iconfont.css" />
    <link rel="stylesheet" href="/css/loading.css" />
    <link rel="stylesheet" href="/css/saber.css" />
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <title>中图智绘低空无人机监测网平台</title>
  </head>
<head>
  <meta charset='UTF-8' />
  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
  <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  <meta http-equiv='X-UA-Compatible' content='chrome=1' />
  <meta name='renderer' content='webkit'>
  <meta name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'>
  <meta name='apple-mobile-web-app-capable' content='yes'>
  <meta name='apple-mobile-web-app-status-bar-style' content='black'>
  <meta name='format-detection' content='telephone=no'>
  <link rel='icon' href='/favicon.png' />
  <link rel='stylesheet' href='/iconfont/index.css'>
  <link rel='stylesheet' href='/iconfont/avue/iconfont.css'>
  <link rel='stylesheet' href='/iconfont/saber/iconfont.css'>
  <link rel='stylesheet' href='/css/loading.css'>
  <link rel='stylesheet' href='/css/saber.css'>
  <title>中图智绘低空无人机监测网平台</title>
</head>
<body>
<div id='app'>
  <div id='loader-wrapper'>
    <div class='loader-box'>
  <body>
    <div id="app">
      <div id="loader-wrapper">
        <!-- <div class='loader-box'>
      <span>无</span>
      <span>人</span>
      <span>机</span>
@@ -33,11 +36,31 @@
      <span>理</span>
      <span>系</span>
      <span>统</span>
    </div> -->
        <div class="loader-title">系统加载中</div>
      </div>
    </div>
    <div class='loader-title'>系统加载中</div>
  </div>
</div>
<script type='module' src='/src/main.js'></script>
</body>
    <script type="module" src="/src/main.js"></script>
  </body>
  <!-- <script>
    document.addEventListener('DOMContentLoaded', function () {
      var getData = function (name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return decodeURI(r[2]);
        return null;
      };
      var id = getData('id') || 2;
      console.log(id, 888);
      axios.get('http://127.0.0.1/blade-system/sysConfig/getDetail?id=' + id).then(function (res) {
        var data = res.data.data;
        console.log(data, 5555);
        // window.document.title = data.name;
        document.title = data.name;
      });
    });
  </script> -->
</html>
src/api/user.js
@@ -171,3 +171,10 @@
      phone,
    },
  });
export const getParentDeptInfo = params =>
  request({
    url: '/blade-system/dept/getParentDeptInfo',
    method: 'get',
    params: params,
  });
src/config/website.js
@@ -5,7 +5,7 @@
  title: 'saber',
  logo: 'S',
  key: 'saber', //配置主键,目前用于存储
  indexTitle: '中图智绘低空无人机监测网平台',
  indexTitle: '',
  clientId: 'drone', // 客户端id
  clientSecret: 'drone_secret', // 客户端密钥
  tenantMode: true, // 是否开启租户模式
src/lang/zh.js
@@ -78,7 +78,7 @@
  },
  login: {
    title: '登录 ',
    info: '中图智绘低空无人机监测网平台',
    info: '',
    tenantId: '请输入租户ID',
    username: '请输入账号',
    password: '请输入密码',
src/page/index/logo.vue
@@ -7,7 +7,7 @@
    </transition>
    <transition-group name="fade">
      <template v-if="getScreen(!isCollapse)">
        <span class="avue-logo_title" key="1">{{ website.indexTitle }} </span>
        <span style="font-size: 15px;" class="avue-logo_title" key="1">{{ this.parentDeptInfo.sysName }} </span>
      </template>
    </transition-group>
  </div>
@@ -21,9 +21,12 @@
  data() {
    return {};
  },
  created() {},
  created() {
  },
  computed: {
    ...mapGetters(['isCollapse']),
    ...mapGetters(['userInfo']),
    ...mapGetters(['parentDeptInfo']),
  },
  methods: {},
};
src/page/login/index.vue
@@ -5,7 +5,7 @@
        <div class="login-time">
          {{ time }}
        </div>
        <p class="title">{{ $t('login.info') }}</p>
        <p class="title">{{ login.info }}</p>
      </div>
      <div class="login-border">
        <div class="login-main">
@@ -37,6 +37,7 @@
import { validatenull } from '@/utils/validate';
import topLang from '@/page/index/top/top-lang.vue';
import { getQueryString, getTopUrl } from '@/utils/util';
import { getDetail } from '@/api/system/sysConfig'
import website from '@/config/website';
export default {
@@ -49,6 +50,9 @@
  },
  data() {
    return {
      login:{
        info: '中图智绘低空无人机监测网平台'
      },
      website: website,
      time: '',
      activeName: 'user',
@@ -68,6 +72,7 @@
  created() {
    this.handleLogin();
    this.getTime();
    this.getSysConfigInfo();
  },
  mounted() {},
  computed: {
@@ -75,6 +80,13 @@
  },
  props: [],
  methods: {
    // 动态获取系统名称
    getSysConfigInfo(){
      let sysConfigId = this.$route.query?.id || 2;
      getDetail(sysConfigId).then(res=>{
        this.login.info = res.data.data.name
      })
    },
    getTime() {
      setInterval(() => {
        this.time = this.$dayjs().format('YYYY-MM-DD HH:mm:ss');
src/page/login/userlogin.vue
@@ -70,6 +70,7 @@
    </el-form-item> -->
    <el-form-item>
      <el-button
        style="width: 100%;"
        type="primary"
        @click.prevent="handleLogin"
        :class="this.registerMode ? 'login-submit' : 'btn-submit'"
src/store/getters.js
@@ -29,6 +29,7 @@
  menuId: state => state.user.menuId,
  menu: state => state.user.menu,
  menuAll: state => state.user.menuAll,
  parentDeptInfo: state => state.user.parentDeptInfo,
  logsList: state => state.logs.logsList,
  logsLen: state => state.logs.logsList.length || 0,
  logsFlag: (state, getters) => getters.logsLen === 0,
src/store/modules/user.js
@@ -18,6 +18,7 @@
  refreshToken,
  getButtons,
  registerUser,
  getParentDeptInfo
} from '@/api/user';
import { getRoutes, getTopMenu } from '@/api/system/menu';
import { formatPath } from '@/router/avue-router';
@@ -36,6 +37,7 @@
    menuAll: getStore({ name: 'menuAll' }) || [],
    token: getStore({ name: 'token' }) || '',
    refreshToken: getStore({ name: 'refreshToken' }) || '',
    parentDeptInfo: getStore({ name: 'parentDeptInfo' }) || '',
  },
  actions: {
    //根据用户名登录
@@ -63,6 +65,7 @@
              commit('SET_REFRESH_TOKEN', data.refresh_token);
              commit('SET_TENANT_ID', data.tenant_id);
              commit('SET_USER_INFO', data);
              commit('SET_PARENT_DEPT_INFO', data.dept_id);
              commit('DEL_ALL_TAG');
              commit('CLEAR_LOCK');
            }
@@ -288,6 +291,13 @@
    },
  },
  mutations: {
    SET_PARENT_DEPT_INFO(state, deptId){
      getParentDeptInfo({deptId:deptId}).then(res=>{
        const data = res.data.data;
        state.parentDeptInfo = data;
        setStore({ name: 'parentDeptInfo', content: data });
      })
    },
    SET_TOKEN: (state, token) => {
      setToken(token);
      state.token = token;
src/views/system/dept.vue
@@ -170,6 +170,41 @@
            ],
          },
          {
            label: '机构性质',
            type: 'select',
            dicUrl: '/blade-system/dict/dictionary?code=org_nature',
            props: {
              label: 'dictValue',
              value: 'dictKey',
            },
            dataType: 'number',
            width: 120,
            labelWidth:120,
            prop: 'deptNature',
            slot: true,
            rules: [
              {
                required: true,
                message: '请输入机构性质',
                trigger: 'blur',
              },
            ],
          },
          {
            label: '绑定编号',
            width: 120,
            labelWidth:120,
            prop: 'bindCode',
            slot: true,
            rules: [
              {
                required: false,
                message: '请输入绑定编号',
                trigger: 'blur',
              },
            ],
          },
          {
            label: '排序',
            prop: 'sort',
            type: 'number',