<script lang="ts" setup>
|
import { nextTick, ref } from 'vue';
|
|
import { BasicModal, useModalInner } from '@jnpf/ui/modal';
|
import { BasicVxeTable, useVxeTable } from '@jnpf/ui/vxeTable';
|
|
import { getMenuActionCandidates } from '#/api/system/buttonAuthorize';
|
import { $t } from '#/locales';
|
|
const emit = defineEmits(['register', 'change']);
|
const menuId = ref('');
|
const [registerModal, { closeModal }] = useModalInner(init);
|
const [registerTable, { getForm, getSelectRows, clearSelectedRowKeys, reload }] = useVxeTable({
|
api: (params) => getMenuActionCandidates({ ...params, menuId: menuId.value }),
|
columns: [
|
{ title: '动作编码', dataIndex: 'enCode' },
|
{ title: '动作名称', dataIndex: 'fullName' },
|
],
|
pagination: false,
|
useSearchForm: true,
|
formConfig: {
|
baseColProps: { span: 8 },
|
schemas: [
|
{
|
field: 'keyword',
|
label: $t('common.keyword'),
|
component: 'Input',
|
componentProps: {
|
placeholder: $t('common.enterKeyword'),
|
submitOnPressEnter: true,
|
},
|
},
|
],
|
},
|
tableSetting: { size: false, setting: false },
|
immediate: false,
|
rowSelection: { type: 'checkbox' },
|
});
|
function init(data) {
|
menuId.value = data.menuId;
|
getForm().resetFields();
|
nextTick(() => {
|
clearSelectedRowKeys();
|
reload();
|
});
|
}
|
function handleSubmit() {
|
const selectedData = getSelectRows();
|
if (!selectedData.length) return;
|
emit('change', selectedData);
|
closeModal();
|
}
|
</script>
|
<template>
|
<BasicModal v-bind="$attrs" @register="registerModal" title="菜单动作" @ok="handleSubmit" :width="800" class="jnpf-list-modal">
|
<BasicVxeTable @register="registerTable" class="jnpf-sub-table" />
|
</BasicModal>
|
</template>
|