Commit e6b0bf0e authored by “yiyousong”'s avatar “yiyousong”

pref:修改title和logo获取

parent 74025df0
...@@ -10,4 +10,6 @@ VUE_APP_PORTAL_URL = http://192.168.0.98:11072 ...@@ -10,4 +10,6 @@ VUE_APP_PORTAL_URL = http://192.168.0.98:11072
# 站点请求地址 # 站点请求地址
VUE_APP_SITETREE_URL = http://192.168.0.98:11078/base/site/siteTree VUE_APP_SITETREE_URL = http://192.168.0.98:11078/base/site/siteTree
# 系统名称
VUE_APP_sysName = "设备物联网"
...@@ -2,3 +2,5 @@ ...@@ -2,3 +2,5 @@
NODE_ENV = "development" NODE_ENV = "development"
VUE_APP_BASE_API= http://192.168.0.98:11091/m VUE_APP_BASE_API= http://192.168.0.98:11091/m
#VUE_APP_BASE_API= /basics_api/m #VUE_APP_BASE_API= /basics_api/m
#图片地址拼接
VUE_APP_API_IMG_URL=http://192.168.0.98:11078/
\ No newline at end of file
...@@ -12,3 +12,5 @@ VUE_APP_PORTAL_URL =/portal_home ...@@ -12,3 +12,5 @@ VUE_APP_PORTAL_URL =/portal_home
# 站点请求地址 # 站点请求地址
VUE_APP_SITETREE_URL = /basics_api/base/site/siteTree VUE_APP_SITETREE_URL = /basics_api/base/site/siteTree
#图片地址拼接
VUE_APP_API_IMG_URL=
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>sbgl.ico" /> <link rel="icon" href="<%= BASE_URL %>sbgl.ico" />
<title>设备管理平台</title> <title><%= process.env.VUE_APP_sysName %></title>
<link <link
rel="stylesheet" rel="stylesheet"
href="https://unpkg.zhimg.com/element-ui@2.15.5/lib/theme-chalk/index.css" href="https://unpkg.zhimg.com/element-ui@2.15.5/lib/theme-chalk/index.css"
......
<template> <template>
<div id="app"> <div id="app">
<router-view/> <router-view />
</div> </div>
</template> </template>
<script>
export default {};
</script>
<style lang="less" scoped>
</style>
...@@ -6,19 +6,17 @@ ...@@ -6,19 +6,17 @@
<div class="layout-menu flex flex-1"> <div class="layout-menu flex flex-1">
<!-- logo --> <!-- logo -->
<div class="layout-logo flex"> <div class="layout-logo flex">
<i class="el-icon-menu" @click="showMobileMenu = !showMobileMenu"> <!-- <i class="el-icon-menu" @click="showMobileMenu = !showMobileMenu">
</i> </i> -->
<router-link to="/">
<img <img
src="../assets/images/logo2.png" class="logo"
style="margin-bottom: 5px" :src="
height="27" sysLogo ? api + sysLogo : require('../assets/images/logo2.png')
width="27" "
/> />
<b style="color: white; font-size: 20px; font-weight: bold; margin-right: 20px"> <h1 class="title">
AIOT智慧边缘物联网系统</b {{ sysName ? sysName : systemName }}
> </h1>
</router-link>
</div> </div>
<!-- 站点选择 --> <!-- 站点选择 -->
<div> <div>
...@@ -96,11 +94,19 @@ ...@@ -96,11 +94,19 @@
<script> <script>
import HeaderSite from "./HeaderSite.vue"; import HeaderSite from "./HeaderSite.vue";
import { mapState } from "vuex";
export default { export default {
name: "Header", name: "Header",
components: { components: {
HeaderSite, HeaderSite,
}, },
data() {
return {
api: process.env.VUE_APP_API_IMG_URL,
systemName: process.env.VUE_APP_sysName,
showMobileMenu: false,
};
},
methods: { methods: {
handleCommand(key) { handleCommand(key) {
if (key === "update") { if (key === "update") {
...@@ -122,11 +128,10 @@ export default { ...@@ -122,11 +128,10 @@ export default {
}); });
}, },
}, },
beforeDestroy() { beforeDestroy() {},
}, mounted() {},
mounted() {
},
computed: { computed: {
...mapState(["sysName", "sysLogo"]),
activeMenu() { activeMenu() {
return this.$route.path; return this.$route.path;
}, },
...@@ -202,11 +207,6 @@ export default { ...@@ -202,11 +207,6 @@ export default {
return this.$store.state.userData; return this.$store.state.userData;
}, },
}, },
data() {
return {
showMobileMenu: false,
};
},
}; };
</script> </script>
...@@ -215,23 +215,35 @@ export default { ...@@ -215,23 +215,35 @@ export default {
.mobile-menu-list { .mobile-menu-list {
display: none; display: none;
} }
.title {
font-size: 18px;
max-width: 200px;
color: #fff;
line-height: normal;
}
.layout-menu-wrapper { .layout-menu-wrapper {
height: 66px; height: 64px;
line-height: 66px; line-height: 64px;
font-size: 14px; font-size: 14px;
color: #eee; color: #eee;
background: linear-gradient(90deg, #1845c6 0%, #2999ff 100%); background: linear-gradient(90deg, #1845c6 0%, #2999ff 100%);
.layout-menu {
align-items: center;
}
.layout-logo { .layout-logo {
height: 50px; height: 50px;
padding-left: 23px; padding-left: 23px;
align-items: center;
.el-icon-menu { .el-icon-menu {
display: none; display: none;
} }
a { a {
margin: auto; margin: auto;
} }
img { .logo {
vertical-align: middle; width: 32px;
margin-right: 10px;
} }
} }
......
<template> <template>
<div> <div>
<div class="profile" :class="{close: isOpen}"> <div class="profile" :class="{ close: isOpen }">
<p class="menu-switch"> <p class="menu-switch">
<i @click="toogle" :class="`el-icon-s-${isOpen?'unfold':'fold'}`" /> <i @click="toogle" :class="`el-icon-s-${isOpen ? 'unfold' : 'fold'}`" />
</p> </p>
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
{{currentUserName}} {{ currentUserName }}
<i class="el-icon-arrow-down el-icon--right"></i> <i class="el-icon-arrow-down el-icon--right"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -15,14 +15,23 @@ ...@@ -15,14 +15,23 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<div class="sidebar" :class="{close: isOpen}"> <div class="sidebar" :class="{ close: isOpen }">
<div class="logo"> <div class="logo">
<router-link to="/"> <router-link to="/">
<img src="../assets/images/logo.png" height="20" alt /> <img src="../assets/images/logo.png" height="20" alt />
{{isOpen ? '' : 'xxx系统' }} {{ isOpen ? "" : "xxx系统" }}
</router-link> </router-link>
</div> </div>
<el-menu :default-active="defaultActive" background-color="#222333" text-color="#fff" active-text-color="#409eff" :collapse="isOpen" :collapse-transition="false" router unique-opened> <el-menu
:default-active="defaultActive"
background-color="#222333"
text-color="#fff"
active-text-color="#409eff"
:collapse="isOpen"
:collapse-transition="false"
router
unique-opened
>
<el-menu-item index="/index" key="home"> <el-menu-item index="/index" key="home">
<i class="el-icon-s-home"></i> <i class="el-icon-s-home"></i>
<span>首页</span> <span>首页</span>
...@@ -31,11 +40,15 @@ ...@@ -31,11 +40,15 @@
<el-submenu v-for="item in menu" :key="item.id" :index="item.name"> <el-submenu v-for="item in menu" :key="item.id" :index="item.name">
<template slot="title"> <template slot="title">
<i :class="`el-icon-${item.icon}`"></i> <i :class="`el-icon-${item.icon}`"></i>
<span slot="title">{{item.name}}</span> <span slot="title">{{ item.name }}</span>
</template> </template>
<el-menu-item v-for="val in item.children" :index="val.path" :key="val.id"> <el-menu-item
v-for="val in item.children"
:index="val.path"
:key="val.id"
>
<i :class="`el-icon-${val.icon}`"></i> <i :class="`el-icon-${val.icon}`"></i>
<span>{{val.name}}</span> <span>{{ val.name }}</span>
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
</el-menu> </el-menu>
......
import Vue from 'vue' import Vue from "vue";
import Vuex from 'vuex' import Vuex from "vuex";
import { normalCallPost } from './assets/utils'; import { normalCallPost } from "./assets/utils";
Vue.use(Vuex) Vue.use(Vuex);
let userData = {}; let userData = {};
try { try {
userData = JSON.parse(window.sessionStorage.userData || '{}'); userData = JSON.parse(window.sessionStorage.userData || "{}");
} catch (error) { } catch (error) {
console.log('未从session中获取到userData') console.log("未从session中获取到userData");
} }
function convertTreeToList(root, array) { function convertTreeToList(root, array) {
if(!root || !root.length) return array; if (!root || !root.length) return array;
root.forEach(item=>{ root.forEach((item) => {
let data = JSON.parse(JSON.stringify(item)); let data = JSON.parse(JSON.stringify(item));
const url = data.url ? data.url : (item.childList[0] ? (item.childList[0].url || '') : ''); const url = data.url
? data.url
: item.childList[0]
? item.childList[0].url || ""
: "";
delete data.childList; delete data.childList;
array.push({ array.push({
name: data.name, name: data.name,
...@@ -25,19 +29,29 @@ function convertTreeToList(root, array) { ...@@ -25,19 +29,29 @@ function convertTreeToList(root, array) {
parentId: data.parentId, parentId: data.parentId,
icon: data.imgPath, icon: data.imgPath,
}); });
if(item.childList){ if (item.childList) {
convertTreeToList(item.childList, array); convertTreeToList(item.childList, array);
} }
}) });
return array; return array;
} }
function isPc() { function isPc() {
var userAgentInfo = navigator.userAgent; var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var Agents = new Array(
"Android",
"iPhone",
"SymbianOS",
"Windows Phone",
"iPad",
"iPod"
);
var flag = true; var flag = true;
for (var v = 0; v < Agents.length; v++) { for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
} }
return flag; return flag;
} }
...@@ -47,7 +61,9 @@ export default new Vuex.Store({ ...@@ -47,7 +61,9 @@ export default new Vuex.Store({
isLogin: false, isLogin: false,
isMobile: !isPc(), isMobile: !isPc(),
userData, userData,
group: '', group: "",
sysName: "", // 系统名称
sysLogo: "", // 系统logo
}, },
mutations: { mutations: {
setUserData(state, data) { setUserData(state, data) {
...@@ -60,25 +76,34 @@ export default new Vuex.Store({ ...@@ -60,25 +76,34 @@ export default new Vuex.Store({
logout(state) { logout(state) {
state.userData = {}; state.userData = {};
state.isLogin = false; state.isLogin = false;
window.sessionStorage.userData = ''; window.sessionStorage.userData = "";
window.sessionStorage.token = ''; window.sessionStorage.token = "";
}, },
setGroup(state, data) { setGroup(state, data) {
state.group = data; state.group = data;
}, },
SET_sysName(state, sysName) {
state.sysName = sysName;
},
SET_sysLogo(state, sysLogo) {
state.sysLogo = sysLogo;
},
}, },
actions: { actions: {
login({commit}) { login({ commit }) {
normalCallPost('/login/index').then(({data})=>{ normalCallPost("/login/index")
commit('setUserData', data) .then(({ data }) => {
}).catch(error=>{ commit("setUserData", data);
}) })
.catch((error) => {});
}, },
logout({commit}) { logout({ commit }) {
normalCallPost('/login/logout').then(data=>{}).catch(error=>{}).then(()=>{ normalCallPost("/login/logout")
commit('logout') .then((data) => {})
}) .catch((error) => {})
.then(() => {
commit("logout");
});
}, },
} },
}) });
...@@ -5,13 +5,25 @@ ...@@ -5,13 +5,25 @@
</template> </template>
<script> <script>
import { mapMutations } from "vuex";
export default { export default {
mounted() { data() {
let token = this.$route.query.token; return {};
let siteid = this.$route.query.siteid; },
created() {
this.getInfo();
},
mounted() {},
methods: {
...mapMutations(["SET_sysName", "SET_sysLogo"]),
// 获取token和站点信息
async getInfo() {
let { token, siteid, sysName, sysLogo } = this.$route.query;
if (token) { if (token) {
window.sessionStorage.setItem("token", token); window.sessionStorage.setItem("token", token);
window.sessionStorage.setItem("siteid", siteid); window.sessionStorage.setItem("siteid", siteid);
this.SET_sysName(sysName);
this.SET_sysLogo(sysLogo);
this.$router.push("/index"); // 有token直接跳转首页 this.$router.push("/index"); // 有token直接跳转首页
} else { } else {
this.$message({ this.$message({
...@@ -27,6 +39,7 @@ export default { ...@@ -27,6 +39,7 @@ export default {
}, 1000); }, 1000);
} }
}, },
},
}; };
</script> </script>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
label-width="80px" label-width="80px"
size="small" size="small"
> >
<h1>设备管理平台</h1> <h1>{{ sysName ? sysName : systemName }}</h1>
<el-form-item label="用户名"> <el-form-item label="用户名">
<el-input v-model="form.loginName"></el-input> <el-input v-model="form.loginName"></el-input>
</el-form-item> </el-form-item>
...@@ -31,18 +31,44 @@ ...@@ -31,18 +31,44 @@
</div> </div>
<div class="footer"> <div class="footer">
登陆 &copy; <a href="">信宏翔网络科技有限公司</a> 出品 <!-- 登陆 &copy; <a href="">信宏翔网络科技有限公司</a> 出品 -->
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { createSocket } from "@/assets/utils/websocket"; // import { createSocket } from "@/assets/utils/websocket";
import { mapMutations, mapState } from "vuex";
export default { export default {
name: "login", name: "login",
created() {}, data() {
return {
systemName: process.env.VUE_APP_sysName,
originData: [],
loading: false,
form: {
loginName: "",
password: "",
},
};
},
computed: {
...mapState(["sysName"]),
},
created() {
this.getInfo();
},
methods: { methods: {
...mapMutations(["SET_sysName", "SET_sysLogo"]),
// 获取token和站点信息
getInfo() {
let { sysName, sysLogo, siteid } = this.$route.query;
if (siteid && sysName && sysLogo) {
sessionStorage.setItem("siteid", siteid);
this.SET_sysName(sysName);
this.SET_sysLogo(sysLogo);
}
},
login() { login() {
this.loading = true; this.loading = true;
this.$post("/login/login", this.form) this.$post("/login/login", this.form)
...@@ -51,10 +77,9 @@ export default { ...@@ -51,10 +77,9 @@ export default {
}, },
loginSuccess({ data }) { loginSuccess({ data }) {
this.$store.commit("setUserData", data); this.$store.commit("setUserData", data);
this.$router.replace({ let { token } = data;
path: this.redirect, sessionStorage.setItem("token", token);
}); this.$router.push("/index");
//成功 创建websocket连接 process.env.VUE_WEBSOCKET_BASE_API + //成功 创建websocket连接 process.env.VUE_WEBSOCKET_BASE_API +
// createSocket("ws://"+process.env.VUE_APP_BASE_API +"/ws?accessToken="+data.id) // createSocket("ws://"+process.env.VUE_APP_BASE_API +"/ws?accessToken="+data.id)
}, },
...@@ -80,17 +105,6 @@ export default { ...@@ -80,17 +105,6 @@ export default {
this.login(); this.login();
}, },
}, },
data() {
return {
originData: [],
loading: false,
redirect: this.$route.query.redirect || "/",
form: {
loginName: "",
password: "",
},
};
},
}; };
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment