Files
JeecgBoot/jeecgboot-vue3/src/views/system/menu/DataRuleList.vue
2024-09-10 15:40:34 +08:00

145 lines
3.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>