From 7854bd0288cb0bb2fe306ed96c9d903d992c5674 Mon Sep 17 00:00:00 2001 From: zyh Date: Tue, 26 Aug 2025 16:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=B9=E9=87=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E3=80=81=E6=89=B9=E9=87=8F=E5=A4=8D=E5=88=B6=E5=92=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=80=89=E4=B8=AD=E9=93=BE=E6=8E=A5=E5=88=B0?= =?UTF-8?q?Excel=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=93=BE=E6=8E=A5=E7=8A=B6=E6=80=81=E5=92=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BACSV=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E9=93=BE=E6=8E=A5=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=92=8C=E6=98=BE=E7=A4=BA=E7=9A=84=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/links.js | 4 + src/config/links.js | 30 +-- src/utils/links.js | 44 +++- src/views/links/LinkGenerate.vue | 343 ++++++++++++++++++++++++------- 4 files changed, 337 insertions(+), 84 deletions(-) diff --git a/src/api/links.js b/src/api/links.js index 80397b8..cee8111 100644 --- a/src/api/links.js +++ b/src/api/links.js @@ -18,4 +18,8 @@ export function updateLink(id, payload) { return http.patch(`/api/link/${id}`, payload) } +export function batchDeleteLinks(codeNos) { + return http.post('/api/link/batch-delete', { codeNos }) +} + diff --git a/src/config/links.js b/src/config/links.js index 897201c..ca728ce 100644 --- a/src/config/links.js +++ b/src/config/links.js @@ -19,38 +19,40 @@ export const LINK_CONFIG = { // 状态配置 export const STATUS_CONFIG = { - // 状态标签类型 + // 状态标签类型映射 LABEL_TYPES: { - NORMAL: 'success', // 正常 - EXPIRING: 'warning', // 即将过期 - EXPIRED: 'danger', // 已过期 - UNKNOWN: 'info' // 未知 + NEW: 'success', // 新建 + USED: 'info', // 已使用 + EXPIRED: 'danger', // 已过期 + UNKNOWN: 'info' // 未知 }, - // 状态文本 + // 状态文本映射 LABEL_TEXTS: { - NORMAL: '正常', - EXPIRING: '即将过期', + NEW: '新建', + USED: '已使用', EXPIRED: '已过期', UNKNOWN: '未知' }, - // 过期时间阈值(毫秒) - EXPIRING_THRESHOLD: 24 * 60 * 60 * 1000, // 24小时 + // 过期警告阈值(秒) + EXPIRING_THRESHOLD: 24 * 60 * 60, // 24小时 } // 导出配置 export const EXPORT_CONFIG = { // CSV文件前缀 - FILE_PREFIX: 'links', + FILE_PREFIX: 'redemption_codes', // 默认列配置 DEFAULT_COLUMNS: [ + { key: 'codeNo', label: '兑换码' }, { key: 'batchId', label: '批次ID' }, - { key: 'codeNos', label: '机器编号' }, - { key: 'deductPoints', label: '扣除积分' }, + { key: 'quantity', label: '数量' }, + { key: 'times', label: '次数' }, + { key: 'totalPoints', label: '总积分' }, + { key: 'statusDesc', label: '状态' }, { key: 'expireAt', label: '过期时间' }, - { key: 'status', label: '状态' }, { key: 'createdAt', label: '创建时间' } ] } diff --git a/src/utils/links.js b/src/utils/links.js index 4cc6ae5..c61579f 100644 --- a/src/utils/links.js +++ b/src/utils/links.js @@ -74,7 +74,7 @@ export async function copyToClipboard(text) { // 导出CSV数据 export function exportToCSV(data, headers, filename) { const csvContent = [ - headers.join(','), + headers.map(h => h.label).join(','), ...data.map(row => headers.map(header => { const value = row[header.key] || '' @@ -91,4 +91,46 @@ export function exportToCSV(data, headers, filename) { link.click() } +// 导出Excel数据 +export function exportToExcel(data, headers, filename) { + // 创建HTML表格格式 + const tableHTML = ` + + + + + + + + + + ${headers.map(header => ``).join('')} + + + + ${data.map(row => + ` + ${headers.map(header => ``).join('')} + ` + ).join('')} + +
${header.label}
${row[header.key] || ''}
+ + + ` + + // 创建Blob并下载 + const blob = new Blob([tableHTML], { + type: 'application/vnd.ms-excel;charset=utf-8;' + }) + const link = document.createElement('a') + link.href = URL.createObjectURL(blob) + link.download = filename + link.click() +} + diff --git a/src/views/links/LinkGenerate.vue b/src/views/links/LinkGenerate.vue index 95125fb..7e2159f 100644 --- a/src/views/links/LinkGenerate.vue +++ b/src/views/links/LinkGenerate.vue @@ -75,36 +75,81 @@ > 导出CSV + + +
+ + 全选 + + + 取消选择 + + + 批量复制链接 ({{ selectedRows.length }}) + + + 导出选中Excel + + + 批量删除 ({{ selectedRows.length }}) + +
+ + - + - + + + + @@ -115,46 +160,44 @@ + + + @@ -169,7 +212,7 @@ 删除 @@ -222,10 +265,10 @@