perf: 代码优化 views/permission

This commit is contained in:
pany 2023-06-17 14:34:39 +08:00
parent be75b2b118
commit 4d07d52b91
3 changed files with 23 additions and 50 deletions

View File

@ -2,8 +2,5 @@
.app-main {
background-color: $theme-bg-color !important;
// 指令权限页面 @/views/permission/directive.vue
.permission-alert {
background-color: lighten($theme-bg-color, 8%);
}
// 写在这里...
}

View File

@ -13,52 +13,39 @@ const handleRolesChange = () => {
<template>
<div class="app-container">
<SwitchRoles @change="handleRolesChange" />
<div :key="key" class="margin-top">
<!-- v-permission 示例 -->
<div :key="key" class="margin-top-30">
<div>
<span v-permission="['admin']" class="permission-alert">
只有
<el-tag>admin</el-tag>可以看见这个
</span>
<el-tag v-permission="['admin']" class="permission-code" type="info" size="large">
v-permission="['admin']"
<el-tag v-permission="['admin']" type="success" size="large" effect="plain">
这里采用了 v-permission="['admin']" 所以只有 admin 可以看见这句话
</el-tag>
</div>
<div>
<span v-permission="['editor']" class="permission-alert">
只有
<el-tag>editor</el-tag>可以看见这个
</span>
<el-tag v-permission="['editor']" class="permission-code" type="info" size="large">
v-permission="['editor']"
<el-tag v-permission="['editor']" type="success" size="large" effect="plain">
这里采用了 v-permission="['editor']" 所以只有 editor 可以看见这句话
</el-tag>
</div>
<div>
<span v-permission="['admin', 'editor']" class="permission-alert">
两者
<el-tag>admin</el-tag> <el-tag>editor</el-tag>都可以看见这个
</span>
<el-tag v-permission="['admin', 'editor']" class="permission-code" type="info" size="large">
v-permission="['admin', 'editor']"
<div class="margin-top-15">
<el-tag v-permission="['admin', 'editor']" type="success" size="large" effect="plain">
这里采用了 v-permission="['admin', 'editor']" 所以 admin editor 都可以看见这句话
</el-tag>
</div>
</div>
<div :key="'checkPermission' + key" class="margin-top">
<el-tag type="info" size="large">
在某些情况下不适合使用 v-permission例如: Element Plus el-tab-pane el-table-column 以及其它动态渲染 Dom
的场景你只能通过手动设置 v-if 来实现
<!-- checkPermission 示例 -->
<div :key="`checkPermission${key}`" class="margin-top-30">
<el-tag type="warning" size="large">
例如 Element Plus el-tab-pane el-table-column 以及其它动态渲染 Dom 的场景不适合使用
v-permission这种情况下你可以通过 v-if checkPermission 来实现
</el-tag>
<el-tabs type="border-card" class="margin-top">
<el-tabs type="border-card" class="margin-top-15">
<el-tab-pane v-if="checkPermission(['admin'])" label="admin">
admin 可以看见这个
<el-tag class="permission-code" type="info"> v-if="checkPermission(['admin'])" </el-tag>
这里采用了 <el-tag>v-if="checkPermission(['admin'])"</el-tag> 所以只有 admin 可以看见这句话
</el-tab-pane>
<el-tab-pane v-if="checkPermission(['editor'])" label="editor">
editor 可以看见这个
<el-tag class="permission-code" type="info"> v-if="checkPermission(['editor'])" </el-tag>
这里采用了 <el-tag>v-if="checkPermission(['editor'])"</el-tag> 所以只有 editor 可以看见这句话
</el-tab-pane>
<el-tab-pane v-if="checkPermission(['admin', 'editor'])" label="admin 和 editor">
两者 admin editor 都可以看见这个
<el-tag class="permission-code" type="info"> v-if="checkPermission(['admin', 'editor'])" </el-tag>
这里采用了 <el-tag>v-if="checkPermission(['admin', 'editor'])"</el-tag> 所以 admin editor 都可以看见这句话
</el-tab-pane>
</el-tabs>
</div>
@ -66,21 +53,10 @@ const handleRolesChange = () => {
</template>
<style lang="scss" scoped>
.permission-alert {
width: 320px;
.margin-top-15 {
margin-top: 15px;
background-color: #f0f9eb;
color: #67c23a;
padding: 8px 16px;
border-radius: 4px;
display: inline-block;
}
.permission-code {
margin-left: 15px;
}
.margin-top {
.margin-top-30 {
margin-top: 30px;
}
</style>

View File

@ -10,13 +10,13 @@ const handleRolesChange = () => {
<template>
<div class="app-container">
<el-tag type="success" size="large"> 当前页面只有 admin 权限可见 </el-tag>
<SwitchRoles @change="handleRolesChange" />
<el-tag type="warning" size="large">当前页面只有 admin 权限可见切换权限后将不能进入该页面</el-tag>
</div>
</template>
<style lang="scss" scoped>
.el-tag {
margin-bottom: 15px;
margin-top: 15px;
}
</style>