You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
6.8 KiB
161 lines
6.8 KiB
<template>
|
|
<div class="wrapper">
|
|
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
|
|
<ul class="navbar-nav">
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-widget="pushmenu" href="#"><i class="fas fa-bars"></i></a>
|
|
</li>
|
|
<li class="nav-item d-none d-sm-inline-block">
|
|
<router-link :to="{path:'/'}" class="nav-link">首页</router-link>
|
|
</li>
|
|
</ul>
|
|
<ul class="navbar-nav ml-auto">
|
|
<li class="nav-item">
|
|
<router-link class="nav-link" to="/pages/user.html">{{model.username}}</router-link>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="javascript:;" v-on:click="logout">退出</a>
|
|
</li>
|
|
</ul>
|
|
<ul class="navbar-nav ml-auto" v-else>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="/pages/register.html">注册</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="/pages/login.html">登录</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
<aside class="main-sidebar sidebar-dark-primary elevation-4">
|
|
<a class="brand-link" href="/">
|
|
<img class="brand-image img-circle elevation-3" style="opacity: .8" :src="config.baseUrl+model.logo" />
|
|
<span class="brand-text font-weight-light">{{model.name}}</span>
|
|
</a>
|
|
<div class="sidebar">
|
|
<nav class="mt-2">
|
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
|
|
<li class="nav-item">
|
|
<router-link :to="{path:'/'}" :class="isPageActive('/','/pages/product.html','/pages/device.html')">
|
|
<i class="nav-icon far fa-image"></i>
|
|
<p>
|
|
产品
|
|
</p>
|
|
</router-link>
|
|
</li>
|
|
<li class="nav-item">
|
|
<router-link :to="{path:'/pages/nodes.html'}" :class="isPageActive('/pages/nodes.html','/pages/node.html')">
|
|
<i class="nav-icon far fa-image"></i>
|
|
<p>
|
|
节点
|
|
</p>
|
|
</router-link>
|
|
</li>
|
|
<li class="nav-item" v-if="hasPermission('Read-Setting')">
|
|
<router-link :to="{path:'/pages/admin/home.html'}" :class="isPageActive('/pages/admin/home.html')">
|
|
<i class="nav-icon far fa-image"></i>
|
|
<p>
|
|
控制台
|
|
</p>
|
|
</router-link>
|
|
</li>
|
|
<li class="nav-item" v-if="hasPermission('Read-Setting')">
|
|
<router-link :to="{path:'/pages/admin/list.html',query:{entity:'Setting'}}" :class="isEntityActive('Setting')">
|
|
<i class="nav-icon far fa-image"></i>
|
|
<p>
|
|
设置
|
|
</p>
|
|
</router-link>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</aside>
|
|
<div class="content-wrapper">
|
|
<div class="content-header" v-if="model.bread">
|
|
<div class="container-fluid">
|
|
<div class="row mb-2">
|
|
<div class="col-sm-6">
|
|
<h1>{{model.name}}</h1>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<ol class="breadcrumb float-sm-right">
|
|
<li class="breadcrumb-item"><a href="@Url.Action(" Index","Home")">首页</a></li>
|
|
@RenderSection("bread", false)
|
|
<li class="breadcrumb-item active">@HtmlTitle</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<section class="content">
|
|
<slot></slot>
|
|
</section>
|
|
<a id="back-to-top" href="#" class="btn btn-primary back-to-top" role="button" aria-label="Scroll to top">
|
|
<i class="fas fa-chevron-up"></i>
|
|
</a>
|
|
</div>
|
|
<footer class="main-footer">
|
|
<strong>
|
|
{{model.copyright.replace('{0}',new Date().getFullYear())}}
|
|
</strong>
|
|
<div class="float-right d-none d-sm-inline-block" style="padding-right:60px;">
|
|
<b>version: {{model.version}}</b>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
export default {
|
|
data: function () {
|
|
return {
|
|
activeIndex: 1,
|
|
openKeys: ['sub1'],
|
|
url: config.baseUrl + '/IoTCenter/api/v1/site/getSite',
|
|
model: {
|
|
logo: '/images/logo.png',
|
|
copyright: '',
|
|
version: '',
|
|
username: '',
|
|
permissions: []
|
|
}
|
|
}
|
|
},
|
|
mounted: function () {
|
|
document.querySelector('title').innerText = this.$attrs.title;
|
|
var vm = this;
|
|
axios.post(this.url).then(function (response) {
|
|
vm.model = response.data;
|
|
}).catch(function (error) {
|
|
console.log(error);
|
|
}).finally(function () {
|
|
//loading.hide();
|
|
});
|
|
//console.log(this.$route.path);
|
|
},
|
|
methods: {
|
|
logout() {
|
|
store.commit('logout');
|
|
router.push('/pages/login.html');
|
|
},
|
|
hasPermission(permission) {
|
|
return Enumerable.from(this.model.permissions).any(o => o == permission);
|
|
},
|
|
isPageActive() {
|
|
var cls = 'nav-link';
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
if (this.$route.path == arguments[i]) {
|
|
return cls + ' active';
|
|
}
|
|
}
|
|
return cls;
|
|
},
|
|
isEntityActive(entity) {
|
|
var cls = 'nav-link';
|
|
if (this.$route.query.entity === entity) {
|
|
return cls + ' active';
|
|
}
|
|
return cls;
|
|
}
|
|
}
|
|
}
|
|
</script> |