admin-vben/src/views/infra/codegen/components/FinishForm.vue

68 lines
1.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<script lang="ts" setup>
import { Result } from 'ant-design-vue'
import { useRoute } from 'vue-router'
import PreviewModal from './PreviewModal.vue'
import { useModal } from '@/components/Modal'
import { useGo } from '@/hooks/web/usePage'
import { useI18n } from '@/hooks/web/useI18n'
import { useTabs } from '@/hooks/web/useTabs'
import { useMessage } from '@/hooks/web/useMessage'
import { downloadCodegen, getCodegenTable } from '@/api/infra/codegen'
const go = useGo()
const { closeCurrent } = useTabs()
const { query } = useRoute()
const { t } = useI18n()
const { createMessage } = useMessage()
const [registerPreviewModal, { openModal: openPreviewModal }] = useModal()
function handlePreview() {
const tableId = query.id as unknown as number
const record = { id: tableId }
openPreviewModal(true, { record })
}
async function handleGenTable() {
const tableId = query.id as unknown as number
const res = await getCodegenTable(tableId)
await downloadCodegen(res.table)
createMessage.success(t('common.successText'))
}
function handleGoList() {
closeCurrent()
go('/infra/codegen')
}
</script>
<template>
<div class="result-success m-5">
<Result status="success" title="代码生成成功" sub-title="">
<template #extra>
<a-button key="console" type="primary" @click="handleGoList">
</a-button>
<a-button key="preview" @click="handlePreview">
</a-button>
<a-button key="download" @click="handleGenTable">
</a-button>
</template>
</Result>
<PreviewModal @register="registerPreviewModal" />
</div>
</template>
<style lang="less" scoped>
.result-success {
padding: 48px 32px;
background-color: var(--component-background);
&__content {
padding: 24px 40px;
background-color: @background-color-light;
}
}
</style>