import htmlParser from '@/common/js/html-parser'; export default { options: { styleIsolation: 'shared' }, data() { return { outTradeNo: '', isIphoneX: false, orderCreateData: { is_balance: 0, is_point: 1, is_invoice: 0, // 是否需要发票 0 无发票 1 有发票 invoice_type: 0, // 发票类型 1 纸质 2 电子 invoice_title_type: 1, // 抬头类型 1 个人 2 企业 is_tax_invoice: 0, // 是否需要增值税专用发票 0 不需要 1 需要 /*coupon: { coupon_id: 0 },*/ coupon: [], delivery: {}, member_goods_card: {}, // 会员次卡 order_key: '', buyer_message: '' }, paymentData: null, calculateData: null, tempData: null, storeId: 0, deliveryTime: '', // 提货时间 memberAddress: null, // 会员收货地址 localMemberAddress: null, // 会员本地配送收货地址 isRepeat: false, promotionInfo: null, transactionAgreement: {}, // 购买须知 tempFormData: null, menuButtonBounding: {}, // 小程序胶囊属性 storeConfig: null, localConfig: null, selectGoodsCard: { skuId: 0, itemId: 0, cardList: {} }, // 当前选择的次卡 storeData: [], latitude: '', longitude: '', coupon_list: [], modules: [], //商户 shop_goods_list:[], merchCoupon: { merch_id: 0, data: [] }, selectCouponId:0 } }, inject: ['promotion'], created() { // #ifdef MP this.menuButtonBounding = uni.getMenuButtonBoundingClientRect(); // #endif this.isIphoneX = this.$util.uniappIsIPhoneX() if (this.storeToken) { Object.assign(this.orderCreateData, uni.getStorageSync(this.createDataKey)) if (this.location) { this.orderCreateData.latitude = this.location.latitude; this.orderCreateData.longitude = this.location.longitude; this.latitude = this.location.latitude; this.longitude = this.location.longitude; } this.payment(); } else { this.$nextTick(() => { this.$refs.loadingCover.hide(); this.$refs.login.open(this.$util.getCurrentRoute().path) }) } this.getTransactionAgreement(); }, computed: { goodsData() { if (this.paymentData) { this.paymentData.goods_list.forEach(item => { if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format); }) return this.paymentData; } }, calculateGoodsData() { if (this.calculateData) { this.calculateData.goods_list.forEach(item => { if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format); }) return this.calculateData; } }, // 余额可抵扣金额 balanceDeduct() { if (this.calculateData) { if (this.calculateData.member_account && this.calculateData.member_account.balance_total <= parseFloat(this.calculateData.order_money).toFixed(2)) { return parseFloat(this.calculateData.member_account.balance_total).toFixed(2); } else { return parseFloat(this.calculateData.order_money).toFixed(2); } } }, // 门店列表 storeList() { return this.getStoreList(); }, // 门店信息 storeInfo() { let storeList = this.getStoreList(); if (storeList && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'express' && this.storeId) { return storeList[this.orderCreateData.delivery.store_id]; } return null; }, // 会员卡购买周期 cardChargeType() { if (this.paymentData && this.paymentData.recommend_member_card && Object.keys(this.paymentData.recommend_member_card).length > 0) { let charge_rule_arr = []; let charge_rule = this.paymentData.recommend_member_card.charge_rule; Object.keys(charge_rule).forEach((key, index) => { switch (key) { case 'week': charge_rule_arr.push({ 'key': key, 'value': charge_rule[key], 'title': '周卡', unit: '周' }); break; case 'month': charge_rule_arr.push({ 'key': key, 'value': charge_rule[key], 'title': '月卡', unit: '月' }); break; case 'quarter': charge_rule_arr.push({ 'key': key, 'value': charge_rule[key], 'title': '季卡', unit: '季' }); break; case 'year': charge_rule_arr.push({ 'key': key, 'value': charge_rule[key], 'title': '年卡', unit: '年' }); break; } }) return charge_rule_arr; } } }, watch: { storeToken: function (nVal, oVal) { this.payment(); }, deliveryTime: function (nVal) { if (!nVal) this.$refs.timePopup.refresh(); }, location: function (nVal) { if (nVal) { this.orderCreateData.latitude = nVal.latitude; this.orderCreateData.longitude = nVal.longitude; this.latitude = nVal.latitude; this.longitude = nVal.longitude; this.payment(); } }, calculateGoodsData(nVal) { if (nVal && nVal.local_config && nVal.local_config.info.time_is_open && !this.deliveryTime) this.localtime('no'); } }, methods: { //多商户商品分类 goodsSpecFormat(goods_list){ goods_list.forEach(item => { if (item.sku_spec_format) item.sku_spec_format = JSON.parse(item.sku_spec_format); }) return goods_list }, /** * 父级页面onShow调用 */ pageShow() { if (uni.getStorageSync('addressBack')) { uni.removeStorageSync('addressBack'); this.payment(); } }, /** * 获取订单结算数据 */ payment() { this.$api.sendRequest({ url: this.api.payment, data: this.handleCreateData(), success: res => { if (res.code == 0 && res.data) { let data = res.data; // #ifdef MP-WEIXIN var scene = uni.getStorageSync('is_test') ? 1175 : wx.getLaunchOptionsSync().scene; if ([1175, 1176, 1177, 1191, 1195].indexOf(scene) != -1 && data.delivery.express_type) { data.delivery.express_type = data.delivery.express_type.filter(item => item.name == 'express'); } // #endif if (data) { // 配送方式 if (data.delivery.express_type && data.delivery.express_type.length) { let deliveryStorage = uni.getStorageSync('delivery'); let delivery = data.delivery.express_type[0]; data.delivery.express_type.forEach(item => { if (deliveryStorage && item.name == deliveryStorage.delivery_type) { delivery = item; } if (item.name == 'local') this.localConfig = item; if (item.name == 'store') this.storeConfig = item; }) this.selectDeliveryType(delivery, false, data.member_account); } } // 地址、手机号 if (data.is_virtual) { this.orderCreateData.member_address = { mobile: data.member_account.mobile ? data.member_account.mobile : '' } } //记录订单key this.orderCreateData.order_key = data.order_key; this.modules = data.modules; //记录多商户优惠券 this.orderCreateData.coupon = data.coupon //查询优惠券 this.getCouponList(); // 处理表单数据 data = this.handleGoodsFormData(data); // 该方法在父级组件中 this.promotionInfo = this.promotion(data); this.paymentData = data; this.$forceUpdate(); this.calculate(); } else { this.$util.showToast({ title: res.message }); setTimeout(() => { this.$util.redirectTo('/pages/index/index'); }, 1000) } } }) }, //查询优惠券 getCouponList() { //查询优惠券 if (this.modules.indexOf('coupon') != -1) { this.$api.sendRequest({ url: '/api/ordercreate/getcouponlist', data: this.orderCreateData, success: res => { if (res.code == 0 && res.data) { let data = res.data; this.coupon_list = data; this.$forceUpdate(); } else { this.$util.showToast({ title: res.message }); } } }); // this.orderCreateData.coupon.coupon_id = 0; } }, /** * 处理商品表单数据 * @param {Object} data */ handleGoodsFormData(data) { let goodsFormData = uni.getStorageSync('goodFormData'); data.goods_list.forEach(item => { if (item.goods_form) { let formData = {}; if (item.form_data) { item.form_data.map(formIem => { formData[formIem.id] = formIem; }) } else if (goodsFormData && goodsFormData.goods_id == item.goods_id) { goodsFormData.form_data.map(formIem => { formData[formIem.id] = formIem; }) } if (Object.keys(formData).length) { item.goods_form.json_data.forEach(formIem => { if (formData[formIem.id]) { formIem.val = formData[formIem.id].val; } }) } } }); return data; }, /** * 订单创建 */ calculate() { this.$api.sendRequest({ url: this.api.calculate, data: this.handleCreateData(), success: res => { if (this.$refs.loadingCover && this.$refs.loadingCover.isShow) this.$refs.loadingCover.hide(); if (res.code == 0 && res.data) { // 处理表单数据 this.calculateData = this.handleGoodsFormData(res.data); //多商户商品 this.shop_goods_list = res.data.shop_goods_list //--------- this.calculateData.coupon_list = this.coupon_list; if (res.data.delivery) { if (res.data.delivery.delivery_type == 'express') this.memberAddress = res.data.delivery.member_address; if (res.data.delivery.delivery_type == 'local') { this.localMemberAddress = res.data.delivery.member_address; } } // 次卡 res.data.goods_list.forEach(item => { if (item.member_card_list) { if (this.orderCreateData.member_goods_card[item.sku_id]) { let itemId = this.orderCreateData.member_goods_card[item.sku_id]; if (!item.member_card_list[itemId]) delete this.orderCreateData.member_goods_card[item.sku_id]; } } else if (this.orderCreateData.member_goods_card[item.sku_id]) { delete this.orderCreateData.member_goods_card[item.sku_id]; } }); //多商户 this.orderCreateData.coupon = res.data.coupon // if (!res.data.coupon_id) this.orderCreateData.coupon.coupon_id = 0; // else this.orderCreateData.coupon.coupon_id = res.data.coupon_id; this.$forceUpdate(); } else { this.$util.showToast({ title: res.message }); } } }) }, /** * 提交订单 */ create() { if (!this.verify() || this.isRepeat) return; this.isRepeat = true; uni.showLoading({ title: '' }); this.$api.sendRequest({ url: this.api.create, data: this.handleCreateData(), success: res => { uni.hideLoading(); if (res.code == 0) { this.outTradeNo = res.data; uni.removeStorageSync('deliveryTime'); uni.removeStorageSync('goodFormData'); uni.setStorageSync('paySource', ''); if (this.calculateData.pay_money == 0) { // #ifdef MP if (this.paymentData.is_virtual || this.orderCreateData.delivery.delivery_type == 'store') { this.$util.subscribeMessage('ORDER_VERIFY_OUT_TIME,VERIFY_CODE_EXPIRE,VERIFY'); } // #endif this.$util.redirectTo('/pages_tool/pay/result', { code: res.data }, 'redirectTo'); } else { this.openChoosePayment(); } // 更新购物车数量 this.$store.dispatch('getCartNumber'); } else { this.$util.showToast({ title: res.message }); this.isRepeat = false; } } }) }, /** * 处理订单计算、创建传参 */ handleCreateData() { let data = this.$util.deepClone(this.orderCreateData); // 订单表单 if (this.$refs.form) { data.form_data = { form_id: this.paymentData.system_form.id, form_data: this.$util.deepClone(this.$refs.form.formData) }; } // 商品表单 if (this.$refs.goodsForm) { if (!data.form_data) data.form_data = {}; data.form_data.goods_form = {}; this.$refs.goodsForm.forEach(item => { data.form_data.goods_form[item._props.customAttr.sku_id] = { form_id: item._props.customAttr.form_id, form_data: this.$util.deepClone(item.formData) } }) } Object.keys(data).forEach((key) => { let item = data[key]; if (typeof item == 'object') data[key] = JSON.stringify(item); }) if (this.paymentData && this.orderCreateData.is_virtual == 0) { if (data.member_address && this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type != 'store') { delete data.member_address; } } return data; }, /** * 打开支付弹窗 */ openChoosePayment() { // #ifdef MP if (this.paymentData.is_virtual) { if(this.paymentData?.is_virtual_delivery == 1){ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY'); }else{ this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY'); } } else { switch (this.orderCreateData.delivery.delivery_type) { case 'express': //物流配送 this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY'); break; case 'store': //门店自提 this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY'); break; case 'local': //同城配送 this.$util.subscribeMessage('ORDER_URGE_PAYMENT,ORDER_PAY,ORDER_DELIVERY'); break; } } // #endif this.$refs.choosePaymentPopup.getPayInfo(this.outTradeNo); }, verify() { if (this.paymentData.is_virtual == 1) { if (!this.orderCreateData.member_address.mobile) { this.$util.showToast({ title: '请输入预留手机' }); return false; } if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) { this.$util.showToast({ title: '请输入正确的手机号' }); return false; } } else { if (!this.orderCreateData.delivery || !this.orderCreateData.delivery.delivery_type) { this.$util.showToast({ title: '商家未设置配送方式' }); return false; } if ( (this.orderCreateData.delivery.delivery_type == 'express' && !this.memberAddress) || (this.orderCreateData.delivery.delivery_type == 'local' && !this.localMemberAddress) ) { this.$util.showToast({ title: '请先选择您的收货地址' }); return false; } if (this.orderCreateData.delivery.delivery_type == 'store') { if (!this.orderCreateData.delivery.store_id) { this.$util.showToast({ title: '没有可提货的门店,请选择其他配送方式' }); return false; } if (!this.orderCreateData.member_address.mobile) { this.$util.showToast({ title: '请输入预留手机' }); return false; } if (!this.$util.verifyMobile(this.orderCreateData.member_address.mobile)) { this.$util.showToast({ title: '请输入正确的手机号' }); return false; } if (!this.deliveryTime) { this.$util.showToast({ title: '请选择提货时间' }); return false; } } if (this.orderCreateData.delivery.delivery_type == 'local') { if (!this.orderCreateData.delivery.store_id) { this.$util.showToast({ title: '没有可配送的门店,请选择其他配送方式' }); return false; } if (this.calculateGoodsData.config.local.is_use && this.calculateGoodsData.delivery.local.info.time_is_open == 1 && !this.deliveryTime) { this.$util.showToast({ title: '请选择送达时间' }); return false; } } } if (this.$refs.goodsForm) { let formVerify = true; for (let i = 0; i < this.$refs.goodsForm.length; i++) { let item = this.$refs.goodsForm[i]; formVerify = item.verify(); if (!formVerify) { break; } } if (!formVerify) return false; } if (this.paymentData.system_form) { let formVerify = this.$refs.form.verify(); if (!formVerify) return false; } return true; }, /** * 选择收货地址 */ selectAddress() { var params = { back: this.$util.getCurrentRoute().path, local: 0, type: 1 } // 外卖配送需要定位地址 if (this.orderCreateData.delivery.delivery_type == 'local') { params.local = 1; params.type = 2; } this.$util.redirectTo('/pages_tool/member/address', params); }, /** * 选择配送方式 * @param data * @param calculate * @param member_account */ selectDeliveryType(data, calculate = true, member_account = null) { if (this.orderCreateData.delivery && this.orderCreateData.delivery.delivery_type == data.name) return; this.orderCreateData.delivery.buyer_ask_delivery_time = { start_date: '', end_date: '' }; this.deliveryTime = ''; let delivery = { delivery_type: data.name, delivery_type_name: data.title }; // 如果是门店配送或者门店自提 if (data.name == 'store' || data.name == 'local') { if (data.store_list[0]) { delivery.store_id = data.store_list[0].store_id; } this.storeId = delivery.store_id ? delivery.store_id : 0; if (!this.orderCreateData.member_address) { if (this.paymentData) { this.orderCreateData.member_address = { name: this.paymentData.member_account.nickname, mobile: this.paymentData.member_account.mobile }; } else if (member_account) { this.orderCreateData.member_address = { name: member_account.nickname, mobile: member_account.mobile }; } } } this.$set(this.orderCreateData, 'delivery', delivery); uni.setStorageSync('delivery', delivery); // 配送方式不为门店配送时 if (this.orderCreateData.delivery.delivery_type != 'express' && !this.location) this.$util.getLocation(); if (calculate) this.payment(); if (data.name == 'store') this.storetime('no'); if (data.name == 'local') this.localtime('no'); }, /** * 图片错误 * @param {Object} index */ imageError(index) { this.paymentData.goods_list[index].sku_image = this.$util.getDefaultImage().goods; this.calculateData.goods_list[index].sku_image = this.$util.getDefaultImage().goods; this.$forceUpdate(); }, /** * 选择门店 * @param {Object} data */ selectPickupPoint(data) { if (data.store_id != this.storeId) { this.storeId = data.store_id; this.orderCreateData.delivery.store_id = data.store_id; this.payment(); this.resetDeliveryTime(); // 存储所选门店 let delivery = uni.getStorageSync('delivery'); delivery.store_id = data.store_id; uni.setStorageSync('delivery', delivery) } this.$refs.deliveryPopup.close(); }, /** * 重置提货时间 */ resetDeliveryTime() { this.orderCreateData.delivery.buyer_ask_delivery_time = { start_date: '', end_date: '' }; this.deliveryTime = ''; uni.removeStorageSync('deliveryTime'); }, /** * 门店 */ storetime(type = '') { if (this.storeInfo) { let data = this.$util.deepClone(this.storeInfo); data.delivery_time = typeof data.delivery_time == 'string' && data.delivery_time ? JSON.parse(data.delivery_time) : data.delivery_time; if (!data.delivery_time || data.delivery_time.length == undefined && !data.delivery_time.length) { data.delivery_time = [{ start_time: data.start_time, end_time: data.end_time }] } let obj = { delivery: this.orderCreateData.delivery, dataTime: data }; this.$refs.timePopup.open(obj, type); this.$forceUpdate(); } }, /** * 选择自提时间 * @param {Object} data */ selectPickupTime(data) { this.deliveryTime = data.data.month + '(' + data.data.time + ')'; this.orderCreateData.delivery.buyer_ask_delivery_time = { start_date:data.data.start_date, end_date:data.data.end_date }; //将时间缓存,避免切换地址时重置 uni.setStorageSync('deliveryTime', { 'deliveryTime': this.deliveryTime, 'buyer_ask_delivery_time': this.orderCreateData.delivery.buyer_ask_delivery_time, 'delivery_type': this.orderCreateData.delivery.delivery_type }); }, storeImgError() { this.storeInfo.store_image = this.$util.getDefaultImage().store; }, openPopup(ref) { if (ref == 'deliveryPopup' && (!this.storeList || Object.keys(this.storeList).length <= 1)) return; this.tempData = this.$util.deepClone(this.orderCreateData); this.$refs[ref].open(); }, closePopup(ref) { this.orderCreateData = this.$util.deepClone(this.tempData); this.$refs[ref].close(); this.tempData = null; }, //优惠券单独多商户 /** * 显示店铺优惠券信息 * @param {Object} siteId * @param {Object} couponData */ openSiteCoupon(merch_id) { this.tempData = this.$util.deepClone(this.orderCreateData); this.merchCoupon.merch_id = merch_id; this.selectCouponId = this.orderCreateData.coupon[merch_id].coupon_id; // this.selectCouponMoney = this.orderCreateData.coupon[siteId].coupon_money; this.merchCoupon.data = this.coupon_list[merch_id]; this.$refs.couponPopup.open(); this.$forceUpdate(); }, /**商户选择券*/ selectCoupon(data,merch_id) { // if (this.orderCreateData.coupon[merch_id].coupon_id == data.coupon_id){ // this.orderCreateData.coupon[merch_id].coupon_id = 0 // }else{ // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id // }; if (this.selectCouponId != data.coupon_id) { this.selectCouponId = data.coupon_id; } else { this.selectCouponId = 0; } this.$forceUpdate(); // this.orderCreateData.coupon[merch_id].coupon_id = data.coupon_id console.log(this.selectCouponId) }, //确定使用优惠券 useCpopon() { console.log(this.merchCoupon.merch_id) this.orderCreateData.coupon[this.merchCoupon.merch_id].coupon_id = this.selectCouponId; console.log(this.orderCreateData.coupon) this.$refs.couponPopup.close(); this.calculate(); }, //------------------- /** * 选择优惠券 * @param {Object} data */ /*selectCoupon(data) { if (this.orderCreateData.coupon.coupon_id == data.coupon_id) this.orderCreateData.coupon = { coupon_id: 0 }; else this.orderCreateData.coupon = { coupon_id: data.coupon_id }; },*/ /** * 使用优惠券 */ // useCpopon() { // this.$refs.couponPopup.close(); // this.calculate(); // }, /** * 切换发票开关 */ changeIsInvoice() { if (this.orderCreateData.is_invoice == 0) { this.orderCreateData.is_invoice = 1; if (!this.orderCreateData.invoice_type) this.orderCreateData.invoice_type = this.goodsData.invoice.invoice_type.split(',')[0]; } else { this.orderCreateData.is_invoice = 0; } }, /** * 切换发票类型 * @param {Object} invoice_type */ changeInvoiceType(invoice_type) { this.orderCreateData.invoice_type = invoice_type; }, /** * 切换发票个人还是企业 * @param {Object} invoice_title_type */ changeInvoiceTitleType(invoice_title_type) { this.orderCreateData.invoice_title_type = invoice_title_type; }, /** * 切换增值税专用发票开关 */ changeIsTaxInvoice() { if (this.orderCreateData.is_tax_invoice == 0) this.orderCreateData.is_tax_invoice = 1; else this.orderCreateData.is_tax_invoice = 0; this.$forceUpdate(); }, /** * 选择发票内容 * @param {Object} invoice_content */ changeInvoiceContent(invoice_content) { this.orderCreateData.invoice_content = invoice_content; this.$forceUpdate(); }, /** * 验证发票内容 */ invoiceVerify() { if (!this.orderCreateData.invoice_title) { this.$util.showToast({ title: '请填写发票抬头' }); return false; } if (!this.orderCreateData.taxpayer_number && this.orderCreateData.invoice_title_type == 2) { this.$util.showToast({ title: '请填写纳税人识别号' }); return false; } if (this.orderCreateData.invoice_type == 1 && !this.orderCreateData.invoice_full_address && this.paymentData.is_virtual == 1) { this.$util.showToast({ title: '请填写发票邮寄地址' }); return false; } if (this.orderCreateData.invoice_type == 2 && !this.orderCreateData.invoice_email) { this.$util.showToast({ title: '请填写邮箱' }); return false; } if (this.orderCreateData.invoice_type == 2) { var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/; if (!reg.test(this.orderCreateData.invoice_email)) { this.$util.showToast({ title: '请填写正确的邮箱' }); return false; } } if (!this.orderCreateData.invoice_content) { this.$util.showToast({ title: '请选择发票内容' }); return false; } return true; }, /** * 保存发票设置 */ saveInvoice() { if (this.orderCreateData.is_invoice == 1 && !this.invoiceVerify()) return; this.calculate(); this.$refs.invoicePopup.close(); }, /** * 保存留言 */ saveBuyerMessage() { this.$refs.buyerMessagePopup.close(); }, /** * 选择会员卡 */ selectMemberCard() { this.orderCreateData.is_open_card = this.orderCreateData.is_open_card ? 0 : 1; if (!this.orderCreateData.member_card_unit) this.orderCreateData.member_card_unit = this.cardChargeType[0].key; this.payment(); }, /** * 选择会员卡充值类型 * @param {Object} key */ selectMembercardUnit(key) { this.orderCreateData.member_card_unit = key; this.calculate(); }, /** * 使用积分抵扣 */ usePoint() { this.orderCreateData.is_point = this.orderCreateData.is_point ? 0 : 1; this.calculate(); }, /** * 支付弹窗关闭 */ payClose() { // 更新购物车数量 this.$store.dispatch('getCartNumber'); this.$util.redirectTo('/pages/order/detail', { order_id: this.$refs.choosePaymentPopup.payInfo.order_id }, 'redirectTo'); }, /** * 同城配送送达时间 */ localtime(type = '') { if (this.calculateGoodsData && this.calculateGoodsData.config.local) { let data = this.$util.deepClone(this.calculateGoodsData.delivery.local.info); if (Object.keys(data).length) { if (data.delivery_time) { data.end_time = data.delivery_time[(data.delivery_time.length - 1)].end_time; } let obj = { delivery: this.orderCreateData.delivery, dataTime: data } this.$refs.timePopup.open(obj, type); } } }, /** * 剩余起送价 */ surplusStartMoney() { let money = 0; if (this.calculateData && this.calculateData.delivery && this.calculateData.delivery.delivery_type == 'local') { let startDeliveryMoney = this.calculateGoodsData.delivery.start_money ?? 0; money = parseFloat(startDeliveryMoney) - parseFloat(this.calculateData.goods_money); money = money < 0 ? 0 : money; } return money; }, /** * 交易协议 */ getTransactionAgreement() { this.$api.sendRequest({ url: '/api/order/transactionagreement', success: res => { if (res.data) { this.transactionAgreement = res.data; if (this.transactionAgreement.content) this.transactionAgreement.content = htmlParser(this.transactionAgreement.content); } } }) }, editForm(index) { this.tempFormData = { index: index, json_data: this.$util.deepClone(this.goodsData.goods_list[index].goods_form.json_data) }; this.$refs.editFormPopup.open(); }, saveForm() { if (this.$refs.tempForm.verify()) { this.$set(this.paymentData.goods_list[this.tempFormData.index].goods_form, 'json_data', this.$refs.tempForm.formData); this.$refs.editFormPopup.close(); } }, /** * 切换次卡 * @param {Object} index */ selectMemberGoodsCard(index) { let sku_id = this.goodsData.goods_list[index].sku_id; this.selectGoodsCard = { skuId: sku_id, itemId: this.orderCreateData.member_goods_card[sku_id] ? this.orderCreateData.member_goods_card[sku_id] : 0, cardList: this.$util.deepClone(this.calculateGoodsData.goods_list[index].member_card_list), click: (item_id) => { this.selectGoodsCard.itemId = this.selectGoodsCard.itemId == item_id ? 0 : item_id; } } this.$refs.memberGoodsCardPopup.open(); }, /** * 选择次卡 */ saveMemberGoodsCard() { this.orderCreateData.member_goods_card[this.selectGoodsCard.skuId] = this.selectGoodsCard.itemId || 0; this.$refs.memberGoodsCardPopup.close(); this.payment(); }, back() { uni.navigateBack({ delta: 1 }); }, getStoreList() { let storeList = null; if (this.orderCreateData.delivery) { if (this.orderCreateData.delivery.delivery_type == 'local' && this.localConfig) { storeList = this.localConfig.store_list; storeList = storeList.reduce((res, item) => { return { ...res, [item.store_id]: item }; }, {}); } if (this.orderCreateData.delivery.delivery_type == 'store' && this.storeConfig) { storeList = this.storeConfig.store_list; storeList = storeList.reduce((res, item) => { return { ...res, [item.store_id]: item }; }, {}); } } return storeList; }, getStore(mescroll) { this.$api.sendRequest({ url: '/api/store/getStorePage', data: { page_size: mescroll.size, page: mescroll.num, latitude: this.latitude ?? '', longitude: this.longitude ?? '', type: this.orderCreateData.delivery.delivery_type }, success: res => { let newArr = []; let msg = res.message; if (res.code == 0 && res.data) { newArr = res.data.list; } mescroll.endSuccess(newArr.length); //设置列表数据 if (mescroll.num == 1) this.storeData = []; //如果是第一页需手动制空列表 this.storeData = this.storeData.concat(newArr); //追加新数据 }, fail: res => { mescroll.endErr(); } }); } }, filters: { // 金额格式化输出 moneyFormat(money) { return parseFloat(money).toFixed(2); } } }