feat(web): 同步 web 端目录更新至 Gitea
包含加氢站站点信息、运维交车/故障、台账与数据分析等页面新增与改动。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// 【重要】必须使用 const Component 作为组件变量名
|
||||
// 运维管理 - 车辆业务 - 替换车管理 - 查看(2026年3月3日版本)
|
||||
// 运维管理 - 车辆业务 - 替换车管理 - 查看
|
||||
|
||||
const Component = function () {
|
||||
var useState = React.useState;
|
||||
@@ -10,61 +10,290 @@ const Component = function () {
|
||||
var Input = antd.Input;
|
||||
var Button = antd.Button;
|
||||
var Modal = antd.Modal;
|
||||
var Tag = antd.Tag;
|
||||
var Steps = antd.Steps;
|
||||
|
||||
var EMPTY_PROJECT = {
|
||||
contractId: '',
|
||||
projectId: '',
|
||||
projectName: '',
|
||||
projectType: '',
|
||||
customerName: '',
|
||||
contractCode: '',
|
||||
deliveryRegion: ''
|
||||
};
|
||||
|
||||
var activeContracts = [
|
||||
{
|
||||
contractId: 'c1',
|
||||
contractStatus: '合同进行中',
|
||||
projectId: 'p1',
|
||||
projectName: '嘉兴氢能示范项目',
|
||||
projectType: '租赁',
|
||||
contractCode: 'HT-ZL-2025-001',
|
||||
customerName: '嘉兴某某物流有限公司',
|
||||
deliveryRegion: '浙江省-嘉兴市'
|
||||
}
|
||||
];
|
||||
|
||||
var MOCK_PAIRS = [
|
||||
{
|
||||
id: 'pair_1',
|
||||
replaceType: '永久替换',
|
||||
replaceReason: '车辆原因',
|
||||
replaceReasonDesc: '原车故障需维修,临时用替换车保障客户用车。',
|
||||
originalPlate: '浙A12345',
|
||||
originalBrand: '东风',
|
||||
originalModel: 'DFH1180',
|
||||
contractId: 'c1',
|
||||
replacePlate: '浙A67890',
|
||||
replaceBrand: '福田',
|
||||
replaceModel: 'BJ1180'
|
||||
},
|
||||
{
|
||||
id: 'pair_2',
|
||||
replaceType: '临时替换',
|
||||
replaceReason: '客户原因',
|
||||
replaceReasonDesc: '',
|
||||
originalPlate: '浙A55555',
|
||||
originalBrand: '重汽',
|
||||
originalModel: 'ZZ1160',
|
||||
contractId: 'c1',
|
||||
replacePlate: '浙A66666',
|
||||
replaceBrand: '江淮',
|
||||
replaceModel: 'HFC1190'
|
||||
}
|
||||
];
|
||||
|
||||
var contractById = (function () {
|
||||
var map = {};
|
||||
activeContracts.forEach(function (c) { map[c.contractId] = c; });
|
||||
return map;
|
||||
})();
|
||||
|
||||
var pairs = MOCK_PAIRS;
|
||||
var requirementModalVisible = useState(false);
|
||||
var setRequirementModalVisible = requirementModalVisible[1];
|
||||
|
||||
// 模拟:根据已填信息反查的一条替换车记录(实际由路由参数或接口拉取)
|
||||
var detail = useState({
|
||||
projectName: '嘉兴氢能示范项目',
|
||||
contractCode: 'HT-ZL-2025-001',
|
||||
customerName: '嘉兴某某物流有限公司',
|
||||
contactPerson: '张三',
|
||||
signDate: '2025-01-15',
|
||||
contactPhone: '13800138001',
|
||||
businessDept: '业务1部',
|
||||
businessPerson: '张经理',
|
||||
replaceDate: '2026-02-18',
|
||||
replaceType: '永久替换',
|
||||
replaceReason: '车辆原因',
|
||||
replaceReasonDesc: '原车故障需维修,临时用替换车保障客户用车。',
|
||||
originalPlate: '浙A12345',
|
||||
originalVin: 'LGHXCAE28M1234567',
|
||||
originalBrand: '东风',
|
||||
originalModel: 'DFH1180',
|
||||
replacePlate: '浙A67890',
|
||||
replaceVin: 'LGHXCAE28M6789012',
|
||||
replaceBrand: '福田',
|
||||
replaceModel: 'BJ1180'
|
||||
});
|
||||
var data = detail[0];
|
||||
var projectInfo = (function () {
|
||||
var anchor = pairs.find(function (p) { return p.originalPlate && p.contractId; });
|
||||
if (!anchor || !anchor.contractId) return EMPTY_PROJECT;
|
||||
var c = contractById[anchor.contractId];
|
||||
if (!c) return EMPTY_PROJECT;
|
||||
return {
|
||||
contractId: c.contractId,
|
||||
projectId: c.projectId,
|
||||
projectName: c.projectName,
|
||||
projectType: c.projectType,
|
||||
customerName: c.customerName,
|
||||
contractCode: c.contractCode,
|
||||
deliveryRegion: c.deliveryRegion
|
||||
};
|
||||
})();
|
||||
|
||||
var handleBack = function () {
|
||||
// 返回替换车管理列表页(实际为路由或平台跳转)
|
||||
if (window.__replaceCarBack) {
|
||||
window.__replaceCarBack();
|
||||
} else {
|
||||
antd.message.info('返回替换车管理列表(原型)');
|
||||
}
|
||||
};
|
||||
|
||||
var layoutStyle = { padding: '16px 24px', background: '#f5f5f5', minHeight: '100vh' };
|
||||
var cardStyle = { marginBottom: 16 };
|
||||
var labelStyle = { marginBottom: 6, fontSize: 14, color: 'rgba(0,0,0,0.65)' };
|
||||
var formRowStyle = { display: 'grid', gridTemplateColumns: '1fr 1fr 1fr', gap: '16px 24px', marginBottom: 16 };
|
||||
var formItemStyle = { marginBottom: 12 };
|
||||
|
||||
// 审批情况(竖排步骤条,参照提车应收款-审核)
|
||||
var approvalSteps = [
|
||||
{ title: '业务部主管', person: '姚守涛', status: 'finish', approveTime: '2026-02-20 09:30' },
|
||||
{ title: '事业部主管', person: '尚建华', status: 'finish', approveTime: '2026-02-20 10:15' },
|
||||
{ title: '运维主管', person: '王运维', status: 'finish', approveTime: '2026-02-20 11:00' }
|
||||
];
|
||||
var requirementContent = '替换车管理-查看(2026年3月3日版本)\n一个「数字化资产ONEOS运管平台」中的「运维管理」「车辆业务」「替换车管理」「查看」模块\n1.面包屑:\n#运维管理-车辆业务-替换车管理-查看\n页面由选择项目、替换车详情、两个单独卡片组成;\n\n2.选择项目:\n#可通过选择进行中的车辆租赁合同,拉取租赁合同中对应车辆进行替换;\n2.1.项目名称:根据已填信息反查,不可编辑;\n2.2.合同编码:根据项目名称自动反查,不可编辑;\n2.3.客户名称:根据项目名称自动反查,不可编辑;\n2.4.对接人:根据项目名称自动反查,不可编辑;\n2.5.合同签订时间:根据项目名称自动反查,不可编辑;\n2.6.客户联系电话:根据项目名称自动反查,不可编辑;\n2.7.业务部门:根据项目名称自动反查,不可编辑;\n2.8.业务人员:根据项目名称自动反查,不可编辑;\n\n3.替换车详情:\n3.1.替换时间:日期选择器(禁用),显示退换时间,格式为YYYY-MM-DD;\n3.2.替换类型:选择器,根据已填信息反查,不可编辑;\n 3.2.1.类型为永久替换时,该申请通过审核后替换车进行交车(交车时间为流程结束当天),由运维手动将被替换车进行还车;\n 3.2.2.类型为临时替换时,该申请通过审核后替换车进行交车(交车时间为流程结束当天),被替换车不用还车,在被替换车重新交付客户时,由运维手动将替换车进行还车;\n 重新生成交车任务时,交车地点会自动继承自合同,由对应区域运维人员才能操作;\n 交车任务完成后,所有涉及到被替换车辆显示(例如车辆租赁合同、租赁账单、提车应收款等功能)会替换为新替换车的对应信息,如果是临时替换,在新替换车完成还车后,对应车辆记录会恢复为原有车辆数据。如果是永久替换,则由运维自主进行被替换车辆还车;\n3.3.替换原因:选择器,根据已填信息反查,不可编辑;\n3.4.替换原因说明:文本域,根据已填信息反查,不可编辑;\n3.5.被替换车牌号:选择器,根据已填信息反查,不可编辑;\n3.6.被替换车识别代码:输入框(禁用),选择被替换车车牌号后自动反写该车识别代码;\n3.7.被替换车品牌:输入框(禁用),选择被替换车车牌号后自动反写该车品牌;\n3.8.被替换车型号:输入框(禁用),选择被替换车车牌号后自动反写该车型号;\n3.9.替换车车牌号:选择器,根据已填信息反查,不可编辑;\n3.10.替换车识别代码:输入框(禁用),选择替换车车牌号后自动反写该车识别代码;\n3.11.替换车品牌:输入框(禁用),选择替换车车牌号后自动反写该车品牌;\n3.12.替换车型号:输入框(禁用),选择替换车车牌号后自动反写该车型号;\n\n下方为返回按钮;\n4.1.点击返回,返回替换车管理列表页;';
|
||||
|
||||
return React.createElement('div', { style: layoutStyle },
|
||||
React.createElement('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 } },
|
||||
var handleBack = function () {
|
||||
if (window.__replaceCarBack) window.__replaceCarBack();
|
||||
else antd.message.info('返回替换车管理列表(原型)');
|
||||
};
|
||||
|
||||
var pageCss =
|
||||
'.vr-add-page{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}' +
|
||||
'.vr-add-page .vr-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}' +
|
||||
'.vr-add-page .vr-main-card{border-radius:16px;border:none;box-shadow:0 4px 24px -6px rgba(15,23,42,0.08),0 0 0 1px rgba(15,23,42,0.05)}' +
|
||||
'.vr-add-page .vr-main-card>.ant-card-head{border-bottom:1px solid #f1f5f9;padding:16px 24px;min-height:auto}' +
|
||||
'.vr-add-page .vr-main-card>.ant-card-head .ant-card-head-title{font-size:16px;font-weight:600;color:#0f172a;padding:0}' +
|
||||
'.vr-add-page .vr-main-card>.ant-card-body{padding:20px 24px 24px}' +
|
||||
'.vr-add-page .vr-approval-card{border-radius:16px;border:none;box-shadow:0 4px 24px -6px rgba(15,23,42,0.08),0 0 0 1px rgba(15,23,42,0.05);margin-top:16px}' +
|
||||
'.vr-add-page .vr-pair-list{display:flex;flex-direction:column;gap:16px}' +
|
||||
'.vr-add-page .vr-pair-card{border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;overflow:hidden}' +
|
||||
'.vr-add-page .vr-pair-card__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:#f0f9ff;border-bottom:1px solid #e0f2fe}' +
|
||||
'.vr-add-page .vr-pair-card__title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#0f172a;flex-wrap:wrap}' +
|
||||
'.vr-add-page .vr-pair-card__arrow{display:inline-flex;align-items:center;justify-content:center;color:#1677ff;font-size:16px;font-weight:600;line-height:1;padding:0 2px;flex-shrink:0}' +
|
||||
'.vr-add-page .vr-pair-card__index{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:6px;background:#1677ff;color:#fff;font-size:12px;font-weight:700}' +
|
||||
'.vr-add-page .vr-pair-card__body{padding:16px}' +
|
||||
'.vr-add-page .vr-block{margin-bottom:14px}' +
|
||||
'.vr-add-page .vr-block:last-child{margin-bottom:0}' +
|
||||
'.vr-add-page .vr-block-label{font-size:12px;font-weight:600;color:#475569;margin-bottom:10px}' +
|
||||
'.vr-add-page .vr-block-label--new{color:#047857}' +
|
||||
'.vr-add-page .vr-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px}' +
|
||||
'.vr-add-page .vr-form-grid--reason .vr-field:last-child{grid-column:1/-1}' +
|
||||
'@media(max-width:900px){.vr-add-page .vr-form-grid{grid-template-columns:1fr}}' +
|
||||
'.vr-add-page .vr-field{display:flex;flex-direction:column;gap:6px;min-width:0}' +
|
||||
'.vr-add-page .vr-field__label{font-size:13px;font-weight:500;color:#334155}' +
|
||||
'.vr-add-page .vr-swap-divider{display:flex;align-items:center;gap:12px;margin:14px 0;color:#94a3b8;font-size:12px;font-weight:500}' +
|
||||
'.vr-add-page .vr-swap-divider::before,.vr-add-page .vr-swap-divider::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,#cbd5e1,transparent)}' +
|
||||
'.vr-add-page .vr-swap-divider__icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#eff6ff;color:#1677ff;font-size:14px}' +
|
||||
'.vr-add-page .vr-vehicle-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;padding:12px 14px;margin-bottom:14px;border-radius:8px;background:#fffbeb;border:1px solid #fde68a}' +
|
||||
'.vr-add-page .vr-project-panel{margin-top:20px;padding:16px 18px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0}' +
|
||||
'.vr-add-page .vr-project-panel__title{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:14px}' +
|
||||
'.vr-add-page .vr-project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px}' +
|
||||
'.vr-add-page .vr-readonly{display:flex;flex-direction:column;gap:4px}' +
|
||||
'.vr-add-page .vr-readonly__label{font-size:12px;color:#64748b;font-weight:500}' +
|
||||
'.vr-add-page .vr-readonly__value{font-size:14px;color:#0f172a;font-weight:500}' +
|
||||
'.vr-add-page .vr-footer{display:flex;gap:10px;margin-top:24px;padding-top:20px;border-top:1px solid #f1f5f9}' +
|
||||
'.vr-req-doc{padding:4px 2px 8px}' +
|
||||
'.vr-req-doc__meta{font-size:12px;color:#64748b;line-height:1.6;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f1f5f9}' +
|
||||
'.vr-req-doc__section{margin-bottom:20px}' +
|
||||
'.vr-req-doc__title{font-size:15px;font-weight:600;color:#0f172a;margin:0 0 10px}' +
|
||||
'.vr-req-doc__line{font-size:13px;color:#475569;line-height:1.75;margin:0 0 6px}' +
|
||||
'.vr-req-doc__line--sub{padding-left:14px;color:#64748b}';
|
||||
|
||||
function specSection(title, lines) {
|
||||
return React.createElement(
|
||||
'section',
|
||||
{ className: 'vr-req-doc__section' },
|
||||
React.createElement('h3', { className: 'vr-req-doc__title' }, title),
|
||||
(lines || []).map(function (text, i) {
|
||||
var isSub = text.indexOf(' ') === 0;
|
||||
return React.createElement('p', { key: i, className: 'vr-req-doc__line' + (isSub ? ' vr-req-doc__line--sub' : '') }, text);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function renderRequirementDoc() {
|
||||
return React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-req-doc' },
|
||||
React.createElement('div', { className: 'vr-req-doc__meta' }, '数字化资产 ONEOS 运管平台 · 运维管理 · 车辆业务 · 替换车管理 · 查看'),
|
||||
specSection('1. 页面定位', ['只读查看替换车申请详情,布局与新增/编辑一致,不可修改任何字段。']),
|
||||
specSection('2. 展示内容', [
|
||||
'2.1 车辆替换明细:每条被替换车一张卡片,含被替换车信息、替换说明、替换车辆;卡片标题展示被替换与替换车牌。',
|
||||
'2.2 项目信息:客户名称、项目名称、项目类型(全单一份)。',
|
||||
'2.3 审批情况:竖向步骤条展示审批节点、审批人、审批时间。'
|
||||
]),
|
||||
specSection('3. 操作', ['底部仅「返回」按钮,返回替换车管理列表。'])
|
||||
);
|
||||
}
|
||||
|
||||
function renderField(label, node) {
|
||||
return React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-field' },
|
||||
React.createElement('div', { className: 'vr-field__label' }, label),
|
||||
node
|
||||
);
|
||||
}
|
||||
|
||||
function renderPairCard(pair, index) {
|
||||
return React.createElement(
|
||||
'article',
|
||||
{ key: pair.id, className: 'vr-pair-card' },
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-pair-card__head' },
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-pair-card__title' },
|
||||
React.createElement('span', { className: 'vr-pair-card__index' }, index + 1),
|
||||
React.createElement('span', null, '车辆替换'),
|
||||
React.createElement(Tag, { style: { margin: 0 } }, pair.originalPlate),
|
||||
pair.replacePlate
|
||||
? React.createElement('span', { className: 'vr-pair-card__arrow', 'aria-hidden': true }, '→')
|
||||
: null,
|
||||
pair.replacePlate
|
||||
? React.createElement(Tag, { color: 'processing', style: { margin: 0 } }, pair.replacePlate)
|
||||
: null
|
||||
)
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-pair-card__body' },
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-vehicle-summary' },
|
||||
renderField('车牌号', React.createElement(Input, { value: pair.originalPlate, disabled: true })),
|
||||
renderField('品牌', React.createElement(Input, { value: pair.originalBrand, disabled: true })),
|
||||
renderField('型号', React.createElement(Input, { value: pair.originalModel, disabled: true }))
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-block' },
|
||||
React.createElement('div', { className: 'vr-block-label' }, '替换说明'),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-form-grid vr-form-grid--reason' },
|
||||
renderField('替换类型', React.createElement(Input, { value: pair.replaceType, disabled: true })),
|
||||
renderField('替换原因', React.createElement(Input, { value: pair.replaceReason, disabled: true })),
|
||||
renderField(
|
||||
'替换原因说明',
|
||||
React.createElement(Input.TextArea, {
|
||||
value: pair.replaceReasonDesc || '—',
|
||||
disabled: true,
|
||||
rows: 2,
|
||||
style: { width: '100%' }
|
||||
})
|
||||
)
|
||||
)
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-swap-divider' },
|
||||
React.createElement('span', { className: 'vr-swap-divider__icon' }, '↓'),
|
||||
React.createElement('span', null, '替换为')
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-block' },
|
||||
React.createElement('div', { className: 'vr-block-label vr-block-label--new' }, '替换车辆'),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-form-grid' },
|
||||
renderField('新车', React.createElement(Input, { value: pair.replacePlate, disabled: true })),
|
||||
renderField('品牌', React.createElement(Input, { value: pair.replaceBrand, disabled: true })),
|
||||
renderField('型号', React.createElement(Input, { value: pair.replaceModel, disabled: true }))
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
function renderProjectPanel() {
|
||||
return React.createElement(
|
||||
'section',
|
||||
{ className: 'vr-project-panel' },
|
||||
React.createElement('div', { className: 'vr-project-panel__title' }, '项目信息'),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-project-grid' },
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-readonly' },
|
||||
React.createElement('span', { className: 'vr-readonly__label' }, '客户名称'),
|
||||
React.createElement('span', { className: 'vr-readonly__value' }, projectInfo.customerName)
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-readonly' },
|
||||
React.createElement('span', { className: 'vr-readonly__label' }, '项目名称'),
|
||||
React.createElement('span', { className: 'vr-readonly__value' }, projectInfo.projectName)
|
||||
),
|
||||
React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-readonly' },
|
||||
React.createElement('span', { className: 'vr-readonly__label' }, '项目类型'),
|
||||
React.createElement(
|
||||
'span',
|
||||
{ className: 'vr-readonly__value' },
|
||||
React.createElement(Tag, { color: projectInfo.projectType === '自营' ? 'purple' : 'blue', style: { margin: 0 } }, projectInfo.projectType)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return React.createElement(
|
||||
'div',
|
||||
{ className: 'vr-add-page', style: { padding: '20px 24px 32px', minHeight: '100vh', background: 'linear-gradient(165deg,#eef4ff 0%,#f5f7fa 42%,#f0f2f5 100%)' } },
|
||||
React.createElement('style', null, pageCss),
|
||||
React.createElement(
|
||||
'header',
|
||||
{ className: 'vr-page-header' },
|
||||
React.createElement(Breadcrumb, {
|
||||
items: [
|
||||
{ title: '运维管理' },
|
||||
@@ -75,126 +304,49 @@ const Component = function () {
|
||||
}),
|
||||
React.createElement(Button, { type: 'link', style: { padding: 0 }, onClick: function () { setRequirementModalVisible(true); } }, '查看需求说明')
|
||||
),
|
||||
React.createElement(Card, { title: '选择项目', style: cardStyle },
|
||||
React.createElement('div', { style: formRowStyle },
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '项目名称'),
|
||||
React.createElement(Input, { value: data.projectName || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '合同编码'),
|
||||
React.createElement(Input, { value: data.contractCode || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '客户名称'),
|
||||
React.createElement(Input, { value: data.customerName || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '对接人'),
|
||||
React.createElement(Input, { value: data.contactPerson || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '合同签订时间'),
|
||||
React.createElement(Input, { value: data.signDate || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '客户联系电话'),
|
||||
React.createElement(Input, { value: data.contactPhone || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '业务部门'),
|
||||
React.createElement(Input, { value: data.businessDept || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '业务人员'),
|
||||
React.createElement(Input, { value: data.businessPerson || '', disabled: true })
|
||||
React.createElement(
|
||||
Card,
|
||||
{
|
||||
className: 'vr-main-card',
|
||||
title: React.createElement(
|
||||
'span',
|
||||
null,
|
||||
'查看替换车 ',
|
||||
React.createElement(Tag, { style: { marginLeft: 8, fontWeight: 400 } }, pairs.length + ' 辆车')
|
||||
)
|
||||
)
|
||||
},
|
||||
React.createElement('div', { className: 'vr-pair-list' }, pairs.map(function (pair, index) { return renderPairCard(pair, index); })),
|
||||
renderProjectPanel(),
|
||||
React.createElement('div', { className: 'vr-footer' }, React.createElement(Button, { size: 'large', onClick: handleBack }, '返回'))
|
||||
),
|
||||
React.createElement(Card, { title: '替换车详情', style: cardStyle },
|
||||
React.createElement('div', { style: formRowStyle },
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换时间'),
|
||||
React.createElement(Input, { value: data.replaceDate || '', disabled: true, placeholder: 'YYYY-MM-DD' })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换类型'),
|
||||
React.createElement(Input, { value: data.replaceType || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换原因'),
|
||||
React.createElement(Input, { value: data.replaceReason || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: Object.assign({}, formItemStyle, { gridColumn: '1 / -1' }) },
|
||||
React.createElement('div', { style: labelStyle }, '替换原因说明'),
|
||||
React.createElement(Input.TextArea, { value: data.replaceReasonDesc || '', disabled: true, rows: 3, style: { width: '100%' } })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '被替换车牌号'),
|
||||
React.createElement(Input, { value: data.originalPlate || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '被替换车识别代码'),
|
||||
React.createElement(Input, { value: data.originalVin || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '被替换车品牌'),
|
||||
React.createElement(Input, { value: data.originalBrand || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '被替换车型号'),
|
||||
React.createElement(Input, { value: data.originalModel || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: { gridColumn: '1 / -1', width: '100%' } }),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换车车牌号'),
|
||||
React.createElement(Input, { value: data.replacePlate || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换车识别代码'),
|
||||
React.createElement(Input, { value: data.replaceVin || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换车品牌'),
|
||||
React.createElement(Input, { value: data.replaceBrand || '', disabled: true })
|
||||
),
|
||||
React.createElement('div', { style: formItemStyle },
|
||||
React.createElement('div', { style: labelStyle }, '替换车型号'),
|
||||
React.createElement(Input, { value: data.replaceModel || '', disabled: true })
|
||||
)
|
||||
),
|
||||
React.createElement('div', { style: { display: 'flex', gap: 8, marginTop: 24 } },
|
||||
React.createElement(Button, { onClick: handleBack }, '返回')
|
||||
)
|
||||
),
|
||||
React.createElement(Card, { title: '审批情况', style: cardStyle },
|
||||
React.createElement(
|
||||
Card,
|
||||
{ className: 'vr-approval-card', title: '审批情况' },
|
||||
React.createElement(Steps, {
|
||||
direction: 'vertical',
|
||||
current: approvalSteps.length,
|
||||
items: approvalSteps.map(function (s) {
|
||||
var statusText = s.status === 'finish' ? '审批通过' : '待审批';
|
||||
var desc = React.createElement('div', { style: { fontSize: 13, color: 'rgba(0,0,0,0.65)', marginTop: 4 } },
|
||||
React.createElement('div', null, '审批状态:', statusText),
|
||||
React.createElement('div', null, '审批人:', s.person || '—'),
|
||||
s.approveTime ? React.createElement('div', null, '审批时间:', s.approveTime) : null
|
||||
);
|
||||
return {
|
||||
title: s.title,
|
||||
description: desc,
|
||||
status: s.status === 'finish' ? 'finish' : 'wait'
|
||||
status: s.status === 'finish' ? 'finish' : 'wait',
|
||||
description: React.createElement(
|
||||
'div',
|
||||
{ style: { fontSize: 13, color: 'rgba(0,0,0,0.65)', marginTop: 4 } },
|
||||
React.createElement('div', null, '审批状态:', s.status === 'finish' ? '审批通过' : '待审批'),
|
||||
React.createElement('div', null, '审批人:', s.person || '—'),
|
||||
s.approveTime ? React.createElement('div', null, '审批时间:', s.approveTime) : null
|
||||
)
|
||||
};
|
||||
})
|
||||
})
|
||||
),
|
||||
React.createElement(Modal, {
|
||||
title: '需求说明',
|
||||
title: '替换车管理 - 查看 · 需求说明',
|
||||
open: requirementModalVisible[0],
|
||||
onCancel: function () { setRequirementModalVisible(false); },
|
||||
width: 720,
|
||||
footer: React.createElement(Button, { onClick: function () { setRequirementModalVisible(false); } }, '关闭'),
|
||||
bodyStyle: { maxHeight: '70vh', overflow: 'auto' }
|
||||
}, React.createElement('div', { style: { padding: '8px 0' } },
|
||||
React.createElement('div', { style: { whiteSpace: 'pre-wrap', fontSize: 13, lineHeight: 1.6 } }, requirementContent))
|
||||
)
|
||||
width: 760,
|
||||
footer: React.createElement(Button, { type: 'primary', onClick: function () { setRequirementModalVisible(false); } }, '关闭'),
|
||||
bodyStyle: { maxHeight: '72vh', overflow: 'auto', paddingTop: 8 }
|
||||
}, renderRequirementDoc())
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user