const eventCode = { template: `
{{showText}}
{{showText}}
`, data() { return { eventId: "", // 活动促销ID options: [], discount: 0, visibleShow: false, nowParams: {}, }; }, computed: { showText() { return this.eventId ? this.calcLebal( this.options.filter((item) => item.id === this.eventId)[0] ) : lang.goods_text6; }, }, watch: { billing_cycle_time() { this.getEventList(); }, amount() { this.getEventList(); }, qty() { this.getEventList(); }, }, props: { id: { type: String | Number, }, // 场景中的所有商品ID product_id: { type: String | Number, required: true, }, // 需要支付的原价格 amount: { type: Number | String, required: true, }, // 购买数量 qty: { type: Number | String, default: 1, required: true, }, //周期时间 billing_cycle_time: { type: Number | String, required: true, }, disabled: { type: Boolean, default: false, }, }, created() { this.getEventList(); }, mounted() {}, methods: { calcLebal(item) { if (!item) { return ""; } return item.type === "percent" ? lang.goods_text1 + " " + item.value + "%" : item.type === "reduce" ? lang.goods_text2 + item.full + lang.goods_text3 + " " + item.value : lang.goods_text6; }, getEventList() { const params = { id: this.product_id, billing_cycle_time: this.billing_cycle_time, qty: this.qty, amount: this.amount, billing_cycle_time: this.billing_cycle_time, }; if ( JSON.stringify(this.nowParams) == JSON.stringify(params) || !this.billing_cycle_time ) { // 没有变化 防止重复请求 return; } this.nowParams = params; eventPromotion(params) .then((res) => { const event_list = res.data.list; const isTop = res.data.addon_event_promotion_does_not_participate === "top"; if (event_list.length > 0) { const no_select = { id: 0, type: "no", value: 0, full: 0, }; if (isTop) { event_list.unshift(no_select); } else { event_list.push(no_select); } this.options = event_list; // 默认选中处理 if ( this.id && this.options.map((item) => item.id).includes(this.id) ) { this.eventId = this.id; } else { this.eventId = this.options[0]?.id || ""; } } }) .catch((err) => { this.$message.error(err.data.msg); }) .finally(() => { this.changePromotion(); }); }, changePromotion() { this.$emit("change", { discount: this.eventId ? this.discount : 0, id: this.eventId ? this.eventId : "", }); // applyEventPromotion({ // event_promotion: this.eventId, // product_id: this.product_id, // qty: this.qty, // amount: this.amount, // billing_cycle_time: this.billing_cycle_time, // }) // .then((res) => { // this.discount = res.data.data.discount; // }) // .catch((err) => { // this.discount = 0; // console.log(err.data); // }) // .finally(() => { // }); }, clearPromotion() { this.discount = 0; this.$emit("change", { discount: this.discount, id: this.eventId }); }, }, };