iot-ui-vue/src/views/system/Dictionary/components/Export/index.vue

97 lines
3.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<j-modal visible title="下载" @cancel="close" @ok="downLoad" :maskClosable="false"
:confirmLoading="loading" :width="900">
<JProTable
:columns="columns"
model="CARD"
:request="getDic_page"
:gridColumn="2"
>
<template #headerTitle>
请选择需要下载的字典
</template>
<template #card="slotProps">
<CardBox :value="slotProps" :showStatus="false" :active="_selectedRowKeys.includes(slotProps.id)" @click="onSelectChange">
<template #content>
<j-row>
<j-col :span="12">
<Ellipsis style="width: 100%">
<div>字典名称{{ slotProps.name }}</div>
</Ellipsis>
</j-col>
<j-col :span="12">
<Ellipsis style="width: 100%">
字典ID{{ slotProps.id }}
</Ellipsis>
</j-col>
</j-row>
</template>
</CardBox>
</template>
</JProTable>
</j-modal>
</template>
<script lang="ts" setup>
import { getDic_page , downDic} from '@/api/system/dictionary';
import { onlyMessage } from '@/utils/comm';
import { downloadFileByUrl } from '@/utils/utils';
import dayjs from 'dayjs';
const emit = defineEmits(['closeDown'])
const loading = ref(false)
const columns = [ {
title:'name',
dataIndex:'name',
key:'name',
ellipsis: true,
},
{
title: 'name',
dataIndex: 'name',
key: 'name',
ellipsis: true,
}]
const _selectedRowKeys:any = ref([])
const onSelectChange = (dt: any) => {
if (_selectedRowKeys.value.includes(dt.id)) {
const _index = _selectedRowKeys.value.findIndex((i:any) => i === dt.id);
_selectedRowKeys.value.splice(_index, 1);
} else {
_selectedRowKeys.value = [..._selectedRowKeys.value, dt.id];
}
};
const close = () =>{
emit('closeDown')
}
const downLoad = async() =>{
if(_selectedRowKeys.value.length){
const res:any = await downDic({
terms:[
{
terms:[
{
value:_selectedRowKeys.value,
termType:'in',
column:'id'
}
]
}
]
})
if(res.status === 200 && res.result){
const json = JSON.stringify(res.result)
if (json) {
const blob = new Blob([json], { type: 'application/json' });
const url = URL.createObjectURL(blob);
downloadFileByUrl(url, `数据字典${dayjs().format('YYYY-MM-DD HH:mm:ss')}`, 'json');
emit('closeDown');
}
emit('closeDown')
}
}else{
onlyMessage('至少选择一条数据!')
}
}
</script>
<style lang="less" scoped>
</style>