控制权限按钮的显示隐藏
程序员文章站
2022-05-05 19:10:25
...
权限按钮的显示隐藏
<template slot="top-right">
<el-button
v-if="fn('organizationManage-new')"
type="primary"
icon="el-icon-plus"
:disabled="!hasCurrentNodeData"
@click="showAddOrg"
>新增组织</el-button>
<!-- v-if="$checkBtnAuth('delete', authData, true)" -->
<el-button
v-if="fn('organizationManage-delete')"
:disabled="!selected_rows||selected_rows.length<=0"
@click="handleClickDelete"
>删除</el-button>
</template>
//修改权限显示
fn(btn) {
let arr = JSON.parse(sessionStorage.getItem('vuex')).all_has_permission_code
let flag = arr.indexOf(btn)
if (flag == -1) {
return false
} else {
return true
}
}
控制按钮权限操作
<template>
<div class="app-container">
<el-button
type="primary"
icon="el-icon-plus"
@click="addOneRow"
>新增一行</el-button>
<el-table
v-loading="item_menu_permission_loading"
:data="itemMenuPermissionTable"
max-height="400px"
height="400px"
border
fit
highlight-current-row
style="width: 100%;"
>
<el-table-column
type="index"
align="center"
label="ID"
width="40"
></el-table-column>
<el-table-column
min-width="140px"
align="center"
label="权限名称"
>
<template slot-scope="{row}">
<template v-if="row.edit">
<div class="edit">
<el-input
v-model="row.actionName"
class="edit-input"
/>
<el-button
class="cancel-btn"
type="text"
icon="el-icon-refresh"
@click="cancelEdit(row)"
>取消</el-button>
</div>
</template>
<span v-else>{{ row.actionName }}</span>
</template>
</el-table-column>
<el-table-column
min-width="260px"
label="权限编码"
>
<template slot-scope="{row}">
<template v-if="row.edit">
<div class="edit">
<el-input
v-model.trim="row.actionCode"
class="edit-input"
/>
<el-button
class="cancel-btn"
icon="el-icon-refresh"
type="text"
@click="cancelEdit(row)"
>取消</el-button>
</div>
</template>
<span v-else>{{ row.actionCode }}</span>
</template>
</el-table-column>
<el-table-column
width="110px"
label="权限类型"
>
<template slot-scope="{row}">
<el-select
v-model="row.actionOperation"
placeholder
>
<el-option
v-for="item in action_operation_options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
width="110px"
label="请求类型"
>
<template slot-scope="{row}">
<el-select
v-model="row.actionType"
placeholder
>
<el-option
v-for="item in actionTypeOptions"
:key="item.value"
:label="item.value"
:value="item.value"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
min-width="100px"
label="请求地址"
>
<template slot-scope="{row}">
<template v-if="row.edit">
<div class="edit">
<el-input
v-model.trim="row.actionURL"
class="edit-input"
/>
<el-button
class="cancel-btn"
icon="el-icon-refresh"
type="text"
@click="cancelEdit(row)"
>取消</el-button>
</div>
</template>
<span v-else>{{ row.actionURL }}</span>
</template>
</el-table-column>
<el-table-column
width="80px"
label="启用"
>
<template slot-scope="{row}">
<el-switch
v-model="row.ifUse"
:active-value="1"
:inactive-value="0"
@change="singleControlSwitch(row)"
></el-switch>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作"
width="140"
>
<template slot-scope="{row,$index}">
<el-button
v-if="row.edit"
type="success"
plain
@click="confirmEdit(row)"
>完成</el-button>
<el-button
v-else
type="primary"
plain
@click="handleEdit(row)"
>编辑</el-button>
<el-button
type="text"
@click="handleDelete(row,$index)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
export default class ItemPermissionTable extends Vue {
filters = {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'info',
deleted: 'danger'
}
return statusMap[status]
}
}
listLoading = true
// 权限类型
//请求类型
actionTypeOptions = [
{
value: 'GET'
},
{
value: 'POST'
},
{
value: 'PUT'
},
{
value: 'DELETE'
}
]
@vuexSystemMenu.State current_menu!: IMenuDetail
@vuexSystemMenu.State item_menu_permission_loading
@vuexSystemMenu.State action_operation_options
// 权限列表
@vuexSystemMenu.State item_menu_permission
get itemMenuPermissionTable(): IItemMenuPermissionForm[] {
return this.item_menu_permission
}
set itemMenuPermissionTable(val: IItemMenuPermissionForm[]) {
this.itemMenuPermissionTable = val
}
singleControlSwitch({ ifUse, id }) {
// console.log(ifUse, id, 2)
getRestart(id, ifUse)
.then(res => {
//console.log(res)
this.$notify.success(`${['禁用', '启用'][ifUse]}成功!`)
})
.catch(e => {
// this.$notify.error(`${['禁用', '启用'][ifUse]}失败: ${e.message}`)
})
}
handleEdit(row) {
this.$set(row, 'edit', true)
}
handleDelete(row, $index) {
this.$confirm(`确定删除选择的权限?`, { type: 'warning' }).then(() => {
if (!row.id) {
this.itemMenuPermissionTable.splice($index, 1)
return
}
deleteMenuPermission([row.id])
.then(res => {
this.itemMenuPermissionTable.splice($index, 1)
})
.catch(e => {
this.$notify.error(`删除失败: ${e.message}`)
})
})
}
addOneRow() {
this.itemMenuPermissionTable.push({
menuId: this.current_menu.id,
actionOperation: 'check',
actionCode: '',
actionName: '',
actionType: 'GET',
actionURL: '',
ifUse: 1,
edit: true
})
}
cancelEdit(row) {
row.edit = false
this.$message({
message: '已取消编辑,将不保存修改!',
type: 'warning'
})
}
confirmEdit(row) {
this.$set(row, 'edit', false)
postMenuPermission(row)
.then(res => {
this.$notify.success(`保存成功!`)
})
.catch(e => {
this.$notify.error(`保存失败: ${e.message}`)
})
}
}
上一篇: javascript 控制 html元素 显示/隐藏
下一篇: Flex 布局教程:实例篇