fix: 报表支持导出
This commit is contained in:
parent
cd66c3b714
commit
9917ca25f6
@ -1,4 +1,4 @@
|
|||||||
import { post } from "@/utils/request";
|
import { get, post } from "@/utils/request";
|
||||||
|
|
||||||
interface PreviewItemParams {
|
interface PreviewItemParams {
|
||||||
previewId: string | number;
|
previewId: string | number;
|
||||||
@ -20,12 +20,3 @@ export function searchInfo(data: PreviewItemParams) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function exportTable(data: PreviewItemParams) {
|
|
||||||
return post({
|
|
||||||
url: '/api/v1/preview/export',
|
|
||||||
data: {
|
|
||||||
preview_id: data.previewId,
|
|
||||||
filter: data.filter,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
/>
|
/>
|
||||||
<a-range-picker v-else-if="item.type === 'time'" class="date-item" v-model:value="filterData[item.name]" @change="toFilt" />
|
<a-range-picker v-else-if="item.type === 'time'" class="date-item" v-model:value="filterData[item.name]" @change="toFilt" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="isExport" class="filter-item"><a-button type="primary" @click="toExport">导出</a-button></div>
|
<div v-if="isExport" class="filter-item"><a :href="`${YCODE_BASEURL}/api/v1/preview/export?preview_id=${previewId}&filter=${JSON.stringify(getFilter())}`" target="_blank"><a-button type="primary">导出</a-button></a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="y-table-content">
|
<div class="y-table-content">
|
||||||
<a-table
|
<a-table
|
||||||
@ -58,7 +58,13 @@ import { reactive, ref } from "vue";
|
|||||||
import { useDebounceFn } from "@vueuse/core";
|
import { useDebounceFn } from "@vueuse/core";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
|
|
||||||
|
const YCODE_BASEURL = import.meta.env.VITE_YCODE_BASEURL
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
previewId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
filterConfig: {
|
filterConfig: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
@ -115,7 +121,6 @@ const getFilter = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getData = () => {
|
const getData = () => {
|
||||||
|
|
||||||
emit("toFilt", {
|
emit("toFilt", {
|
||||||
filter: getFilter(),
|
filter: getFilter(),
|
||||||
page: pageState.page,
|
page: pageState.page,
|
||||||
@ -131,13 +136,6 @@ const pageChange = () => {
|
|||||||
getData();
|
getData();
|
||||||
};
|
};
|
||||||
|
|
||||||
const toExport = () => {
|
|
||||||
emit("toExport", {
|
|
||||||
filter: getFilter(),
|
|
||||||
page: pageState.page,
|
|
||||||
perPage: pageState.perPage,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<y-table
|
<y-table
|
||||||
v-if="item.data.type === VIEW_TYPE.TABLE"
|
v-if="item.data.type === VIEW_TYPE.TABLE"
|
||||||
|
:preview-id="item.id"
|
||||||
:filter-config="item.data.filter"
|
:filter-config="item.data.filter"
|
||||||
:data-list="item.data.data"
|
:data-list="item.data.data"
|
||||||
:column-config="item.data.header"
|
:column-config="item.data.header"
|
||||||
@ -78,6 +79,7 @@
|
|||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<y-table
|
<y-table
|
||||||
v-if="item.data.type === VIEW_TYPE.TABLE"
|
v-if="item.data.type === VIEW_TYPE.TABLE"
|
||||||
|
:preview-id="item.id"
|
||||||
:filter-config="item.data.filter"
|
:filter-config="item.data.filter"
|
||||||
:data-list="item.data.data"
|
:data-list="item.data.data"
|
||||||
:column-config="item.data.header"
|
:column-config="item.data.header"
|
||||||
|
@ -89,7 +89,7 @@
|
|||||||
/>
|
/>
|
||||||
<a-range-picker v-if="item.type === 'time'" class="date-item" v-model:value="previewData.filterData[item.name]" @change="toFilt" />
|
<a-range-picker v-if="item.type === 'time'" class="date-item" v-model:value="previewData.filterData[item.name]" @change="toFilt" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="previewData.isExport" class="filter-item"><a-button @click="toExport">导出</a-button></div>
|
<div v-if="previewData.isExport" class="filter-item"><a-button type="primary">导出</a-button></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="y-table-content">
|
<div class="y-table-content">
|
||||||
<a-table
|
<a-table
|
||||||
@ -355,10 +355,6 @@ const toFilt = () => {
|
|||||||
previewData.page = 1;
|
previewData.page = 1;
|
||||||
toPreview({});
|
toPreview({});
|
||||||
};
|
};
|
||||||
|
|
||||||
const toExport = () => {
|
|
||||||
// exportTable()
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
<div class="right-box">
|
<div class="right-box">
|
||||||
<y-table
|
<y-table
|
||||||
v-if="selectViewInfo.type === 'table'"
|
v-if="selectViewInfo.type === 'table'"
|
||||||
|
:previewId="selectedRowId"
|
||||||
:filter-config="selectViewInfo.filter"
|
:filter-config="selectViewInfo.filter"
|
||||||
:data-list="selectViewInfo.data"
|
:data-list="selectViewInfo.data"
|
||||||
:column-config="selectViewInfo.header"
|
:column-config="selectViewInfo.header"
|
||||||
@ -83,10 +84,6 @@
|
|||||||
(params) => {
|
(params) => {
|
||||||
toGetViewInfo(params);
|
toGetViewInfo(params);
|
||||||
}"
|
}"
|
||||||
@toExport="
|
|
||||||
(params) => {
|
|
||||||
toExport(params)
|
|
||||||
}"
|
|
||||||
/>
|
/>
|
||||||
<y-chart v-else-if="selectViewInfo.type === 'chart'" :chartCfg="selectViewInfo.config" :title="selectViewInfo.preview_name" :filter-config="selectViewInfo.filter" @toFilt="toGetViewInfo" />
|
<y-chart v-else-if="selectViewInfo.type === 'chart'" :chartCfg="selectViewInfo.config" :title="selectViewInfo.preview_name" :filter-config="selectViewInfo.filter" @toFilt="toGetViewInfo" />
|
||||||
<div class="preview-area" v-else>
|
<div class="preview-area" v-else>
|
||||||
@ -101,7 +98,6 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, ref, reactive } from "vue";
|
import { onMounted, ref, reactive } from "vue";
|
||||||
import { getProModular, getViewList, getViewInfo, deleteView } from "./service";
|
import { getProModular, getViewList, getViewInfo, deleteView } from "./service";
|
||||||
import { exportTable } from "@/api/preview/index";
|
|
||||||
import { viewListCols } from "./config";
|
import { viewListCols } from "./config";
|
||||||
import yTable from "@/components/common/y-table.vue";
|
import yTable from "@/components/common/y-table.vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
@ -159,15 +155,6 @@ const toGetViewInfo = (params = {}) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const toExport = (params = {}) => {
|
|
||||||
exportTable({
|
|
||||||
previewId: selectedRowId.value,
|
|
||||||
...params,
|
|
||||||
}).then(() => {
|
|
||||||
message.success("导出成功");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const onProjectChange = (val) => {
|
const onProjectChange = (val) => {
|
||||||
modularSel.value = projectSel.value.find((item) => item.value === val).child;
|
modularSel.value = projectSel.value.find((item) => item.value === val).child;
|
||||||
modularId.value = null;
|
modularId.value = null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user