UNPKG

captain-ui

Version:

有赞vue wap业务组件库

148 lines (132 loc) 4.45 kB
import "vant/es/toast/style"; import _Toast from "vant/es/toast"; import _extends from "@babel/runtime/helpers/esm/extends"; /* eslint-disable camelcase */ import Vue from 'vue'; import ajax from '../../../common/ajax'; import Config from '../config'; import FailGoodsDialog from './FailGoodsDialog'; var instance; var alertFailGoods = function alertFailGoods(goods) { if (!instance) { instance = new (Vue.extend(FailGoodsDialog))({ el: document.createElement('div') }); instance.$on('input', function (value) { instance.value = value; }); document.body.appendChild(instance.$el); } return new Promise(function (resolve, reject) { return _extends(instance, { value: true, goods: goods, resolve: resolve, reject: reject }); }); }; var BuyAgain = /*#__PURE__*/ function () { function BuyAgain(options) { if (options === void 0) { options = {}; } this.url = options.url || Config.BUY_AGAIN.BUY_AGAIN_URL; this.cartUrl = options.cartUrl || Config.BUY_AGAIN.CART_URL; this.data = options.data || {}; this.orderNo = this.data.order_no || ''; this.kdtId = this.data.kdt_id || ''; this.goodsList = this.data.goodsList || []; this.callback = options.callback; this.isBuying = false; /* this.unsupportBuyAgainIntance = options.unsupportBuyAgainIntance; */ } var _proto = BuyAgain.prototype; _proto.buyAgain = function buyAgain() { var _this = this; ajax({ url: this.url, method: 'POST', data: { order_no: this.orderNo, kdt_id: this.kdtId } }).then(function (resp) { if (resp.code === 0) { var data = Array.isArray(resp.data) ? resp.data : []; var cartUrl = _this.cartUrl + '?kdt_id=' + _this.kdtId; // 返回的数据是添加到购物车失败的商品数组,全部成功时返回空数组 if (data.length === 0) { _this._saveSessionStorage(_this.goodsList, _this.kdtId); window.location.href = cartUrl; } else { // 商品sku与数量信息需要从订单商品列表中获取,然后构造一个新的数组 var parsedGoodsList = _this._buildGoodsList(_this.goodsList, data); _this._saveSessionStorage(parsedGoodsList.successList, _this.kdtId); alertFailGoods(parsedGoodsList.failList).then(function () { // 商品全部添加失败时直接隐藏弹层,不跳转 if (_this.goodsList.length === data.length) {// 关闭什么都不做 } else { window.location.href = cartUrl; } }); } } else { _Toast(resp.msg); } }).catch(function () { _Toast('再来一单请求失败。'); }); }; _proto._saveSessionStorage = function _saveSessionStorage(goodsList, kdtId) { try { var parsedList = goodsList.map(function (goods) { var goods_id = goods.goods_id, sku_id = goods.sku_id, num = goods.num, _goods$activity_id = goods.activity_id, activity_id = _goods$activity_id === void 0 ? 0 : _goods$activity_id; return { goods_id: goods_id, sku_id: sku_id, num: num, activity_id: activity_id }; }); window.sessionStorage.setItem('buyAgain', JSON.stringify({ kdtId: kdtId, goodsList: parsedList })); } catch (e) { console.log('e'); } }; _proto._buildGoodsList = function _buildGoodsList(goodsList, failGoodsList) { var failList = failGoodsList.map(function (failGoods) { var goodsArr = goodsList.filter(function (goods) { return goods.sku_id === failGoods.sku_id && goods.goods_id === failGoods.goods_id; }); var findedGoods = goodsArr[0] || {}; var sku = findedGoods.sku.map(function (item) { return item.v; }).join(' '); return { title: findedGoods.title || findedGoods.goods_info.title || '', num: findedGoods.num, sku: sku }; }); var successList = goodsList.filter(function (goods) { return !failGoodsList.some(function (failGoods) { return goods.sku_id === failGoods.sku_id && goods.goods_id === failGoods.goods_id; }); }); return { failList: failList, successList: successList }; }; return BuyAgain; }(); export default BuyAgain;