UNPKG

tplus-pos

Version:

pos module

558 lines (460 loc) 20.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty = require('babel-runtime/core-js/object/define-property'); var _defineProperty2 = _interopRequireDefault(_defineProperty); var _getOwnPropertyDescriptor = require('babel-runtime/core-js/object/get-own-property-descriptor'); var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); 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 _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _class3, _temp; var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _tplusComponentsTouch = require('tplus-components-touch'); var _numKbModalVertical = require('../numKbModalVertical'); var _numKbModalVertical2 = _interopRequireDefault(_numKbModalVertical); var _mutantsAppfx = require('mutants-appfx'); var _tplusPoslogin = require('tplus-poslogin'); var _index = require('../../tipNumKbModalVertical/index.js'); var _index2 = _interopRequireDefault(_index); var _api = require('../../product/api.js'); var _api2 = _interopRequireDefault(_api); var _MemberApi = require('../../../api/MemberApi.js'); var _MemberApi2 = _interopRequireDefault(_MemberApi); var _mobx = require('mobx'); var _mutantsMicrofx = require('mutants-microfx'); var _common = require('../../../util/common.js'); var _common2 = _interopRequireDefault(_common); var _tplusMember = require('tplus-member'); var _mutantsUtil = require('mutants-util'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _initDefineProp(target, property, descriptor, context) { if (!descriptor) return; (0, _defineProperty2.default)(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); } function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.'); } function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object['ke' + 'ys'](descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object['define' + 'Property'](target, property, desc); desc = null; } return desc; } var VoucherFooter = (_dec = (0, _mutantsAppfx.injectViewModel)('Voucher'), _dec(_class = (0, _mutantsMicrofx.observer)(_class = (_class2 = (_temp = _class3 = function (_React$Component) { (0, _inherits3.default)(VoucherFooter, _React$Component); function VoucherFooter(props, context) { (0, _classCallCheck3.default)(this, VoucherFooter); var _this2 = (0, _possibleConstructorReturn3.default)(this, (VoucherFooter.__proto__ || (0, _getPrototypeOf2.default)(VoucherFooter)).call(this, props, context)); _this2.onValidate = function () { var controllerEvent = _this2.props.controllerEvent; // 需要异步校验 return new _promise2.default(function (resolve, reject) { controllerEvent('onValidate').then(function () { resolve(_this2.props.viewModel.settlementVisiable); }).catch(function (err) { console.warn(err); }); }); }; _this2.onHandleAmount = function (type) { var controllerEvent = _this2.props.controllerEvent; return controllerEvent('getAvailableAmount', { type: type }); }; _initDefineProp(_this2, 'clearVoucherData', _descriptor, _this2); _this2.addInvent = function (val) { console.log('footercontext====', _this2.context); var storeId = _this2.context.storeInfo.storeID; var voucherVM = _this2.props.viewModel; var dataModal = voucherVM.store.data; var Idmember = dataModal.Idmember; var isReturn = _common2.default.getIsReturn(dataModal); var input = val || ""; if (!input) { _tplusComponentsTouch.Message.toast('您还没输入任何东西'); return; } return _api2.default.searchInventory({ Key: input, // 存货条码录入框输入的值,可以是助记码、存货编码,也可以是条形码 SearchType: 0, // “0”不指定,1:“条形码” 2:“非条形码” IdinventoryClass: -2, // 存货分类Id,-1代表常用分类,-2代表全部分类,其他以数据库的为准 PageNo: 1, // 当前页号 从1开始 PageSize: 20, // 每页大小 isReturn: isReturn, Idmember: Idmember, IsSelfCash: _mutantsUtil.platform.isVerticalTouch, Idstore: storeId, posCode: _this2.posCode }).then(function (_ref) { var RetailDetailData = _ref.RetailDetailData, InventoryData = _ref.InventoryData, TotalCount = _ref.TotalCount, IsBarCode = _ref.IsBarCode; if (TotalCount == 1 && IsBarCode) { // 只有一个商品的时候,并且是条形码 _this2.setState({ scanVisible: false }); _this2.justOneResultCallBack(RetailDetailData); return true; } else { _tplusComponentsTouch.Message.toast('无此商品信息', {}, 'warn'); } return false; }); }; _initDefineProp(_this2, 'justOneResultCallBack', _descriptor2, _this2); _this2.onValidate = function () { var controllerEvent = _this2.props.controllerEvent; // 需要异步校验 return new _promise2.default(function (resolve, reject) { controllerEvent('onValidate').then(function () { resolve(_this2.props.viewModel.settlementVisiable); }).catch(function (err) { console.warn(err); }); }); }; _this2.state = { menus: [{ title: '输入商品条码', icon: 'shurutiaoxingma', key: 'scan' }, { title: '使用会员', icon: 'shiyonghuiyuan', key: 'member' }], scanVisible: false, underAmountThreshold: false, inputMemVisible: false }; _this2.posCode = _tplusPoslogin.PosInitData && (0, _tplusPoslogin.PosInitData)('posCode'); return _this2; } (0, _createClass3.default)(VoucherFooter, [{ key: 'componentDidMount', value: function componentDidMount() { var _this = this; setTimeout(function () { _common2.default.setFocus(); document.body.addEventListener("click", _common2.default.activeEl); _this.getInput(); }, 0); _mutantsMicrofx.stores.voucherStore.settleSuccess = _this.onSettleSuccess.bind(_this); _mutantsMicrofx.stores.voucherStore.cancelSettle = _this.onCancelSettle.bind(_this); _mutantsMicrofx.stores.voucherStore.onHandleAmount = _this.onHandleAmount.bind(_this); _mutantsMicrofx.stores.voucherStore.voucherVM = _this.props.viewModel; } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { document.body.removeEventListener("click", _common2.default.activeEl); } }, { key: 'getInput', value: function getInput() { var el = document.querySelector('.active-el'); var _this = this; var code = ""; var lastTime = void 0, nextTime = void 0; var lastCode = void 0, nextCode = void 0; el.onkeypress = function (e) { nextCode = e.which; nextTime = new Date().getTime(); if (lastCode != null && lastTime != null && nextTime - lastTime <= 30) { code += String.fromCharCode(lastCode); } else if (lastCode != null && lastTime != null && nextTime - lastTime > 100) { code = ""; } lastCode = nextCode; lastTime = nextTime; if (e.which == 13) { console.log("条形码信息" + ('' + code)); var barcode = code; code = ""; console.log('scanBarcode', barcode); _this.addInvent(barcode); } }; } }, { key: 'click', value: function click(key) { switch (key) { case 'scan': this.scan();break; case 'member': this.inputMember();break; } } }, { key: 'scan', value: function scan() { this.setState({ scanVisible: true }); } }, { key: 'inputMember', value: function inputMember() { this.setState({ inputMemVisible: true }); } /* 结算校验 */ }, { key: 'onSettleSuccess', /* 结算成功回调 */ value: function onSettleSuccess(_ref2) { var openCashBox = _ref2.openCashBox; var controllerEvent = this.props.controllerEvent; // 先打印然后重新开单 controllerEvent('printRetail', { openCashBox: openCashBox }).then(function () { controllerEvent('clearVoucherData'); }); } /* 取消结算 */ }, { key: 'onCancelSettle', value: function onCancelSettle() { var controllerEvent = this.props.controllerEvent; controllerEvent('cancelPromotion', true); } /* 特定报错 重新开单 */ //扫码添加商品 }, { key: 'searchMember', value: function searchMember(input) { var _this3 = this; var controllerEvent = this.props.controllerEvent; _MemberApi2.default.getSearchMember({ currentPage: 1, pageSize: 10, key: input, isSingleMember: true }).then(function (ret) { var _ref3 = ret || {}, columnInfo = _ref3.ColumnInfo, Data = _ref3.Data; var data = JSON.parse(Data) || []; var info = data[0]; if (info) { (0, _tplusMember.userInfoFormat)(info); if ((0, _tplusMember.errMessageTip)(info)) return; _this3.setState({ inputMemVisible: false }); controllerEvent('changeMember', info); } else { _tplusComponentsTouch.Message.toast('会员信息不存在'); } }); } /* 结算校验 */ }, { key: 'onSettleSuccess', /* 结算成功回调 */ value: function onSettleSuccess(_ref4) { var openCashBox = _ref4.openCashBox; var controllerEvent = this.props.controllerEvent; // 先打印然后重新开单 controllerEvent('printRetail', { openCashBox: openCashBox }); } /* 取消结算 */ }, { key: 'onCancelSettle', value: function onCancelSettle() { var controllerEvent = this.props.controllerEvent; controllerEvent('cancelPromotion', true); } /* 支付 */ }, { key: 'pay', value: function pay() { var _this4 = this; var voucherVM = this.props.viewModel; var _this = this; if (!voucherVM.totalQuantity) { return; } this.onValidate().then(function (settlementVisiable) { if (settlementVisiable) { _mutantsMicrofx.stores.voucherStore.setData(_this4.props.viewModel); _mutantsMicrofx.history.push("/selfsettle"); console.log('voucherStore:', _mutantsMicrofx.stores.voucherStore); } }); } }, { key: 'renderLeft', value: function renderLeft() { return _react2.default.createElement( 'div', { className: 'member-input-left' }, _react2.default.createElement( 'span', null, '\u8BF7\u5C06\u4F1A\u5458\u5361' ), _react2.default.createElement('br', null), _react2.default.createElement( 'span', null, '\u5BF9\u51C6\u53F3\u4E0B\u65B9\u626B\u63CF\u53E3' ) ); } }, { key: 'render', value: function render() { var _this5 = this; var menus = this.state.menus; var voucherVM = this.props.viewModel; var dataModal = voucherVM.store.data; if (dataModal.Member) { var name = dataModal.Member.Name || dataModal.Member.Code || ''; rx$.memberNameSubject.next(name); } var amountPrecision = _tplusPoslogin.PosInitData["AmountPrecision"]; var isQuantity = !!voucherVM.totalQuantity; return _react2.default.createElement( 'div', { style: { height: '100%' }, className: 'active-el', tabIndex: '-1' }, _react2.default.createElement( 'div', { className: 'menus' }, menus.map(function (menu, index) { return _react2.default.createElement( 'span', { className: 'menu', key: menu.key, onClick: function onClick(e) { e.stopPropagation(); _this5.click(menu.key); } }, _react2.default.createElement(_tplusComponentsTouch.Ticon, { type: menu.icon, className: 'menu-icon' }), menu.title ); }) ), _react2.default.createElement( 'div', { className: 'vertical-footer' }, _react2.default.createElement( 'span', { className: 'vertical-footer-total' }, '\u5408\u8BA1' ), _react2.default.createElement( 'span', { className: 'vertical-footer-amount' }, '\uFFE5', (dataModal.TotalTaxAmount || 0).toFixed(amountPrecision) ), '\xA0', _react2.default.createElement( 'span', { className: 'vertical-footer-count' }, '\u5171', voucherVM.totalQuantity, '\u4EF6' ), _react2.default.createElement( 'div', { className: 'vertical-footer-paycontainer' }, _react2.default.createElement( 'span', { onClick: function onClick() { _this5.pay(); }, className: 'vertical-footer-pay ' + (isQuantity ? '' : 'vertical-footer-nopay') }, '\u53BB\u652F\u4ED8' ), _react2.default.createElement( 'span', { className: 'tipStyle' }, '\u652F\u4ED8\u65F6\u53EF\u67E5\u770B\u4F18\u60E0\u660E\u7EC6' ) ) ), _react2.default.createElement(_numKbModalVertical2.default, { visible: this.state.scanVisible, cancel: function cancel() { return _this5.setState({ scanVisible: false }); }, title: '商品条形码', placeholder: '请输入商品条码', ok: function ok(val) { return _this5.addInvent(val); } }), _react2.default.createElement(_index2.default, { className: 'member-tipmodal', visible: this.state.inputMemVisible, placeholder: '请输入会员卡号或手机号', cancel: function cancel() { return _this5.setState({ inputMemVisible: false }); }, title: '使用会员', leftView: this.renderLeft, ok: function ok(input) { _this5.searchMember(input); } }) ); } }]); return VoucherFooter; }(_react2.default.Component), _class3.contextTypes = { onEvent: _propTypes2.default.func, viewModel: _propTypes2.default.object, stores: _propTypes2.default.object, storeInfo: _propTypes2.default.object }, _temp), (_applyDecoratedDescriptor(_class2.prototype, 'onSettleSuccess', [_mobx.action], (0, _getOwnPropertyDescriptor2.default)(_class2.prototype, 'onSettleSuccess'), _class2.prototype), _descriptor = _applyDecoratedDescriptor(_class2.prototype, 'clearVoucherData', [_mobx.action], { enumerable: true, initializer: function initializer() { var _this6 = this; return function () { var controllerEvent = _this6.props.controllerEvent; controllerEvent('clearVoucherData', true); }; } }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'justOneResultCallBack', [_mobx.action], { enumerable: true, initializer: function initializer() { var _this7 = this; return function (data) { var controllerEvent = _this7.props.controllerEvent; controllerEvent('justOneResultCallBack', data); }; } }), _applyDecoratedDescriptor(_class2.prototype, 'onSettleSuccess', [_mobx.action], (0, _getOwnPropertyDescriptor2.default)(_class2.prototype, 'onSettleSuccess'), _class2.prototype)), _class2)) || _class) || _class); exports.default = VoucherFooter; //# sourceMappingURL=voucherFooter.js.map