[Core] [Report] Support delete report

This commit is contained in:
qianmoQ 2023-12-18 15:04:23 +08:00
parent 46f4199875
commit 67bd54d9d7
9 changed files with 128 additions and 6 deletions

View File

@ -13,6 +13,7 @@ import copy from "@/i18n/langs/en/copy";
import calendarHeatmap from "@/i18n/langs/en/calendarHeatmap"; import calendarHeatmap from "@/i18n/langs/en/calendarHeatmap";
import pipeline from "@/i18n/langs/en/pipeline"; import pipeline from "@/i18n/langs/en/pipeline";
import manager from "@/i18n/langs/en/source/manager"; import manager from "@/i18n/langs/en/source/manager";
import report from "@/i18n/langs/en/report";
export default { export default {
...en, ...en,
@ -29,6 +30,7 @@ export default {
copy: copy, copy: copy,
calendarHeatmap: calendarHeatmap, calendarHeatmap: calendarHeatmap,
pipeline: pipeline, pipeline: pipeline,
report: report,
source: { source: {
manager: manager manager: manager
} }

View File

@ -0,0 +1,5 @@
export default {
deleteTip1: 'You are deleting a report. This action permanently deletes the report. Please be sure to confirm your actions before proceeding. ',
deleteTip2: 'Warning: This cannot be undone. ',
deleteTip3: 'To confirm, type [ REPLACE_NAME ] in the box below'
}

View File

@ -13,6 +13,7 @@ import copy from "@/i18n/langs/zhCn/copy";
import calendarHeatmap from "@/i18n/langs/zhCn/calendarHeatmap"; import calendarHeatmap from "@/i18n/langs/zhCn/calendarHeatmap";
import pipeline from "@/i18n/langs/zhCn/pipeline"; import pipeline from "@/i18n/langs/zhCn/pipeline";
import manager from "@/i18n/langs/zhCn/source/manager"; import manager from "@/i18n/langs/zhCn/source/manager";
import report from "@/i18n/langs/zhCn/report";
export default { export default {
...zh, ...zh,
@ -29,6 +30,7 @@ export default {
copy: copy, copy: copy,
calendarHeatmap: calendarHeatmap, calendarHeatmap: calendarHeatmap,
pipeline: pipeline, pipeline: pipeline,
report: report,
source: { source: {
manager: manager manager: manager
} }

View File

@ -0,0 +1,5 @@
export default {
deleteTip1: '您正在执行删除报表操作。此操作将永久性地删除该报表。请在继续之前务必确认您的操作。',
deleteTip2: '警告:执行此操作将无法撤销。',
deleteTip3: '要确认,请在下面的框中键入 [ REPLACE_NAME ]'
}

View File

@ -1,5 +1,6 @@
import {ResponseModel} from '@/model/ResponseModel'; import {ResponseModel} from '@/model/ResponseModel';
import {BaseService} from '@/services/BaseService'; import {BaseService} from '@/services/BaseService';
import {HttpCommon} from "@/common/HttpCommon";
const baseUrl = '/api/v1/report'; const baseUrl = '/api/v1/report';
@ -13,7 +14,7 @@ class ReportService
deleteById(id: number): Promise<ResponseModel> deleteById(id: number): Promise<ResponseModel>
{ {
throw new Error('Method not implemented.'); return new HttpCommon().delete(`${baseUrl}/${id}`);
} }
getByName<T>(name: string): Promise<ResponseModel> getByName<T>(name: string): Promise<ResponseModel>

View File

@ -8,6 +8,15 @@
:data="data.content"> :data="data.content">
<template #action="{ row }"> <template #action="{ row }">
<Space> <Space>
<Tooltip :content="$t('common.delete')"
transfer>
<Button shape="circle"
type="error"
size="small"
icon="md-trash"
@click="handlerDelete(row, true)">
</Button>
</Tooltip>
</Space> </Space>
</template> </template>
</Table> </Table>
@ -24,32 +33,36 @@
</Page> </Page>
</p> </p>
</Card> </Card>
<DeleteReport v-if="deleteVisible"
:is-visible="deleteVisible"
:data="contextData"
@click="handlerDelete(null, false)">
</DeleteReport>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import {defineComponent} from "vue"; import {defineComponent} from "vue";
import {useI18n} from 'vue-i18n'; import {useI18n} from 'vue-i18n';
import Common from "@/common/Common";
import {ResponsePage} from "@/model/ResponsePage"; import {ResponsePage} from "@/model/ResponsePage";
import {createHeaders} from "@/views/admin/report/ReportUtils"; import {createHeaders} from "@/views/admin/report/ReportUtils";
import ReportService from "@/services/admin/ReportService"; import ReportService from "@/services/admin/ReportService";
import {Filter} from "@/model/Filter"; import {Filter} from "@/model/Filter";
import {Pagination, PaginationBuilder} from "@/model/Pagination"; import {Pagination, PaginationBuilder} from "@/model/Pagination";
import DeleteReport from "@/views/admin/report/DeleteReport.vue";
const filter: Filter = new Filter(); const filter: Filter = new Filter();
const pagination: Pagination = PaginationBuilder.newInstance(); const pagination: Pagination = PaginationBuilder.newInstance();
export default defineComponent({ export default defineComponent({
name: "ReportAdmin", name: "ReportAdmin",
components: {DeleteReport},
setup() setup()
{ {
const i18n = useI18n(); const i18n = useI18n();
const headers = createHeaders(i18n); const headers = createHeaders(i18n);
const currentUserId = Common.getCurrentUserId();
return { return {
headers, headers,
filter, filter
currentUserId
} }
}, },
data() data()
@ -61,7 +74,9 @@ export default defineComponent({
total: 0, total: 0,
current: 1, current: 1,
pageSize: 10 pageSize: 10
} },
deleteVisible: false,
contextData: null
} }
}, },
created() created()
@ -96,6 +111,14 @@ export default defineComponent({
this.pagination.current = pagination.current; this.pagination.current = pagination.current;
this.pagination.pageSize = pagination.pageSize; this.pagination.pageSize = pagination.pageSize;
this.handlerInitialize(this.filter) this.handlerInitialize(this.filter)
},
handlerDelete(data: any, opened: boolean)
{
this.deleteVisible = opened;
this.contextData = data;
if (!opened) {
this.handlerInitialize(this.filter);
}
} }
} }
}); });

View File

@ -0,0 +1,82 @@
<template>
<div>
<Modal v-model="visible"
:title="$t('common.delete') + ' [ ' + data.name + ' ]'"
:mask-closable="false"
@cancel="handlerCancel()">
<Alert type="warning"
show-icon>
{{ $t('report.deleteTip1') }}
</Alert>
<Alert type="error"
show-icon>
{{ $t('report.deleteTip2') }}
</Alert>
<p>{{ $t('report.deleteTip3').replace('REPLACE_NAME', data.name) }}</p>
<Input v-model="inputValue"/>
<template #footer>
<Button type="error"
:disabled="inputValue !== data.name"
:loading="loading"
@click="handlerDelete()">
<FontAwesomeIcon icon="delete-left"/>
{{ $t('common.delete') }}
</Button>
</template>
</Modal>
</div>
</template>
<script lang="ts">
import {defineComponent} from "vue";
import ReportService from "@/services/admin/ReportService";
export default defineComponent({
name: "DeleteReport",
props: {
isVisible: {
type: Boolean,
default: () => false
},
data: {
type: Object
}
},
data()
{
return {
loading: false,
inputValue: null
}
},
methods: {
handlerDelete()
{
this.loading = true;
ReportService.deleteById(this.data.id)
.then((response) => {
if (response.status) {
this.$Message.success(`${this.$t('source.manager.sourceDelete')} [ ${this.data.name} ] ${this.$t('common.success')}`);
this.handlerCancel();
}
})
.finally(() => this.loading = false);
},
handlerCancel()
{
this.visible = false;
}
},
computed: {
visible: {
get(): boolean
{
return this.isVisible;
},
set(value: boolean)
{
this.$emit('close', value);
}
}
}
});
</script>

View File

@ -28,6 +28,7 @@ const createHeaders = (i18n: any) => {
{ {
title: i18n.t('common.action'), title: i18n.t('common.action'),
slot: 'action', slot: 'action',
align: 'center',
key: 'action' key: 'action'
} }
]; ];

View File

@ -57,6 +57,7 @@ export default defineComponent({
.then((response) => { .then((response) => {
if (response.status) { if (response.status) {
this.$Message.success(`${this.$t('source.manager.sourceDelete')} [ ${this.data.name} ] ${this.$t('common.success')}`); this.$Message.success(`${this.$t('source.manager.sourceDelete')} [ ${this.data.name} ] ${this.$t('common.success')}`);
this.handlerCancel();
} }
}) })
.finally(() => this.loading = false); .finally(() => this.loading = false);