htui-yllkbz 1.1.9 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,44 @@
1
+ export default {
2
+ state: {
3
+ // "企业名称",
4
+ enterpriseName: "星环视界智能科技",
5
+ // "基本请求路径",
6
+ baseUrl: "",
7
+ /** 授权 */
8
+ grantedPolicies: {},
9
+ /** 部门人员 */
10
+ organizationUsers: [],
11
+ /** 部门 */
12
+ organizationUnit: [],
13
+ /** 人员 */
14
+ users: [],
15
+ /** 严重等级 */
16
+ severityLevel: [],
17
+ /** 资产分类 */
18
+ assetTypes: [],
19
+ /** 位置 */
20
+ positions: [],
21
+ /** 分组 */
22
+ grids: []
23
+ },
24
+ getters: {
25
+ getBaseData: (state: any) => (name: string) => state[name]
26
+ },
27
+ mutations: {
28
+ setBaseData(state: any, baseData: any) {
29
+ for (const key in baseData) {
30
+ if (baseData.hasOwnProperty(key) && !/(^\?)|(^?)/.test(key)) {
31
+ let element: string = baseData[key];
32
+ if (/^baseUrl/.test(key)) {
33
+ element = element.replace(/\/$/g, "");
34
+ }
35
+ state[key] = element;
36
+ }
37
+ }
38
+ },
39
+ setBaseDataApi(state: any, payload: { key: string; value: any }) {
40
+ state[payload.key] = payload.value;
41
+ }
42
+ },
43
+ actions: {}
44
+ };
@@ -0,0 +1,14 @@
1
+ import Vue from "vue";
2
+ import Vuex from "vuex";
3
+ import baseData from "./baseData"; // 基本数据
4
+
5
+ Vue.use(Vuex);
6
+
7
+ export default new Vuex.Store({
8
+ state: {},
9
+ mutations: {},
10
+ actions: {},
11
+ modules: {
12
+ baseData
13
+ }
14
+ });
@@ -0,0 +1,6 @@
1
+ /* theme color */
2
+
3
+ /* icon font path, required */
4
+
5
+ /** $--font-path: '/publicData/styles/theme/fonts'; */
6
+ /** @import "/publicData/styles/theme/index.css"; */
@@ -0,0 +1,3 @@
1
+ <template>
2
+ <div>模板框架</div>
3
+ </template>
@@ -0,0 +1,230 @@
1
+ <template>
2
+ <div id="index">
3
+ <el-container style="height: 100vh" class="index">
4
+ <el-header style="padding: 0; height: min-content">
5
+ <xhkj-layout02>
6
+ <router-link to="/login" slot="navEnd">注销</router-link>
7
+ </xhkj-layout02>
8
+ </el-header>
9
+ <el-container class="body">
10
+ <el-aside :width="state.collapsed ? '66px' : '230px'" class="left">
11
+ <!--导航菜单-->
12
+ <el-menu
13
+ :default-active="state.defaultIndex"
14
+ router
15
+ :collapse="state.collapsed"
16
+ :collapse-transition="false"
17
+ >
18
+ <el-menu-item index="/">
19
+ <i class="el-icon-s-check"></i>
20
+ <span slot="title">导航1</span>
21
+ </el-menu-item>
22
+ <el-menu-item index="/">
23
+ <i class="el-icon-s-promotion"></i>
24
+ <span slot="title">导航2</span>
25
+ </el-menu-item>
26
+ <el-menu-item index="/">
27
+ <i class="el-icon-s-order"></i>
28
+ <span slot="title">导航3</span>
29
+ </el-menu-item>
30
+ </el-menu>
31
+ <el-button
32
+ class="action-btn"
33
+ :title="state.collapsed ? '展开菜单' : '收起菜单'"
34
+ type="text"
35
+ size="medium"
36
+ :icon="state.collapsed ? 'el-icon-s-unfold' : 'el-icon-s-fold'"
37
+ @click="state.collapsed = !state.collapsed"
38
+ style="font-size: 16px"
39
+ ></el-button>
40
+ </el-aside>
41
+ <el-main style="padding: 8px 0 0 15px" class="cont">
42
+ <router-view v-if="state.loading"></router-view>
43
+ </el-main>
44
+ </el-container>
45
+ </el-container>
46
+ <div
47
+ v-if="state.isLogin"
48
+ is="common-datas"
49
+ @commonDatas="commonDatas"
50
+ @error="error"
51
+ ></div>
52
+ </div>
53
+ </template>
54
+
55
+ <script lang="ts">
56
+ import { Component, Vue, Watch } from "vue-property-decorator";
57
+ import { baseConfig } from "vue-kst-auth";
58
+ interface State {
59
+ /** 数据状态 */
60
+ loading: boolean;
61
+ /** 是否登陆 */
62
+ isLogin: boolean;
63
+ /** 默认选中导航 */
64
+ defaultIndex: string;
65
+ /** 菜单是否收缩 */
66
+ collapsed: boolean;
67
+ }
68
+
69
+ @Component({
70
+ components: {},
71
+ })
72
+ export default class App extends Vue {
73
+ /** 数据 */
74
+ state: State = {
75
+ loading: false,
76
+ isLogin: false,
77
+ defaultIndex: "/",
78
+ collapsed: true,
79
+ };
80
+ /** 生命周期 */
81
+ created() {
82
+ // 动态加载引用文件
83
+ const files = this.$store.getters.getBaseData("files");
84
+ const filesKeys: string[] = Object.keys(files);
85
+ let heatStr = document.getElementsByTagName("head")[0].innerHTML;
86
+ filesKeys.forEach((cur) => {
87
+ const src = files[cur];
88
+ if (src && /\.css$/.test(src.toString())) {
89
+ heatStr += `<link rel="stylesheet" href="${src}?v=${Date.now()}" />`;
90
+ }
91
+ if (src && /\.ico$/.test(src.toString())) {
92
+ heatStr += `<link rel="icon" href="${src}">`;
93
+ }
94
+ });
95
+ document.getElementsByTagName("head")[0].innerHTML = heatStr;
96
+ this.state.isLogin = baseConfig.getLoginState() || false;
97
+ }
98
+ mounted() {
99
+ this.state.defaultIndex = this.$route.path;
100
+ }
101
+ /** 方法 */
102
+ /** 接收基础数据 */
103
+ commonDatas(msg: any) {
104
+ const [res] = msg.detail;
105
+ this.state.loading = true;
106
+ /** 授权 */
107
+ if (
108
+ res.SessionState &&
109
+ res.SessionState.auth &&
110
+ res.SessionState.auth.grantedPolicies
111
+ ) {
112
+ this.$store.commit("setBaseDataApi", {
113
+ key: "grantedPolicies",
114
+ value: res.SessionState.auth.grantedPolicies,
115
+ });
116
+ }
117
+ /** 部门人员数据 */
118
+ if (res.organizationUsers) {
119
+ this.$store.commit("setBaseDataApi", {
120
+ key: "organizationUsers",
121
+ value: res.organizationUsers.items,
122
+ });
123
+ }
124
+ /** 部门数据 */
125
+ if (res.organizationUnit) {
126
+ this.$store.commit("setBaseDataApi", {
127
+ key: "organizationUnit",
128
+ value: res.organizationUnit,
129
+ });
130
+ }
131
+ /** 人员数据 */
132
+ if (res.users) {
133
+ this.$store.commit("setBaseDataApi", {
134
+ key: "users",
135
+ value: res.users.items,
136
+ });
137
+ }
138
+ /** 严重等级 */
139
+ if (res.severityLevel) {
140
+ this.$store.commit("setBaseDataApi", {
141
+ key: "severityLevel",
142
+ value: res.severityLevel,
143
+ });
144
+ }
145
+ // /** 基础数据 */
146
+ // if (res.baseData && res.baseData.items) {
147
+ // const data: any[] = res.baseData.items;
148
+ // // 资产分类
149
+ // const assetTypes = data.filter(val => val.category == "AssetCategory");
150
+ // this.$store.commit("setBaseDataApi", {
151
+ // key: "assetTypes",
152
+ // value: assetTypes
153
+ // });
154
+ // // 位置
155
+ // const positions = data.filter(val => val.category == "positions");
156
+ // this.$store.commit("setBaseDataApi", {
157
+ // key: "positions",
158
+ // value: positions
159
+ // });
160
+ // // 分组
161
+ // const grids = data.filter(val => val.category == "AlertGroup");
162
+ // this.$store.commit("setBaseDataApi", {
163
+ // key: "grids",
164
+ // value: grids
165
+ // });
166
+ // }
167
+ }
168
+ error() {
169
+ this.state.loading = true;
170
+ // console.log("获取基础信息错误");
171
+ }
172
+ /** 监听 */
173
+ @Watch("$route.path", { deep: true })
174
+ ondata(val: string) {
175
+ this.state.defaultIndex = val || "/";
176
+ }
177
+ }
178
+ </script>
179
+
180
+ <style lang="scss">
181
+ body,
182
+ html {
183
+ margin: 0;
184
+ padding: 0;
185
+ }
186
+ a {
187
+ text-decoration: none;
188
+ &:link {
189
+ color: #476ef3;
190
+ }
191
+ a:visited {
192
+ color: #551a8b;
193
+ }
194
+ a:hover {
195
+ color: #335ff7;
196
+ }
197
+ a:active {
198
+ color: #0000ff;
199
+ }
200
+ }
201
+ .index {
202
+ background: url("/publicData/images/bg.png ") center no-repeat;
203
+ background-size: 100% 100%;
204
+ font-family: "SourceHanSansCN-Normal", "Avenir", Helvetica, Arial, sans-serif;
205
+ -webkit-font-smoothing: antialiased;
206
+ -moz-osx-font-smoothing: grayscale;
207
+ color: #333333;
208
+ font-size: 12px;
209
+ }
210
+ </style>
211
+ <style lang="scss" scoped>
212
+ .index {
213
+ .el-menu {
214
+ background: none;
215
+ border: none;
216
+ }
217
+ .body {
218
+ .left {
219
+ box-sizing: border-box;
220
+ border-right: 1px solid #e6e6e6;
221
+ position: relative;
222
+ .action-btn {
223
+ position: absolute;
224
+ bottom: 0;
225
+ right: 6px;
226
+ }
227
+ }
228
+ }
229
+ }
230
+ </style>