lw-cdp-ui 1.3.42 → 1.3.44
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.
- package/dist/components/lwLayout/index.vue +68 -54
- package/dist/components/lwLayout/init.vue +8 -178
- package/dist/lw-cdp-ui.esm.js +4375 -4612
- package/dist/lw-cdp-ui.umd.js +17 -21
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
<section class="aminui-wrapper">
|
|
10
10
|
<div v-if="!ismobile"
|
|
11
11
|
:class="menuIsCollapse ? 'aminui-side isCollapse' : 'aminui-side'">
|
|
12
|
-
<div
|
|
12
|
+
<div v-if="appName && appSimpleName"
|
|
13
|
+
class="aminui-title-name">
|
|
14
|
+
{{ menuIsCollapse ? appSimpleName : appName }}
|
|
15
|
+
</div>
|
|
16
|
+
<div v-else
|
|
17
|
+
class="aminui-title-name">
|
|
13
18
|
{{ menuIsCollapse ? $config.APP_NAME.charAt(0) : $config.APP_NAME }}
|
|
14
19
|
</div>
|
|
15
20
|
<div class="adminui-side-scroll">
|
|
@@ -50,8 +55,7 @@
|
|
|
50
55
|
<div class="adminui-main">
|
|
51
56
|
<slot name="routerView">
|
|
52
57
|
<router-view v-slot="{ Component }">
|
|
53
|
-
<keep-alive
|
|
54
|
-
:include="this.$store.state.keepAlive.keepLiveRoute">
|
|
58
|
+
<keep-alive :include="this.$store.state.keepAlive.keepLiveRoute">
|
|
55
59
|
<component :is="Component"
|
|
56
60
|
:key="$route.fullPath"
|
|
57
61
|
v-if="$store.state.keepAlive.routeShow" />
|
|
@@ -66,7 +70,7 @@
|
|
|
66
70
|
</template>
|
|
67
71
|
|
|
68
72
|
<!-- 默认布局 -->
|
|
69
|
-
<template v-else>
|
|
73
|
+
<!-- <template v-else>
|
|
70
74
|
<div class="aminui-body-default">
|
|
71
75
|
<div class="aminui-title-name">
|
|
72
76
|
{{ menuIsCollapse ? $config.APP_NAME.charAt(0) : $config.APP_NAME }}
|
|
@@ -119,18 +123,18 @@
|
|
|
119
123
|
<iframe-view></iframe-view>
|
|
120
124
|
</div>
|
|
121
125
|
</div>
|
|
122
|
-
</template>
|
|
123
|
-
|
|
126
|
+
</template> -->
|
|
127
|
+
|
|
124
128
|
</template>
|
|
125
129
|
|
|
126
130
|
<script>
|
|
127
|
-
import SideM from './components/sideM.vue'
|
|
128
|
-
import Aside from './components/aside.vue'
|
|
129
|
-
import Topbar from './components/topbar.vue'
|
|
130
|
-
import Tags from './components/tags.vue'
|
|
131
|
-
import NavMenu from './components/NavMenu.vue'
|
|
132
|
-
import userbar from './components/userbar.vue'
|
|
133
|
-
import iframeView from './components/iframeView.vue'
|
|
131
|
+
import SideM from './components/sideM.vue'
|
|
132
|
+
import Aside from './components/aside.vue'
|
|
133
|
+
import Topbar from './components/topbar.vue'
|
|
134
|
+
import Tags from './components/tags.vue'
|
|
135
|
+
import NavMenu from './components/NavMenu.vue'
|
|
136
|
+
import userbar from './components/userbar.vue'
|
|
137
|
+
import iframeView from './components/iframeView.vue'
|
|
134
138
|
export default {
|
|
135
139
|
name: 'lwLayout',
|
|
136
140
|
props: {
|
|
@@ -151,6 +155,16 @@ export default {
|
|
|
151
155
|
tagShowID: {
|
|
152
156
|
type: Boolean,
|
|
153
157
|
default: false
|
|
158
|
+
},
|
|
159
|
+
// 应用名称
|
|
160
|
+
appName: {
|
|
161
|
+
type: String,
|
|
162
|
+
default: ''
|
|
163
|
+
},
|
|
164
|
+
// 应用缩写名称
|
|
165
|
+
appSimpleName: {
|
|
166
|
+
type: String,
|
|
167
|
+
default: ''
|
|
154
168
|
}
|
|
155
169
|
},
|
|
156
170
|
components: {
|
|
@@ -187,50 +201,48 @@ export default {
|
|
|
187
201
|
},
|
|
188
202
|
beforeCreate() {
|
|
189
203
|
// 挂载自定义菜单订阅
|
|
190
|
-
this.$bus.$on('setMenu',
|
|
204
|
+
this.$bus.$on('setMenu', menu => {
|
|
191
205
|
this.changeMenu = true
|
|
192
206
|
this.menu = this.filterUrl(menu)
|
|
193
207
|
})
|
|
194
208
|
|
|
195
209
|
// 处理标签状态
|
|
196
|
-
let isHideTab = this.$tool.data.get(
|
|
210
|
+
let isHideTab = this.$tool.data.get('APP_LAYOUTTAGS')
|
|
197
211
|
if (isHideTab) {
|
|
198
212
|
this.$store.state.global.layoutTags = false
|
|
199
213
|
}
|
|
200
|
-
let isMenuIsCollapse = this.$tool.data.get(
|
|
214
|
+
let isMenuIsCollapse = this.$tool.data.get('APP_menuIsCollapse')
|
|
201
215
|
this.$store.state.global.menuIsCollapse = !!isMenuIsCollapse
|
|
202
216
|
},
|
|
203
217
|
async created() {
|
|
204
|
-
this.onLayoutResize()
|
|
205
|
-
window.addEventListener('resize', this.onLayoutResize)
|
|
206
|
-
this.getUserInfo()
|
|
218
|
+
this.onLayoutResize()
|
|
219
|
+
window.addEventListener('resize', this.onLayoutResize)
|
|
220
|
+
this.getUserInfo()
|
|
207
221
|
if (!this.changeMenu) {
|
|
208
|
-
var menu = this.$router.sc_getMenu()
|
|
209
|
-
this.menu = this.filterUrl(menu)
|
|
222
|
+
var menu = this.$router.sc_getMenu()
|
|
223
|
+
this.menu = this.filterUrl(menu)
|
|
210
224
|
}
|
|
211
225
|
this.showThis()
|
|
212
|
-
this.$store.commit(
|
|
226
|
+
this.$store.commit('LOAD_USER_FROM_LOCAL_STORAGE')
|
|
213
227
|
},
|
|
214
228
|
watch: {
|
|
215
229
|
async $route() {
|
|
216
230
|
this.showThis()
|
|
217
231
|
},
|
|
218
232
|
'$i18n.locale'() {
|
|
219
|
-
var menu = this.$router.sc_getMenu()
|
|
220
|
-
this.menu = this.filterUrl(menu)
|
|
233
|
+
var menu = this.$router.sc_getMenu()
|
|
234
|
+
this.menu = this.filterUrl(menu)
|
|
221
235
|
},
|
|
222
236
|
layout: {
|
|
223
237
|
handler(val) {
|
|
224
238
|
document.body.setAttribute('data-layout', val)
|
|
225
239
|
},
|
|
226
|
-
immediate: true
|
|
227
|
-
}
|
|
228
|
-
|
|
240
|
+
immediate: true
|
|
241
|
+
}
|
|
229
242
|
},
|
|
230
243
|
methods: {
|
|
231
244
|
// 获取用户信息 - 用于从demo环境直接跳转
|
|
232
245
|
async getUserInfo() {
|
|
233
|
-
|
|
234
246
|
// 获取所有bu
|
|
235
247
|
let bu = await this.$api.auth.bu()
|
|
236
248
|
this.$tool.data.set('buList', bu)
|
|
@@ -240,60 +252,62 @@ export default {
|
|
|
240
252
|
|
|
241
253
|
// 处理应用显示逻辑
|
|
242
254
|
let application = [...new Set(user.userAuthInfo.menus.map(permission => permission.split('.')[0].split('_')[0]))]
|
|
243
|
-
user.userAuthInfo.grantedApplications = user.userAuthInfo.grantedApplications.filter(x =>
|
|
255
|
+
user.userAuthInfo.grantedApplications = user.userAuthInfo.grantedApplications.filter(x =>
|
|
256
|
+
application.includes(x.code)
|
|
257
|
+
)
|
|
244
258
|
|
|
245
259
|
let userAuthInfo = {
|
|
246
260
|
...user.userAuthInfo,
|
|
247
261
|
combined: user.combined,
|
|
248
262
|
loginPage: user.loginPage,
|
|
249
|
-
menuContent: user.menuContent
|
|
263
|
+
menuContent: user.menuContent
|
|
250
264
|
}
|
|
251
265
|
this.$tool.data.set('tenantId', user.userAuthInfo.tenantId)
|
|
252
266
|
this.$tool.data.set('userAuthInfo', userAuthInfo)
|
|
253
267
|
this.$store.state.user = userAuthInfo
|
|
254
268
|
},
|
|
255
269
|
onLayoutResize() {
|
|
256
|
-
this.$store.commit(
|
|
270
|
+
this.$store.commit('SET_ismobile', document.body.clientWidth < 992)
|
|
257
271
|
},
|
|
258
272
|
//路由监听高亮
|
|
259
273
|
showThis() {
|
|
260
274
|
this.pmenu = this.$route.meta.breadcrumb ? this.$route.meta.breadcrumb[0] : {}
|
|
261
|
-
this.nextMenu = this.filterUrl(this.pmenu.children)
|
|
275
|
+
this.nextMenu = this.filterUrl(this.pmenu.children)
|
|
262
276
|
this.$nextTick(() => {
|
|
263
|
-
this.active = this.$route.meta.active || this.$route.fullPath
|
|
277
|
+
this.active = this.$route.meta.active || this.$route.fullPath
|
|
264
278
|
})
|
|
265
279
|
},
|
|
266
280
|
//点击显示
|
|
267
281
|
showMenu(route) {
|
|
268
|
-
this.pmenu = route
|
|
269
|
-
this.nextMenu = this.filterUrl(route.children)
|
|
282
|
+
this.pmenu = route
|
|
283
|
+
this.nextMenu = this.filterUrl(route.children)
|
|
270
284
|
if ((!route.children || route.children.length == 0) && route.component) {
|
|
271
|
-
this.$router.push({
|
|
285
|
+
this.$router.push({path: route.path})
|
|
272
286
|
}
|
|
273
287
|
},
|
|
274
288
|
//转换外部链接的路由
|
|
275
289
|
filterUrl(map) {
|
|
276
|
-
|
|
277
290
|
var newMap = []
|
|
278
|
-
map &&
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
item.
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
item.children
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
map &&
|
|
292
|
+
map.forEach(item => {
|
|
293
|
+
item.meta = item.meta ? item.meta : {}
|
|
294
|
+
//处理隐藏
|
|
295
|
+
if (item.meta.hidden || item.meta.type == 'button') {
|
|
296
|
+
return false
|
|
297
|
+
}
|
|
298
|
+
//处理http
|
|
299
|
+
if (item.meta.type == 'iframe') {
|
|
300
|
+
item.path = `/i/${item.name}`
|
|
301
|
+
}
|
|
302
|
+
//递归循环
|
|
303
|
+
if (item.children && item.children.length > 0) {
|
|
304
|
+
item.children = this.filterUrl(item.children)
|
|
305
|
+
}
|
|
306
|
+
newMap.push(item)
|
|
307
|
+
})
|
|
294
308
|
|
|
295
309
|
this.changeMenu = false
|
|
296
|
-
return newMap
|
|
310
|
+
return newMap
|
|
297
311
|
}
|
|
298
312
|
}
|
|
299
313
|
}
|
|
@@ -16,10 +16,7 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
<div v-else
|
|
18
18
|
class="table-block">
|
|
19
|
-
<
|
|
20
|
-
ref="dataFormRef"
|
|
21
|
-
:config="formConfig">
|
|
22
|
-
</lwFormMini>
|
|
19
|
+
<slot></slot>
|
|
23
20
|
</div>
|
|
24
21
|
|
|
25
22
|
</el-main>
|
|
@@ -34,11 +31,8 @@
|
|
|
34
31
|
</template>
|
|
35
32
|
|
|
36
33
|
<script>
|
|
34
|
+
import {ref} from 'vue'
|
|
37
35
|
import empty from '@/assets/images/empty.jpg'
|
|
38
|
-
import {getCurrentInstance, ref, toRefs, computed} from 'vue'
|
|
39
|
-
import dayjs from 'dayjs'
|
|
40
|
-
import {ElMessage} from 'element-plus'
|
|
41
|
-
import {useRouter} from 'vue-router'
|
|
42
36
|
import bu from './components/bu'
|
|
43
37
|
|
|
44
38
|
export default {
|
|
@@ -46,182 +40,18 @@ export default {
|
|
|
46
40
|
components: {
|
|
47
41
|
bu
|
|
48
42
|
},
|
|
49
|
-
props: {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
default: () => {
|
|
53
|
-
return [
|
|
54
|
-
{value: 'nfs', label: '本地硬盘'},
|
|
55
|
-
{value: 'aws', label: '亚马逊云'},
|
|
56
|
-
{value: 'oss', label: '阿里云'},
|
|
57
|
-
{value: 'minio', label: 'MinIO'}
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
config: {
|
|
62
|
-
type: Object,
|
|
63
|
-
default: null
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
setup(props) {
|
|
67
|
-
const {
|
|
68
|
-
proxy: {$api, $expression, t, $tool, $bus}
|
|
69
|
-
} = getCurrentInstance()
|
|
70
|
-
const router = useRouter()
|
|
71
|
-
|
|
43
|
+
props: {},
|
|
44
|
+
emits: ['save'],
|
|
45
|
+
setup(props, { emit }) {
|
|
72
46
|
const startInit = ref(true)
|
|
73
|
-
const dataForm = ref({})
|
|
74
|
-
const dataFormRef = ref(null)
|
|
75
|
-
const formConfig = computed(() => {
|
|
76
|
-
return (
|
|
77
|
-
props?.config || {
|
|
78
|
-
labelWidth: '110px',
|
|
79
|
-
labelPosition: 'top',
|
|
80
|
-
formItems: [
|
|
81
|
-
{label: '基础设置', component: 'divider'},
|
|
82
|
-
{
|
|
83
|
-
label: '名称',
|
|
84
|
-
name: 'name',
|
|
85
|
-
value: '',
|
|
86
|
-
component: 'input',
|
|
87
|
-
span: 24,
|
|
88
|
-
options: {
|
|
89
|
-
maxlength: '20',
|
|
90
|
-
placeholder: '请输入'
|
|
91
|
-
},
|
|
92
|
-
rules: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
93
|
-
},
|
|
94
|
-
{label: '存储上传设置', component: 'divider'},
|
|
95
|
-
{
|
|
96
|
-
label: 'OLTP类型',
|
|
97
|
-
name: 'setting.persistent.oltp.type',
|
|
98
|
-
value: '',
|
|
99
|
-
component: 'select',
|
|
100
|
-
span: 12,
|
|
101
|
-
options: {
|
|
102
|
-
items: props.typeList,
|
|
103
|
-
placeholder: '请选择'
|
|
104
|
-
},
|
|
105
|
-
rules: [{required: true, message: '请选择', trigger: 'blur'}]
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
label: 'OLTP是否启用',
|
|
109
|
-
name: 'setting.persistent.oltp.zoned',
|
|
110
|
-
value: true,
|
|
111
|
-
component: 'switch',
|
|
112
|
-
span: 12
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
label: 'OLAP类型',
|
|
116
|
-
name: 'setting.persistent.olap.type',
|
|
117
|
-
value: '',
|
|
118
|
-
component: 'select',
|
|
119
|
-
span: 12,
|
|
120
|
-
options: {
|
|
121
|
-
items: props.typeList,
|
|
122
|
-
placeholder: '请选择'
|
|
123
|
-
},
|
|
124
|
-
rules: [{required: true, message: '请选择', trigger: 'blur'}]
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
label: 'OLAP是否启用',
|
|
128
|
-
name: 'setting.persistent.olap.zoned',
|
|
129
|
-
value: true,
|
|
130
|
-
component: 'switch',
|
|
131
|
-
span: 12
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
label: 'LAKE类型',
|
|
135
|
-
name: 'setting.persistent.lake.type',
|
|
136
|
-
value: '',
|
|
137
|
-
component: 'select',
|
|
138
|
-
span: 12,
|
|
139
|
-
options: {
|
|
140
|
-
items: props.typeList,
|
|
141
|
-
placeholder: '请选择'
|
|
142
|
-
},
|
|
143
|
-
rules: [{required: true, message: '请选择', trigger: 'blur'}]
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
label: 'LAKE是否启用',
|
|
147
|
-
name: 'setting.persistent.lake.zoned',
|
|
148
|
-
value: true,
|
|
149
|
-
component: 'switch',
|
|
150
|
-
span: 12
|
|
151
|
-
},
|
|
152
|
-
{label: 'LAKE配置', component: 'divider', hideHandle: '!$.setting.persistent.lake.zoned'},
|
|
153
|
-
{
|
|
154
|
-
label: 'endpoint',
|
|
155
|
-
name: 'setting.persistent.lake.endpoint',
|
|
156
|
-
value: '',
|
|
157
|
-
component: 'input',
|
|
158
|
-
span: 12,
|
|
159
|
-
options: {
|
|
160
|
-
placeholder: '请输入'
|
|
161
|
-
},
|
|
162
|
-
hideHandle: '!$.setting.persistent.lake.zoned',
|
|
163
|
-
rules: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
label: 'accessKey',
|
|
167
|
-
name: 'setting.persistent.lake.accessKey',
|
|
168
|
-
value: '',
|
|
169
|
-
component: 'input',
|
|
170
|
-
span: 12,
|
|
171
|
-
options: {
|
|
172
|
-
placeholder: '请输入'
|
|
173
|
-
},
|
|
174
|
-
hideHandle: '!$.setting.persistent.lake.zoned',
|
|
175
|
-
rules: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
label: 'secretKey',
|
|
179
|
-
name: 'setting.persistent.lake.secretKey',
|
|
180
|
-
value: '',
|
|
181
|
-
component: 'input',
|
|
182
|
-
span: 12,
|
|
183
|
-
options: {
|
|
184
|
-
placeholder: '请输入'
|
|
185
|
-
},
|
|
186
|
-
hideHandle: '!$.setting.persistent.lake.zoned',
|
|
187
|
-
rules: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
label: 'location',
|
|
191
|
-
name: 'setting.persistent.lake.location',
|
|
192
|
-
value: '',
|
|
193
|
-
component: 'input',
|
|
194
|
-
span: 12,
|
|
195
|
-
options: {
|
|
196
|
-
placeholder: '请输入'
|
|
197
|
-
},
|
|
198
|
-
hideHandle: '!$.setting.persistent.lake.zoned',
|
|
199
|
-
rules: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
200
|
-
}
|
|
201
|
-
]
|
|
202
|
-
}
|
|
203
|
-
)
|
|
204
|
-
})
|
|
205
|
-
|
|
206
47
|
const save = () => {
|
|
207
|
-
|
|
208
|
-
if (valid) {
|
|
209
|
-
$api.auth.setInitialized(dataForm.value).then(() => {
|
|
210
|
-
ElMessage.success('初始化成功!')
|
|
211
|
-
$tool.data.set('zoneInitialized', 'true')
|
|
212
|
-
router.push('/')
|
|
213
|
-
})
|
|
214
|
-
}
|
|
215
|
-
})
|
|
48
|
+
emit('save')
|
|
216
49
|
}
|
|
217
50
|
|
|
218
51
|
return {
|
|
219
|
-
save,
|
|
220
|
-
empty,
|
|
221
52
|
startInit,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
dataForm
|
|
53
|
+
save,
|
|
54
|
+
empty
|
|
225
55
|
}
|
|
226
56
|
}
|
|
227
57
|
}
|