233 lines
6.3 KiB
JavaScript
233 lines
6.3 KiB
JavaScript
// 【重要】必须使用 const Component 作为组件变量名 - Axhub 产品原型
|
|
// 帮助中心 - 功能说明书
|
|
|
|
const Component = function () {
|
|
var antd = window.antd;
|
|
var Layout = antd.Layout;
|
|
var Menu = antd.Menu;
|
|
var Typography = antd.Typography;
|
|
var Button = antd.Button;
|
|
var Space = antd.Space;
|
|
var Divider = antd.Divider;
|
|
|
|
var Title = Typography.Title;
|
|
var Paragraph = Typography.Paragraph;
|
|
var Text = Typography.Text;
|
|
|
|
var Sider = Layout.Sider;
|
|
var Content = Layout.Content;
|
|
|
|
var React = window.React;
|
|
var useState = React.useState;
|
|
var useMemo = React.useMemo;
|
|
|
|
// 菜单数据源(依据系统最新结构)
|
|
var menuItems = [
|
|
{
|
|
key: '1',
|
|
label: '工作台'
|
|
},
|
|
{
|
|
key: '2',
|
|
label: '业务管理组',
|
|
children: [
|
|
{ key: '2-1', label: '客户管理' },
|
|
{ key: '2-2', label: '合同创建' },
|
|
{ key: '2-3', label: '提车应收款' },
|
|
{ key: '2-4', label: '交还车任务' },
|
|
{ key: '2-5', label: '租赁账单' },
|
|
{ key: '2-6', label: '还车应结款' },
|
|
{ key: '2-7', label: '替换车' },
|
|
{ key: '2-8', label: '调拨' }
|
|
]
|
|
},
|
|
{
|
|
key: '3',
|
|
label: '运维服务组',
|
|
children: [
|
|
{ key: '3-1', label: '车辆管理' },
|
|
{ key: '3-2', label: '备件库管理' },
|
|
{ key: '3-3', label: '备车' },
|
|
{ key: '3-4', label: '交车' },
|
|
{ key: '3-5', label: '还车' },
|
|
{ key: '3-6', label: '异动' }
|
|
]
|
|
},
|
|
{
|
|
key: '4',
|
|
label: '业务管理组-能源部',
|
|
children: [
|
|
{ key: '4-1', label: '加氢记录' },
|
|
{ key: '4-2', label: 'ETC记录' },
|
|
{ key: '4-3', label: '充电记录' },
|
|
{ key: '4-4', label: '能源账单' },
|
|
{ key: '4-5', label: '能源账户' },
|
|
{ key: '4-6', label: '充值管理' }
|
|
]
|
|
},
|
|
{
|
|
key: '5',
|
|
label: '安全部',
|
|
children: [
|
|
{ key: '5-1', label: '事故管理' },
|
|
{ key: '5-2', label: '违章管理' },
|
|
{ key: '5-3', label: '司机管理' },
|
|
{ key: '5-4', label: '安全培训资料' },
|
|
{ key: '5-5', label: '安全培训记录' }
|
|
]
|
|
},
|
|
{
|
|
key: '6',
|
|
label: '审批中心'
|
|
}
|
|
];
|
|
|
|
// 扁平化数据用于获取上下文和翻页
|
|
var flattenMenu = useMemo(function () {
|
|
var list = [];
|
|
var traverse = function (items) {
|
|
items.forEach(function (item) {
|
|
if (!item.children) {
|
|
list.push(item);
|
|
} else {
|
|
list.push(item);
|
|
traverse(item.children);
|
|
}
|
|
});
|
|
};
|
|
traverse(menuItems);
|
|
return list;
|
|
}, []);
|
|
|
|
var ms1 = useState('1');
|
|
var selectedKey = ms1[0];
|
|
var setSelectedKey = ms1[1];
|
|
|
|
var currentIndex = flattenMenu.findIndex(function (item) {
|
|
return item.key === selectedKey;
|
|
});
|
|
var currentItem = flattenMenu[currentIndex];
|
|
var prevItem = currentIndex > 0 ? flattenMenu[currentIndex - 1] : null;
|
|
var nextItem = currentIndex < flattenMenu.length - 1 ? flattenMenu[currentIndex + 1] : null;
|
|
|
|
var handleMenuClick = function (e) {
|
|
setSelectedKey(e.key);
|
|
};
|
|
|
|
// 渲染正文内容
|
|
var renderContent = function () {
|
|
return React.createElement(
|
|
Typography,
|
|
null,
|
|
React.createElement(Title, { level: 2, className: 'acro-text-xxl' }, currentItem ? currentItem.label : '内容建设中'),
|
|
React.createElement(
|
|
Paragraph,
|
|
{ className: 'acro-text-base', style: { color: 'rgba(0,0,0,0.45)' } },
|
|
'该章节(' + (currentItem ? currentItem.label : '') + ')的功能说明正在建设中,您可以随时在这里修改补充...'
|
|
)
|
|
);
|
|
};
|
|
|
|
var styles = {
|
|
layout: {
|
|
minHeight: '100vh',
|
|
backgroundColor: '#fff',
|
|
},
|
|
sider: {
|
|
backgroundColor: '#fafafa',
|
|
borderRight: '1px solid #f0f0f0',
|
|
overflowY: 'auto',
|
|
height: '100vh',
|
|
position: 'fixed',
|
|
left: 0,
|
|
top: 0,
|
|
bottom: 0,
|
|
},
|
|
siderHeader: {
|
|
padding: '24px 20px 12px',
|
|
fontSize: 18,
|
|
fontWeight: 600,
|
|
color: 'rgba(0,0,0,0.85)',
|
|
borderBottom: '1px solid #f0f0f0'
|
|
},
|
|
contentWrapper: {
|
|
marginLeft: 280,
|
|
padding: '40px 60px',
|
|
maxWidth: 1000,
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
minHeight: '100vh'
|
|
},
|
|
contentInner: {
|
|
flex: 1,
|
|
marginBottom: 40
|
|
},
|
|
footerNav: {
|
|
display: 'flex',
|
|
justifyContent: 'space-between',
|
|
borderTop: '1px solid #f0f0f0',
|
|
paddingTop: 24,
|
|
marginTop: 'auto'
|
|
}
|
|
};
|
|
|
|
return React.createElement(
|
|
Layout,
|
|
{ style: styles.layout },
|
|
React.createElement(
|
|
Sider,
|
|
{ width: 280, style: styles.sider, theme: 'light' },
|
|
React.createElement('div', { style: styles.siderHeader }, '《 功能说明书 》'),
|
|
React.createElement(Menu, {
|
|
mode: 'inline',
|
|
selectedKeys: [selectedKey],
|
|
defaultOpenKeys: ['2', '3', '4', '5'],
|
|
style: { borderRight: 0, padding: '12px 0' },
|
|
items: menuItems,
|
|
onClick: handleMenuClick
|
|
})
|
|
),
|
|
React.createElement(
|
|
Layout,
|
|
{ style: { backgroundColor: '#fff' } },
|
|
React.createElement(
|
|
Content,
|
|
{ style: styles.contentWrapper },
|
|
React.createElement(
|
|
'div',
|
|
{ style: styles.contentInner },
|
|
renderContent()
|
|
),
|
|
React.createElement(
|
|
'div',
|
|
{ style: styles.footerNav },
|
|
prevItem
|
|
? React.createElement(
|
|
Button,
|
|
{
|
|
type: 'link',
|
|
size: 'large',
|
|
onClick: function () { setSelectedKey(prevItem.key); },
|
|
style: { padding: 0 }
|
|
},
|
|
'← 上一页:' + prevItem.label
|
|
)
|
|
: React.createElement('div', null),
|
|
nextItem
|
|
? React.createElement(
|
|
Button,
|
|
{
|
|
type: 'link',
|
|
size: 'large',
|
|
onClick: function () { setSelectedKey(nextItem.key); },
|
|
style: { padding: 0 }
|
|
},
|
|
'下一页:' + nextItem.label + ' →'
|
|
)
|
|
: React.createElement('div', null)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
};
|