';
// Customer info section
html += '
👤 客户信息
';
html += '
姓名' + escHtml(customer.name || '-') + '
';
html += '
手机号' + escHtml(customer.phone || '-') + '
';
html += '
会员类型' + escHtml(customer.membership || '非会员') + '
';
html += '
预计取车' + (customer.expectedPickup ? formatDateTime(customer.expectedPickup) : '-') + '
';
// Service items
var serviceItems = record.serviceItems || [];
if (serviceItems.length > 0) {
html += '
🔧 服务项目
';
for (var si = 0; si < serviceItems.length; si++) {
var item = serviceItems[si];
html += '
';
html += '' + escHtml(item.name) + '';
html += '' + (item.minutes ? item.minutes + '分钟' : '') + '';
html += '
';
// Show item data if available
if (item.data && Object.keys(item.data).length > 0) {
var d = item.data;
var dataLabels = {
chainElongation: '链条拉伸',
brakePadKm: '刹车片里程',
frontDiscThickness: '前碟片厚度',
rearDiscThickness: '后碟片厚度',
tireKm: '轮胎里程',
discFrontStandard: '前碟片标准厚度',
discRearStandard: '后碟片标准厚度'
};
var dataUnits = {
chainElongation: '%',
brakePadKm: 'km',
frontDiscThickness: 'mm',
rearDiscThickness: 'mm',
tireKm: 'km',
discFrontStandard: 'mm',
discRearStandard: 'mm'
};
for (var dk in d) {
if (d[dk] !== undefined && d[dk] !== null) {
html += '
';
html += ' ↳ ' + (dataLabels[dk] || dk) + '';
html += '' + d[dk] + (dataUnits[dk] || '') + '';
html += '
';
}
}
}
}
}
// Repair items
var repairItems = record.repairItems || [];
if (repairItems.length > 0) {
html += '
🛠️ 维修项目
';
for (var ri = 0; ri < repairItems.length; ri++) {
html += '
' + escHtml(repairItems[ri].name || '维修项') + '' + escHtml(repairItems[ri].price ? '¥' + repairItems[ri].price : '') + '
';
}
}
// Found issues
var issues = record.foundIssues || [];
if (issues.length > 0) {
html += '
⚠️ 发现问题
';
for (var fi = 0; fi < issues.length; fi++) {
var urgencyLabels = { critical: '紧急', soon: '建议尽快', later: '择期处理' };
html += '
' + escHtml(issues[fi].description || '') + '';
html += '' + (urgencyLabels[issues[fi].urgency] || '') + '
';
}
}
// Consumables
var consumables = record.consumables || [];
if (consumables.length > 0) {
html += '
📦 耗材使用
';
for (var ci = 0; ci < consumables.length; ci++) {
html += '
' + escHtml(consumables[ci].name || '') + '' + (consumables[ci].quantity || '') + '
';
}
}
// Reception info
var reception = record.reception || {};
if (reception.chainOil || reception.mileage) {
html += '
📋 接车信息
';
if (reception.chainOil) {
var oilLabels = { wet: '湿性链条油', dry: '干性链条油', wax: '蜡性链条油' };
html += '
链条油类型' + (oilLabels[reception.chainOil] || reception.chainOil) + '
';
}
if (reception.mileage) html += '
当前里程' + escHtml(reception.mileage) + '
';
if (reception.waxing) html += '
链条打蜡是
';
}
// Photos
var beforePhotos = record.beforePhotos || [];
var afterPhotos = record.afterPhotos || [];
if (beforePhotos.length > 0 || afterPhotos.length > 0) {
html += '
📸 维保照片
';
if (beforePhotos.length > 0) {
html += '
保养前
';
html += '
';
for (var bp = 0; bp < beforePhotos.length; bp++) {
html += '
';
}
html += '
';
}
if (afterPhotos.length > 0) {
html += '
保养后
';
html += '
';
for (var ap = 0; ap < afterPhotos.length; ap++) {
html += '
';
}
html += '
';
}
}
// Rate info
if (record.hourlyRate) {
html += '
💰 工时费用
';
html += '
工时费率¥' + record.hourlyRate + '/小时
';
html += '
费率类型' + escHtml(record.rateLabel || '-') + '
';
}
// Note
if (record.note) {
html += '
📝 备注
';
html += '
' + escHtml(record.note) + '
';
}
// Record ID
html += '
记录编号: ' + escHtml(record.id || '') + '
';
html += '