<script lang="ts" setup>
|
import type { FormInstance } from 'ant-design-vue';
|
|
import type { DmsPermissionGrant } from '#/api/x/dms/permission';
|
|
import { reactive, ref } from 'vue';
|
|
import { useMessage } from '@jnpf/hooks';
|
import { BasicModal, useModalInner } from '@jnpf/ui/modal';
|
|
import { revokePermissionGrants } from '#/api/x/dms/permission';
|
|
const emit = defineEmits<{
|
reload: [];
|
}>();
|
|
const grant = ref<DmsPermissionGrant>();
|
const formRef = ref<FormInstance>();
|
const form = reactive({ reason: '' });
|
const { createMessage } = useMessage();
|
const [registerModal, { changeOkLoading, closeModal }] = useModalInner(init);
|
|
function init(data: { grant: DmsPermissionGrant }) {
|
grant.value = data.grant;
|
form.reason = '';
|
formRef.value?.clearValidate();
|
}
|
|
async function handleSubmit() {
|
if (!grant.value) return;
|
await formRef.value?.validate();
|
changeOkLoading(true);
|
try {
|
const response = await revokePermissionGrants({ permissionIds: [grant.value.id], reason: form.reason.trim() });
|
createMessage.success(response.msg || '权限已撤销');
|
closeModal();
|
emit('reload');
|
} finally {
|
changeOkLoading(false);
|
}
|
}
|
</script>
|
|
<template>
|
<BasicModal v-bind="$attrs" @register="registerModal" title="撤销文件权限" :width="520" destroy-on-close @ok="handleSubmit">
|
<a-alert class="mb-[18px]" type="warning" show-icon message="撤销立即生效,既有授权记录仍保留用于审计。" />
|
<a-form ref="formRef" :model="form" layout="vertical">
|
<a-form-item label="撤销原因" name="reason" :rules="[{ required: true, whitespace: true, message: '请输入撤销原因' }]">
|
<a-textarea v-model:value="form.reason" :maxlength="1000" :rows="4" show-count />
|
</a-form-item>
|
</a-form>
|
</BasicModal>
|
</template>
|