mirror of
https://gitee.com/devlive-community/datacap.git
synced 2024-11-30 02:57:37 +08:00
refactor(page): refactor source --> metadata --> table export
This commit is contained in:
parent
852d0bbc3c
commit
c3ba6048a3
@ -44,10 +44,10 @@ public class TableController
|
|||||||
return this.service.fetchData(code, configure);
|
return this.service.fetchData(code, configure);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "export/{id}")
|
@PostMapping(value = "export/{code}")
|
||||||
public CommonResponse exportDataById(@PathVariable Long id, @RequestBody ExportBody configure)
|
public CommonResponse exportDataByCode(@PathVariable String code, @RequestBody ExportBody configure)
|
||||||
{
|
{
|
||||||
return this.service.exportDataById(id, configure);
|
return this.service.exportDataByCode(code, configure);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping(value = "dataDownload/{username}/{filename}")
|
@GetMapping(value = "dataDownload/{username}/{filename}")
|
||||||
|
@ -19,6 +19,7 @@ public interface TableService
|
|||||||
*/
|
*/
|
||||||
CommonResponse<List<TableEntity>> getAllByDatabase(String code);
|
CommonResponse<List<TableEntity>> getAllByDatabase(String code);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves data from the database based on the provided ID and table filter.
|
* Retrieves data from the database based on the provided ID and table filter.
|
||||||
*
|
*
|
||||||
@ -35,7 +36,7 @@ public interface TableService
|
|||||||
* @param configure the export configuration
|
* @param configure the export configuration
|
||||||
* @return the response containing the exported data
|
* @return the response containing the exported data
|
||||||
*/
|
*/
|
||||||
CommonResponse exportDataById(Long id, ExportBody configure);
|
CommonResponse exportDataByCode(String code, ExportBody configure);
|
||||||
|
|
||||||
Object dataDownload(String username, String filename);
|
Object dataDownload(String username, String filename);
|
||||||
|
|
||||||
|
@ -135,12 +135,12 @@ public class TableServiceImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResponse exportDataById(Long id, ExportBody configure)
|
public CommonResponse exportDataByCode(String code, ExportBody configure)
|
||||||
{
|
{
|
||||||
TableEntity table = this.repository.findById(id)
|
TableEntity table = this.repository.findByCode(code)
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
if (table == null) {
|
if (table == null) {
|
||||||
return CommonResponse.failure(String.format("Table [ %s ] not found", id));
|
return CommonResponse.failure(String.format("Table [ %s ] not found", code));
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceEntity source = table.getDatabase().getSource();
|
SourceEntity source = table.getDatabase().getSource();
|
||||||
|
@ -42,23 +42,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</ShadcnContextMenuItem>
|
</ShadcnContextMenuItem>
|
||||||
</ShadcnContextMenuSub>
|
</ShadcnContextMenuSub>
|
||||||
|
|
||||||
|
<ShadcnContextMenuSub v-if="dataInfo?.level === StructureEnum.TABLE" :label="$t('source.common.menuExport')">
|
||||||
|
<ShadcnContextMenuItem @click="visibleExportData(true)">
|
||||||
|
<div class="flex items-center space-x-1">
|
||||||
|
<ShadcnIcon icon="ArrowUpFromLine" size="15"/>
|
||||||
|
<span>{{ $t('source.common.exportData') }}</span>
|
||||||
|
</div>
|
||||||
|
</ShadcnContextMenuItem>
|
||||||
|
</ShadcnContextMenuSub>
|
||||||
</ShadcnContextMenu>
|
</ShadcnContextMenu>
|
||||||
</div>
|
</div>
|
||||||
</ShadcnCard>
|
</ShadcnCard>
|
||||||
|
|
||||||
<!-- <DropdownMenuGroup v-if="dataInfo?.level === StructureEnum.TABLE">-->
|
|
||||||
<!-- <DropdownMenuSub>-->
|
|
||||||
<!-- <DropdownMenuSubTrigger class="cursor-pointer">{{ $t('source.common.menuExport') }}</DropdownMenuSubTrigger>-->
|
|
||||||
<!-- <DropdownMenuPortal>-->
|
|
||||||
<!-- <DropdownMenuSubContent>-->
|
|
||||||
<!-- <DropdownMenuItem v-if="dataInfo?.level === StructureEnum.TABLE" class="cursor-pointer" @click="handlerExportData(true)">-->
|
|
||||||
<!-- <ArrowUpFromLine :size="18" class="mr-2"/>-->
|
|
||||||
<!-- {{ $t('source.common.exportData') }}-->
|
|
||||||
<!-- </DropdownMenuItem>-->
|
|
||||||
<!-- </DropdownMenuSubContent>-->
|
|
||||||
<!-- </DropdownMenuPortal>-->
|
|
||||||
<!-- </DropdownMenuSub>-->
|
|
||||||
<!-- </DropdownMenuGroup>-->
|
|
||||||
<!-- <DropdownMenuSeparator/>-->
|
<!-- <DropdownMenuSeparator/>-->
|
||||||
<!-- <DropdownMenuItem v-if="dataInfo?.level === StructureEnum.TABLE" class="cursor-pointer" @click="handlerTruncateTable(true)">-->
|
<!-- <DropdownMenuItem v-if="dataInfo?.level === StructureEnum.TABLE" class="cursor-pointer" @click="handlerTruncateTable(true)">-->
|
||||||
<!-- <Trash :size="18" class="mr-2"/>-->
|
<!-- <Trash :size="18" class="mr-2"/>-->
|
||||||
@ -88,7 +83,11 @@
|
|||||||
:info="dataInfo"
|
:info="dataInfo"
|
||||||
@close="visibleCreateColumn(false)"/>
|
@close="visibleCreateColumn(false)"/>
|
||||||
|
|
||||||
<!-- <TableExport v-if="tableExportVisible" :isVisible="tableExportVisible" :info="dataInfo" @close="handlerExportData(false)"/>-->
|
<TableExport v-if="tableExportVisible"
|
||||||
|
:isVisible="tableExportVisible"
|
||||||
|
:info="dataInfo"
|
||||||
|
@close="visibleExportData(false)"/>
|
||||||
|
|
||||||
<!-- <TableTruncate v-if="tableTruncateVisible" :isVisible="tableTruncateVisible" :info="dataInfo" @close="handlerTruncateTable(false)"/>-->
|
<!-- <TableTruncate v-if="tableTruncateVisible" :isVisible="tableTruncateVisible" :info="dataInfo" @close="handlerTruncateTable(false)"/>-->
|
||||||
<!-- <TableDrop v-if="tableDropVisible" :isVisible="tableDropVisible" :info="dataInfo" @close="handlerDropTable(false)"/>-->
|
<!-- <TableDrop v-if="tableDropVisible" :isVisible="tableDropVisible" :info="dataInfo" @close="handlerDropTable(false)"/>-->
|
||||||
<!-- <ColumnChange v-if="columnChangeVisible" :isVisible="columnChangeVisible" :info="dataInfo" @close="handlerChangeColumn(false)"/>-->
|
<!-- <ColumnChange v-if="columnChangeVisible" :isVisible="columnChangeVisible" :info="dataInfo" @close="handlerChangeColumn(false)"/>-->
|
||||||
@ -255,7 +254,7 @@ export default defineComponent({
|
|||||||
{
|
{
|
||||||
this.columnCreateVisible = opened
|
this.columnCreateVisible = opened
|
||||||
},
|
},
|
||||||
handlerExportData(opened: boolean)
|
visibleExportData(opened: boolean)
|
||||||
{
|
{
|
||||||
this.tableExportVisible = opened
|
this.tableExportVisible = opened
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<template>dd
|
<template>
|
||||||
<ShadcnModal v-model="visible"
|
<ShadcnModal v-model="visible"
|
||||||
height="80%"
|
height="80%"
|
||||||
width="40%"
|
width="40%"
|
||||||
@ -92,13 +92,13 @@
|
|||||||
</ShadcnCol>
|
</ShadcnCol>
|
||||||
</ShadcnRow>
|
</ShadcnRow>
|
||||||
|
|
||||||
<div class="space-x-2">
|
<ShadcnSpace>
|
||||||
<ShadcnButton type="default" @click="onCancel">{{ $t('common.cancel') }}</ShadcnButton>
|
<ShadcnButton type="default" @click="onCancel">{{ $t('common.cancel') }}</ShadcnButton>
|
||||||
|
|
||||||
<ShadcnButton submit :loading="loading" :disabled="loading">
|
<ShadcnButton submit :loading="loading" :disabled="loading">
|
||||||
{{ $t('common.save') }}
|
{{ $t('common.save') }}
|
||||||
</ShadcnButton>
|
</ShadcnButton>
|
||||||
</div>
|
</ShadcnSpace>
|
||||||
</ShadcnForm>
|
</ShadcnForm>
|
||||||
</ShadcnModal>
|
</ShadcnModal>
|
||||||
</template>
|
</template>
|
||||||
|
@ -123,13 +123,13 @@
|
|||||||
</ShadcnCol>
|
</ShadcnCol>
|
||||||
</ShadcnRow>
|
</ShadcnRow>
|
||||||
|
|
||||||
<div class="space-x-2">
|
<ShadcnSpace>
|
||||||
<ShadcnButton type="default" @click="onCancel">{{ $t('common.cancel') }}</ShadcnButton>
|
<ShadcnButton type="default" @click="onCancel">{{ $t('common.cancel') }}</ShadcnButton>
|
||||||
|
|
||||||
<ShadcnButton submit :loading="loading" :disabled="loading">
|
<ShadcnButton submit :loading="loading" :disabled="loading">
|
||||||
{{ $t('common.save') }}
|
{{ $t('common.save') }}
|
||||||
</ShadcnButton>
|
</ShadcnButton>
|
||||||
</div>
|
</ShadcnSpace>
|
||||||
</ShadcnForm>
|
</ShadcnForm>
|
||||||
</ShadcnModal>
|
</ShadcnModal>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,51 +1,38 @@
|
|||||||
<template>
|
<template>
|
||||||
<Dialog :is-visible="visible" :title="title as string">
|
<ShadcnModal v-model="visible"
|
||||||
<div class="grid w-full grid-cols-2 gap-4 pt-1 pl-3 pr-3">
|
height="33%"
|
||||||
<FormField name="format">
|
width="40%"
|
||||||
<FormItem class="space-y-2">
|
:title="title"
|
||||||
<FormLabel>{{ $t('source.common.exportDataFormat') }}</FormLabel>
|
@on-close="onCancel">
|
||||||
<FormMessage/>
|
<ShadcnForm v-model="formState" v-if="formState" @on-submit="onSubmit">
|
||||||
<RadioGroup v-model="formState.format" :default-value="formState.format">
|
<ShadcnFormItem name="format" :label="$t('source.common.exportDataFormat')">
|
||||||
<div class="flex items-center space-x-2">
|
<ShadcnRadioGroup v-model="formState.format" name="format">
|
||||||
<RadioGroupItem id="CSV" value="CSV"/>
|
<ShadcnRadio value="CSV">CSV</ShadcnRadio>
|
||||||
<Label for="CSV">CSV</Label>
|
</ShadcnRadioGroup>
|
||||||
</div>
|
</ShadcnFormItem>
|
||||||
</RadioGroup>
|
|
||||||
</FormItem>
|
<ShadcnFormItem name="count" :label="$t('source.common.exportDataCount')">
|
||||||
</FormField>
|
<ShadcnNumber v-model="formState.count" name="count"/>
|
||||||
<FormField name="count">
|
</ShadcnFormItem>
|
||||||
<FormItem class="space-y-1">
|
|
||||||
<FormLabel>{{ $t('source.common.exportDataCount') }}</FormLabel>
|
<ShadcnFormItem name="path" :label="$t('source.common.downloadPath')">
|
||||||
<FormMessage/>
|
<div class="flex items-center space-x-1">
|
||||||
<Input v-model="formState.count" :default-value="formState.count" type="number"/>
|
<ShadcnInput v-model="formState.path" disabled="" name="path"/>
|
||||||
</FormItem>
|
<ShadcnButton :disabled="!formState.path" @click="onDownload()">
|
||||||
</FormField>
|
{{ $t('source.common.downloadFile') }}
|
||||||
</div>
|
</ShadcnButton>
|
||||||
<div v-if="formState.path" class="grid w-full pt-1 pl-3 pr-3">
|
</div>
|
||||||
<FormField name="path">
|
</ShadcnFormItem>
|
||||||
<FormItem class="space-y-1">
|
|
||||||
<FormLabel>{{ $t('source.common.downloadPath') }}</FormLabel>
|
<ShadcnSpace>
|
||||||
<FormMessage/>
|
<ShadcnButton type="default" @click="onCancel">{{ $t('common.cancel') }}</ShadcnButton>
|
||||||
<div class="flex items-center space-x-1">
|
|
||||||
<Input :default-value="formState.path"/>
|
<ShadcnButton submit :loading="loading" :disabled="loading">
|
||||||
<Button size="sm" @click="handlerDownload()">
|
{{ $t('common.save') }}
|
||||||
{{ $t('source.common.downloadFile') }}
|
</ShadcnButton>
|
||||||
</Button>
|
</ShadcnSpace>
|
||||||
</div>
|
</ShadcnForm>
|
||||||
</FormItem>
|
</ShadcnModal>
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
|
||||||
<div class="space-x-5">
|
|
||||||
<Button variant="outline" size="sm" @click="handlerCancel">
|
|
||||||
{{ $t('common.cancel') }}
|
|
||||||
</Button>
|
|
||||||
<Button size="sm" :loading="loading" :disabled="loading" @click="handlerSave()">
|
|
||||||
{{ $t('source.common.exportData') }}
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</Dialog>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@ -53,7 +40,6 @@ import { defineComponent } from 'vue'
|
|||||||
import { StructureModel } from '@/model/structure.ts'
|
import { StructureModel } from '@/model/structure.ts'
|
||||||
import TableService from '@/services/table'
|
import TableService from '@/services/table'
|
||||||
import { TableExportModel, TableExportRequest } from '@/model/table'
|
import { TableExportModel, TableExportRequest } from '@/model/table'
|
||||||
import { toNumber } from 'lodash'
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'TableExport',
|
name: 'TableExport',
|
||||||
@ -89,33 +75,36 @@ export default defineComponent({
|
|||||||
{
|
{
|
||||||
this.formState = TableExportRequest.of()
|
this.formState = TableExportRequest.of()
|
||||||
if (this.info) {
|
if (this.info) {
|
||||||
this.title = this.$t('source.common.exportDataTable').replace('$VALUE', this.info.title as string)
|
this.title = this.$t('source.common.exportDataTable').replace('$VALUE', String(this.info.title))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handlerSave()
|
onSubmit()
|
||||||
{
|
{
|
||||||
if (this.info) {
|
if (this.info) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
TableService.exportData(toNumber(this.info.applyId), this.formState)
|
TableService.exportData(String(this.info.value), this.formState)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (response.status) {
|
if (response.status) {
|
||||||
this.formState.path = response.data
|
this.formState.path = response.data
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ToastUtils.error(response.message)
|
this.$Message.error({
|
||||||
|
content: response.message,
|
||||||
|
showIcon: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.finally(() => this.loading = false)
|
.finally(() => this.loading = false)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handlerDownload()
|
onDownload()
|
||||||
{
|
{
|
||||||
if (this.formState) {
|
if (this.formState) {
|
||||||
window.open(this.formState.path, '_target')
|
window.open(this.formState.path, '_target')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handlerCancel()
|
onCancel()
|
||||||
{
|
{
|
||||||
this.visible = false
|
this.visible = false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user