Files
BMS/bms-front/src/views/price/set/components/detail/SetVersionExcelFileDrawer.vue
T
2026-11-05 12:57:13 +08:00

69 lines
2.2 KiB
Vue

<template>
<el-drawer v-model="visible" size="860px" :title="title" append-to-body>
<el-table v-loading="loading" :data="list" border max-height="calc(100vh - 160px)" empty-text="该版本暂无导入附件">
<el-table-column label="文件名称" prop="fileName" min-width="220" show-overflow-tooltip />
<el-table-column label="生效时间" prop="effectiveTime" width="170" align="center" />
<el-table-column label="大小" width="100" align="right">
<template #default="{ row }">{{ formatSize(row.fileSize) }}</template>
</el-table-column>
<el-table-column label="上传人" prop="createBy" width="110" align="center" show-overflow-tooltip />
<el-table-column label="上传时间" prop="createTime" width="170" align="center" />
<el-table-column label="操作" width="90" align="center" fixed="right">
<template #default="{ row }">
<el-button link type="primary" :disabled="!row.filePath" @click="handleDownload(row)">下载</el-button>
</template>
</el-table-column>
</el-table>
</el-drawer>
</template>
<script setup>
import { usePriceSetModule } from '../../composables/usePriceSetModule'
const { api } = usePriceSetModule()
const { proxy } = getCurrentInstance()
const visible = ref(false)
const title = ref('')
const loading = ref(false)
const list = ref([])
const version = ref(null)
function open(row) {
version.value = row
const no = (row && row.versionNo) || ''
title.value = no ? (no + ' · 导入附件') : '导入附件'
visible.value = true
loadList()
}
function loadList() {
if (!version.value || version.value.psvId == null) return
loading.value = true
api.listPriceSetVersionExcelFiles(version.value.psvId).then(res => {
list.value = res.data || []
}).finally(() => {
loading.value = false
})
}
function formatSize(bytes) {
const n = Number(bytes)
if (!n || n < 0) return '-'
if (n < 1024) return n + ' B'
if (n < 1024 * 1024) return (n / 1024).toFixed(1) + ' KB'
return (n / (1024 * 1024)).toFixed(2) + ' MB'
}
function handleDownload(row) {
if (!row || !row.filePath) {
proxy.$modal.msgWarning('文件路径不存在')
return
}
proxy.$download.resource(row.filePath)
}
defineExpose({ open })
</script>