145 lines
2.3 KiB
JavaScript
145 lines
2.3 KiB
JavaScript
import { normalizeQuickOptions as normalizeQuickOptionsFromUtil } from '@/subPackages/sub_business_shared/common/pricePercentAdjust.js'
|
|
|
|
export const orderPriceAdjustMixin = {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
priceAdjustVisible: false,
|
|
|
|
priceAdjustQuickOptions: [],
|
|
|
|
priceAdjustScopeMode: 'sale_only',
|
|
|
|
priceAdjustSubmitting: false,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
canOrderPercentAdjust() {
|
|
|
|
return Number(this.info?.is_pay) !== 1
|
|
|
|
&& Number(this.info?.store?.enable_order_price_percent_adjust) === 1
|
|
|
|
},
|
|
|
|
orderPriceDiscountLabel() {
|
|
|
|
const d = Number(this.info?.price_discount ?? 100)
|
|
|
|
if (d === 100) return ''
|
|
|
|
return this.info?.price_discount_label || this.formatDiscountLabel(d)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
formatDiscountLabel(discount) {
|
|
|
|
const d = Number(discount) || 100
|
|
|
|
if (d <= 0 || d === 100) return ''
|
|
|
|
if (d < 100) {
|
|
|
|
if (d % 10 === 0 && d >= 10) return `${d / 10}折`
|
|
|
|
return `折扣 ${d}%`
|
|
|
|
}
|
|
|
|
return `涨 ${d - 100}%`
|
|
|
|
},
|
|
|
|
normalizeQuickOptions(raw) {
|
|
return normalizeQuickOptionsFromUtil(raw)
|
|
},
|
|
|
|
async loadPriceAdjustMeta(apiFn) {
|
|
|
|
try {
|
|
|
|
const w = await apiFn()
|
|
|
|
if (w?.ok && w.data) {
|
|
|
|
this.priceAdjustScopeMode = w.data.order_price_adjust_scope === 'both' ? 'both' : 'sale_only'
|
|
|
|
this.priceAdjustQuickOptions = this.normalizeQuickOptions(w.data.order_discount_quick_options)
|
|
|
|
}
|
|
|
|
} catch (e) { /* ignore */ }
|
|
|
|
},
|
|
|
|
openOrderPriceAdjust() {
|
|
|
|
if (!this.canOrderPercentAdjust) return
|
|
|
|
this.priceAdjustVisible = true
|
|
|
|
},
|
|
|
|
closePriceAdjust() {
|
|
|
|
this.priceAdjustVisible = false
|
|
|
|
},
|
|
|
|
async onPriceAdjustConfirm(payload, api) {
|
|
|
|
if (this.priceAdjustSubmitting) return
|
|
|
|
this.priceAdjustSubmitting = true
|
|
|
|
try {
|
|
|
|
const w = await api.adjustOrderPercent({
|
|
|
|
product_order_id: this.info.id,
|
|
|
|
price_discount: payload.priceDiscount,
|
|
|
|
})
|
|
|
|
if (!w.ok) return
|
|
|
|
uni.showToast({ title: payload.priceDiscount === 100 ? '已清除浮动' : '调价成功' })
|
|
|
|
this.closePriceAdjust()
|
|
|
|
await this.load()
|
|
|
|
} finally {
|
|
|
|
this.priceAdjustSubmitting = false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
async clearOrderPriceDiscount(api) {
|
|
|
|
return this.onPriceAdjustConfirm({ priceDiscount: 100 }, api)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
export { applyRatioToDrug, applyRatioToDrugs } from '@/subPackages/sub_business_shared/common/pricePercentAdjust.js'
|
|
|