plFuelRegisterCopy.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * 加油登记发微信群纯文本(与 web-admin buildFuelRegisterCopyText 对齐)
  3. */
  4. const CATEGORY_LABELS = {
  5. bailian: '百链',
  6. gas_station: '加油站',
  7. shanxia_factory: '山峡'
  8. }
  9. export function countPlAttachmentUrls(raw) {
  10. return String(raw || '')
  11. .split(',')
  12. .map((s) => s.trim())
  13. .filter(Boolean).length
  14. }
  15. export function getPlFuelCategoryLabel(category) {
  16. return CATEGORY_LABELS[category] || category || '—'
  17. }
  18. export function buildFuelRegisterCopyText(row = {}) {
  19. const dash = '—'
  20. const seq =
  21. row.seqNo != null && Number.isFinite(Number(row.seqNo)) ? String(row.seqNo) : dash
  22. const liters =
  23. row.fuelLiters != null && Number.isFinite(Number(row.fuelLiters))
  24. ? Number(row.fuelLiters).toFixed(2)
  25. : dash
  26. let tons = dash
  27. if (row.fuelTons != null && Number.isFinite(Number(row.fuelTons))) {
  28. tons = Number(row.fuelTons).toFixed(3)
  29. } else if (row.fuelLiters != null && Number.isFinite(Number(row.fuelLiters))) {
  30. tons = (Number(row.fuelLiters) / 1176).toFixed(3)
  31. }
  32. const odometer =
  33. row.odometerKm != null && Number.isFinite(Number(row.odometerKm))
  34. ? `${Number(row.odometerKm).toFixed(1)} KM`
  35. : dash
  36. const plate = String(row.licensePlate || '').trim() || dash
  37. return [
  38. `【${plate} - 加油登记】`,
  39. `序号:${seq}`,
  40. `登记单号:${row.registerNo || dash}`,
  41. `加油类别:${getPlFuelCategoryLabel(row.fuelCategory)}`,
  42. `日期:${row.registerDate || dash}`,
  43. `登记人:${row.registrantName || dash}`,
  44. `车牌号:${plate}`,
  45. `期初公里数:${odometer}`,
  46. `加油升数:${liters === dash ? dash : `${liters} L`}`,
  47. `加油/吨:${tons}`,
  48. `附件个数:${countPlAttachmentUrls(row.attachmentUrls)}`,
  49. `备注:${String(row.remark || '').trim() || dash}`
  50. ].join('\n')
  51. }
  52. /** 复制到剪贴板;成功返回 true */
  53. export function copyFuelRegisterToClipboard(row) {
  54. const text = buildFuelRegisterCopyText(row)
  55. if (!text) {
  56. uni.showToast({ title: '暂无可复制内容', icon: 'none' })
  57. return Promise.resolve(false)
  58. }
  59. return new Promise((resolve) => {
  60. uni.setClipboardData({
  61. data: text,
  62. success: () => {
  63. uni.showToast({ title: '已复制', icon: 'success' })
  64. resolve(true)
  65. },
  66. fail: () => {
  67. uni.showToast({ title: '复制失败', icon: 'none' })
  68. resolve(false)
  69. }
  70. })
  71. })
  72. }