// 【重要】必须使用 const Component 作为组件变量名 // 财务管理 - 还车应结款 - 查看(只读) const Component = function () { var useMemo = React.useMemo; var antd = window.antd; var Breadcrumb = antd.Breadcrumb; var Card = antd.Card; var Table = antd.Table; var Button = antd.Button; var Input = antd.Input; var Tooltip = antd.Tooltip; var Popover = antd.Popover; var message = antd.message; var TextArea = Input.TextArea; function toFixed2(v) { if (v === null || v === undefined || v === '') return ''; var n = typeof v === 'number' ? v : parseFloat(v); return isNaN(n) ? '' : n.toFixed(2); } function fmtMoney(v) { var n = typeof v === 'number' ? v : parseFloat(v); if (isNaN(n)) n = 0; return n.toFixed(2); } function fmtYMDHM(v) { if (v === null || v === undefined) return '-'; var s = String(v).trim(); if (!s) return '-'; if (/^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}/.test(s)) return s.slice(0, 16); if (/^\d{4}-\d{2}-\d{2}$/.test(s)) return s + ' 00:00'; try { var d = new Date(s.replace(/-/g, '/')); if (isNaN(d.getTime())) return s; var p2 = function (n) { return n < 10 ? '0' + n : '' + n; }; return d.getFullYear() + '-' + p2(d.getMonth() + 1) + '-' + p2(d.getDate()) + ' ' + p2(d.getHours()) + ':' + p2(d.getMinutes()); } catch (e) { return s; } } // 页面样式 var layoutStyle = { padding: '16px 24px 72px', background: '#f5f5f5', minHeight: '100vh' }; var cardStyle = { marginBottom: 16 }; var footerStyle = { position: 'fixed', left: 0, right: 0, bottom: 0, background: '#fff', borderTop: '1px solid #f0f0f0', padding: '12px 24px', display: 'flex', justifyContent: 'flex-start', gap: 12, zIndex: 10 }; // 还车车辆明细(单车示例) var vehicleDetail = useMemo(function () { return [{ key: 'v1', plateNo: '粤AGP5621', contractCode: 'LNZLHT20251106001', projectName: '嘉兴腾4.5T租赁', customerName: '嘉兴某某物流有限公司', deliveryTime: '2026-02-01 09:30', returnTime: '2026-02-27 16:20', fragileInsurance: '是', tireInsurance: '否', maintenanceInsurance: '是' }]; }, []); // 业务服务组明细(只读样例) var businessServiceRows = useMemo(function () { var items = ['违章处理违约金', '保险上浮', 'ETC-客户未缴费用', 'ETC卡缺损费', 'ETC设备缺损费']; return items.map(function (name, i) { return { key: 'bs-' + i, seq: i + 1, feeItem: name, amount: i === 2 ? '100.00' : '0.00', remark: '', lastUpdateTime: '2026-02-27 10:20', photos: [], attachments: [] }; }); }, []); var billInfo = useMemo(function () { return { receivedRent: '0.00', actualRent: '0.00', shouldRefundRent: '0.00' }; }, []); var energy = useMemo(function () { return { deliveryHydrogen: '85.00', returnHydrogen: '72.00', hydrogenUnitPrice: '35.00', hydrogenSupplement: '455.00', hydrogenFee: '0.00', electricFee: '0.00', prepayRefund: '0.00', userBalance: '1200.00' }; }, []); // 运维部明细(只读样例) var tireTreadList = useMemo(function () { var unit = 25; // 元/mm var rows = [ { key: 't1', name: '左前轮', deliveryDepth: '6.80', returnDepth: '6.20' }, { key: 't2', name: '左后轮(内)', deliveryDepth: '6.70', returnDepth: '6.00' }, { key: 't3', name: '左后轮(外)', deliveryDepth: '6.60', returnDepth: '6.10' }, { key: 't4', name: '右前轮', deliveryDepth: '6.90', returnDepth: '6.40' }, { key: 't5', name: '右后轮(内)', deliveryDepth: '6.50', returnDepth: '6.00' }, { key: 't6', name: '右后轮(外)', deliveryDepth: '6.80', returnDepth: '6.30' }, { key: 't7', name: '左中轮', deliveryDepth: '6.70', returnDepth: '6.20' }, { key: 't8', name: '右中轮', deliveryDepth: '6.60', returnDepth: '6.10' }, { key: 't9', name: '左后备位轮', deliveryDepth: '6.90', returnDepth: '6.50' }, { key: 't10', name: '右后备位轮', deliveryDepth: '6.40', returnDepth: '6.00' }, { key: 'spare', name: '备胎', deliveryDepth: '7.00', returnDepth: '7.00' } ]; return rows.map(function (r) { var d = parseFloat(r.deliveryDepth) || 0; var rr = parseFloat(r.returnDepth) || 0; var diff = Math.max(0, d - rr); var total = diff * unit; return { key: r.key, name: r.name, deliveryDepth: d.toFixed(2), returnDepth: rr.toFixed(2), diff: diff.toFixed(2), unitPrice: unit.toFixed(2), totalAmount: total.toFixed(2) }; }); }, []); var operationRows = useMemo(function () { var fixed = [ { name: '清洗费', amount: '0.00' }, { name: '未结算保养', amount: '372.50' }, { name: '未结算维修', amount: '0.00' }, { name: '车损费用', amount: '0.00' }, { name: '工具损坏丢失费用', amount: '0.00' }, { name: '证件丢失费用', amount: '0.00' }, { name: '广告损坏丢失费用', amount: '0.00' }, { name: '送车服务费', amount: '0.00' }, { name: '接车服务费', amount: '0.00' }, { name: '轮胎磨损费用', amount: '0.00' } ]; return fixed.map(function (x, i) { return { key: 'op-' + i, seq: i + 1, feeItem: x.name, amount: x.amount, worryFreeDiscount: '0.00', remark: '', lastUpdateTime: '2026-02-27 10:20' }; }); }, []); // 安全组(只读示例) var violationList = useMemo(function () { return [{ key: 'w1', code: 'WZ202602010001', plateNo: '浙F03218F', violationBehavior: '闯红灯', violationTime: '2026-02-01', penaltyAmount: '100.00', paymentStatus: '未缴费', score: '6', handleStatus: '未处理', violationCustomer: '上海馨想事成物流有限公司', violationPhoto: '', remark: '' }]; }, []); var accidentList = useMemo(function () { return [{ key: 'a1', accidentCode: 'SG202508250001', plateNo: '京A29256F', accidentTime: '2025-08-25', accidentPlace: '北京市大兴区某路段', accidentType: '撞固定物', customerName: '北京海龙运输有限公司', ourClaimAmount: '', theirClaimAmount: '', responsibility: '全责', accidentStatus: '未结案', closeTime: '', otherFee: '', remark: '' }]; }, []); // 合计/统计(只读) var businessServiceTotal = useMemo(function () { var sum = 0; (businessServiceRows || []).forEach(function (r) { sum += (parseFloat(r.amount) || 0); }); return sum.toFixed(2); }, [businessServiceRows]); var operationTotal = useMemo(function () { var sum = 0; (operationRows || []).forEach(function (r) { sum += (parseFloat(r.amount) || 0); }); return sum.toFixed(2); }, [operationRows]); var energyTotal = useMemo(function () { var a = parseFloat(energy.hydrogenSupplement) || 0; var b = parseFloat(energy.hydrogenFee) || 0; var c = parseFloat(energy.electricFee) || 0; return (a + b + c).toFixed(2); }, [energy.hydrogenSupplement, energy.hydrogenFee, energy.electricFee]); var pendingSettle = useMemo(function () { var bs = parseFloat(businessServiceTotal) || 0; var rentRefund = parseFloat(billInfo.shouldRefundRent) || 0; var op = parseFloat(operationTotal) || 0; var en = (parseFloat(energy.hydrogenSupplement) || 0) + (parseFloat(energy.hydrogenFee) || 0) + (parseFloat(energy.electricFee) || 0) - (parseFloat(energy.prepayRefund) || 0); return (bs + rentRefund + en + op).toFixed(2); }, [businessServiceTotal, billInfo.shouldRefundRent, operationTotal, energy.hydrogenSupplement, energy.hydrogenFee, energy.electricFee, energy.prepayRefund]); var depositAmount = '5000.00'; var refundTotal = useMemo(function () { var diff = (parseFloat(depositAmount) || 0) - (parseFloat(pendingSettle) || 0); return diff > 0 ? diff.toFixed(2) : '0.00'; }, [depositAmount, pendingSettle]); var payTotal = useMemo(function () { var diff = (parseFloat(depositAmount) || 0) - (parseFloat(pendingSettle) || 0); return diff < 0 ? Math.abs(diff).toFixed(2) : '0.00'; }, [depositAmount, pendingSettle]); function buildBreakdownContent(list) { var headStyle = { padding: '6px 10px', textAlign: 'left', borderBottom: '1px solid #f0f0f0', background: '#fafafa', fontWeight: 600, fontSize: 12 }; var tdStyle = { padding: '6px 10px', borderBottom: '1px solid #f0f0f0', fontSize: 12 }; return React.createElement('div', { style: { padding: 0, minWidth: 320 } }, React.createElement('table', { style: { width: '100%', borderCollapse: 'collapse' } }, React.createElement('thead', null, React.createElement('tr', null, React.createElement('th', { style: headStyle }, '费用项'), React.createElement('th', { style: Object.assign({}, headStyle, { textAlign: 'right' }) }, '金额(元)') ) ), React.createElement('tbody', null, (list || []).map(function (r) { return React.createElement('tr', { key: r.key }, React.createElement('td', { style: tdStyle }, r.item), React.createElement('td', { style: Object.assign({}, tdStyle, { fontWeight: r.strong ? 600 : 400, textAlign: 'right' }) }, r.amount) ); }) ) ) ); } var settleBreakdown = useMemo(function () { return [ { key: 'bs', item: '业务服务组费用项金额总和', amount: businessServiceTotal || '0.00' }, { key: 'rent', item: '业务服务组-车辆应退租金', amount: (toFixed2(billInfo.shouldRefundRent) || '0.00') }, { key: 'hDiff', item: '能源采购组-氢量差补缴金额', amount: (toFixed2(energy.hydrogenSupplement) || '0.00') }, { key: 'hFee', item: '能源采购组-氢费补缴金额', amount: (toFixed2(energy.hydrogenFee) || '0.00') }, { key: 'eFee', item: '能源采购组-电费补缴金额', amount: (toFixed2(energy.electricFee) || '0.00') }, { key: 'prepay', item: '能源采购组-预付款退费金额(减)', amount: '-' + (toFixed2(energy.prepayRefund) || '0.00') }, { key: 'op', item: '运维部费用项金额总额', amount: operationTotal || '0.00' }, { key: 'total', item: '待结算总额', amount: pendingSettle || '0.00', strong: true } ]; }, [businessServiceTotal, billInfo.shouldRefundRent, energy.hydrogenSupplement, energy.hydrogenFee, energy.electricFee, energy.prepayRefund, operationTotal, pendingSettle]); var refundBreakdown = useMemo(function () { return [ { key: 'd', item: '保证金总额', amount: (toFixed2(depositAmount) || '0.00') }, { key: 's', item: '待结算总额', amount: (pendingSettle || '0.00') }, { key: 'r', item: '应退还总额', amount: (refundTotal || '0.00'), strong: true } ]; }, [depositAmount, pendingSettle, refundTotal]); var payBreakdown = useMemo(function () { return [ { key: 'd', item: '保证金总额', amount: (toFixed2(depositAmount) || '0.00') }, { key: 's', item: '待结算总额', amount: (pendingSettle || '0.00') }, { key: 'p', item: '应补缴总额', amount: (payTotal || '0.00'), strong: true } ]; }, [depositAmount, pendingSettle, payTotal]); var vehicleColumns = useMemo(function () { return [ { title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 110 }, { title: '合同编码', dataIndex: 'contractCode', key: 'contractCode', width: 160, ellipsis: true }, { title: '项目名称', dataIndex: 'projectName', key: 'projectName', width: 140, ellipsis: true }, { title: '客户名称', dataIndex: 'customerName', key: 'customerName', width: 140, ellipsis: true }, { title: '交车时间', dataIndex: 'deliveryTime', key: 'deliveryTime', width: 160, render: function (v) { return fmtYMDHM(v); } }, { title: '还车时间', dataIndex: 'returnTime', key: 'returnTime', width: 160, render: function (v) { return fmtYMDHM(v); } }, { title: '易损保', dataIndex: 'fragileInsurance', key: 'fragileInsurance', width: 110, render: function (v) { return React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6 } }, (v || '-'), React.createElement(Tooltip, { title: '提供刹车片、灯泡、蓄电池、雨刮等易损件租期内免费更换服务(不含轮胎,只限自行到服务站更换)' }, React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, borderRadius: 999, border: '1px solid #d9d9d9', color: '#999', fontSize: 12, lineHeight: '16px', cursor: 'help', userSelect: 'none' } }, 'i') ) ); } }, { title: '轮胎保', dataIndex: 'tireInsurance', key: 'tireInsurance', width: 110, render: function (v) { return React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6 } }, (v || '-'), React.createElement(Tooltip, { title: '每个租赁年度内提供1次车辆轮胎因自然磨损产生的替换服务' }, React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, borderRadius: 999, border: '1px solid #d9d9d9', color: '#999', fontSize: 12, lineHeight: '16px', cursor: 'help', userSelect: 'none' } }, 'i') ) ); } }, { title: '养护保', dataIndex: 'maintenanceInsurance', key: 'maintenanceInsurance', width: 110, render: function (v) { return React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6 } }, (v || '-'), React.createElement(Tooltip, { title: '按厂家保养要求提供定期保养服务' }, React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, borderRadius: 999, border: '1px solid #d9d9d9', color: '#999', fontSize: 12, lineHeight: '16px', cursor: 'help', userSelect: 'none' } }, 'i') ) ); } } ]; }, []); var businessServiceColumns = useMemo(function () { return [ { title: '序号', dataIndex: 'seq', key: 'seq', width: 60 }, { title: '费用项', dataIndex: 'feeItem', key: 'feeItem', width: 200, ellipsis: true }, { title: '金额', dataIndex: 'amount', key: 'amount', width: 140, render: function (v) { return React.createElement(Input, { value: v, addonAfter: '元', disabled: true }); } }, { title: '备注', dataIndex: 'remark', key: 'remark', render: function (v) { return React.createElement(TextArea, { value: v, rows: 1, disabled: true }); } }, { title: '最后更新时间', dataIndex: 'lastUpdateTime', key: 'lastUpdateTime', width: 150, render: function (v) { return React.createElement('span', { style: { fontSize: 12, color: '#666' } }, v || '-'); } }, { title: '照片', key: 'photo', width: 100, render: function () { return React.createElement(Button, { size: 'small', disabled: true }, '上传'); } }, { title: '附件', key: 'attachment', width: 110, render: function () { return React.createElement(Button, { size: 'small', disabled: true }, '上传附件'); } } ]; }, []); var operationColumns = useMemo(function () { return [ { title: '序号', dataIndex: 'seq', key: 'seq', width: 60 }, { title: '费用项', dataIndex: 'feeItem', key: 'feeItem', width: 200, render: function (v) { if (v === '轮胎磨损费用') { var popContent = React.createElement('div', { style: { width: 760, maxWidth: '80vw' } }, React.createElement('div', { style: { fontWeight: 600, marginBottom: 8 } }, '轮胎磨损费用明细'), React.createElement(Table, { rowKey: 'key', size: 'small', bordered: true, pagination: false, dataSource: tireTreadList, columns: [ { title: '轮胎名称', dataIndex: 'name', key: 'name', width: 120, ellipsis: true }, { title: '交车胎纹深度', dataIndex: 'deliveryDepth', key: 'deliveryDepth', width: 110, render: function (vv) { return (vv || '0.00') + 'mm'; } }, { title: '还车胎纹深度', dataIndex: 'returnDepth', key: 'returnDepth', width: 110, render: function (vv) { return (vv || '0.00') + 'mm'; } }, { title: '胎纹差', dataIndex: 'diff', key: 'diff', width: 80, render: function (vv) { return (vv || '0.00') + 'mm'; } }, { title: '单价', dataIndex: 'unitPrice', key: 'unitPrice', width: 90, render: function (vv) { return (vv || '0.00') + '元/mm'; } }, { title: '总金额', dataIndex: 'totalAmount', key: 'totalAmount', width: 90, render: function (vv) { return (vv || '0.00') + '元'; } } ] }) ); return React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6 } }, (v || '-'), React.createElement(Popover, { content: popContent, trigger: 'hover', placement: 'topLeft' }, React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, borderRadius: 999, border: '1px solid #d9d9d9', color: '#999', fontSize: 12, lineHeight: '16px', cursor: 'help', userSelect: 'none' } }, 'i') ) ); } return v || '-'; } }, { title: '金额', dataIndex: 'amount', key: 'amount', width: 140, render: function (v) { return React.createElement(Input, { value: v, addonAfter: '元', disabled: true }); } }, { title: React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', gap: 6 } }, '无忧包减免', React.createElement(Tooltip, { title: '无忧包减免不会列入运维成本,而是计入业务成本' }, React.createElement('span', { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, borderRadius: 999, border: '1px solid #d9d9d9', color: '#999', fontSize: 12, lineHeight: '16px', cursor: 'help', userSelect: 'none' } }, 'i') ) ), dataIndex: 'worryFreeDiscount', key: 'worryFreeDiscount', width: 140, render: function (v) { return React.createElement(Input, { value: v, addonAfter: '元', disabled: true }); } }, { title: '备注', dataIndex: 'remark', key: 'remark', render: function (v) { return React.createElement(TextArea, { value: v, rows: 1, disabled: true }); } }, { title: '最后更新时间', dataIndex: 'lastUpdateTime', key: 'lastUpdateTime', width: 150, render: function (v) { return React.createElement('span', { style: { fontSize: 12, color: '#666' } }, v || '-'); } }, { title: '照片', key: 'photo', width: 100, render: function () { return React.createElement(Button, { size: 'small', disabled: true }, '上传'); } }, { title: '附件', key: 'attachment', width: 110, render: function () { return React.createElement(Button, { size: 'small', disabled: true }, '上传附件'); } } ]; }, [tireTreadList]); function goBack() { message.info('返回还车应结款列表页(原型)'); try { if (window.history && window.history.length > 1) window.history.back(); } catch (e) {} } return React.createElement('div', { style: layoutStyle }, React.createElement('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 } }, React.createElement(Breadcrumb, { items: [{ title: '财务管理' }, { title: '还车应结款' }, { title: '查看' }] }) ), React.createElement(Card, { title: '还车车辆明细', style: cardStyle }, React.createElement(Table, { rowKey: 'key', columns: vehicleColumns, dataSource: vehicleDetail, pagination: false, bordered: true, size: 'middle', scroll: { x: 980 } }) ), React.createElement(Card, { title: '还车费用明细', style: cardStyle }, React.createElement('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))', gap: 16, marginBottom: 16 } }, React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, padding: '18px 16px', boxShadow: '0 1px 2px rgba(0,0,0,0.04)' } }, React.createElement('div', { style: { fontSize: 13, color: '#666', marginBottom: 12 } }, '保证金总额'), React.createElement('div', { style: { fontSize: 22, fontWeight: 600, color: '#333' } }, (depositAmount || '0.00'), React.createElement('span', { style: { fontSize: 14, fontWeight: 500, marginLeft: 4 } }, '元')) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, padding: '18px 16px', boxShadow: '0 1px 2px rgba(0,0,0,0.04)' } }, React.createElement('div', { style: { fontSize: 13, color: '#666', marginBottom: 12 } }, '待结算总额'), React.createElement(Popover, { trigger: 'click', placement: 'bottomLeft', content: buildBreakdownContent(settleBreakdown) }, React.createElement('div', { style: { fontSize: 22, fontWeight: 600, color: '#fa8c16', cursor: 'pointer' } }, (pendingSettle || '0.00'), React.createElement('span', { style: { fontSize: 14, fontWeight: 500, marginLeft: 4, color: '#333' } }, '元') ) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, padding: '18px 16px', boxShadow: '0 1px 2px rgba(0,0,0,0.04)' } }, React.createElement('div', { style: { fontSize: 13, color: '#666', marginBottom: 12 } }, '应退还总额'), React.createElement(Popover, { trigger: 'click', placement: 'bottomLeft', content: buildBreakdownContent(refundBreakdown) }, React.createElement('div', { style: { fontSize: 22, fontWeight: 600, color: '#52c41a', cursor: 'pointer' } }, (refundTotal || '0.00'), React.createElement('span', { style: { fontSize: 14, fontWeight: 500, marginLeft: 4, color: '#333' } }, '元') ) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, padding: '18px 16px', boxShadow: '0 1px 2px rgba(0,0,0,0.04)' } }, React.createElement('div', { style: { fontSize: 13, color: '#666', marginBottom: 12 } }, '应补缴总额'), React.createElement(Popover, { trigger: 'click', placement: 'bottomLeft', content: buildBreakdownContent(payBreakdown) }, React.createElement('div', { style: { fontSize: 22, fontWeight: 600, color: '#f5222d', cursor: 'pointer' } }, (payTotal || '0.00'), React.createElement('span', { style: { fontSize: 14, fontWeight: 500, marginLeft: 4, color: '#333' } }, '元') ) ) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, marginBottom: 12 } }, React.createElement('div', { style: { padding: '12px 16px', display: 'flex', alignItems: 'center', gap: 12 } }, React.createElement('div', { style: { fontWeight: 600, fontSize: 14 } }, '业务服务组'), React.createElement('div', { style: { flex: 1 } }), React.createElement('div', { style: { display: 'flex', alignItems: 'center', gap: 12, color: '#666', fontSize: 13 } }, React.createElement('span', null, '总金额:', businessServiceTotal, ' 元'), React.createElement('span', null, '提交人:业务服务组-张三'), React.createElement('span', null, '状态:已提交') ) ), React.createElement('div', { style: { padding: '12px 16px', borderTop: '1px solid #f0f0f0' } }, React.createElement(Table, { rowKey: 'key', columns: businessServiceColumns, dataSource: businessServiceRows, pagination: false, bordered: true, size: 'small' }), React.createElement('div', { style: { marginTop: 12, paddingTop: 12, borderTop: '1px dashed #f0f0f0' } }, React.createElement('div', { style: { fontWeight: 600, marginBottom: 10 } }, '车辆租金'), React.createElement('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(3, minmax(0, 1fr))', gap: 12 } }, React.createElement('div', null, React.createElement('div', { style: { fontSize: 12, color: '#666', marginBottom: 6 } }, '本期账单已收租金'), React.createElement(Input, { value: billInfo.receivedRent, addonAfter: '元', disabled: true }) ), React.createElement('div', null, React.createElement('div', { style: { fontSize: 12, color: '#666', marginBottom: 6 } }, '车辆实际租金'), React.createElement(Input, { value: billInfo.actualRent, addonAfter: '元', disabled: true }) ), React.createElement('div', null, React.createElement('div', { style: { fontSize: 12, color: '#666', marginBottom: 6 } }, '车辆应退租金'), React.createElement(Input, { value: billInfo.shouldRefundRent, addonAfter: '元', disabled: true }) ) ) ) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, marginBottom: 12 } }, React.createElement('div', { style: { padding: '12px 16px', display: 'flex', alignItems: 'center', gap: 12 } }, React.createElement('div', { style: { fontWeight: 600, fontSize: 14 } }, '能源采购组'), React.createElement('div', { style: { flex: 1 } }), React.createElement('div', { style: { display: 'flex', alignItems: 'center', gap: 12, color: '#666', fontSize: 13 } }, React.createElement('span', null, '总金额:', energyTotal, ' 元'), React.createElement('span', null, '提交人:能源采购组-李四'), React.createElement('span', null, '状态:已提交') ) ), React.createElement('div', { style: { padding: '12px 16px', borderTop: '1px solid #f0f0f0' } }, React.createElement('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(4, minmax(0, 1fr))', gap: 12, marginBottom: 16 } }, React.createElement('div', null, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '氢量差补缴金额'), React.createElement(Input, { value: energy.hydrogenSupplement, addonAfter: '元', disabled: true }) ), React.createElement('div', null, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '交车氢量'), React.createElement(Input, { value: (toFixed2(energy.deliveryHydrogen) || '0.00'), addonAfter: 'MPa', disabled: true }) ), React.createElement('div', null, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '还车氢量'), React.createElement(Input, { value: (toFixed2(energy.returnHydrogen) || '0.00'), addonAfter: 'MPa', disabled: true }) ), React.createElement('div', null, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '退还车氢气单价'), React.createElement(Input, { value: (toFixed2(energy.hydrogenUnitPrice) || '0.00'), addonAfter: '元', disabled: true }) ) ), React.createElement('div', null, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '能源费补缴金额'), React.createElement('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(4, minmax(0, 1fr))', gap: 12, marginBottom: 12 } }, React.createElement('div', null, React.createElement(Input, { value: energy.hydrogenFee, placeholder: '氢费补缴金额', addonAfter: '元', style: { width: '100%' }, disabled: true })), React.createElement('div', null, React.createElement(Input, { value: energy.electricFee, placeholder: '电费补缴金额', addonAfter: '元', style: { width: '100%' }, disabled: true })), React.createElement('div', null), React.createElement('div', null) ) ), React.createElement('div', { style: { gridColumn: '1 / -1', borderTop: '1px solid #f0f0f0', paddingTop: 12, marginTop: 4 } }, React.createElement('div', { style: { marginBottom: 8, fontWeight: 500 } }, '预付款退费金额'), React.createElement('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(4, minmax(0, 1fr))', gap: 12 } }, React.createElement('div', null, React.createElement(Input, { value: energy.prepayRefund, placeholder: '0.00', addonAfter: '元', style: { width: '100%' }, disabled: true }) ), React.createElement('div', null), React.createElement('div', null), React.createElement('div', null) ), React.createElement('div', { style: { marginTop: 8, fontSize: 12, color: '#666' } }, '项目预充值余额:', energy.userBalance, ' 元') ) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, marginBottom: 12 } }, React.createElement('div', { style: { padding: '12px 16px', display: 'flex', alignItems: 'center', gap: 12 } }, React.createElement('div', { style: { fontWeight: 600, fontSize: 14 } }, '运维部'), React.createElement('div', { style: { flex: 1 } }), React.createElement('div', { style: { display: 'flex', alignItems: 'center', gap: 12, color: '#666', fontSize: 13 } }, React.createElement('span', null, '总金额:', operationTotal, ' 元'), React.createElement('span', null, '提交人:运维部-王五'), React.createElement('span', null, '状态:已提交') ) ), React.createElement('div', { style: { padding: '12px 16px', borderTop: '1px solid #f0f0f0' } }, React.createElement(Table, { rowKey: 'key', columns: operationColumns, dataSource: operationRows, pagination: false, bordered: true, size: 'small' }) ) ), React.createElement('div', { style: { background: '#fff', border: '1px solid #f0f0f0', borderRadius: 8, marginBottom: 12 } }, React.createElement('div', { style: { padding: '12px 16px', display: 'flex', alignItems: 'center', gap: 12 } }, React.createElement('div', { style: { fontWeight: 600, fontSize: 14 } }, '安全组'), React.createElement('div', { style: { flex: 1 } }), React.createElement('div', { style: { display: 'flex', alignItems: 'center', gap: 12, color: '#666', fontSize: 13 } }, React.createElement('span', null, '提交人:安全组-赵六'), React.createElement('span', null, '状态:已提交') ) ), React.createElement('div', { style: { padding: '12px 16px', borderTop: '1px solid #f0f0f0' } }, React.createElement('div', { style: { marginBottom: 12, fontWeight: 600 } }, '违章清单'), React.createElement(Table, { rowKey: 'key', size: 'small', bordered: true, pagination: false, dataSource: violationList, columns: [ { title: '违章编码', dataIndex: 'code', key: 'code', width: 130, ellipsis: true }, { title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 110 }, { title: '违法行为', dataIndex: 'violationBehavior', key: 'violationBehavior', width: 110, ellipsis: true }, { title: '违法时间', dataIndex: 'violationTime', key: 'violationTime', width: 110 }, { title: '罚款金额', dataIndex: 'penaltyAmount', key: 'penaltyAmount', width: 90, render: function (v) { return (v || '0.00'); } }, { title: '缴费状态', dataIndex: 'paymentStatus', key: 'paymentStatus', width: 90 }, { title: '计分值', dataIndex: 'score', key: 'score', width: 70 }, { title: '是否处理', dataIndex: 'handleStatus', key: 'handleStatus', width: 90 }, { title: '违章客户', dataIndex: 'violationCustomer', key: 'violationCustomer', width: 160, ellipsis: true }, { title: '违章照片', dataIndex: 'violationPhoto', key: 'violationPhoto', width: 90, render: function (v) { return v ? v : ''; } }, { title: '备注', dataIndex: 'remark', key: 'remark', width: 120, ellipsis: true } ] }), React.createElement('div', { style: { margin: '16px 0 12px', fontWeight: 600 } }, '事故清单'), React.createElement(Table, { rowKey: 'key', size: 'small', bordered: true, pagination: false, dataSource: accidentList, locale: { emptyText: '暂无事故记录' }, columns: [ { title: '事故编码', dataIndex: 'accidentCode', key: 'accidentCode', width: 130, ellipsis: true }, { title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 110 }, { title: '事故时间', dataIndex: 'accidentTime', key: 'accidentTime', width: 110 }, { title: '事故地点', dataIndex: 'accidentPlace', key: 'accidentPlace', width: 140, ellipsis: true }, { title: '事故类型', dataIndex: 'accidentType', key: 'accidentType', width: 110, ellipsis: true }, { title: '客户名称', dataIndex: 'customerName', key: 'customerName', width: 140, ellipsis: true }, { title: '我方定损金额', dataIndex: 'ourClaimAmount', key: 'ourClaimAmount', width: 110, render: function (v) { return v || ''; } }, { title: '对方定损金额', dataIndex: 'theirClaimAmount', key: 'theirClaimAmount', width: 110, render: function (v) { return v || ''; } }, { title: '责任划分', dataIndex: 'responsibility', key: 'responsibility', width: 90 }, { title: '事故状态', dataIndex: 'accidentStatus', key: 'accidentStatus', width: 90 }, { title: '结案时间', dataIndex: 'closeTime', key: 'closeTime', width: 110 }, { title: '其他费用', dataIndex: 'otherFee', key: 'otherFee', width: 90, render: function (v) { return v || ''; } }, { title: '备注', dataIndex: 'remark', key: 'remark', width: 120, ellipsis: true } ] }) ) ) ), React.createElement('div', { style: footerStyle }, React.createElement(Button, { onClick: goBack }, '返回') ) ); };