<template>
<BasicDrawer title="部门角色分配" :width="365" @close="onClose" @register="registerDrawer">
<a-spin :spinning="loading">
<template v-if="desformList.length > 0">
<a-checkbox-group v-model:value="designNameValue">
<a-row>
<a-col :span="24" v-for="item of desformList">
<a-checkbox :value="item.id">{{ item.roleName }}</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
<div style="width: 100%; margin-top: 15px">
<a-button type="primary" :loading="loading" :size="'small'" preIcon="ant-design:save-filled" @click="onSubmit">
<span>点击保存</span>
</a-button>
</div>
</template>
<a-empty v-else description="无配置信息" />
</a-spin>
</BasicDrawer>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
import { queryDepartRoleByUserId, queryDepartRoleUserList, saveDepartRoleUser } from '../depart.user.api';
defineEmits(['register']);
const loading = ref<boolean>(false);
const userId = ref('');
const departId = ref('');
const oldRoleId = ref('');
const desformList = ref<Array<any>>([]);
const designNameValue = ref<Array<any>>([]);
// 注册抽屉组件
const [registerDrawer, { closeDrawer }] = useDrawerInner((data) => {
userId.value = unref(data.userId);
departId.value = unref(data.departId);
loadData();
});
async function loadData() {
try {
loading.value = true;
const params = {
departId: departId.value,
userId: userId.value,
};
// 查询 DepartRole
const [$desformList, $departRoleList] = await Promise.all([queryDepartRoleUserList(params), queryDepartRoleByUserId(params)]);
desformList.value = $desformList;
designNameValue.value = $departRoleList.map((item) => item.droleId);
oldRoleId.value = designNameValue.value.join(',');
} finally {
loading.value = false;
}
}
async function onSubmit() {
try {
loading.value = true;
await saveDepartRoleUser({
userId: userId.value,
newRoleId: designNameValue.value.join(','),
oldRoleId: oldRoleId.value,
});
doClose();
} finally {
loading.value = false;
}
}
function onClose() {
doReset();
}
function doClose() {
doReset();
closeDrawer();
}
function doReset() {
userId.value = '';
departId.value = '';
oldRoleId.value = '';
desformList.value = [];
designNameValue.value = [];
}
</script>