update: 组织管理添加按钮权限

This commit is contained in:
easy 2023-02-16 16:35:39 +08:00
parent d7754789bf
commit 0929185967
6 changed files with 192 additions and 114 deletions

View File

@ -10,9 +10,17 @@
<search-outlined />
</template>
</a-input>
<a-button type="primary" @click="openDialog()" class="add-btn">
新增
</a-button>
<div class="add-btn">
<PermissionButton
type="primary"
class="add-btn"
:uhasPermission="`${permission}:add`"
@click="openDialog()"
>
新增
</PermissionButton>
</div>
<a-tree
:tree-data="treeData"
v-model:selected-keys="selectedKeys"
@ -22,13 +30,13 @@
<template #title="{ name, data }">
<span>{{ name }}</span>
<span class="func-btns" @click="(e) => e.stopPropagation()">
<a-tooltip>
<!-- <a-tooltip>
<template #title>编辑</template>
<a-button style="padding: 0" type="link">
<edit-outlined @click="openDialog(data)" />
</a-button>
</a-tooltip>
<a-tooltip>
</a-tooltip> -->
<!-- <a-tooltip>
<template #title>新增子组织</template>
<a-button style="padding: 0" type="link">
<plus-circle-outlined
@ -42,9 +50,9 @@
"
/>
</a-button>
</a-tooltip>
</a-tooltip> -->
<a-popconfirm
<!-- <a-popconfirm
title="确认删除"
ok-text="确定"
cancel-text="取消"
@ -56,7 +64,45 @@
<delete-outlined />
</a-button>
</a-tooltip>
</a-popconfirm>
</a-popconfirm> -->
<PermissionButton
:uhasPermission="`${permission}:update`"
type="link"
:tooltip="{
title: '新增子组织',
}"
@click="openDialog(data)"
>
<AIcon type="EditOutlined" />
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:add`"
type="link"
:tooltip="{
title: '新增子组织',
}"
@click="
openDialog({
...data,
id: '',
parentId: data.id,
})
"
>
<AIcon type="PlusCircleOutlined" />
</PermissionButton>
<PermissionButton
type="link"
:uhasPermission="`${permission}:delete`"
:tooltip="{ title: '删除' }"
:popConfirm="{
title: `确定要删除吗`,
onConfirm: () => delDepartment(data.id),
}"
>
<AIcon type="DeleteOutlined" />
</PermissionButton>
</span>
</template>
</a-tree>
@ -71,19 +117,17 @@
</template>
<script setup lang="ts">
import PermissionButton from '@/components/PermissionButton/index.vue';
import { getTreeData_api, delDepartment_api } from '@/api/system/department';
import { debounce, cloneDeep, omit } from 'lodash-es';
import { ArrayToTree } from '@/utils/utils';
import EditDepartmentDialog from './EditDepartmentDialog.vue';
import {
SearchOutlined,
EditOutlined,
PlusCircleOutlined,
DeleteOutlined,
} from '@ant-design/icons-vue';
import { SearchOutlined } from '@ant-design/icons-vue';
import { message } from 'ant-design-vue';
const permission = 'system/Department';
const save = useRoute().query.save;
const emits = defineEmits(['change']);
const searchValue = ref(''); //
@ -195,7 +239,10 @@ function init() {
.add-btn {
margin: 24px 0;
width: 100%;
:deep(.ant-btn-primary) {
width: 100%;
}
}
:deep(.ant-tree-treenode) {
@ -210,8 +257,9 @@ function init() {
.func-btns {
display: none;
font-size: 14px;
.ant-btn {
height: 22px;
.ant-btn-link {
padding: 0 4px;
height: 24px;
}
}
&:hover {

View File

@ -14,29 +14,38 @@
>
<template #headerTitle>
<a-space>
<a-button type="primary" @click="table.clickAdd">
<plus-outlined />资产分配
</a-button>
<PermissionButton
:uhasPermission="`${permission}:assert`"
type="primary"
@click="table.clickAdd"
>
<AIcon type="PlusOutlined" />资产分配
</PermissionButton>
<a-dropdown trigger="hover">
<a-button>批量操作</a-button>
<template #overlay>
<a-menu>
<a-menu-item>
<a-popconfirm
title="是否批量解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickUnBind()"
<PermissionButton
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否批量解除绑定`,
onConfirm: () =>
table.clickUnBind(),
}"
>
<a-button>
<DisconnectOutlined /> 批量解绑
</a-button>
</a-popconfirm>
<AIcon
type="DisconnectOutlined"
/>
</PermissionButton>
</a-menu-item>
<a-menu-item>
<a-button @click="table.clickEdit()">
<EditOutlined /> 批量编辑
</a-button>
<PermissionButton
:uhasPermission="`${permission}:assert`"
@click="table.clickEdit()"
>
<AIcon type="EditOutlined" />批量编辑
</PermissionButton>
</a-menu-item>
</a-menu>
</template>
@ -102,21 +111,22 @@
</a-row>
</template>
<template #actions>
<a-button
<PermissionButton
:uhasPermission="`${permission}:assert`"
@click="table.clickEdit(slotProps)"
style="margin-right: 10px"
>
<AIcon type="EditOutlined" />
</a-button>
<a-popconfirm
title="是否解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickUnBind(slotProps)"
><a-button>
<AIcon type="DisconnectOutlined" />
</a-button>
</a-popconfirm>
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否解除绑定`,
onConfirm: () => table.clickUnBind(slotProps),
}"
>
<AIcon type="DisconnectOutlined" />
</PermissionButton>
</template>
</CardBox>
</template>
@ -143,11 +153,8 @@
</template>
<script setup lang="ts" name="device">
import {
PlusOutlined,
EditOutlined,
DisconnectOutlined,
} from '@ant-design/icons-vue';
import PermissionButton from '@/components/PermissionButton/index.vue';
import AddDeviceOrProductDialog from '../components/AddDeviceOrProductDialog.vue';
import EditPermissionDialog from '../components/EditPermissionDialog.vue';
import { getImage } from '@/utils/comm';
@ -163,6 +170,8 @@ import { intersection } from 'lodash-es';
import { dictType } from '../typing.d.ts';
import { message } from 'ant-design-vue';
const permission = 'system/Department';
const emits = defineEmits(['update:bindBool']);
const props = defineProps<{
parentId: string;
@ -453,7 +462,7 @@ nextTick(() => {
}
}
.card-tools {
.ant-btn {
span {
color: #252525;
}
}

View File

@ -55,8 +55,9 @@ const openDeviceBind = () => {
flex-basis: 300px;
}
.right {
flex: 1 1 auto;
.ant-tabs-nav {
width: calc(100% - 300px);
.ant-tabs-nav-wrap {
padding-left: 24px;
}
}

View File

@ -14,29 +14,38 @@
>
<template #headerTitle>
<a-space>
<a-button type="primary" @click="table.clickAdd">
<plus-outlined />资产分配
</a-button>
<PermissionButton
:uhasPermission="`${permission}:assert`"
type="primary"
@click="table.clickAdd"
>
<AIcon type="PlusOutlined" />资产分配
</PermissionButton>
<a-dropdown trigger="hover">
<a-button>批量操作</a-button>
<template #overlay>
<a-menu>
<a-menu-item>
<a-popconfirm
title="是否批量解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickUnBind()"
<PermissionButton
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否批量解除绑定`,
onConfirm: () =>
table.clickUnBind(),
}"
>
<a-button>
<DisconnectOutlined /> 批量解绑
</a-button>
</a-popconfirm>
<AIcon
type="DisconnectOutlined"
/>
</PermissionButton>
</a-menu-item>
<a-menu-item>
<a-button @click="table.clickEdit()">
<EditOutlined /> 批量编辑
</a-button>
<PermissionButton
:uhasPermission="`${permission}:assert`"
@click="()=>table.clickEdit()"
>
<AIcon type="EditOutlined" />批量编辑
</PermissionButton>
</a-menu-item>
</a-menu>
</template>
@ -102,21 +111,22 @@
</a-row>
</template>
<template #actions>
<a-button
@click="table.clickEdit(slotProps)"
style="margin-right: 10px"
<PermissionButton
:uhasPermission="`${permission}:assert`"
@click="() => table.clickEdit(slotProps)"
>
<AIcon type="EditOutlined" />
</a-button>
<a-popconfirm
title="是否解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickUnBind(slotProps)"
><a-button>
<AIcon type="DisconnectOutlined" />
</a-button>
</a-popconfirm>
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否解除绑定`,
onConfirm: () => table.clickUnBind(slotProps),
}"
>
<AIcon type="DisconnectOutlined" />
</PermissionButton>
</template>
</CardBox>
</template>
@ -138,17 +148,17 @@
asset-type="product"
@confirm="table.refresh"
/>
<NextDialog ref="nextDialogRef" @confirm="emits('openDeviceBind')" />
<NextDialog
ref="nextDialogRef"
@confirm="emits('openDeviceBind')"
/>
</div>
</div>
</template>
<script setup lang="ts" name="product">
import {
PlusOutlined,
EditOutlined,
DisconnectOutlined,
} from '@ant-design/icons-vue';
import PermissionButton from '@/components/PermissionButton/index.vue';
import AddDeviceOrProductDialog from '../components/AddDeviceOrProductDialog.vue';
import EditPermissionDialog from '../components/EditPermissionDialog.vue';
import NextDialog from '../components/NextDialog.vue';
@ -164,7 +174,9 @@ import { intersection } from 'lodash-es';
import { dictType } from '../typing.d.ts';
import { message } from 'ant-design-vue';
const emits = defineEmits(['openDeviceBind'])
const permission = 'system/Department';
const emits = defineEmits(['openDeviceBind']);
const props = defineProps<{
parentId: string;
}>();
@ -363,6 +375,8 @@ const table = {
}
},
clickAdd: () => {
console.log(222)
console.log(addDialogRef.value)
addDialogRef.value && addDialogRef.value.openDialog();
},
clickEdit: (row?: any) => {
@ -405,10 +419,10 @@ const table = {
tableRef.value.reload();
});
},
addConfirm: ()=>{
table.refresh()
nextDialogRef.value && nextDialogRef.value.openDialog()
}
addConfirm: () => {
table.refresh();
nextDialogRef.value && nextDialogRef.value.openDialog();
},
};
const addDialogRef = ref();
@ -428,7 +442,7 @@ table.init();
}
}
.card-tools {
.ant-btn {
span {
color: #252525;
}
}

View File

@ -15,23 +15,24 @@
model="TABLE"
>
<template #headerTitle>
<a-button
<PermissionButton
type="primary"
:uhasPermission="`${permission}:bind-user`"
@click="table.openDialog"
style="margin-right: 10px"
style="margin-right: 15px;"
>
<AIcon type="PlusOutlined" />绑定用户
</a-button>
<a-popconfirm
title="是否解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.unBind()"
</PermissionButton>
<div style="display: inline-block;width: 12px;height: 1px;"></div>
<PermissionButton
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否解除绑定`,
onConfirm: () => table.unBind(),
}"
>
<a-button
><AIcon type="DisconnectOutlined" />批量解绑</a-button
>
</a-popconfirm>
<AIcon type="DisconnectOutlined" />批量解绑
</PermissionButton>
</template>
<template #status="slotProps">
<BadgeStatus
@ -45,16 +46,16 @@
</template>
<template #action="slotProps">
<a-space :size="16">
<a-popconfirm
title="是否解除绑定"
ok-text="确定"
cancel-text="取消"
@confirm="table.unBind(slotProps)"
<PermissionButton
type="link"
:uhasPermission="`${permission}:bind`"
:popConfirm="{
title: `是否解除绑定`,
onConfirm: () => table.unBind(slotProps),
}"
>
<a-button style="padding: 0" type="link">
<AIcon type="DisconnectOutlined" />
</a-button>
</a-popconfirm>
<AIcon type="DisconnectOutlined" />
</PermissionButton>
</a-space>
</template>
</JTable>
@ -70,10 +71,13 @@
</template>
<script setup lang="ts" name="user">
import PermissionButton from '@/components/PermissionButton/index.vue';
import AddBindUserDialog from './components/addBindUserDialog.vue';
import { getBindUserList_api, unBindUser_api } from '@/api/system/department';
import { message } from 'ant-design-vue';
const permission = 'system/Department';
const addDialogRef = ref();
const props = defineProps<{

View File

@ -100,6 +100,7 @@
</a-form-item>
</a-col>
</a-row>
<!-- 还差页面权限 -->
<a-row :gutter="24" v-if="form.IsShow('add', 'edit')">
<a-col :span="12">
<a-form-item name="roleIdList" label="角色" class="flex">
@ -110,6 +111,7 @@
placeholder="请选择角色"
:options="form.roleOptions"
></a-select>
<PermissionButton
:uhasPermission="`${rolePermission}:update`"
@click="form.clickAddItem('roleIdList', 'Role')"