feat: 新增导出
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m19s

This commit is contained in:
luo
2026-06-16 11:35:45 +08:00
parent 908367ba5d
commit 2a8f4e40d6
19 changed files with 1347 additions and 0 deletions

View File

@@ -41,6 +41,9 @@
>
批量设置套餐系列
</ElButton>
<ElButton type="primary" @click="showExportDialog" v-permission="'devices:export'">
导出
</ElButton>
</template>
</ArtTableHeader>
@@ -674,6 +677,13 @@
:identifier="operationLogsIdentifier"
download-permission="device:download_log_file"
/>
<ExportTaskCreateDialog
v-model="exportDialogVisible"
scene="device"
:query="exportQuery"
confirm-permission="devices:export"
title="导出设备"
/>
</ElCard>
</div>
</ArtTableFullScreen>
@@ -712,6 +722,7 @@
import type { PackageSeriesResponse } from '@/types/api'
import RealnamePolicyDialog from '@/components/device/RealnamePolicyDialog.vue'
import OperationLogsDialog from '@/components/business/OperationLogsDialog.vue'
import ExportTaskCreateDialog from '@/components/business/ExportTaskCreateDialog.vue'
defineOptions({ name: 'DeviceList' })
@@ -740,6 +751,7 @@
const selectedDevices = ref<Device[]>([])
const operationLogsDialogVisible = ref(false)
const operationLogsIdentifier = ref('')
const exportDialogVisible = ref(false)
const shopCascadeOptions = ref<any[]>([])
const shopCascadeProps = {
lazy: true,
@@ -1714,6 +1726,36 @@
}
}
const exportQuery = computed(() => {
const query: Record<string, unknown> = {
virtual_no: searchForm.virtual_no || undefined,
imei: searchForm.imei || undefined,
device_name: searchForm.device_name || undefined,
status: searchForm.status,
activation_status: searchForm.activation_status ?? undefined,
batch_no: searchForm.batch_no || undefined,
device_type: searchForm.device_type || undefined,
manufacturer: searchForm.manufacturer || undefined,
shop_id: searchForm.shop_id || undefined,
series_id: searchForm.series_id || undefined,
has_active_package: searchForm.has_active_package ?? undefined,
created_at_start: searchForm.created_at_start || undefined,
created_at_end: searchForm.created_at_end || undefined
}
Object.keys(query).forEach((key) => {
if (query[key] === undefined || query[key] === null || query[key] === '') {
delete query[key]
}
})
return query
})
const showExportDialog = () => {
exportDialogVisible.value = true
}
// 重置搜索
const handleReset = () => {
Object.assign(searchForm, { ...initialSearchState })