实现 M009 手工开票前端页面

This commit is contained in:
andy
2026-07-17 11:57:26 +07:00
parent 11478c6913
commit 72fee44a68
16 changed files with 2032 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ export default {
nav: {
orders: '订单列表',
taskQueue: '任务队列',
manualInvoice: '手工开票',
sourceMessages: '消息来源',
systemStatus: '系统状态',
orderDetail: '订单详情',
@@ -250,6 +251,84 @@ export default {
createdAt: '创建时间',
},
},
manualInvoice: {
title: '手工开票',
subtitle: '无订单、无任务时,手工填写 Proforma Invoice 字段并生成 PDF。',
sourceBadge: '手工生成',
independentHint: '本页第一版不关联订单或任务,生成记录和审计由后端统一落库。',
documentSection: '单据信息',
recipientSection: '收件方',
bookingSection: '预订信息',
chargesSection: '费用明细',
previewSection: '金额预览',
resultSection: '生成结果',
invoiceDate: '开票日期Invoice Date',
bookingDate: '预订日期Booking Date',
dueDate: '付款截止日期Due Date',
companySeed: '选择公司Company',
contactSeed: '选择收件人Attention',
selectCompany: '请选择公司',
selectContact: '请选择收件人',
company: '公司Company',
attention: '收件人Attention',
address: '地址Address',
telephone: 'Tel',
email: 'Email',
groupName: '团队名称Group Name',
arrivalDate: '到店日期Arrival Date',
departureDate: '离店日期Departure Date',
roomRateNote: '房价备注Room Rate Note',
extraBedRate: '加床价格Extra Bed Rate',
description: '费用描述Description',
roomType: '房型Room Type',
quantity: '数量Quantity',
rate: '单价Rate',
nights: '晚数Nights',
amount: 'Amount',
subtotal: 'Sub-Total',
vat: 'VAT 7%',
total: 'Total',
addCharge: '新增费用',
removeCharge: '删除',
maxChargesReached: '第一版最多支持 10 条费用明细。',
previewDisclaimer: '前端仅做金额预览,最终金额以后端返回 totals 为准。',
manualOverrideHint: '选择 Company / Attention 后会自动带出资料,带出的文本仍可手工覆盖。',
generate: '生成 PDF',
generating: '生成中',
openPdf: '打开 PDF',
downloadPdf: '下载 PDF',
generationId: '生成记录 ID',
generationStatus: '生成状态',
pdfUrl: 'PDF 链接',
hotelId: '酒店 ID',
templateCode: '模板',
createdAt: '创建时间',
noPdfUrl: '后端未返回 PDF 链接。',
backendTotals: '后端返回金额',
validationTitle: '请先修正表单',
statuses: {
SUCCEEDED: '已生成',
GENERATED: '已生成',
FAILED: '生成失败',
PROCESSING: '生成中',
},
errors: {
FRONTEND_VALIDATION: '表单校验未通过,请检查必填字段和费用明细。',
RESERVATION_INVOICE_VALIDATION_FAILED: 'Invoice 字段校验失败,请检查表单内容。',
RESERVATION_INVOICE_CONTEXT_MISMATCH: '订单或任务上下文不匹配。',
DOCUMENT_CONVERSION_FAILED: 'PDF 生成失败,请稍后重试或联系管理员。',
DOCUMENT_CONVERSION_TIMEOUT: 'PDF 生成超时,请稍后重试。',
AUTH_401: '登录已失效,请重新登录后再生成。',
AUTH_403: '当前账号没有手工开票权限。',
UNKNOWN: '生成失败,请稍后重试。',
requiredFields: '请补充日期、收件方、预订信息和至少一条有效费用明细。',
invalidEmail: 'Email 格式不正确。',
dueDateBeforeBookingDate: 'Due Date 不能早于 Booking 日期。',
departureBeforeArrival: 'Departure Date 必须晚于 Arrival Date。',
extraBedNegative: '加床价格不能小于 0。',
chargePositive: '费用明细的 Quantity、Rate、Nights 必须大于 0。',
},
},
order: {
summary: '订单摘要',
taskQueue: '同订单任务队列',