feat(web): 同步 web 端目录更新至 Gitea

包含加氢站站点信息、运维交车/故障、台账与数据分析等页面新增与改动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
王冕
2026-06-04 19:57:30 +08:00
parent d29e2a821b
commit d432d51eed
35 changed files with 26963 additions and 1463 deletions

View File

@@ -27,9 +27,12 @@ const Component = function () {
var Typography = antd.Typography;
var message = antd.message;
var Tooltip = antd.Tooltip;
var Input = antd.Input;
var Checkbox = antd.Checkbox;
var Text = Typography.Text;
var Title = Typography.Title;
var RangePicker = DatePicker.RangePicker;
var pageBg = '#f5f7fa';
var cardRadius = 12;
@@ -94,6 +97,51 @@ const Component = function () {
var overdueReturnModalOpen = overdueReturnModalState[0];
var setOverdueReturnModalOpen = overdueReturnModalState[1];
var inspectModalState = useState(false);
var inspectModalOpen = inspectModalState[0];
var setInspectModalOpen = inspectModalState[1];
var genDeliveryPickOpenState = useState(false);
var genDeliveryPickOpen = genDeliveryPickOpenState[0];
var setGenDeliveryPickOpen = genDeliveryPickOpenState[1];
var genDeliveryConfigOpenState = useState(false);
var genDeliveryConfigOpen = genDeliveryConfigOpenState[0];
var setGenDeliveryConfigOpen = genDeliveryConfigOpenState[1];
var genDeliveryCustomerState = useState('');
var genDeliveryCustomer = genDeliveryCustomerState[0];
var setGenDeliveryCustomer = genDeliveryCustomerState[1];
var genDeliveryProjectIdState = useState(undefined);
var genDeliveryProjectId = genDeliveryProjectIdState[0];
var setGenDeliveryProjectId = genDeliveryProjectIdState[1];
var genDeliveryExpectedState = useState(null);
var genDeliveryExpected = genDeliveryExpectedState[0];
var setGenDeliveryExpected = genDeliveryExpectedState[1];
var genDeliveryBillingState = useState(null);
var genDeliveryBilling = genDeliveryBillingState[0];
var setGenDeliveryBilling = genDeliveryBillingState[1];
var genDeliverySelectedKeysState = useState([]);
var genDeliverySelectedKeys = genDeliverySelectedKeysState[0];
var setGenDeliverySelectedKeys = genDeliverySelectedKeysState[1];
var genReturnPickOpenState = useState(false);
var genReturnPickOpen = genReturnPickOpenState[0];
var setGenReturnPickOpen = genReturnPickOpenState[1];
var genReturnConfigOpenState = useState(false);
var genReturnConfigOpen = genReturnConfigOpenState[0];
var setGenReturnConfigOpen = genReturnConfigOpenState[1];
var genReturnCustomerState = useState('');
var genReturnCustomer = genReturnCustomerState[0];
var setGenReturnCustomer = genReturnCustomerState[1];
var genReturnProjectIdState = useState(undefined);
var genReturnProjectId = genReturnProjectIdState[0];
var setGenReturnProjectId = genReturnProjectIdState[1];
var genReturnDateState = useState(null);
var genReturnDate = genReturnDateState[0];
var setGenReturnDate = genReturnDateState[1];
var genReturnSelectedKeysState = useState([]);
var genReturnSelectedKeys = genReturnSelectedKeysState[0];
var setGenReturnSelectedKeys = genReturnSelectedKeysState[1];
// 业管-能源部 · 独立卡片「本日导入加氢明细条数」0 条时卡片内显示提示文案(联调接接口)
var energyH2ImportTodayState = useState(0);
var energyH2ImportTodayCount = energyH2ImportTodayState[0];
@@ -285,6 +333,26 @@ const Component = function () {
setOverdueReturnModalOpen(true);
}, []);
// 工作台-年审/等级评定:根据提供的列表要求展示示意数据
var inspectMockRows = useMemo(function () {
var pad = function (n) { return n < 10 ? '0' + n : '' + n; };
var fmtD = function (d) {
return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate());
};
var base = new Date();
base.setHours(12, 0, 0, 0);
var addDays = function (days) {
var x = new Date(base.getTime());
x.setDate(x.getDate() + days);
return x;
};
return [
{ id: 'wb_insp_1', plateNo: '沪A12345', vehicleType: '重型厢式货车', brand: '东风', model: 'DFH1180', nextDate: fmtD(addDays(2)), remainDays: 2 },
{ id: 'wb_insp_2', plateNo: '苏B88888', vehicleType: '厢式货车', brand: '福田', model: 'BJ1180', nextDate: fmtD(addDays(5)), remainDays: 5 },
{ id: 'wb_insp_3', plateNo: '浙C66666', vehicleType: '轻型厢式货车', brand: '江淮', model: 'HFC1180', nextDate: fmtD(addDays(-1)), remainDays: -1 }
];
}, []);
// 待办任务表(原型:任务类型、任务名称、状态、任务时间、操作)
var dashboardTodoRows = useMemo(function () {
return [
@@ -832,13 +900,295 @@ const Component = function () {
);
}
var deliveryTaskProjectList = useMemo(function () {
return [
{
id: 'p1',
name: '嘉兴某某物流氢能运输项目',
contractCode: 'JXZL20260216YW101235A',
customerName: '嘉兴某某物流有限公司',
deliveryRegion: '浙江省 / 嘉兴市',
deliveryLocation: '浙江省嘉兴市南湖区科技大道1号',
vehicles: [
{ key: 'v1', seq: 1, brand: '东风', model: '氢燃料电池重卡 H31', plateNo: '浙A10001', vin: 'LFV2BJCH8K3123456', monthRent: '12800', serviceFee: '800', deposit: '30000', remark: '首车', deliveryStatus: 'submitted' },
{ key: 'v1c', seq: 1, brand: '东风', model: '氢燃料电池重卡 H31', plateNo: '浙A10000', vin: 'LFV2BJCH8K3000001', monthRent: '12800', serviceFee: '800', deposit: '30000', remark: '已交车样例', deliveryStatus: 'completed' },
{ key: 'v2', seq: 2, brand: '东风', model: '氢燃料电池重卡 H31', plateNo: '浙A10002', vin: 'LFV2BJCH8K3123457', monthRent: '12800', serviceFee: '800', deposit: '30000', remark: '', deliveryStatus: 'submitted' },
{ key: 'v3', seq: 3, brand: '福田', model: '智蓝氢能轻卡', plateNo: '', vin: 'LZYTBACR2M1234567', monthRent: '8500', serviceFee: '500', deposit: '20000', remark: '待上牌', deliveryStatus: 'none' },
{ key: 'v4', seq: 4, brand: '重汽', model: '豪沃氢能牵引车', plateNo: '浙F20001', vin: 'ZZ4257N386FZ12345', monthRent: '15000', serviceFee: '1000', deposit: '35000', remark: '', deliveryStatus: 'none' },
{ key: 'v5', seq: 5, brand: '陕汽', model: '德龙氢能自卸', plateNo: '浙F20002', vin: 'SX1313GR456123456', monthRent: '13200', serviceFee: '880', deposit: '32000', remark: '固定线路', deliveryStatus: 'none' }
]
},
{
id: 'p2',
name: '上海某某运输氢能租赁项目',
contractCode: 'SHZL20260201YW200123A',
customerName: '上海某某运输公司',
deliveryRegion: '上海市 / 上海市',
deliveryLocation: '上海市浦东新区张江高科技园区',
vehicles: [
{ key: 'v7', seq: 2, brand: '宇通', model: '氢能公交 ZK6126', plateNo: '沪B40001', vin: 'LZYTAGCF8K4567890', monthRent: '22000', serviceFee: '1200', deposit: '50000', remark: '示范线路', deliveryStatus: 'none' },
{ key: 'v8', seq: 3, brand: '福田', model: '欧辉氢能大巴', plateNo: '', vin: 'LZYTBACR2M2345678', monthRent: '19800', serviceFee: '1100', deposit: '45000', remark: '', deliveryStatus: 'none' }
]
},
{
id: 'p3',
name: '杭州某某租赁氢能项目',
contractCode: 'HZZL20260115YW100089A',
customerName: '杭州某某租赁有限公司',
deliveryRegion: '浙江省 / 杭州市',
deliveryLocation: '浙江省杭州市余杭区未来科技城',
vehicles: [
{ key: 'v11', seq: 3, brand: '东风', model: '氢燃料电池厢货', plateNo: '浙A50001', vin: 'LFV2BJCH8K5678901', monthRent: '9200', serviceFee: '520', deposit: '22000', remark: '城配', deliveryStatus: 'none' },
{ key: 'v12', seq: 4, brand: '开沃', model: '创源氢能轻卡', plateNo: '浙A50002', vin: 'LJXTBACR9N6789012', monthRent: '8800', serviceFee: '480', deposit: '21000', remark: '', deliveryStatus: 'none' }
]
}
];
}, []);
function filterProjectsByCustomer(customerName) {
var kw = String(customerName || '').trim().toLowerCase();
if (!kw) return deliveryTaskProjectList;
return deliveryTaskProjectList.filter(function (p) {
return (p.customerName || '').toLowerCase().indexOf(kw) !== -1;
});
}
var genDeliveryCustomerOptions = useMemo(function () {
var seen = {};
var options = [];
deliveryTaskProjectList.forEach(function (p) {
var name = p.customerName;
if (name && !seen[name]) {
seen[name] = true;
options.push({ value: name, label: name });
}
});
return options;
}, [deliveryTaskProjectList]);
var genDeliveryProjectOptions = useMemo(function () {
if (!genDeliveryCustomer) return [];
return deliveryTaskProjectList.filter(function (p) {
return p.customerName === genDeliveryCustomer;
}).map(function (p) {
return { value: p.id, label: p.name };
});
}, [genDeliveryCustomer, deliveryTaskProjectList]);
var genReturnProjectOptions = useMemo(function () {
return filterProjectsByCustomer(genReturnCustomer).map(function (p) {
return { value: p.id, label: p.name };
});
}, [genReturnCustomer, deliveryTaskProjectList]);
var selectedGenDeliveryProject = useMemo(function () {
return deliveryTaskProjectList.find(function (p) { return p.id === genDeliveryProjectId; }) || null;
}, [genDeliveryProjectId, deliveryTaskProjectList]);
var selectedGenReturnProject = useMemo(function () {
return deliveryTaskProjectList.find(function (p) { return p.id === genReturnProjectId; }) || null;
}, [genReturnProjectId, deliveryTaskProjectList]);
var genDeliveryVehicleList = useMemo(function () {
if (!selectedGenDeliveryProject) return [];
return (selectedGenDeliveryProject.vehicles || []).filter(function (v) {
return v.deliveryStatus !== 'completed';
});
}, [selectedGenDeliveryProject]);
var genDeliverySelectableVehicles = useMemo(function () {
return genDeliveryVehicleList.filter(function (v) {
return v.deliveryStatus === 'none';
});
}, [genDeliveryVehicleList]);
var genReturnVehicleList = useMemo(function () {
if (!selectedGenReturnProject) return [];
return (selectedGenReturnProject.vehicles || []).filter(function (v) {
return v.plateNo && v.deliveryStatus === 'completed';
});
}, [selectedGenReturnProject]);
var genReturnSelectableVehicles = genReturnVehicleList;
var genDeliveryRowSelection = useMemo(function () {
return {
selectedRowKeys: genDeliverySelectedKeys,
onChange: function (keys) { setGenDeliverySelectedKeys(keys); },
getCheckboxProps: function (record) {
var disabled = record.deliveryStatus !== 'none';
return {
disabled: disabled,
title: disabled ? (record.deliveryStatus === 'submitted' ? '该车辆已创建交车任务' : '该车辆已完成交车') : undefined
};
},
selections: [
{
key: 'all',
text: '全选可选车辆',
onSelect: function () {
setGenDeliverySelectedKeys(genDeliverySelectableVehicles.map(function (v) { return v.key; }));
}
},
{ key: 'none', text: '清空选择', onSelect: function () { setGenDeliverySelectedKeys([]); } }
]
};
}, [genDeliverySelectedKeys, genDeliverySelectableVehicles]);
var genReturnRowSelection = useMemo(function () {
return {
selectedRowKeys: genReturnSelectedKeys,
onChange: function (keys) { setGenReturnSelectedKeys(keys); },
selections: [
{
key: 'all',
text: '全选',
onSelect: function () {
setGenReturnSelectedKeys(genReturnSelectableVehicles.map(function (v) { return v.key; }));
}
},
{ key: 'none', text: '清空选择', onSelect: function () { setGenReturnSelectedKeys([]); } }
]
};
}, [genReturnSelectedKeys, genReturnSelectableVehicles]);
function renderGenTaskLabel(text, required) {
return React.createElement('label', { className: 'workbench-gen-task-form-label' },
required ? React.createElement('span', { className: 'req' }, '*') : null,
text
);
}
function resetGenDeliveryFlow() {
setGenDeliveryCustomer('');
setGenDeliveryProjectId(undefined);
setGenDeliveryExpected(null);
setGenDeliveryBilling(null);
setGenDeliverySelectedKeys([]);
}
function resetGenReturnFlow() {
setGenReturnCustomer('');
setGenReturnProjectId(undefined);
setGenReturnDate(null);
setGenReturnSelectedKeys([]);
}
function openGenDeliveryPick() {
resetGenDeliveryFlow();
setGenDeliveryPickOpen(true);
}
function openGenReturnPick() {
resetGenReturnFlow();
setGenReturnPickOpen(true);
}
function handleGenDeliveryNext() {
if (!genDeliveryCustomer) {
message.warning('请选择客户名称');
return;
}
if (!genDeliveryProjectId) {
message.warning('请选择项目名称');
return;
}
setGenDeliveryExpected(null);
setGenDeliveryBilling(null);
setGenDeliverySelectedKeys([]);
setGenDeliveryPickOpen(false);
setGenDeliveryConfigOpen(true);
}
function handleGenDeliveryConfirm() {
if (!genDeliveryExpected || !genDeliveryExpected.length) {
message.warning('请选择预计交车日期');
return;
}
if (!genDeliveryBilling) {
message.warning('请选择开始计费日期');
return;
}
if (!genDeliverySelectedKeys.length) {
message.warning('请至少勾选一辆车辆');
return;
}
setGenDeliveryConfigOpen(false);
resetGenDeliveryFlow();
message.success('已生成交车任务(原型)');
}
function handleGenReturnNext() {
if (!genReturnCustomer.trim()) {
message.warning('请输入客户名称');
return;
}
if (!genReturnProjectId) {
message.warning('请选择项目名称');
return;
}
setGenReturnDate(null);
setGenReturnSelectedKeys([]);
setGenReturnPickOpen(false);
setGenReturnConfigOpen(true);
}
function handleGenReturnConfirm() {
if (!genReturnDate) {
message.warning('请选择预计还车日期');
return;
}
if (!genReturnSelectedKeys.length) {
message.warning('请至少勾选一辆车辆');
return;
}
setGenReturnConfigOpen(false);
resetGenReturnFlow();
message.success('已生成还车任务(原型)');
}
function handleQuickItemClick(it) {
if (it.action === 'genDelivery') {
openGenDeliveryPick();
return;
}
if (it.action === 'genReturn') {
openGenReturnPick();
return;
}
if (it.p) protoNav(it.p);
}
var genDeliveryVehicleColumns = useMemo(function () {
return [
{ title: '序号', dataIndex: 'seq', key: 'seq', width: 56 },
{ title: '品牌', dataIndex: 'brand', key: 'brand', width: 88 },
{ title: '型号', dataIndex: 'model', key: 'model', width: 140, ellipsis: true },
{ title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 100, render: function (v) { return v || '—'; } },
{ title: '车辆识别代码', dataIndex: 'vin', key: 'vin', width: 168, ellipsis: true },
{ title: '月租金', dataIndex: 'monthRent', key: 'monthRent', width: 88, render: function (v) { return v ? v + ' 元' : '—'; } },
{ title: '备注', dataIndex: 'remark', key: 'remark', width: 100, ellipsis: true, render: function (v) { return v || '—'; } }
];
}, []);
var genReturnVehicleColumns = useMemo(function () {
return [
{ title: '序号', dataIndex: 'seq', key: 'seq', width: 56 },
{ title: '品牌', dataIndex: 'brand', key: 'brand', width: 88 },
{ title: '型号', dataIndex: 'model', key: 'model', width: 140, ellipsis: true },
{ title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 100 },
{ title: '车辆识别代码', dataIndex: 'vin', key: 'vin', width: 168, ellipsis: true }
];
}, []);
var quickByRole = useMemo(function () {
return {
ye: {
label: '业管',
items: [
{ t: '生成交车任务', action: 'genDelivery', accent: 'primary' },
{ t: '生成还车任务', action: 'genReturn', accent: 'orange' },
{ t: '租赁合同', p: 'web端/车辆租赁合同/车辆租赁合同.jsx' },
{ t: '交车任务', p: 'web端/业务管理/交车任务.jsx' },
{ t: '提车应收款', p: 'web端/财务管理/提车应收款.jsx' },
{ t: '租赁账单', p: 'web端/业务管理/租赁账单.jsx' },
{ t: '还车应结款', p: 'web端/财务管理/还车应结款.jsx' },
@@ -846,7 +1196,7 @@ const Component = function () {
{ t: '氢费账单', p: 'web端/财务管理/氢费账单.jsx' },
{ t: '电费账单', p: 'web端/财务管理/电费账单.jsx' },
{ t: 'ETC账单', p: 'web端/业务管理/ETC管理.jsx' },
{ t: '保险管理', p: 'web端/业务管理/保险管理.jsx' },
{ t: '保险采购', p: 'web端/业务管理/保险采购.jsx' },
{ t: '审批中心', p: 'web端/审批中心.jsx' },
{ t: '意见建议', p: 'web端/意见建议.jsx' }
]
@@ -854,6 +1204,7 @@ const Component = function () {
yeEnergy: {
label: '业管-能源部',
items: [
{ t: '站点信息', p: 'web端/加氢站管理/站点信息.jsx' },
{ t: '加氢订单管理', p: 'web端/加氢站管理/加氢订单.jsx' },
{ t: '意见建议', p: 'web端/意见建议.jsx' }
]
@@ -863,6 +1214,7 @@ const Component = function () {
items: [
{ t: '车辆管理', p: 'web端/车辆管理.jsx' },
{ t: '证照管理', p: 'web端/运维管理/车辆业务/证照管理.jsx' },
{ t: '证照管理-编辑', p: 'web端/运维管理/车辆业务/证照管理-编辑.jsx' },
{ t: '备车管理', p: 'web端/运维管理/车辆业务/备车管理.jsx' },
{ t: '交车管理', p: 'web端/运维管理/车辆业务/交车管理.jsx' },
{ t: '还车管理', p: 'web端/运维管理/车辆业务/还车管理.jsx' },
@@ -1005,6 +1357,26 @@ const Component = function () {
}
];
var inspectModalColumns = [
{ title: '车牌号', dataIndex: 'plateNo', key: 'plateNo', width: 120 },
{ title: '车辆类型', dataIndex: 'vehicleType', key: 'vehicleType', width: 140 },
{ title: '品牌', dataIndex: 'brand', key: 'brand', width: 100 },
{ title: '型号', dataIndex: 'model', key: 'model', width: 120 },
{ title: '下次检验/等评日期', dataIndex: 'nextDate', key: 'nextDate', width: 160 },
{ title: '剩余天数', dataIndex: 'remainDays', key: 'remainDays', width: 120, render: function(v) {
return React.createElement(Text, { type: v < 0 ? 'danger' : undefined }, v + ' 天');
} },
{
title: '操作',
key: 'action',
width: 80,
fixed: 'right',
render: function (_, record) {
return React.createElement(Button, { type: 'link', size: 'small', style: { padding: 0 }, onClick: function () { message.info('跳转年审详情(原型)'); } }, '年审');
}
}
];
var overdueDeliveryModalColumns = [
{ title: '预计交车时间', dataIndex: 'expectedDate', key: 'expectedDate', width: 220, ellipsis: true },
{ title: '合同编码', dataIndex: 'contractCode', key: 'contractCode', width: 150, ellipsis: true },
@@ -1334,6 +1706,14 @@ const Component = function () {
openOverdueReturnModal();
return;
}
if (s.key === 'w_ops_inspect') {
setInspectModalOpen(true);
return;
}
if (s.key === 'w_ops_maint') {
message.info('未来上线,敬请期待');
return;
}
message.info('「' + s.title + '」明细(原型,联调接口后打开列表)');
}
};
@@ -1532,6 +1912,22 @@ const Component = function () {
'.workbench-quick-item:focus-visible{box-shadow:0 0 0 2px rgba(22,119,255,0.2)}' +
'.workbench-quick-item-icon{flex-shrink:0;width:26px;height:26px;border-radius:6px;background:linear-gradient(135deg,#f0f5ff,#d6e4ff);line-height:26px;text-align:center;font-size:12px;font-weight:600;color:#1677ff}' +
'.workbench-quick-item-label{flex:1;min-width:0;font-size:11px;line-height:1.3;color:rgba(0,0,0,0.78);word-break:break-word;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}' +
'.workbench-quick-item--action{padding:7px 10px;min-height:38px}' +
'.workbench-quick-item--primary{border-color:rgba(22,119,255,0.2);background:linear-gradient(135deg,#f8fbff 0%,#eef5ff 100%)}' +
'.workbench-quick-item--primary:hover{border-color:rgba(22,119,255,0.35);background:linear-gradient(135deg,#f0f7ff 0%,#e6f0ff 100%)}' +
'.workbench-quick-item--primary .workbench-quick-item-icon{background:linear-gradient(135deg,#1677ff,#4096ff);color:#fff;box-shadow:0 2px 6px rgba(22,119,255,0.25)}' +
'.workbench-quick-item--orange{border-color:rgba(250,140,22,0.22);background:linear-gradient(135deg,#fffaf5 0%,#fff3e6 100%)}' +
'.workbench-quick-item--orange:hover{border-color:rgba(250,140,22,0.38);background:linear-gradient(135deg,#fff7ef 0%,#ffebd6 100%)}' +
'.workbench-quick-item--orange .workbench-quick-item-icon{background:linear-gradient(135deg,#fa8c16,#ffa940);color:#fff;box-shadow:0 2px 6px rgba(250,140,22,0.22)}' +
'.workbench-quick-section-hint{font-size:11px;line-height:1.35;color:rgba(0,0,0,0.45);padding:0 4px 6px;font-weight:500;letter-spacing:0.02em}' +
'.workbench-gen-task-modal .ant-modal-body{padding-top:14px}' +
'.workbench-gen-task-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.88);line-height:1.4}' +
'.workbench-gen-task-form-label .req{color:#ff4d4f;margin-right:4px}' +
'.workbench-gen-task-section{background:#fafafa;border:1px solid rgba(0,0,0,0.06);border-radius:10px;padding:14px 16px;margin-bottom:14px}' +
'.workbench-gen-task-readonly{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin-bottom:4px}' +
'.workbench-gen-task-readonly-item{font-size:12px;line-height:1.45;color:rgba(0,0,0,0.65)}' +
'.workbench-gen-task-readonly-item strong{color:rgba(0,0,0,0.88);font-weight:500;margin-right:6px}' +
'.workbench-gen-task-table-hint{font-size:12px;color:rgba(0,0,0,0.45);margin:4px 0 10px;line-height:1.45}' +
'.workbench-header-warning-dept-tabs{flex-shrink:0;max-width:100%}' +
'.workbench-header-warning-dept-tabs.ant-tabs{min-width:0}' +
'.workbench-header-warning-dept-tabs .ant-tabs-nav{margin:0!important;min-height:32px}' +
@@ -1730,18 +2126,46 @@ const Component = function () {
)
},
React.createElement('div', { className: 'workbench-quick-scroll', style: { padding: '6px 6px 4px' } },
quickItems.some(function (it) { return it.action; })
? React.createElement('div', { className: 'workbench-quick-section-hint' }, '常用操作')
: null,
React.createElement(Row, { gutter: [6, 6], style: { marginBottom: quickItems.some(function (it) { return !it.action; }) ? 8 : 0 } },
quickItems.filter(function (it) { return it.action; }).map(function (it, idx) {
var accentClass = it.accent === 'orange' ? ' workbench-quick-item--orange' : ' workbench-quick-item--primary';
return React.createElement(Col, { span: 24, key: it.t + '-action-' + idx },
React.createElement('div', {
className: 'workbench-quick-item workbench-quick-item--action' + accentClass,
role: 'button',
tabIndex: 0,
onClick: function () { handleQuickItemClick(it); },
onKeyDown: function (e) {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
handleQuickItemClick(it);
}
}
},
React.createElement('div', { className: 'workbench-quick-item-icon', 'aria-hidden': true }, it.t.charAt(0)),
React.createElement('div', { className: 'workbench-quick-item-label' }, it.t)
)
);
})
),
quickItems.some(function (it) { return !it.action; })
? React.createElement('div', { className: 'workbench-quick-section-hint' }, '功能入口')
: null,
React.createElement(Row, { gutter: [6, 6], style: { marginBottom: 0 } },
quickItems.map(function (it, idx) {
quickItems.filter(function (it) { return !it.action; }).map(function (it, idx) {
return React.createElement(Col, { span: 12, key: it.t + '-' + idx },
React.createElement('div', {
className: 'workbench-quick-item',
role: 'button',
tabIndex: 0,
onClick: function () { protoNav(it.p); },
onClick: function () { handleQuickItemClick(it); },
onKeyDown: function (e) {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
protoNav(it.p);
handleQuickItemClick(it);
}
}
},
@@ -1854,7 +2278,7 @@ const Component = function () {
destroyOnClose: true
},
React.createElement(Text, { type: 'secondary', style: { fontSize: 12, display: 'block', marginBottom: 10 } },
'以下任务当前日期已超过预计交车结束日期(含区间结束日),示意数据标红;列表字段与交车管理-待处理一致,联调接接口。'
'以下任务已超过预计交车结束日期,请与业管人员沟通交车是否延误,修改交车时间或及时处理'
),
React.createElement(Table, {
className: 'workbench-overdue-delivery-modal',
@@ -1887,6 +2311,258 @@ const Component = function () {
pagination: false,
scroll: { x: 1780, y: 360 }
})
),
React.createElement(Modal, {
title: '年审/等级评定',
open: inspectModalOpen,
width: 1000,
onCancel: function () { setInspectModalOpen(false); },
footer: React.createElement(Button, { onClick: function () { setInspectModalOpen(false); } }, '关闭'),
destroyOnClose: true
},
React.createElement(Table, {
size: 'small',
rowKey: 'id',
columns: inspectModalColumns,
dataSource: inspectMockRows,
pagination: false,
scroll: { x: 800, y: 360 }
})
),
React.createElement(Modal, {
className: 'workbench-gen-task-modal',
title: '生成交车任务',
open: genDeliveryPickOpen,
width: 520,
destroyOnClose: true,
onCancel: function () {
setGenDeliveryPickOpen(false);
resetGenDeliveryFlow();
},
footer: React.createElement(Space, null,
React.createElement(Button, {
onClick: function () {
setGenDeliveryPickOpen(false);
resetGenDeliveryFlow();
}
}, '取消'),
React.createElement(Button, { type: 'primary', onClick: handleGenDeliveryNext }, '生成')
)
},
React.createElement('div', { className: 'workbench-gen-task-section' },
React.createElement('div', { style: { marginBottom: 14 } },
renderGenTaskLabel('客户名称', true),
React.createElement(Select, {
showSearch: true,
allowClear: true,
placeholder: '请选择客户名称',
style: { width: '100%' },
value: genDeliveryCustomer || undefined,
options: genDeliveryCustomerOptions,
optionFilterProp: 'label',
onChange: function (val) {
setGenDeliveryCustomer(val || '');
setGenDeliveryProjectId(undefined);
}
})
),
React.createElement('div', null,
renderGenTaskLabel('项目名称', true),
React.createElement(Select, {
showSearch: true,
allowClear: true,
placeholder: genDeliveryCustomer
? (genDeliveryProjectOptions.length ? '请选择或搜索项目名称' : '该客户暂无可用项目')
: '请先选择客户名称',
style: { width: '100%' },
value: genDeliveryProjectId,
options: genDeliveryProjectOptions,
optionFilterProp: 'label',
disabled: !genDeliveryCustomer,
onChange: function (val) { setGenDeliveryProjectId(val); }
})
)
),
React.createElement(Text, { type: 'secondary', style: { fontSize: 12 } }, '选择客户与项目后,将配置预计交车日期并勾选待交车辆。')
),
React.createElement(Modal, {
className: 'workbench-gen-task-modal',
title: '配置交车任务',
open: genDeliveryConfigOpen,
width: 980,
destroyOnClose: true,
onCancel: function () {
setGenDeliveryConfigOpen(false);
resetGenDeliveryFlow();
},
footer: React.createElement(Space, null,
React.createElement(Button, {
onClick: function () {
setGenDeliveryConfigOpen(false);
setGenDeliveryPickOpen(true);
}
}, '上一步'),
React.createElement(Button, {
onClick: function () {
setGenDeliveryConfigOpen(false);
resetGenDeliveryFlow();
}
}, '取消'),
React.createElement(Button, { type: 'primary', onClick: handleGenDeliveryConfirm }, '确认生成')
)
},
selectedGenDeliveryProject
? React.createElement('div', { className: 'workbench-gen-task-readonly' },
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '项目名称'), selectedGenDeliveryProject.name),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '合同编码'), selectedGenDeliveryProject.contractCode),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '客户名称'), selectedGenDeliveryProject.customerName),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '交车区域'), selectedGenDeliveryProject.deliveryRegion)
)
: null,
React.createElement(Row, { gutter: [16, 12], style: { marginBottom: 12 } },
React.createElement(Col, { xs: 24, md: 12 },
renderGenTaskLabel('预计交车日期', true),
React.createElement(RangePicker, {
style: { width: '100%' },
value: genDeliveryExpected,
onChange: function (val) { setGenDeliveryExpected(val); },
placeholder: ['开始日期', '结束日期']
})
),
React.createElement(Col, { xs: 24, md: 12 },
renderGenTaskLabel('开始计费日期', true),
React.createElement(DatePicker, {
style: { width: '100%' },
value: genDeliveryBilling,
onChange: function (val) { setGenDeliveryBilling(val); },
placeholder: '请选择开始计费日期'
})
)
),
React.createElement('div', { className: 'workbench-gen-task-table-hint' },
'勾选待交车辆;已创建交车任务或已完成交车的车辆不可选。'
),
React.createElement(Table, {
size: 'small',
rowKey: 'key',
columns: genDeliveryVehicleColumns,
dataSource: genDeliveryVehicleList,
rowSelection: genDeliveryRowSelection,
pagination: false,
scroll: { x: 860, y: 280 },
locale: { emptyText: '当前项目暂无可选车辆' }
})
),
React.createElement(Modal, {
className: 'workbench-gen-task-modal',
title: '生成还车任务',
open: genReturnPickOpen,
width: 520,
destroyOnClose: true,
onCancel: function () {
setGenReturnPickOpen(false);
resetGenReturnFlow();
},
footer: React.createElement(Space, null,
React.createElement(Button, {
onClick: function () {
setGenReturnPickOpen(false);
resetGenReturnFlow();
}
}, '取消'),
React.createElement(Button, { type: 'primary', onClick: handleGenReturnNext }, '生成')
)
},
React.createElement('div', { className: 'workbench-gen-task-section' },
React.createElement('div', { style: { marginBottom: 14 } },
renderGenTaskLabel('客户名称', true),
React.createElement(Input, {
placeholder: '请输入客户名称',
value: genReturnCustomer,
onChange: function (e) {
setGenReturnCustomer(e.target.value);
setGenReturnProjectId(undefined);
},
allowClear: true
})
),
React.createElement('div', null,
renderGenTaskLabel('项目名称', true),
React.createElement(Select, {
showSearch: true,
allowClear: true,
placeholder: genReturnProjectOptions.length ? '请选择或搜索项目名称' : '暂无匹配项目,请调整客户名称',
style: { width: '100%' },
value: genReturnProjectId,
options: genReturnProjectOptions,
optionFilterProp: 'label',
onChange: function (val) { setGenReturnProjectId(val); }
})
)
),
React.createElement(Text, { type: 'secondary', style: { fontSize: 12 } }, '选择客户与项目后,将配置预计还车日期并勾选待还车辆。')
),
React.createElement(Modal, {
className: 'workbench-gen-task-modal',
title: '配置还车任务',
open: genReturnConfigOpen,
width: 860,
destroyOnClose: true,
onCancel: function () {
setGenReturnConfigOpen(false);
resetGenReturnFlow();
},
footer: React.createElement(Space, null,
React.createElement(Button, {
onClick: function () {
setGenReturnConfigOpen(false);
setGenReturnPickOpen(true);
}
}, '上一步'),
React.createElement(Button, {
onClick: function () {
setGenReturnConfigOpen(false);
resetGenReturnFlow();
}
}, '取消'),
React.createElement(Button, { type: 'primary', onClick: handleGenReturnConfirm }, '确认生成')
)
},
selectedGenReturnProject
? React.createElement('div', { className: 'workbench-gen-task-readonly' },
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '项目名称'), selectedGenReturnProject.name),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '合同编码'), selectedGenReturnProject.contractCode),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '客户名称'), selectedGenReturnProject.customerName),
React.createElement('div', { className: 'workbench-gen-task-readonly-item' }, React.createElement('strong', null, '交车区域'), selectedGenReturnProject.deliveryRegion)
)
: null,
React.createElement('div', { style: { marginBottom: 12, maxWidth: 320 } },
renderGenTaskLabel('预计还车日期', true),
React.createElement(DatePicker, {
style: { width: '100%' },
value: genReturnDate,
onChange: function (val) { setGenReturnDate(val); },
placeholder: '请选择预计还车日期'
})
),
React.createElement('div', { className: 'workbench-gen-task-table-hint' },
'勾选已交车、待还车辆;仅展示可发起还车流程的车辆。'
),
React.createElement(Table, {
size: 'small',
rowKey: 'key',
columns: genReturnVehicleColumns,
dataSource: genReturnVehicleList,
rowSelection: genReturnRowSelection,
pagination: false,
scroll: { x: 620, y: 280 },
locale: { emptyText: '当前项目暂无已交车车辆' }
})
)
)
);