tplus-pos
Version:
pos module
558 lines (460 loc) • 20.6 kB
JavaScript
;
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