<template>
<BasicDrawer v-bind="$attrs" @register="registerDrawer" title="数据规则配置" width="450px" destroyOnClose>
<a-tabs defaultActiveKey="1">
<a-tab-pane tab="数据规则" key="1">
<a-checkbox-group v-model:value="dataRuleChecked" v-if="dataRuleList.length > 0">
<a-row>
<a-col :span="24" v-for="(item, index) in dataRuleList" :key="'dr' + index">
<a-checkbox :value="item.id">{{ item.ruleName }}</a-checkbox>
</a-col>
<a-col :span="24">
<div style="width: 100%; margin-top: 15px">
<a-button @click="saveDataRuleForRole" type="primary" size="small"> <Icon icon="ant-design:save-outlined"></Icon>点击保存</a-button>
</div>
</a-col>
</a-row>
</a-checkbox-group>
<div v-else><h3>无配置信息!</h3></div>
</a-tab-pane>
</a-tabs>
</BasicDrawer>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { BasicDrawer, useDrawerInner } from '/src/components/Drawer';
import { useMessage } from '/src/hooks/web/useMessage';
import { queryDataRule, saveDataRule } from '../role.api';
// 声明Emits
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
// 声明数据
const functionId = ref('');
const roleId = ref('');
const dataRuleList = ref([]);
const dataRuleChecked = ref([]);
/**
* 数据
*/
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
await reset();
setDrawerProps({ confirmLoading: false });
//权限的id
functionId.value = data.functionId;
//角色的id
roleId.value = data.roleId;
//查询数据
const res = await queryDataRule({ functionId: unref(functionId), roleId: unref(roleId) });
if (res.success) {
dataRuleList.value = res.result.datarule;
if (res.result.drChecked) {
dataRuleChecked.value = res.result.drChecked.split(',');
}
}
});
/**
* 重置
*/
function reset() {
functionId.value = '';
roleId.value = '';
dataRuleList.value = [];
dataRuleChecked.value = [];
}
/**
* 提交
*/
async function saveDataRuleForRole() {
if (!unref(dataRuleChecked) || unref(dataRuleChecked).length == 0) {
createMessage.warning('请注意,现未勾选任何数据权限!');
}
let params = {
permissionId: unref(functionId),
roleId: unref(roleId),
dataRuleIds: unref(dataRuleChecked).join(','),
};
await saveDataRule(params);
//关闭弹窗
closeDrawer();
//刷新列表
emit('success');
}
</script>