UNPKG

tplus-pos

Version:

pos module

436 lines (364 loc) 14.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _InputGroup3 = require('tinper-bee/dist/InputGroup'); var _InputGroup4 = _interopRequireDefault(_InputGroup3); var _FormControl2 = require('tinper-bee/dist/FormControl'); var _FormControl3 = _interopRequireDefault(_FormControl2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _class; require('tinper-bee/dist/InputGroup/index.css'); require('tinper-bee/dist/FormControl/index.css'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _api = require('./api'); var _api2 = _interopRequireDefault(_api); require('./index.less'); var _tplusComponentsTouch = require('tplus-components-touch'); var _mutantsMicrofx = require('mutants-microfx'); var _mutantsUtil = require('mutants-util'); var _tplusPoslogin = require('tplus-poslogin'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ProductSearch = (0, _mutantsMicrofx.observer)(_class = function (_Component) { (0, _inherits3.default)(ProductSearch, _Component); function ProductSearch(props, context) { (0, _classCallCheck3.default)(this, ProductSearch); var _this = (0, _possibleConstructorReturn3.default)(this, (ProductSearch.__proto__ || (0, _getPrototypeOf2.default)(ProductSearch)).call(this, props, context)); _this.changeKeyboardShowOrHide = function () { var _input = _this.refSearch.input; var isKeyboardShow = _this.state.isKeyboardShow; if (isKeyboardShow == true) { _tplusComponentsTouch.Keyboard.close(); _this.clearKeyboard(); } else { if (!_this.isHorizontalPad) { _this.refSearch.input.focus(); } _tplusComponentsTouch.Keyboard.open(function (v) { var val = _tplusComponentsTouch.Keyboard.getNewValue(_input, _input.value, v); _this.inputChange(val); }, function () { var value = _this.state.value; _this.searchData(value); _tplusComponentsTouch.Keyboard.close(); _this.clearKeyboard(); _this.setState({ isKeyboardShow: false }); }, function () { _tplusComponentsTouch.Keyboard.close(); _this.clearKeyboard(); _this.setState({ isKeyboardShow: false }); })(); _this.setState({ isKeyboardShow: true }); } }; _this.clearKeyboard = function () { _this.setState({ isKeyboardShow: false }); }; _this.formatNumber = function (number, length) { if (number === '' || number === undefined || number === null) { number = 0; } number += ''; if (length == 0) { return parseInt(number); } if (number.indexOf('.') > 0) { number += '0000000000'; } else { number += '.0000000000'; } return number.substring(0, number.indexOf(".") + +length + 1); }; _this.inputChange = function (value) { _this.setState({ value: value, finishSearch: false }); }; _this.handleClick = function (item) { var onClick = _this.props.onClick; onClick && onClick(item, 0, 0, null, true); _this.closePanel(); _this.setState({ value: '' }); }; _this.openPanel = function () { $.clearFocus(); $.setFocus(_this.downPanel); _this.setState({ isShowPanel: true }); }; _this.closePanel = function () { $.clearFocus(); $.find('.app', true).setFocus(); _this.setState({ isShowPanel: false, selectRowIndex: -1, selectRowItem: null }); }; _this.triggerFunc = function (event) { var isShowPanel = _this.state.isShowPanel; var el = event.target; if (isShowPanel && el.className !== 'dropdownPanel' && el.id !== 'productPoint' && el.className.indexOf('product-jianpan') == -1) { _this.closePanel(); _this.stopFunc(event); } _this.controllerEvent('setInventoryFocus'); }; _this.stopFunc = function (e) { e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; }; _this.searchData = function (value, iskeyboard) { var _this$props = _this.props, isReturn = _this$props.isReturn, idMember = _this$props.idMember, configure = _this$props.configure, onClick = _this$props.onClick; _api2.default.searchInventory({ Key: value, // 存货条码录入框输入的值,可以是助记码、存货编码,也可以是条形码 SearchType: 0, // “0”不指定,1:“条形码” 2:“非条形码” IdinventoryClass: -2, // 存货分类Id,-1代表常用分类,-2代表全部分类,其他以数据库的为准 PageNo: 1, // 当前页号 从1开始 PageSize: 20, // 每页大小 isReturn: isReturn, Idmember: idMember || '', IsSelfCash: _mutantsUtil.platform.isVerticalTouch, Idstore: configure.idStore || '', posCode: _this.posCode }).then(function (_ref) { var RetailDetailData = _ref.RetailDetailData, InventoryData = _ref.InventoryData, TotalCount = _ref.TotalCount, IsBarCode = _ref.IsBarCode, IsSerialNumber = _ref.IsSerialNumber; if (TotalCount == 0) { _tplusComponentsTouch.Message.info('无此商品信息', {}, 'warn'); _this.setState({ value: '' }); } else if (TotalCount == 1) { //只有一个商品 var fn = _this.props.justOneResultCallBack; if (IsBarCode || IsSerialNumber) { //条形码、序列号 fn && fn(RetailDetailData, IsSerialNumber); } else { if (RetailDetailData) { fn && fn(RetailDetailData, IsSerialNumber); } else { onClick && onClick(InventoryData[0], 0, 0, null, true); } } _this.closePanel(); _this.setState({ value: '' }); } else { _this.openPanel(); _this.setState({ data: InventoryData, selectRowIndex: 0, selectRowItem: InventoryData[0] }); } }); }; _this.onKeyDown = function (e) { var pRowHeight = 32; var onClick = _this.props.onClick; var _this$state = _this.state, isShowPanel = _this$state.isShowPanel, finishSearch = _this$state.finishSearch, value = _this$state.value, data = _this$state.data, selectRowIndex = _this$state.selectRowIndex, selectRowItem = _this$state.selectRowItem; var key = e && e.keyCode; switch (key) { case 13: //回车 if (value) { if (isShowPanel && finishSearch && selectRowIndex > -1 && selectRowItem) { onClick && onClick(selectRowItem, 0, 0, null, true); _this.closePanel(); _this.setState({ value: '' }); } else { var stime = _this.keypressStime; var etime = Date.parse(new Date()); var iskeyboard = etime - stime > 300 ? true : false; _this.searchData(value, iskeyboard); _this.setState({ finishSearch: true }); } _this.keypressStime = null; } else { _this.keypressStime = null; _tplusComponentsTouch.Message.warn('请输入商品编码/条码'); return; } break; case 38:case 40: //上下按键 _this.keepFocusShake(); var index = selectRowIndex, top = 0; if (!isShowPanel || data.length == 0) break; if (!(_this.downPanel && _this.downPanel.childNodes && _this.downPanel.childNodes.length > 0)) break; if (key == 38 && selectRowIndex == 0) break; if (key == 40 && selectRowIndex == data.length - 1) break; if (key == 38) { index = selectRowIndex - 1; top = _this.downPanel.childNodes[selectRowIndex].offsetTop - _this.downPanel.scrollTop < 32 ? _this.downPanel.scrollTop - pRowHeight : _this.downPanel.scrollTop; } else if (key == 40) { index = selectRowIndex + 1; top = _this.downPanel.childNodes[index].offsetTop > 178 ? _this.downPanel.scrollTop + pRowHeight : _this.downPanel.scrollTop; } _this.downPanel.scrollTop = top; _this.setState({ selectRowIndex: index, selectRowItem: data[index] }); _this.stopFunc(e); break; default: if (!_this.keypressStime && !(key == 8)) { _this.keypressStime = Date.parse(new Date()); } break; } }; _this.resizePanelWidth = function () { var ref = _this.refSearch; var panel = document.getElementById('dropdownPatternPanel'); if (ref && panel) { var wh = ref.input.parentNode.clientWidth; panel.style.width = wh + "px"; } }; _this.keepFocusShake = function () { if (!_this.refSearch) return; var value = _this.state.value; var input = _this.refSearch.input; var num = value.length; setTimeout(function () { return input.setSelectionRange(num, num); }, 0); }; _this.state = { isKeyboardShow: false, finishSearch: false, value: '', isShowPanel: false, data: [], selectRowIndex: -1, selectRowItem: null }; _this.keypressStime = null; var _ref2 = _this.props || {}, controllerEvent = _ref2.controllerEvent; _this.controllerEvent = controllerEvent; var _ref3 = _mutantsUtil.platform || {}, isHorizontalPad = _ref3.isHorizontalPad; _this.isHorizontalPad = !!isHorizontalPad; _this.posCode = _tplusPoslogin.PosInitData && (0, _tplusPoslogin.PosInitData)('posCode'); return _this; } (0, _createClass3.default)(ProductSearch, [{ key: 'componentDidMount', value: function componentDidMount() { var _this2 = this; this.refSearch.input.onblur = function () { _tplusComponentsTouch.Keyboard.close(); _this2.clearKeyboard(); }; } /* 查询数据 */ /* 输入框键盘事件 */ /* 调整下拉面板宽度 */ /* 防止input中的光标抖动 */ }, { key: 'componentDidUpdate', value: function componentDidUpdate() { this.resizePanelWidth(); } }, { key: 'render', value: function render() { var _this3 = this; var pricePrecision = this.props.pricePrecision; var _state = this.state, isKeyboardShow = _state.isKeyboardShow, isShowPanel = _state.isShowPanel, value = _state.value, data = _state.data, selectRowIndex = _state.selectRowIndex; return _react2.default.createElement( _InputGroup4.default, { simple: true, className: 'keyboard' }, _react2.default.createElement(_FormControl3.default, { type: 'text', value: value, placeholder: '\u626B\u63CF\u6216\u8F93\u5165\u5546\u54C1\u7F16\u7801/\u6761\u7801', id: 'productPoint', onChange: this.inputChange, onKeyDown: this.onKeyDown, ref: function ref(input) { return _this3.refSearch = input; }, AUTOCOMPLETE: 'OFF' }), _react2.default.createElement( _InputGroup4.default.Button, { shape: 'border' }, isKeyboardShow ? _react2.default.createElement(_tplusComponentsTouch.Ticon, { type: 'jianpan2', className: 'product-jianpan', onClick: this.changeKeyboardShowOrHide }) : _react2.default.createElement(_tplusComponentsTouch.Ticon, { type: 'jianpan1', className: 'product-jianpan', onClick: this.changeKeyboardShowOrHide }) ), isShowPanel ? _react2.default.createElement( 'div', null, _react2.default.createElement( 'div', { className: 'dropdownPanel', id: 'dropdownPatternPanel', target: '1', ref: function ref(el) { return _this3.downPanel = el; } }, data && data.length > 0 ? data.map(function (item, index) { var Id = item.Id, Code = item.Code, Name = item.Name, RetailPrice = item.RetailPrice, Specification = item.Specification; return _react2.default.createElement( 'div', { key: Id, className: selectRowIndex == index ? 'item select' : 'item', onClick: function onClick() { return _this3.handleClick(item); } }, _react2.default.createElement( 'div', { style: { width: '20%' } }, Code ), _react2.default.createElement( 'div', { style: { width: '40%' } }, Name ), _react2.default.createElement( 'div', { style: { width: '30%' } }, Specification ), _react2.default.createElement( 'div', { style: { width: '10%' } }, pricePrecision && RetailPrice ? _this3.formatNumber(RetailPrice, pricePrecision) : RetailPrice ) ); }) : _react2.default.createElement( 'div', { className: 'empty' }, _react2.default.createElement( 'span', null, '\u6682\u65E0\u5546\u54C1~~' ) ) ), _react2.default.createElement('div', { className: 'shade', onClick: this.triggerFunc }) ) : null ); } }]); return ProductSearch; }(_react.Component)) || _class; exports.default = ProductSearch; //# sourceMappingURL=search.js.map