mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2026-01-03 03:45:28 +08:00
145 lines
3.8 KiB
Vue
145 lines
3.8 KiB
Vue
<template>
|
||
<BasicDrawer v-bind="$attrs" @register="registerDrawer" title="数据权限规则" :width="adaptiveWidth" :rootClassName="prefixCls">
|
||
<BasicTable @register="registerTable">
|
||
<template #tableTitle>
|
||
<a-button type="primary" @click="handleCreate"> 新增</a-button>
|
||
</template>
|
||
<template #action="{ record }">
|
||
<TableAction :actions="getTableAction(record)" />
|
||
</template>
|
||
</BasicTable>
|
||
</BasicDrawer>
|
||
<DataRuleModal @register="registerModal" @success="reload" :permissionId="permissionId" />
|
||
</template>
|
||
<script lang="ts" setup>
|
||
import { ref, unref } from 'vue';
|
||
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
|
||
import { BasicTable, useTable, TableAction } from '/@/components/Table';
|
||
import { useModal } from '/@/components/Modal';
|
||
import DataRuleModal from './DataRuleModal.vue';
|
||
import { dataRuleColumns, dataRuleSearchFormSchema } from './menu.data';
|
||
import { dataRuleList, deleteRule } from './menu.api';
|
||
import { ColEx } from '/@/components/Form/src/types';
|
||
import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
|
||
import { useDesign } from '/@/hooks/web/useDesign';
|
||
const permissionId = ref('');
|
||
const { adaptiveWidth } = useDrawerAdaptiveWidth();
|
||
const { prefixCls } = useDesign('sys-menu-dataRulelist');
|
||
//权限规则model
|
||
const [registerModal, { openModal }] = useModal();
|
||
const [registerDrawer] = useDrawerInner(async (data) => {
|
||
permissionId.value = data.id;
|
||
setProps({ searchInfo: { permissionId: unref(permissionId) } });
|
||
reload();
|
||
});
|
||
// 自适应列配置
|
||
const adaptiveColProps: Partial<ColEx> = {
|
||
xs: 24, // <576px
|
||
sm: 24, // ≥576px
|
||
md: 24, // ≥768px
|
||
lg: 12, // ≥992px
|
||
xl: 8, // ≥1200px
|
||
xxl: 8, // ≥1600px
|
||
};
|
||
const [registerTable, { reload, setProps }] = useTable({
|
||
api: dataRuleList,
|
||
columns: dataRuleColumns,
|
||
size: 'small',
|
||
formConfig: {
|
||
baseColProps: adaptiveColProps,
|
||
labelAlign: 'right',
|
||
labelCol: {
|
||
offset: 1,
|
||
xs: 24,
|
||
sm: 24,
|
||
md: 24,
|
||
lg: 8,
|
||
xl: 8,
|
||
xxl: 8,
|
||
},
|
||
wrapperCol: {},
|
||
schemas: dataRuleSearchFormSchema,
|
||
autoSubmitOnEnter: true,
|
||
},
|
||
striped: true,
|
||
useSearchForm: true,
|
||
bordered: true,
|
||
showIndexColumn: false,
|
||
showTableSetting: false,
|
||
canResize: false,
|
||
immediate: false,
|
||
actionColumn: {
|
||
width: 100,
|
||
title: '操作',
|
||
dataIndex: 'action',
|
||
slots: { customRender: 'action' },
|
||
fixed: undefined,
|
||
},
|
||
});
|
||
|
||
/**
|
||
* 新增
|
||
*/
|
||
function handleCreate() {
|
||
openModal(true, {
|
||
isUpdate: false,
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 编辑
|
||
*/
|
||
function handleEdit(record) {
|
||
openModal(true, {
|
||
record,
|
||
isUpdate: true,
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 删除
|
||
*/
|
||
async function handleDelete(record) {
|
||
await deleteRule({ id: record.id }, reload);
|
||
}
|
||
|
||
/**
|
||
* 操作栏
|
||
*/
|
||
function getTableAction(record) {
|
||
return [
|
||
{
|
||
label: '编辑',
|
||
onClick: handleEdit.bind(null, record),
|
||
},
|
||
{
|
||
label: '删除',
|
||
popConfirm: {
|
||
title: '是否确认删除',
|
||
confirm: handleDelete.bind(null, record),
|
||
},
|
||
},
|
||
];
|
||
}
|
||
</script>
|
||
<style lang="less">
|
||
// -update-begin--author:liaozhiyang---date:20240702---for:【TV360X-1660】菜单管理-数据权限的查询和按钮没间隙
|
||
@prefix-cls: ~'@{namespace}-sys-menu-dataRulelist';
|
||
.@{prefix-cls} {
|
||
.jeecg-basic-table {
|
||
padding: 0;
|
||
}
|
||
.btnArea {
|
||
.ant-btn {
|
||
&:last-child {
|
||
margin-right: 0;
|
||
}
|
||
&:first-child {
|
||
margin-left: 8px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// -update-end--author:liaozhiyang---date:20240702---for:【TV360X-1660】菜单管理-数据权限的查询和按钮没间隙
|
||
</style>
|