/** * 加油登记发微信群纯文本(与 web-admin buildFuelRegisterCopyText 对齐) */ const CATEGORY_LABELS = { bailian: '百链', gas_station: '加油站', shanxia_factory: '山峡' } export function countPlAttachmentUrls(raw) { return String(raw || '') .split(',') .map((s) => s.trim()) .filter(Boolean).length } export function getPlFuelCategoryLabel(category) { return CATEGORY_LABELS[category] || category || '—' } export function buildFuelRegisterCopyText(row = {}) { const dash = '—' const seq = row.seqNo != null && Number.isFinite(Number(row.seqNo)) ? String(row.seqNo) : dash const liters = row.fuelLiters != null && Number.isFinite(Number(row.fuelLiters)) ? Number(row.fuelLiters).toFixed(2) : dash let tons = dash if (row.fuelTons != null && Number.isFinite(Number(row.fuelTons))) { tons = Number(row.fuelTons).toFixed(3) } else if (row.fuelLiters != null && Number.isFinite(Number(row.fuelLiters))) { tons = (Number(row.fuelLiters) / 1176).toFixed(3) } const odometer = row.odometerKm != null && Number.isFinite(Number(row.odometerKm)) ? `${Number(row.odometerKm).toFixed(1)} KM` : dash const plate = String(row.licensePlate || '').trim() || dash return [ `【${plate} - 加油登记】`, `序号:${seq}`, `登记单号:${row.registerNo || dash}`, `加油类别:${getPlFuelCategoryLabel(row.fuelCategory)}`, `日期:${row.registerDate || dash}`, `登记人:${row.registrantName || dash}`, `车牌号:${plate}`, `期初公里数:${odometer}`, `加油升数:${liters === dash ? dash : `${liters} L`}`, `加油/吨:${tons}`, `附件个数:${countPlAttachmentUrls(row.attachmentUrls)}`, `备注:${String(row.remark || '').trim() || dash}` ].join('\n') } /** 复制到剪贴板;成功返回 true */ export function copyFuelRegisterToClipboard(row) { const text = buildFuelRegisterCopyText(row) if (!text) { uni.showToast({ title: '暂无可复制内容', icon: 'none' }) return Promise.resolve(false) } return new Promise((resolve) => { uni.setClipboardData({ data: text, success: () => { uni.showToast({ title: '已复制', icon: 'success' }) resolve(true) }, fail: () => { uni.showToast({ title: '复制失败', icon: 'none' }) resolve(false) } }) }) }