这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
2.0 KiB

<script setup lang="ts">
import type { TenantConnectionStringDto, TenantDto } from '../../types';
import { ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { message } from 'ant-design-vue';
import { useTenantsApi } from '../../api/useTenantsApi';
import ConnectionStringTable from './ConnectionStringTable.vue';
defineProps<{
dataBaseOptions: { label: string; value: string }[];
}>();
const connectionStrings = ref<TenantConnectionStringDto[]>([]);
const {
cancel,
deleteConnectionStringApi,
getConnectionStringsApi,
setConnectionStringApi,
} = useTenantsApi();
const [Modal, modalApi] = useVbenModal({
class: 'w-[800px]',
onClosed: cancel,
async onOpenChange(isOpen) {
connectionStrings.value = [];
if (isOpen) {
const dto = modalApi.getData<TenantDto>();
await onGet(dto.id);
}
},
});
async function onGet(id: string) {
const { items } = await getConnectionStringsApi(id);
connectionStrings.value = items;
}
async function onChange(data: TenantConnectionStringDto) {
const dto = modalApi.getData<TenantDto>();
try {
modalApi.setState({ submitting: true });
await setConnectionStringApi(dto.id, data);
message.success($t('AbpUi.SavedSuccessfully'));
await onGet(dto.id);
} finally {
modalApi.setState({ submitting: false });
}
}
async function onDelete(data: TenantConnectionStringDto) {
const dto = modalApi.getData<TenantDto>();
try {
modalApi.setState({ submitting: true });
await deleteConnectionStringApi(dto.id, data.name);
message.success($t('AbpUi.DeletedSuccessfully'));
await onGet(dto.id);
} finally {
modalApi.setState({ submitting: false });
}
}
</script>
<template>
<Modal :title="$t('AbpSaas.ConnectionStrings')">
<ConnectionStringTable
:data-base-options="dataBaseOptions"
:connection-strings="connectionStrings"
:delete="onDelete"
:submit="onChange"
/>
</Modal>
</template>
<style scoped></style>