yyuap-ref
Version:
cloud os fe ref project which is based on tinper
563 lines (497 loc) • 19.1 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _table = require('../../bee/table');
var _table2 = _interopRequireDefault(_table);
var _checkbox = require('../../bee/checkbox');
var _checkbox2 = _interopRequireDefault(_checkbox);
var _pagination = require('../../bee/pagination');
var _pagination2 = _interopRequireDefault(_pagination);
var _select = require('../../bee/select');
var _select2 = _interopRequireDefault(_select);
var _formControl = require('../../bee/form-control');
var _formControl2 = _interopRequireDefault(_formControl);
var _datepicker = require('../../bee/datepicker');
var _datepicker2 = _interopRequireDefault(_datepicker);
var _zh_CN = require('rc-calendar/lib/locale/zh_CN');
var _zh_CN2 = _interopRequireDefault(_zh_CN);
var _en_US = require('rc-calendar/lib/locale/en_US');
var _en_US2 = _interopRequireDefault(_en_US);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
require('./expandTable.css');
var _expandTable = {
'filterWrap': 'filterWrap__expandTable___2Clhe',
'filterInfoStyle': 'filterInfoStyle__expandTable___2tLCY',
'filterInfoStyleDiv': 'filterInfoStyleDiv__expandTable___3RwBo',
'filterInfoStyleDivSpan': 'filterInfoStyleDivSpan__expandTable___1fS9C',
'filterInfoStyleDatePicker': 'filterInfoStyleDatePicker__expandTable___1Xe4R',
'filterBtnWrap': 'filterBtnWrap__expandTable___2PP4j',
'filterBtnWrap2': 'filterBtnWrap2__expandTable___27iHh',
'filterResetBtnStyle': 'filterResetBtnStyle__expandTable___13f9d',
'filterSearchBtnStyle': 'filterSearchBtnStyle__expandTable___2lwf9',
'filterSaveBtnStyle': 'filterSaveBtnStyle__expandTable___3j1cx',
'filterCancelBtnStyle': 'filterCancelBtnStyle__expandTable___I0PfC',
'tableWrap': 'tableWrap__expandTable___3HjUK',
'paginationWrap': 'paginationWrap__expandTable___15zGO',
'paginationChooseWrap': 'paginationChooseWrap__expandTable___Rl3tx',
'paginationSetWrap': 'paginationSetWrap__expandTable___1KT0B',
'paginationInputWrap': 'paginationInputWrap__expandTable___1rT6J',
'paginationInputGoStyle': 'paginationInputGoStyle__expandTable___2f4sC'
};
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var format = "YYYY-MM-DD";
var dateInputPlaceholder = "选择日期";
//在assets中对下拉框z-index做处理
var ExpandTable = function (_Component) {
_inherits(ExpandTable, _Component);
function ExpandTable(props) {
_classCallCheck(this, ExpandTable);
var _this = _possibleConstructorReturn(this, (ExpandTable.__proto__ || Object.getPrototypeOf(ExpandTable)).call(this, props));
_this.onAllCheckChange = function () {
var self = _this;
var _this$props = _this.props,
tableData = _this$props.tableData,
checkedArray = _this$props.checkedArray;
var chooseAllFlag = tableData.every(function (v, k) {
return checkedArray.some(function (v1, k1) {
return v1.key === v.key;
});
});
var filterCheckedArray = [];
if (chooseAllFlag) {
filterCheckedArray = checkedArray.filter(function (v, k) {
return !tableData.some(function (v1, k1) {
return v.key === v1.key;
});
});
} else {
filterCheckedArray = checkedArray.concat();
tableData.forEach(function (v, k) {
if (!checkedArray.some(function (v1, k1) {
return v1.key === v.key;
})) {
filterCheckedArray.push(v);
}
});
}
self.props.setCheckedArray(filterCheckedArray);
};
_this.onCheckboxChange = function (text, record, index) {
var self = _this;
var _this$props2 = _this.props,
tableData = _this$props2.tableData,
checkedArray = _this$props2.checkedArray;
var choosed = checkedArray.some(function (v) {
return v.key == record.key;
});
var filterCheckedArray = checkedArray;
if (choosed) {
if (!self.props.multiple) {
filterCheckedArray = checkedArray.filter(function (v, k) {
return v.key != record.key;
});
}
} else {
if (self.props.multiple) {
filterCheckedArray = [record];
} else {
filterCheckedArray.push(record);
}
}
self.props.setCheckedArray(filterCheckedArray);
};
_this.state = {
tableData: [],
totalTableData: [],
selectedRowIndex: -1,
checkedAll: false, //是否全部选中
checkedArray: props.checkedArray, //保存选中数据
totalPage: 1, //总页数
pageSize: '10', //每页数据数
activePage: 0, //激活页码
showPage: 1, //用来显示跳转到第几页 回车之后跟激活页码一样
firstload: true,
filterInfo: {}, //过滤信息
oriTableData: [] //原始数据
};
_this.setPagination = _this.setPagination.bind(_this);
_this.keyDown = _this.keyDown.bind(_this);
return _this;
}
_createClass(ExpandTable, [{
key: 'componentWillMount',
value: function componentWillMount() {
this.setState({
columnsData: this.props.columnsData,
tableData: this.props.tableData
});
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
console.log(nextProps);
this.setState({
columnsData: nextProps.columnsData,
tableData: nextProps.tableData,
selectedRowIndexlast: nextProps.selectedRowIndexlast
// selectedRowIndex:nextProps.selectedRowIndex
});
}
//pagination
}, {
key: 'handleSelect',
value: function handleSelect(eventKey) {
this.props.handlePagination(eventKey);
}
//调至第几页(1)
}, {
key: 'setPagination',
value: function setPagination(v) {
this.setState({
showPage: v
});
}
//调至第几页(2)
}, {
key: 'keyDown',
value: function keyDown(e) {
if (e.keyCode === 13) {
//数据判断
var v = this.state.showPage;
var totalPage = this.props.totalPage;
if (v === null || v === '') {
v = 1;
}
v = Number.parseInt(v);
if (isNaN(v) || v > totalPage) {
v = 1;
}
this.setState({
showPage: v
});
this.props.handlePagination(v);
}
}
}, {
key: 'goToPage',
value: function goToPage() {
this.keyDown({ keyCode: 13 });
}
//每页size
}, {
key: 'handleSizeChange',
value: function handleSizeChange(value) {
this.props.handlePageSize(value);
}
}, {
key: 'onRowClick',
value: function onRowClick(record, index, text) {
var _state = this.state,
tableData = _state.tableData,
selectedRowIndexlast = _state.selectedRowIndexlast;
var multiple = this.props.multiple;
if (multiple) {
if (selectedRowIndexlast != undefined) {
tableData[selectedRowIndexlast].selectedRowIndex = false;
}
this.setState({
selectedRowIndex: index,
tableData: tableData
});
}
// if(multiple){
this.onCheckboxChange(text, record, index);
// }
}
}, {
key: 'rowClassName',
value: function rowClassName(record, index, indent) {}
}, {
key: 'searchBtn',
value: function searchBtn() {
this.props.searchFilterInfo();
}
}, {
key: 'resetBtn',
value: function resetBtn() {
this.props.setFilterInfo({});
this.props.searchFilterInfo();
}
}, {
key: 'saveBtn',
value: function saveBtn() {
this.props.onSave();
}
}, {
key: 'cancelBtn',
value: function cancelBtn() {
this.props.onCancel();
}
}, {
key: 'ondateFilterInfo',
value: function ondateFilterInfo(key, d) {
console.log(key, d.format(format));
var filterInfo = this.props.filterInfo;
filterInfo[key] = d.format(format);
this.props.setFilterInfo(filterInfo);
}
}, {
key: 'setFilterInfo',
value: function setFilterInfo(key, event) {
var filterInfo = this.props.filterInfo;
filterInfo[key] = event.target.value;
this.props.setFilterInfo(filterInfo);
}
//全选/全不选
//对某一个checkbox的点击事件
}, {
key: 'renderColumnsMultiSelect',
value: function renderColumnsMultiSelect(columns) {
var self = this;
var _props = this.props,
tableData = _props.tableData,
checkedArray = _props.checkedArray,
multiple = _props.multiple;
var chooseAllFlag = tableData.every(function (v, k) {
return checkedArray.some(function (v1, k1) {
return v1.key === v.key;
});
});
var checkedKeyList = tableData.map(function (v, k) {
return checkedArray.some(function (v1, k1) {
return v1.key === v.key;
});
});
var indeterminate_bool = false;
var i = checkedKeyList.length - 1;
while (i >= 0) {
if (checkedKeyList[i]) {
indeterminate_bool = true;
break;
}
i--;
} //判断是否有部分选中
var defaultColumns = [{
title: _react2.default.createElement(_checkbox2.default, {
className: 'table-checkbox',
checked: chooseAllFlag,
indeterminate: indeterminate_bool && !chooseAllFlag,
onChange: this.onAllCheckChange
}),
key: "checkbox",
dataIndex: "checkbox",
width: "5%",
render: function render(text, record, index) {
return _react2.default.createElement(_checkbox2.default, {
className: 'table-checkbox',
checked: checkedKeyList[index],
onChange: self.onCheckboxChange.bind(this, text, record, index),
onClick: function onClick(e) {
return e.stopPropagation();
}
});
}
}];
if (tableData.length > 0 && !multiple) {
columns = defaultColumns.concat(columns);
}
return columns;
}
}, {
key: 'ondateSelect',
value: function ondateSelect(d) {
console.log(d);
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var showPage = this.state.showPage;
var _props2 = this.props,
tableData = _props2.tableData,
columnsData = _props2.columnsData,
buttonText = _props2.buttonText;
var _props3 = this.props,
filterKey = _props3.filterKey,
totalPage = _props3.totalPage,
activePage = _props3.activePage,
pageSize = _props3.pageSize,
filterInfo = _props3.filterInfo;
var saveButton = "确定";
var cancelButton = "取消";
if (buttonText) {
saveButton = buttonText.ok;
cancelButton = buttonText.cancel;
}
if (filterKey) {
var filterList = filterKey.map(function (v, k) {
var filterInfoInput = filterInfo[v.key] || '';
if (v.type === 'date') {
return _react2.default.createElement(
'div',
{ key: k, className: 'RefFilterInfoStyleDiv ' + _expandTable.filterInfoStyleDiv },
_react2.default.createElement(
'span',
{ className: 'RefFilterInfoStyleDivSpan ' + _expandTable.filterInfoStyleDivSpan },
v.title,
':'
),
_react2.default.createElement(_datepicker2.default, {
format: format,
showTime: true,
onSelect: _this2.ondateFilterInfo.bind(_this2, v.key),
onChange: _this2.ondateSelect,
locale: _zh_CN2.default
// defaultValue={moment()}
, placeholder: dateInputPlaceholder,
className: 'RefFilterInfoStyleDatePicker ' + _expandTable.filterInfoStyleDatePicker
})
);
} else {
return _react2.default.createElement(
'div',
{ key: k, className: 'RefFilterInfoStyleDiv ' + _expandTable.filterInfoStyleDiv },
_react2.default.createElement(
'span',
{ className: 'RefFilterInfoStyleDivSpan ' + _expandTable.filterInfoStyleDivSpan },
v.title,
':'
),
_react2.default.createElement('input', { value: filterInfoInput, onChange: _this2.setFilterInfo.bind(_this2, v.key) })
);
}
});
} else {
var filterList = columnsData.map(function (v, k) {
var filterInfoInput = filterInfo[v.key] || '';
return _react2.default.createElement(
'div',
{ key: k, className: 'RefFilterInfoStyleDiv ' + _expandTable.filterInfoStyleDiv },
_react2.default.createElement(
'span',
{ className: 'RefFilterInfoStyleDivSpan ' + _expandTable.filterInfoStyleDivSpan },
v.title,
':'
),
_react2.default.createElement('input', { value: filterInfoInput, onChange: _this2.setFilterInfo.bind(_this2, v.key) })
);
});
}
var columns = this.renderColumnsMultiSelect(columnsData);
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(
'div',
{ className: 'RefFilterWrap ' + _expandTable.filterWrap },
_react2.default.createElement(
'div',
{ className: 'RefFilterInfoStyle ' + _expandTable.filterInfoStyle },
filterList
),
_react2.default.createElement(
'div',
{ className: 'RefFilterBtnWrap ' + _expandTable.filterBtnWrap },
_react2.default.createElement(
'button',
{ className: 'RefFilterResetBtnStyle ' + _expandTable.filterResetBtnStyle, onClick: this.resetBtn.bind(this) },
'\u91CD\u7F6E'
),
_react2.default.createElement(
'button',
{ className: 'RefFilterSearchBtnStyle ' + _expandTable.filterSearchBtnStyle, onClick: this.searchBtn.bind(this) },
'\u67E5\u8BE2'
)
)
),
_react2.default.createElement(
'div',
{ className: 'RefTableWrap ' + _expandTable.tableWrap },
_react2.default.createElement(_table2.default, {
scroll: { y: 400 },
emptyText: function emptyText() {
return '对不起,无后台数据!';
},
style: { 'height': 438 },
columns: columns,
data: tableData,
onRowClick: function onRowClick(record, index, indent) {
return _this2.onRowClick(record, index, indent, _this2);
},
rowClassName: function rowClassName(record, index, indent) {
if (_this2.state.selectedRowIndex == index || record.selectedRowIndex) {
return 'selected';
} else {
return '';
}
}
})
),
_react2.default.createElement(
'div',
{ className: 'RefPaginationWrap ' + _expandTable.paginationWrap },
_react2.default.createElement(
'div',
{ className: 'RefPaginationChooseWrap ' + _expandTable.paginationChooseWrap },
_react2.default.createElement(_pagination2.default, {
prev: true,
next: true,
boundaryLinks: true,
size: 'sm',
items: totalPage,
maxButtons: 5,
activePage: activePage + 1,
onSelect: this.handleSelect.bind(this)
})
),
_react2.default.createElement(
'div',
{ className: 'RefPaginationSetWrap ' + _expandTable.paginationSetWrap, style: { marginTop: '11px' } },
'10\u6761/\u9875'
),
_react2.default.createElement(
'div',
{ className: 'RefPaginationInputWrap ' + _expandTable.paginationInputWrap },
'\u8DF3\u81F3',
_react2.default.createElement(_formControl2.default, { type: 'text',
value: showPage,
onChange: this.setPagination,
onKeyDown: this.keyDown
}),
'\u9875',
_react2.default.createElement(
'button',
{ onClick: this.goToPage.bind(this), className: 'RefPaginationInputGoStyle ' + _expandTable.paginationInputGoStyle },
'\u786E\u5B9A'
)
)
),
_react2.default.createElement(
'div',
{ className: 'RefFilterBtnWrap2 ' + _expandTable.filterBtnWrap2 },
_react2.default.createElement(
'button',
{ className: 'RefFilterSaveBtnStyle ' + _expandTable.filterSaveBtnStyle, onClick: this.saveBtn.bind(this) },
saveButton
),
_react2.default.createElement(
'button',
{ className: 'RefFilterCancelBtnStyle ' + _expandTable.filterCancelBtnStyle, onClick: this.cancelBtn.bind(this) },
cancelButton
)
)
);
}
}]);
return ExpandTable;
}(_react.Component);
exports.default = ExpandTable;
module.exports = exports['default'];