dataease/frontend/src/views/system/authority/authConfig.vue

218 lines
6.3 KiB
Vue
Raw Normal View History

2021-05-18 16:07:19 +08:00
<template>
2021-05-18 18:39:18 +08:00
<de-container style="height: auto">
<de-aside-container style="height: auto">
2021-05-18 16:07:19 +08:00
<el-button v-show="!showTargetSearchInput" class="de-icon" icon="el-icon-search" circle size="mini" @click="showTargetSearchWidget" />
<div v-show="showTargetSearchInput" class="de-input">
<el-input v-model="targetFilterText">
<el-button slot="append" icon="el-icon-close" @click="closeTargetSearchWidget" />
</el-input>
</div>
<el-tabs v-model="targetActiveName" :class="{'de-search-header': showTargetSearchInput}" @tab-click="handleClick">
<el-tab-pane v-for="(targetInfo, index) in targetInfoArray" :key="index" :lazy="true" :label="targetInfo.tabName" :name="targetInfo.authType">
<lazy-tree
v-if="targetActiveName===targetInfo.authType"
2021-05-18 16:07:19 +08:00
:active-name="targetActiveName"
:filter-text="targetFilterText"
:data-info="targetInfo"
highlight-current
@nodeClick="authNodeClick"
/>
</el-tab-pane>
</el-tabs>
</de-aside-container>
<de-main-container class="de-main-container-auth">
<el-button v-show="!showSourceSearchInput" class="de-icon" icon="el-icon-search" circle size="mini" @click="showSourceSearchWidget" />
<div v-show="showSourceSearchInput" class="de-input">
<el-input v-model="sourceFilterText">
<el-button slot="append" icon="el-icon-close" @click="closeSourceSearchWidget" />
</el-input>
</div>
<el-tabs v-model="sourceActiveName" :class="{'de-search-header': showSourceSearchInput}" @tab-click="handleClick">
2021-05-27 14:17:27 +08:00
<el-tab-pane v-for="(sourceInfo, index) in sourceInfoTabs" :key="index" :lazy="true" :label="sourceInfo.tabName" :name="sourceInfo.authType">
2021-05-18 16:07:19 +08:00
<lazy-tree
v-if="authCondition"
:active-name="sourceActiveName"
:filter-text="sourceFilterText"
:data-info="sourceInfo"
show-extent
:auth-condition="authCondition"
:attach-active-name="targetActiveName"
2021-05-18 16:07:19 +08:00
/>
</el-tab-pane>
</el-tabs>
</de-main-container>
</de-container>
</template>
<script>
import DeContainer from '../../../components/dataease/DeContainer'
import DeAsideContainer from '../../../components/dataease/DeAsideContainer'
import DeMainContainer from '../../../components/dataease/DeMainContainer'
import LazyTree from './components/LazyTree'
export default {
name: 'Authority',
components: { LazyTree, DeMainContainer, DeAsideContainer, DeContainer },
props: {
resourceId: {
type: String,
default: null
}
},
data() {
return {
targetInfoArray:
[
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.dept'),
head: this.$t('auth.deptHead'),
2021-05-18 16:07:19 +08:00
direction: 'target',
authType: 'dept'
},
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.role'),
head: this.$t('auth.roleHead'),
2021-05-18 16:07:19 +08:00
direction: 'target',
authType: 'role'
},
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.user'),
head: this.$t('auth.userHead'),
2021-05-18 16:07:19 +08:00
direction: 'target',
authType: 'user'
}],
sourceInfoArray:
[
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.linkAuth'),
head: this.$t('auth.linkAuthHead'),
2021-05-18 16:07:19 +08:00
direction: 'source',
2021-05-27 14:17:27 +08:00
authType: 'link',
authTargets: 'dept,role,user'
2021-05-18 16:07:19 +08:00
},
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.datasetAuth'),
head: this.$t('auth.datasetAuthHead'),
2021-05-18 16:07:19 +08:00
direction: 'source',
2021-05-27 14:17:27 +08:00
authType: 'dataset',
authTargets: 'dept,role,user'
2021-05-18 16:07:19 +08:00
},
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.chartAuth'),
2021-06-11 09:58:24 +08:00
head: this.$t('auth.chartAuthHead'),
2021-05-18 16:07:19 +08:00
direction: 'source',
2021-05-27 14:17:27 +08:00
authType: 'chart',
authTargets: 'dept,role,user'
2021-05-18 16:07:19 +08:00
},
{
2021-05-18 18:39:18 +08:00
tabName: this.$t('auth.panelAuth'),
head: this.$t('auth.panelAuthHead'),
2021-05-18 16:07:19 +08:00
direction: 'source',
2021-05-27 14:17:27 +08:00
authType: 'panel',
authTargets: 'dept,role,user'
2021-05-31 14:26:19 +08:00
},
{
tabName: this.$t('auth.menuAuth'),
head: this.$t('auth.menuAuthHead'),
direction: 'source',
authType: 'menu',
authTargets: 'dept,role,user'
2021-05-27 14:17:27 +08:00
}
],
2021-05-18 16:07:19 +08:00
targetActiveName: null,
sourceActiveName: null,
showSourceSearchInput: false,
showTargetSearchInput: false,
sourceFilterText: '',
targetFilterText: '',
timeMachine: null,
authCondition: null
}
},
2021-05-27 14:17:27 +08:00
computed: {
sourceInfoTabs() {
const tabs = []
this.sourceInfoArray.forEach(item => {
if (item.authTargets.indexOf(this.targetActiveName) > -1) {
tabs.push(item)
}
})
return tabs
}
},
2021-05-18 16:07:19 +08:00
created() {
this.targetActiveName = this.targetInfoArray[0].authType
2021-05-19 15:13:05 +08:00
this.sourceActiveName = this.sourceInfoArray[0].authType
2021-05-18 16:07:19 +08:00
},
methods: {
handleClick(tab, event) {
},
showSourceSearchWidget() {
this.showSourceSearchInput = true
},
closeSourceSearchWidget() {
this.sourceFilterText = ''
this.showSourceSearchInput = false
},
showTargetSearchWidget() {
this.showTargetSearchInput = true
},
closeTargetSearchWidget() {
this.targetFilterText = ''
this.showTargetSearchInput = false
},
save() {
this.$refs[this.activeName].save()
this.$emit('close-grant', 0)
},
cancel() {
this.$refs[this.activeName].cancel()
this.$emit('close-grant', 0)
},
authNodeClick(val) {
2021-06-04 14:35:32 +08:00
// console.log('authNodeClick')
2021-05-18 16:07:19 +08:00
this.authCondition = val
},
clickAuth(auth) {
2021-06-04 14:35:32 +08:00
// console.log('clickAuth')
2021-05-18 16:07:19 +08:00
}
}
}
</script>
<style lang="scss" scoped>
.de-tab {
border:1px solid #E6E6E6;
min-height:200px !important;
max-height:300px !important;
overflow:auto;
}
.de-icon {
position: absolute;
right: 10px;
top: 15px;
z-index: 99;
}
.el-input-group__append{
background-color: #ffffff;
}
.el-input__inner{
border-right: none;
}
.auth-root-class {
margin: 15px 0px 5px;
text-align: right;
}
.de-main-container-auth{
border: 1px solid #E6E6E6;
2021-05-18 18:39:18 +08:00
height: auto;
2021-05-18 16:07:19 +08:00
}
// ::-webkit-scrollbar {
// }
</style>