yyuap-ref
Version:
cloud os fe ref project which is based on tinper
435 lines (370 loc) • 14.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
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 _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _Ref = require('./components/ref/Ref');
var _Ref2 = _interopRequireDefault(_Ref);
var _modal = require('./bee/modal');
var _modal2 = _interopRequireDefault(_modal);
require('./assets/index.css');
var _api = require('./api.js');
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 op = {
title: '弹窗标题',
RefSearch: true,
RefList: false,
isTab: true,
RefTree: false,
isTable: true,
RefButton: true,
code: 'test_common', //test_common||test_grid
checkedArray: ['857c41b7-e1a3-11e5-aa70-0242ac11001d', 'xxcc0']
};
var RefGlobal = function (_Component) {
_inherits(RefGlobal, _Component);
function RefGlobal(props) {
_classCallCheck(this, RefGlobal);
var _this = _possibleConstructorReturn(this, (RefGlobal.__proto__ || Object.getPrototypeOf(RefGlobal)).call(this, props));
_this.onClickBtn = function (type) {
//console.log(type,this.state.RefListSelectArray)
switch (type) {
case 'save':
console.log(_this.state.selectedArray);
_this.props.option.onSave(_this.state.selectedArray);
break;
case 'cancel':
_this.setState({
selectedArray: [],
isShowModal: false
}, function () {
console.log(_this.state.selectedArray);
});
break;
default:
_this.setState({ selectedArray: [] }, function () {
console.log(_this.state.selectedArray);
//this.props.options.onSave(this.state.RefListSelectArray)
});
}
//this.props.options.onSave(this.state.RefListSelectArray)
};
_this.onSearchClick = function (value) {
//搜索点击发请求
console.log(value);
if (op.RefList || op.isTable) {
_this.getSearchListFun(value);
}
};
_this.onSearchChange = function (value) {
console.log(value);
};
_this.RefSelectedChecked = function (selectedArray) {
console.log(selectedArray);
_this.setState({
selectedArray: selectedArray
});
};
var option = _this.props.option;
_this.state = {
List: [],
tableData: {}, //存放表格数据
tabData: {}, //存放tab标签的数据
selectedArray: option.checkedArray || [], //记录保存的选择项
tabActiveKey: null, //记录当前激活tab
originKey: null, //保留tab点击已选择的前一tab的key
isShowModal: true, //是否显示弹窗
pageCount: 0, //下拉加载数据使用--请求数据的总页数
curPage: 0, //下拉加载数据使用--请求数据的当前页
ifScroll: false, //下拉加载数据使用--控制滚动事件
refTable: null //下拉加载数据使用--事件绑定对象
};
return _this;
}
//列表接口
_createClass(RefGlobal, [{
key: 'getRefList',
value: function getRefList(value) {
var _this2 = this;
var option = this.props.option;
(0, _api.getList)(option.code).then(function (_ref) {
var data = _ref.data;
if (data) {
_this2.setState({
List: data
});
}
});
}
//搜索接口
}, {
key: 'getSearchListFun',
value: function getSearchListFun(value) {
var _this3 = this;
var option = this.props.option;
(0, _api.getSearchList)(option.code, value).then(function (_ref2) {
var data = _ref2.data;
if (data) {
_this3.setState({
List: data,
tableData: {
listData: data
}
});
}
});
}
//use to refresh tab data
}, {
key: 'getRefTabData',
value: function getRefTabData(value) {
this.setState({
tabData: {
dataSource: this.props.option.tabData
}
});
}
// 获取树组件数据
}, {
key: 'getRefTreeData',
value: function getRefTreeData(value) {
var _this4 = this;
(0, _api.getTreeList)(value).then(function (_ref3) {
var data = _ref3.data;
if (data) {
_this4.setState({
treeData: data
});
}
});
}
//use to refresh table data
}, {
key: 'getRefTableData',
value: function getRefTableData(value) {
var _this5 = this;
if (value.activepage && value.activepage > 0) {
(0, _api.getTableData)(value).then(function (_ref4) {
var _ref5 = _slicedToArray(_ref4, 2),
barData = _ref5[0],
bodyData = _ref5[1];
var tempData = [];
if (bodyData) {
tempData = bodyData.data.map(function (v, k) {
v.key = v.refpk;
return v;
});
}
_this5.setState(function (prevData) {
return {
curPage: prevData.curPage + 1,
tableData: {
listData: prevData.tableData.listData.concat(tempData),
cols: prevData.tableData.cols
},
ifScroll: false
};
});
});
} else {
(0, _api.getTableData)(value).then(function (_ref6) {
var _ref7 = _slicedToArray(_ref6, 2),
barData = _ref7[0],
bodyData = _ref7[1];
var nameArr = barData.strFieldName;
var barArr = barData.strFieldCode;
var colsArr = barArr.map(function (v, k) {
return {
'title': nameArr[k],
'dataIndex': v,
'key': v,
'width': 150
};
});
var listArr = bodyData.data.map(function (v, k) {
v.key = v.refpk;
return v;
});
_this5.setState({
tableData: {
listData: listArr,
cols: colsArr
},
curPage: 0,
pageCount: bodyData.page.pageCount
});
});
}
}
}, {
key: 'componentWillMount',
value: function componentWillMount() {
var option = this.props.option;
var activepage = this.state.activepage;
if (option.RefList) {
this.getRefList();
}
if (option.isTab) {
this.getRefTabData({ refCode: option.code });
}
if (option.isTable) {
this.getRefTableData({ refCode: option.code, activepage: 0 });
}
if (option.isTree) {
this.getRefTreeData();
}
}
//按钮点击
//搜索输入变化触发
//选中数组保存回调
}, {
key: 'onTabSelect',
/* tab与table的回调函数 ---start */
value: function onTabSelect(_ref8) {
var activeKey = _ref8.activeKey,
originKey = _ref8.originKey;
var option = this.props.option;
this.setState({
tabActiveKey: activeKey,
originKey: originKey
});
if (this.props.option.isTable) {
this.state.refTable.scrollTop = 0;
this.getRefTableData({ refCode: option.code, activekey: originKey || activeKey });
console.log(originKey || activeKey);
}
}
}, {
key: 'onSendData',
value: function onSendData(refTable) {
var _this6 = this;
this.setState({ refTable: refTable });
var initScroll = function initScroll() {
var _state = _this6.state,
pageCount = _state.pageCount,
curPage = _state.curPage,
ifScroll = _state.ifScroll,
originKey = _state.originKey,
tabActiveKey = _state.tabActiveKey;
var code = _this6.props.option.code;
if (ifScroll) return;
console.log('发送');
var scrollerscrollHeight = refTable.scrollHeight; // 容器滚动总高度
var scrollerHeight = refTable.getBoundingClientRect().height; // 容器滚动可见高度
var scrollerTop = refTable.scrollTop; //滚过的高度
if (scrollerscrollHeight - scrollerHeight - scrollerTop <= 10) {
if (curPage + 1 < pageCount) {
_this6.setState({ ifScroll: true });
_this6.getRefTableData({ refCode: code, activepage: curPage + 1, activekey: originKey || tabActiveKey });
} else {
// scrollerLoading = true;
}
}
};
refTable.addEventListener('scroll', initScroll, false);
}
/* tree的回调函数 ---end */
}, {
key: 'onCheck',
value: function onCheck(selectedKeys, event) {
debugger;
this.setState({
selectedArray: selectedKeys
});
}
}, {
key: 'onSelect',
value: function onSelect(selectedKeys, event) {
debugger;
this.setState({
selectedArray: selectedKeys
});
}
//tree EventHandler
}, {
key: 'render',
value: function render() {
var option = this.props.option;
var isShowModal = this.state.isShowModal;
return _react2.default.createElement(
'div',
null,
isShowModal ? _react2.default.createElement(
_modal2.default,
{
show: true
},
_react2.default.createElement(
_modal2.default.Body,
null,
_react2.default.createElement(
_Ref2.default,
null,
_react2.default.createElement(
'div',
null,
option.title ? _react2.default.createElement(
'div',
{ className: 'Reftitle' },
option.title
) : _react2.default.createElement('div', null),
option.RefSearch ? _react2.default.createElement('div', { is: 'RefSearch',
onSearch: this.onSearchClick,
onChange: this.onSearchChange
// onGetSearchResult={this.onSearchGetResult}
// url={'www.baidu.com'}
}) : _react2.default.createElement('div', null),
option.RefList ? _react2.default.createElement('div', { is: 'RefList', data: this.state.List, SelectArray: this.state.selectedArray,
RefListChecked: this.RefSelectedChecked }) : _react2.default.createElement('div', null),
option.RefTree ? _react2.default.createElement('div', { is: 'RefTree' }) : _react2.default.createElement('div', null),
option.isTree ? _react2.default.createElement('div', { is: 'Tree',
data: this.state.treeData //
, multiple: false //是否允许选择多个树节点
, checkable: true //是否支持添加在树节点前添加Checkbox
, defaultExpandAll: true //默认是否展开所有节点
, onCheck: this.onCheck.bind(this) //
, onSelect: this.onSelect.bind(this) //
, refCode: option.code
}) : _react2.default.createElement('div', null),
option.isTab ? _react2.default.createElement('div', { is: 'Tab',
data: this.state.tabData,
selectedArray: this.state.selectedArray,
ifNeedSelect: 'true',
ifOnlyNeedSelect: 'false',
onTabSelect: this.onTabSelect.bind(this),
tabActiveKey: this.state.tabActiveKey,
originKey: this.state.originKey
}) : _react2.default.createElement('div', null),
option.isTable ? _react2.default.createElement('div', { is: 'RefTable',
data: this.state.tableData,
onTableSelect: this.RefSelectedChecked.bind(this),
onSendData: this.onSendData.bind(this),
tabActiveKey: this.state.tabActiveKey,
selectedArray: this.state.selectedArray
}) : _react2.default.createElement('div', null),
option.RefButton ? _react2.default.createElement('div', { is: 'RefButton', onClickBtn: this.onClickBtn }) : _react2.default.createElement('div', null)
)
)
)
) : null
);
}
}]);
return RefGlobal;
}(_react.Component);
// ReactDOM.render(
// (
// <RefGlobal option={op}/>
// ),
// document.getElementById('root'),
// );
exports.default = RefGlobal;
module.exports = exports['default'];