react 地区筛选_仿ant-design的react 原生初级表格组件(搜索,筛选,过滤,编辑等功能)...

import React from 'react';

import Helmet from 'react-helmet';

import { Table, Modal, Tooltip, Input, message, Button, Tabs, Upload, Popconfirm } from 'antd';

import Header from '../../core/components/breadHead';

import xian from '../../core/lib/xian.js';

import { Pagination, UploadImage, SearchForm, ShowForm } from '../../xianModules/';

import { util } from '../../../utility/';

const log = [];

const headers = [{

title: '员工号',

key: 'staffNo',

dataIndex: 'staffNo',

render: (text, record) => xian.formatMoney(text),

}, {

title:'昵称',

key: 'name',

dataIndex: 'department',

}, {

title:'姓名',

key: 'realName',

dataIndex: 'department',

render: (text, record) => {

return(

{text}

{record.role}

);

},

}, {

title:'部门',

key: 'department',

dataIndex: 'department',

}];

const obj = [{

_id: 'Xvxej5HZj72k3P6uM',

userId : 'zDWSxWYFXybQrbn93',

staffNo : '18',

name : 'kim',

realName : 'kim',

department : '运营部',

role : '工作人员',

remark : '暂无',

createdAt : '2016-11-28T03:17:59.300Z',

isRemoved : true

}, {

_id: 'Xvxej5HZj72k3P6uM',

userId : 'axCpbEN99jsmCpZER',

staffNo : '22',

name : 'leo',

realName : 'leo',

department : '运营部',

role : '工作人员',

remark : '暂无',

createdAt : '2016-11-28T03:17:59.300Z',

isRemoved : true

}, {

_id: 'Xvxej5HZj72k3P6uM',

userId : 'jfQpADo3PaMkjLfB8',

staffNo : '02',

name : '袁益琴',

realName : '袁益琴',

department : '采购部',

role : '工作人员',

remark : '暂无',

createdAt : '2016-11-28T03:17:59.300Z',

isRemoved : true

}, {

_id: 'Xvxej5HZj72k3P6uM',

userId : 'roiMQ8PHPQ8t3ERCr',

staffNo : '53',

name : 'kim',

realName : '何庆',

department : '鲜库',

role : '工作人员',

remark : '暂无',

createdAt : '2016-11-28T03:17:59.300Z',

isRemoved : true

}];

let preSearchData = [];

export default class Page extends React.Component {

constructor(props) {

super(props);

this.state = {

data: obj,

}

}

componentWillMount() {

// 加载component时执行

const self = this;

const { hasUser } = self.props;

const { router } = self.context;

if (!hasUser) {

router.push('/login');

}

this.logSetState();

}

componentDidMount() {

document.onkeydown = ((e) => {

if (e.altKey && e.keyCode === 90) {

this.replay();

}

});

}

replay() {

if (log.length === 0) {

console.warn('No State to replay');

return;

}

let idx = -1;

const interval = setInterval( function() {

idx ++;

if (idx === log.length - 1) {

clearInterval(interval);

}

this.setState(log[idx]);

}.bind(this), 2000);

}

logSetState (newState) {

if (log.length < 20 ) {

log.push( log.length === 0 ? this.state : newState );

} else {

log.splice(1, 1);

log.push(newState);

}

// this.setState(newState);

}

handleTableChange(pagination, filters, sorter) {

const { current, pageSize } = pagination;

const { condition } = this.state;

this.fetch({

current,

pageSize,

condition,

});

}

render() {

const { data = obj, sortby, edit } = this.state;

return (

name: '商品',

path: '/reshelfManage',

}, {

name: '版式管理',

}]}/>

🔍搜索

{

headers.map((colum, index) => {

return (

{colum.title}{ sortby === colum.key ? this.state.descending ? '\u2191' : '\u2193' : ''});

})

}

{

headers.map((colum, index) => {

return (

);

})

}

{

data.map((item, index) => {

return (

{

headers.map((colum, idx) => {

const value = item[colum.key];

return (

{ colum.render ? colum.render(value, item) : value }

);

})

}

);

})

}

);

}

sort(e) {

const column = headers[e.target.cellIndex].key;

const datas = this.state.data.slice();

const descending = this.state.sortby === column && !this.state.descending;

datas.sort((a, b) => {

return descending ? a[column] > b[column] : a[column] < b[column];

});

this.setState({

data: datas,

sortby: column,

descending: descending,

});

this.logSetState(this.state);

}

shorEditor(e) {

this.setState({

edit: {

row: parseInt(e.target.dataset.row, 10),

cell: e.target.cellIndex,

},

});

this.logSetState(this.state);

}

handleChange(e) {

// console.log(e.target.value);

const data = this.state.data.slice();

data[this.state.edit.row][headers[this.state.edit.cell].key] = e.target.value;

this.setState({

edit: null,

data: data,

});

}

toogleSearch(e) {

if (this.state.search) {

this.setState({

data: preSearchData,

search: false,

});

preSearchData = [];

} else {

preSearchData = this.state.data;

this.setState({

search: true,

});

}

this.logSetState(this.state);

}

search(e) {

if (this.state.search) {

const needle = e.target.value.toLowerCase();

if (!needle) {

this.setState({

data: preSearchData,

});

return;

}

const idx = e.target.dataset.idx;

// console.log(row[idx]);

const searchdata = preSearchData.filter((row) => {

// console.log(row[headers[idx].key]);

return row[headers[idx].key].toString().toLowerCase().indexOf(needle) > -1;

});

this.setState({ data: searchdata });

this.logSetState(this.state);

}

}

}

Page.contextTypes = {

router: React.PropTypes.object,

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值