LinYeFangHuo/src/views/demo/layer/TempeleteModel.vue

51 lines
1.5 KiB
Vue

<template>
<BasicModal v-bind="$attrs" @register="registerModal" title="下载模板" :showOkBtn="false">
<a-button type="primary" @click="downloadFile(0)">Excel</a-button>
<a-button type="primary" @click="downloadFile(1)">Shp</a-button>
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '@/components/Modal';
import { getAppEnvConfig } from '@/utils/env';
import axios from 'axios';
const { VITE_GLOB_API_URL } = getAppEnvConfig();
defineOptions({ name: 'MenuDrawer' });
const props = defineProps(['tableName']);
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false });
});
const downloadFile = (type) => {
const fileName = type == 0 ? 'Excel模板' : 'Shp模板';
const params = {
type,
tableName: props.tableName,
};
axios({
method: 'get',
url: VITE_GLOB_API_URL + '/api/Layer/TempeleteByTableName',
params: params,
headers: {
'X-Token': localStorage.getItem('X-Token'),
},
responseType: 'blob',
}).then((res) => {
const elink = document.createElement('a');
elink.download = fileName;
elink.style.display = 'none';
elink.href = URL.createObjectURL(res.data);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
});
};
</script>
<style lang="less" scoped>
button {
margin: 10px;
}
</style>