- 页面编写
- 配置路由
- 页面访问
在项目的react/src/app/demo/containers/organization(project, user, global)
目录下新建一个新的功能文件夹table及其相关的JS文件。
// table/index.js
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import { Button, Table } from 'choerodon-ui';
import { Action, Content, Header, Page } from '@choerodon/boot';
import Store from './stores';
@observer
class TableDemo extends Component {
componentDidMount() {
this.loadData();
}
loadData = () => {
Store.loadData();
}
renderLevel(text) {
const LEVEL_MAP = {
organization: '组织',
project: '项目',
};
return LEVEL_MAP[text] || '全局';
}
renderTable = () => {
const { isLoading, pagination } = Store;
const columns = [
{
title: '名字',
dataIndex: 'name',
key: 'name',
width: '25%',
},
{
title: '编码',
dataIndex: 'code',
key: 'code',
width: '25%',
},
{
title: '层级',
dataIndex: 'level',
},
{
title: '状态',
key: 'enabled',
},
{
title: '',
key: 'action',
align: 'right',
render: (text, record) => {
const actionDatas = [{
icon: '',
type: 'site',
text: '修改',
}];
if (record.enabled) {
actionDatas.push({
icon: '',
type: 'site',
text: '停用',
});
} else {
actionDatas.push({
icon: '',
type: 'site',
text: '启用',
});
}
return <Action data={actionDatas} getPopupContainer={() => document.getElementsByClassName('page-content')[0]} />;
},
},
];
return (
<Table
columns={columns}
dataSource={Store.data.slice()}
pagination={pagination}
rowKey={record => record.id}
onChange={this.handlePageChange}
loading={isLoading}
filterBarPlaceholder="过滤表"
/>
);
}
render() {
return (
<Page className="choerodon-role">
<Button
onClick={this.handleRefresh}
>
刷新
</Button>
</Header>
<Content
title="标题"
description="描述"
link="#"
>
{this.renderTable()}
</Content>
</Page>
);
}
}
export default TableDemo;
2.编写store代码
// stores/index.js
import Store from './Store';
export default Store;
// DEMOIndex.js
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import { inject } from 'mobx-react';
import { asyncRouter, nomatch } from '@choerodon/boot';
const HelloIndex = asyncRouter(() => import('./organization/hello'));
const TableIndex = asyncRouter(() => import('./organization/table'));
@inject('AppState')
class DEMOIndex extends React.Component {
render() {
const { match, AppState } = this.props;
return (
<Switch>
<Route path={`${match.url}/hello`} component={HelloIndex} />
<Route path={`${match.url}/table`} component={TableIndex} />
<Route path="*" component={nomatch} />
</Switch>
);
}
}
export default DEMOIndex;
本次demo的访问路径应该为: http://localhost:9090/#/demo/table