Commit 3acdde74 by zhaochengxiang

增加元数据

parent 4111be2b
...@@ -15,7 +15,7 @@ import logo from '../assets/logo_hnyc.png'; ...@@ -15,7 +15,7 @@ import logo from '../assets/logo_hnyc.png';
const { Header, Sider, Content } = Layout; const { Header, Sider, Content } = Layout;
const { SubMenu } = Menu; const { SubMenu } = Menu;
const _Logout = ({session}) => session ? const _Logout = ({session, location}) => session ?
<Menu className={"ml-auto layout-menu"} mode="horizontal" theme="light" <Menu className={"ml-auto layout-menu"} mode="horizontal" theme="light"
onClick={null}> onClick={null}>
<SubMenu <SubMenu
......
import * as service from '../service/assets'; import * as service from '../service/assets';
import { call } from 'redux-saga/effects'; import { call } from 'redux-saga/effects';
export function* getDomainsAndHotwords(payload) {
const domains = yield call(service.domains, null);
const hotwords = yield call(service.getHotWord, payload);
return {domains: domains||[], hotwords: hotwords||[]};
}
export function* domains(payload) { export function* domains(payload) {
return yield call(service.domains, payload); return yield call(service.domains, payload);
......
...@@ -20,7 +20,7 @@ export const routes = [ ...@@ -20,7 +20,7 @@ export const routes = [
text: '数据资产' text: '数据资产'
}, },
{ {
name: 'metasearch', name: 'metadata',
text: '元数据' text: '元数据'
}, },
{ {
...@@ -31,10 +31,10 @@ export const routes = [ ...@@ -31,10 +31,10 @@ export const routes = [
name: 'standard', name: 'standard',
text: '数据标准' text: '数据标准'
}, },
{ // {
name: 'dataquality', // name: 'dataquality',
text: '数据质量' // text: '数据质量'
} // }
] ]
}, },
{ {
......
import { PostJSON, Post, GetJSON } from "../util/axios" import { PostJSON, Post, GetJSON } from "../util/axios"
export function domains(payload) { export function domains(payload) {
return GetJSON("/authservice/domains", payload); return GetJSON("/authservice/domains", payload);
} }
......
import React from "react"; import React from "react";
import { message } from 'antd'; import { message } from 'antd';
import { Redirect } from 'react-router-dom'; import { Redirect } from 'react-router-dom';
import { dispatch, action } from '../model'; import { dispatchLatest, action } from '../model';
import { set_sess_state } from "../model/reducer"; import { set_sess_state } from "../model/reducer";
export const ContextPath = '/data-platform'; export const ContextPath = '/data-platform';
...@@ -50,7 +50,7 @@ export function Connect(modules) { ...@@ -50,7 +50,7 @@ export function Connect(modules) {
export class GetSession extends React.Component { export class GetSession extends React.Component {
componentDidMount() { componentDidMount() {
const { history, location } = this.props; const { history, location } = this.props;
dispatch({ dispatchLatest({
type: 'user.fetchSessionInfo', type: 'user.fetchSessionInfo',
callback: session => { callback: session => {
if (session && session.userId) { if (session && session.userId) {
......
...@@ -5,6 +5,7 @@ import { Tooltip, Input, Row, Col } from 'antd'; ...@@ -5,6 +5,7 @@ import { Tooltip, Input, Row, Col } from 'antd';
import { ContextPath } from '../../util'; import { ContextPath } from '../../util';
import Comet from './Comet'; import Comet from './Comet';
import { dispatchLatest } from '../../model';
import menuImg1 from '../../assets/home/menu1.png'; import menuImg1 from '../../assets/home/menu1.png';
import menuImg2 from '../../assets/home/menu2.png'; import menuImg2 from '../../assets/home/menu2.png';
...@@ -105,9 +106,9 @@ export class HomeSearch extends Component { ...@@ -105,9 +106,9 @@ export class HomeSearch extends Component {
const homeMenu = [ const homeMenu = [
{ title: '数据资产', img: menuImg1, url: `${ContextPath}/manage/assets` }, { title: '数据资产', img: menuImg1, url: `${ContextPath}/manage/assets` },
{ title: '元数据', img: menuImg2, url: '/center-home/view/metasearch' }, { title: '元数据', img: menuImg2, url: `${ContextPath}/manage/metadata` },
{ title: '数据指标', img: menuImg3 }, { title: '数据指标', img: menuImg3, url: `${ContextPath}/manage/indicator` },
{ title: '数据标准', img: menuImg4 }, { title: '数据标准', img: menuImg4, url: `${ContextPath}/manage/standard` },
{ title: '数据质量', img: menuImg5 }, { title: '数据质量', img: menuImg5 },
]; ];
...@@ -264,8 +265,27 @@ const netData = [ ...@@ -264,8 +265,27 @@ const netData = [
]; ];
export class HomeGrid extends Component { export class HomeGrid extends Component {
constructor() {
super();
this.state = {
tooltipData: {}
};
}
componentDidMount() {
dispatchLatest({
type: 'assets.getDataFlowCount',
payload: {},
callback: data => {
this.setState({ tooltipData: data })
}
})
}
render() { render() {
const { tooltipData } = this.props; const { tooltipData } = this.state;
return ( return (
<div className={'home-grid-outter'} style={{}}> <div className={'home-grid-outter'} style={{}}>
......
...@@ -5,40 +5,22 @@ import { GetSession } from '../../util'; ...@@ -5,40 +5,22 @@ import { GetSession } from '../../util';
import { HomeLayout } from '../../layout'; import { HomeLayout } from '../../layout';
import { HomeSearch, HomeMenu, HomeGrid } from './HomeHelper'; import { HomeSearch, HomeMenu, HomeGrid } from './HomeHelper';
import { dispatch } from '../../model';
class Home extends Component { class Home extends Component {
constructor(props) {
super(props);
this.state = {
flowCount : {}
}
}
componentDidMount() {
dispatch({
type: 'assets.getDataFlowCount',
payload: {},
callback: data => {
this.setState({ flowCount: data })
}
})
}
render() { render() {
const { session } = this.props; const { session } = this.props;
const { flowCount } = this.state;
return ( return (
<React.Fragment> <React.Fragment>
<HomeLayout {...this.props} <HomeLayout {...this.props}
content={(session && session.userId) ? content={(session && session.userId) ? (
<div className="home-container overflow-hidden"> <div className="home-container overflow-hidden">
<HomeSearch {...this.props} /> <HomeSearch {...this.props} />
<HomeMenu /> <HomeMenu />
<HomeGrid tooltipData={flowCount} /> <HomeGrid />
</div> </div>
)
: <GetSession {...this.props} />} : <GetSession {...this.props} />}
/> />
</React.Fragment> </React.Fragment>
......
...@@ -15,7 +15,7 @@ import { ...@@ -15,7 +15,7 @@ import {
import { DataDesc, DataPreview, DataDetail, ApplyDesc } from './AssetListHelper'; import { DataDesc, DataPreview, DataDetail, ApplyDesc } from './AssetListHelper';
import styles from '../style.less'; import styles from '../style.less';
import { dispatch } from '../../../../model'; import { dispatch, dispatchLatest } from '../../../../model';
const { Text } = Typography; const { Text } = Typography;
const { TabPane } = Tabs; const { TabPane } = Tabs;
...@@ -46,7 +46,7 @@ class AssetListCOM extends Component { ...@@ -46,7 +46,7 @@ class AssetListCOM extends Component {
this.setState({ activeBtn: 0 }); this.setState({ activeBtn: 0 });
dispatch({ dispatchLatest({
type: 'assets.getMetadata', type: 'assets.getMetadata',
payload: tableModel.tableIdInSource, payload: tableModel.tableIdInSource,
callback: data => { callback: data => {
...@@ -57,7 +57,7 @@ class AssetListCOM extends Component { ...@@ -57,7 +57,7 @@ class AssetListCOM extends Component {
} }
}) })
dispatch({ dispatchLatest({
type: 'assets.listTableModelColumnsWithQuerySql', type: 'assets.listTableModelColumnsWithQuerySql',
payload: { tableModelId: tableModel.tableModelId }, payload: { tableModelId: tableModel.tableModelId },
callback: desc => { callback: desc => {
...@@ -74,7 +74,7 @@ class AssetListCOM extends Component { ...@@ -74,7 +74,7 @@ class AssetListCOM extends Component {
if (preState.tabKey !== tabKey && tabKey !== 'description' && tableModel) { if (preState.tabKey !== tabKey && tabKey !== 'description' && tableModel) {
if (tabKey === 'preview') { if (tabKey === 'preview') {
dispatch({ dispatchLatest({
type: 'assets.listTableModelSampleDatas', type: 'assets.listTableModelSampleDatas',
payload: { tableModelId: tableModel.tableModelId }, payload: { tableModelId: tableModel.tableModelId },
callback: preview => { callback: preview => {
......
...@@ -3,7 +3,7 @@ import { Row, Col, Card, Input, Pagination } from 'antd'; ...@@ -3,7 +3,7 @@ import { Row, Col, Card, Input, Pagination } from 'antd';
import AssetTreeCOM from './components/AssetTree'; import AssetTreeCOM from './components/AssetTree';
import AssetListCOM from './components/AssetList'; import AssetListCOM from './components/AssetList';
import { dispatch } from '../../../model'; import { dispatchLatest } from '../../../model';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper'; import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
const { Search } = Input; const { Search } = Input;
...@@ -22,7 +22,7 @@ class Assets extends Component { ...@@ -22,7 +22,7 @@ class Assets extends Component {
getTreeData = () => { getTreeData = () => {
dispatch({ dispatchLatest({
type: 'assets.queryTopicAsTree', type: 'assets.queryTopicAsTree',
payload: null, payload: null,
callback: data => { callback: data => {
...@@ -37,7 +37,7 @@ class Assets extends Component { ...@@ -37,7 +37,7 @@ class Assets extends Component {
if (node) { if (node) {
this.setState({ currentNode: node, pageNum, pageSize, loading: true }); this.setState({ currentNode: node, pageNum, pageSize, loading: true });
dispatch({ dispatchLatest({
type: 'assets.listCatalogTableModelsByPage', type: 'assets.listCatalogTableModelsByPage',
payload: { dirId: node.nodeId, pageNum, pageSize, keyword }, payload: { dirId: node.nodeId, pageNum, pageSize, keyword },
callback: data => { callback: data => {
......
import React, { Component } from "react"; import React, { Component } from "react";
import { Row, Col, Spin, Tabs, Tag, Input } from 'antd'; import { Row, Col, Spin, Tabs, Tag, Input } from 'antd';
import { dispatch } from '../../../../model'; import { dispatchLatest } from '../../../../model';
const { TabPane } = Tabs; const { TabPane } = Tabs;
const { CheckableTag } = Tag; const { CheckableTag } = Tag;
...@@ -11,51 +11,36 @@ export class SearchBar extends Component { ...@@ -11,51 +11,36 @@ export class SearchBar extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { domains: null, hotWords: null, keyword: '', domain: '', loadingDomain: false, loadingHotWord: false }; this.state = { domains: null, hotWords: null, keyword: '', domain: '', loading: false };
} }
componentDidMount() { componentDidMount() {
const { location, onChange } = this.props; const { location, onChange } = this.props;
const _keyword = (location.query && location.query.search) ? location.query.search : ''; const _keyword = (location.query && location.query.search) ? location.query.search : '';
this.setState({ keyword: _keyword },() => { this.setState({ keyword: _keyword, loading: true },() => {
this.setState({ loadingDomain: true}, () => { dispatchLatest({
dispatch({ type: 'assets.getDomainsAndHotwords',
type: 'assets.domains', payload: { topNum: 5 },
payload: null, callback: data => {
callback: data => { this.setState({
this.setState({ loading: false,
loadingDomain: false, domains: data.domains,
domains: data hotWords: data.hotwords
}); },()=>{
} const { keyword, domain } = this.state;
}); onChange&&onChange(keyword, domain);
}); });
}
this.setState({ loadingHotWord: true}, () => { })
dispatch({ })
type: 'assets.getHotWord',
payload: { topNum: 5 },
callback: data => {
this.setState({
loadingHotWord: false,
hotWords: data
},()=>{
const { keyword, domain } = this.state;
onChange&&onChange(keyword, domain);
});
}
});
});
});
} }
render() { render() {
const { onChange } = this.props; const { onChange } = this.props;
const { domains, hotWords, domain, keyword, loadingDomain, loadingHotWord } = this.state; const { domains, hotWords, domain, keyword, loading } = this.state;
var tabDomains = null; let tabDomains = null;
if (domains && domains.length > 0) { if (domains && domains.length > 0) {
tabDomains = [{ domainId: '', domainName: '所有' }, ...domains]; tabDomains = [{ domainId: '', domainName: '所有' }, ...domains];
} }
...@@ -82,7 +67,8 @@ export class SearchBar extends Component { ...@@ -82,7 +67,8 @@ export class SearchBar extends Component {
</Row> </Row>
<Row className={'pb-3'}> <Row className={'pb-3'}>
<Col span={12} offset={6}> <Col span={12} offset={6}>
<Spin spinning={loadingDomain}>{ <Spin spinning={loading}>
{
tabDomains&&<Tabs tabDomains&&<Tabs
defaultActiveKey={domain} defaultActiveKey={domain}
onChange={active => { onChange={active => {
...@@ -93,7 +79,8 @@ export class SearchBar extends Component { ...@@ -93,7 +79,8 @@ export class SearchBar extends Component {
return <TabPane tab={domain.domainName} key={`${domain.domainId}`}></TabPane>; return <TabPane tab={domain.domainName} key={`${domain.domainId}`}></TabPane>;
})} })}
</Tabs> </Tabs>
}</Spin> }
</Spin>
</Col> </Col>
</Row> </Row>
<Row> <Row>
...@@ -101,26 +88,26 @@ export class SearchBar extends Component { ...@@ -101,26 +88,26 @@ export class SearchBar extends Component {
<span>热门搜索:</span> <span>热门搜索:</span>
</Col> </Col>
<Col span={10}> <Col span={10}>
<Spin spinning={loadingHotWord}> <Spin spinning={loading}>
{ {
hotWords&&hotWords.map(hotWord => { hotWords&&hotWords.map(hotWord => {
return ( return (
<CheckableTag <CheckableTag
key={hotWord} key={hotWord}
checked={hotWord === keyword} checked={hotWord === keyword}
onChange={checked => { onChange={checked => {
const { domain } = this.state; const { domain } = this.state;
if (checked) { if (checked) {
this.setState({ keyword: hotWord }); this.setState({ keyword: hotWord });
onChange&&onChange(hotWord,domain); onChange&&onChange(hotWord,domain);
} }
}} }}
> >
{hotWord} {hotWord}
</CheckableTag> </CheckableTag>
); );
}) })
} }
</Spin> </Spin>
</Col> </Col>
</Row> </Row>
......
...@@ -2,7 +2,7 @@ import React, { Component } from "react"; ...@@ -2,7 +2,7 @@ import React, { Component } from "react";
import { Card, Pagination } from 'antd'; import { Card, Pagination } from 'antd';
import { SearchBar } from './components/SearchHelper'; import { SearchBar } from './components/SearchHelper';
import AssetListCOM from '../Assets/components/AssetList'; import AssetListCOM from '../Assets/components/AssetList';
import { dispatch } from '../../../model'; import { dispatchLatest } from '../../../model';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper'; import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
class SearchResult extends Component { class SearchResult extends Component {
...@@ -13,7 +13,7 @@ class SearchResult extends Component { ...@@ -13,7 +13,7 @@ class SearchResult extends Component {
getList = ( keyword, domain, pageNum = 1, pageSize = 10) => { getList = ( keyword, domain, pageNum = 1, pageSize = 10) => {
this.setState({ keyword, domain, pageNum, pageSize, loading: true },() => { this.setState({ keyword, domain, pageNum, pageSize, loading: true },() => {
dispatch({ dispatchLatest({
type: 'assets.searchTableModelsByPage', type: 'assets.searchTableModelsByPage',
payload: { keyword, pageNum, domain, pageSize }, payload: { keyword, pageNum, domain, pageSize },
callback: data => { callback: data => {
......
...@@ -6,11 +6,14 @@ import { GetSession } from "../../util"; ...@@ -6,11 +6,14 @@ import { GetSession } from "../../util";
import { ManageLayout } from "../../layout"; import { ManageLayout } from "../../layout";
import Assets from './Assets'; import Assets from './Assets';
import Search from './Search'; import Search from './Search';
import Metadata from '../Metadata';
import Indicator from '../Metadata/Indicator';
import Standard from '../Metadata/Standard';
import Subscrible from '../User/Subscrible'; import Subscrible from '../User/Subscrible';
import Authorized from '../User/Authorized'; import Authorized from '../User/Authorized';
import Question from '../User/Question'; import Question from '../User/Question';
import Indicator from '../Metadata/Indicator';
import Standard from '../Metadata/Standard';
class Manage extends Component { class Manage extends Component {
constructor() { constructor() {
...@@ -36,6 +39,7 @@ class Manage extends Component { ...@@ -36,6 +39,7 @@ class Manage extends Component {
component={Search} component={Search}
/> />
<Route path={`${match.path}/assets`} component={Assets} /> <Route path={`${match.path}/assets`} component={Assets} />
<Route path={`${match.path}/metadata`} component={Metadata} />
<Route path={`${match.path}/indicator`} component={Indicator} /> <Route path={`${match.path}/indicator`} component={Indicator} />
<Route path={`${match.path}/standard`} component={Standard} /> <Route path={`${match.path}/standard`} component={Standard} />
<Route path={`${match.path}/subscrible`} component={Subscrible} /> <Route path={`${match.path}/subscrible`} component={Subscrible} />
......
...@@ -4,7 +4,7 @@ import React, { Component } from "react" ...@@ -4,7 +4,7 @@ import React, { Component } from "react"
import { Tree, Card, Spin, Select, Row } from 'antd'; import { Tree, Card, Spin, Select, Row } from 'antd';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { dispatch } from '../../../../model'; import { dispatch, dispatchLatest } from '../../../../model';
const { Option } = Select; const { Option } = Select;
...@@ -29,7 +29,7 @@ class MetadataTreeCOM extends Component { ...@@ -29,7 +29,7 @@ class MetadataTreeCOM extends Component {
const { session } = this.props; const { session } = this.props;
const _this = this; const _this = this;
dispatch({ dispatchLatest({
type: 'user.domains', type: 'user.domains',
payload: { payload: {
userId: session.userId userId: session.userId
...@@ -72,7 +72,7 @@ class MetadataTreeCOM extends Component { ...@@ -72,7 +72,7 @@ class MetadataTreeCOM extends Component {
const { type } = this.props; const { type } = this.props;
const _this = this; const _this = this;
dispatch({ dispatchLatest({
type: 'metadata.queryTopicAsTree', type: 'metadata.queryTopicAsTree',
payload: { payload: {
parentClass: 'Catalog', parentClass: 'Catalog',
......
...@@ -5,7 +5,7 @@ import { Row, Col, Card, Pagination, Input } from 'antd'; ...@@ -5,7 +5,7 @@ import { Row, Col, Card, Pagination, Input } from 'antd';
import PageHeaderWrapper from "../../../layout/PageHeaderWrapper"; import PageHeaderWrapper from "../../../layout/PageHeaderWrapper";
import MetadataTreeCOM from "./components/MetadataTree"; import MetadataTreeCOM from "./components/MetadataTree";
import MetadataListCOM from "./components/MetadataList"; import MetadataListCOM from "./components/MetadataList";
import { dispatch } from "../../../model"; import { dispatchLatest } from "../../../model";
import "./style.less"; import "./style.less";
const { Search } = Input; const { Search } = Input;
...@@ -23,7 +23,7 @@ export default class Indicator extends Component { ...@@ -23,7 +23,7 @@ export default class Indicator extends Component {
this.setState({ treeSelectId, pageNum, pageSize, loading: true }); this.setState({ treeSelectId, pageNum, pageSize, loading: true });
dispatch({ dispatchLatest({
type: 'metadata.tableModelsByPage', type: 'metadata.tableModelsByPage',
payload: { parentId: treeSelectId, pageNum, pageSize, name: keyword, model: 'Indicator' }, payload: { parentId: treeSelectId, pageNum, pageSize, name: keyword, model: 'Indicator' },
callback: data => { callback: data => {
......
...@@ -5,7 +5,7 @@ import { Row, Col, Card, Pagination, Input } from 'antd'; ...@@ -5,7 +5,7 @@ import { Row, Col, Card, Pagination, Input } from 'antd';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper'; import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
import MetadataTreeCOM from "../Indicator/components/MetadataTree"; import MetadataTreeCOM from "../Indicator/components/MetadataTree";
import MetadataListCOM from "../Indicator/components/MetadataList"; import MetadataListCOM from "../Indicator/components/MetadataList";
import { dispatch } from "../../../model"; import { dispatchLatest } from "../../../model";
const { Search } = Input; const { Search } = Input;
...@@ -22,7 +22,7 @@ export default class Standard extends Component { ...@@ -22,7 +22,7 @@ export default class Standard extends Component {
this.setState({ treeSelectId, pageNum, pageSize, loading: true }); this.setState({ treeSelectId, pageNum, pageSize, loading: true });
dispatch({ dispatchLatest({
type: 'metadata.tableModelsByPage', type: 'metadata.tableModelsByPage',
payload: { parentId: treeSelectId, pageNum, pageSize, name: keyword, model: 'DataStandard' }, payload: { parentId: treeSelectId, pageNum, pageSize, name: keyword, model: 'DataStandard' },
callback: data => { callback: data => {
......
import React, { Component } from "react";
import { Card } from 'antd';
import PageHeaderWrapper from '../../layout/PageHeaderWrapper';
export default class Metadata extends Component {
render() {
return (
<PageHeaderWrapper {...this.props}>
<Card bordered={false}>
<iframe
title="元数据"
src="/center-home/meta"
style={{ width: '100%', height: '741px', border: 0 }}
/>
</Card>
</PageHeaderWrapper>
);
}
}
import React, { Component } from "react"; import React, { Component } from "react";
import { Card, Pagination } from 'antd'; import { Card, Pagination } from 'antd';
import { dispatch } from '../../../model'; import { dispatchLatest } from '../../../model';
import { paginate } from '../../../util'; import { paginate } from '../../../util';
import AssetListCOM from '../../Manage/Assets/components/AssetList'; import AssetListCOM from '../../Manage/Assets/components/AssetList';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper'; import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
...@@ -20,7 +20,7 @@ export default class Authorized extends Component { ...@@ -20,7 +20,7 @@ export default class Authorized extends Component {
updateItems() { updateItems() {
this.setState({ loading: true}, () => { this.setState({ loading: true}, () => {
dispatch({ dispatchLatest({
type: 'user.listPrivilegeTableModels', type: 'user.listPrivilegeTableModels',
payload: { }, payload: { },
callback: data => { callback: data => {
......
import React, { Component } from "react"; import React, { Component } from "react";
import { Card, Table, Radio, Pagination, Input } from 'antd'; import { Card, Table, Radio, Pagination, Input, Button } from 'antd';
import { dispatch } from '../../../model'; import { dispatchLatest } from '../../../model';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
export default class Question extends Component { export default class Question extends Component {
...@@ -42,9 +43,9 @@ export default class Question extends Component { ...@@ -42,9 +43,9 @@ export default class Question extends Component {
{ {
title: '操作', title: '操作',
render: (text, record) => ( render: (text, record) => (
<a onClick={() => { this.onQuestionUpdate(record); }}> <Button onClick={() => { this.onQuestionUpdate(record); }}>
更新 更新
</a> </Button>
), ),
}, },
] ]
...@@ -69,7 +70,7 @@ export default class Question extends Component { ...@@ -69,7 +70,7 @@ export default class Question extends Component {
payload.performance = type; payload.performance = type;
} }
dispatch({ dispatchLatest({
type: 'user.questions', type: 'user.questions',
payload: payload, payload: payload,
callback: data => { callback: data => {
...@@ -101,51 +102,54 @@ export default class Question extends Component { ...@@ -101,51 +102,54 @@ export default class Question extends Component {
render() { render() {
const { keyword, type, loading, columns, items, pageNum, pageSize, total } = this.state; const { keyword, type, loading, columns, items, pageNum, pageSize, total } = this.state;
return ( return (
<Card <PageHeaderWrapper {...this.props}>
bordered={false} <Card
title={ bordered={false}
<Input.Search title={
placeholder="请输入项目名称" <Input.Search
value={keyword} placeholder="请输入项目名称"
onSearch={this.onSearch} value={keyword}
onChange={e=> { onSearch={this.onSearch}
this.setState({ keyword: e.target.value }); onChange={e=> {
}} this.setState({ keyword: e.target.value });
/> }}
} style={{ width: '300px' }}
extra={ />
<Radio.Group value={type} onChange={this.onTypeChange}> }
<Radio.Button value="all">全部</Radio.Button> extra={
<Radio.Button value="confirm">确认问题</Radio.Button> <Radio.Group value={type} onChange={this.onTypeChange}>
<Radio.Button value="dealing">正在解决</Radio.Button> <Radio.Button value="all">全部</Radio.Button>
<Radio.Button value="solve">解决问题</Radio.Button> <Radio.Button value="confirm">确认问题</Radio.Button>
</Radio.Group> <Radio.Button value="dealing">正在解决</Radio.Button>
} <Radio.Button value="solve">解决问题</Radio.Button>
> </Radio.Group>
<Table }
rowKey="id" >
columns={columns} <Table
dataSource={items} rowKey="id"
pagination={false} columns={columns}
loading={loading} dataSource={items}
/> pagination={false}
<Pagination loading={loading}
className="text-center" />
showSizeChanger <Pagination
showQuickJumper className="text-center"
onChange={(_pageNum, _pageSize) => { showSizeChanger
this.getList(type, keyword, _pageNum, _pageSize); showQuickJumper
}} onChange={(_pageNum, _pageSize) => {
onShowSizeChange={(_pageNum, _pageSize) => { this.getList(type, keyword, _pageNum, _pageSize);
this.getList(type, keyword, _pageNum, _pageSize); }}
}} onShowSizeChange={(_pageNum, _pageSize) => {
current={pageNum} this.getList(type, keyword, _pageNum, _pageSize);
pageSize={pageSize} }}
defaultCurrent={1} current={pageNum}
total={total} pageSize={pageSize}
/> defaultCurrent={1}
total={total}
/>
</Card> </Card>
</PageHeaderWrapper>
); );
} }
} }
import React, { Component } from "react"; import React, { Component } from "react";
import { Card, Pagination } from 'antd'; import { Card, Pagination } from 'antd';
import { dispatch } from '../../../model'; import { dispatchLatest } from '../../../model';
import { paginate } from '../../../util'; import { paginate } from '../../../util';
import AssetListCOM from '../../Manage/Assets/components/AssetList'; import AssetListCOM from '../../Manage/Assets/components/AssetList';
import PageHeaderWrapper from '../../../layout/PageHeaderWrapper'; import PageHeaderWrapper from '../../../layout/PageHeaderWrapper';
...@@ -20,7 +20,7 @@ export default class Subscrible extends Component { ...@@ -20,7 +20,7 @@ export default class Subscrible extends Component {
updateItems() { updateItems() {
this.setState({ loading: true}, () => { this.setState({ loading: true}, () => {
dispatch({ dispatchLatest({
type: 'user.getUserSubscribeTableModels', type: 'user.getUserSubscribeTableModels',
payload: { }, payload: { },
callback: data => { callback: data => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment