<!--套餐中使用的用户选择框--> <template> <div> <BasicModal v-bind="$attrs" @register="register" :title="modalTitle" width="900px" wrapClassName="j-user-select-modal" @ok="handleOk" destroyOnClose > <BasicTable ref="tableRef" @register="registerTable" :rowSelection="rowSelection"> <template #tableTitle></template> </BasicTable> </BasicModal> </div> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; import { BasicModal, useModalInner } from '/@/components/Modal'; import { getTenantUserList } from '../tenant.api'; import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; import { useListPage } from '/@/hooks/system/useListPage'; import { userColumns, userSearchFormSchema } from '../tenant.data'; export default defineComponent({ name: 'TenantUserSelectModal', components: { //此处需要异步加载BasicTable BasicModal, BasicTable: createAsyncComponent(() => import('/@/components/Table/src/BasicTable.vue'), { loading: true, }), }, props: { //选择框标题 modalTitle: { type: String, default: '选择用户', }, //查询参数 tenantId: { type: Number, default: 0, }, //排除用户id的集合 excludeUserIdList: { type: Array, default: [], }, }, emits: ['register', 'on-select'], setup(props, { emit, refs }) { const tableScroll = ref<any>({ x: false }); const tableRef = ref(); //注册弹框 const [register, { closeModal }] = useModalInner(() => { if (window.innerWidth < 900) { tableScroll.value = { x: 900 }; } else { tableScroll.value = { x: false }; } setTimeout(() => { if (tableRef.value) { tableRef.value.setSelectedRowKeys([]); } }, 800); }); //定义表格列 const columns = [ { title: '账号', dataIndex: 'username', width: 40, align: 'left', }, { title: '姓名', dataIndex: 'realname', width: 40, }, { title: '性别', dataIndex: 'sex_dictText', width: 20, }, { title: '手机号码', dataIndex: 'phone', width: 30, }, { title: '邮箱', dataIndex: 'email', width: 40, }, { title: '状态', dataIndex: 'status_dictText', width: 20, }, ]; // 列表页面公共参数、方法 const { prefixCls, tableContext } = useListPage({ designScope: 'tenant-template', tableProps: { api: getTenantUserList, columns: userColumns, scroll: { y: 390 }, rowKey: 'id', showActionColumn: false, formConfig: { schemas: userSearchFormSchema, labelWidth: 60, actionColOptions: { xs: 24, sm: 8, md: 8, lg: 8, xl: 8, xxl: 8, }, }, beforeFetch: (params) => { return Object.assign(params, { userTenantId: props.tenantId }); }, }, }); const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext; /** * 确定选择 */ function handleOk() { //返回选中事件 emit('on-select', rowSelection.selectedRows, rowSelection.selectedRowKeys); } return { handleOk, register, columns, rowSelection, tableScroll, tableRef, registerTable, }; }, }); </script> <style scoped> :deep(.ant-input-suffix) { display: none; } </style>