ckgl/node_modules/vant/es/coupon/Coupon.mjs
2024-12-21 13:52:42 +08:00

80 lines
2.5 KiB
JavaScript

import { computed, defineComponent, createVNode as _createVNode } from "vue";
import { makeStringProp, createNamespace, makeRequiredProp } from "../utils/index.mjs";
import { getDate, formatAmount, formatDiscount } from "./utils.mjs";
import { Checkbox } from "../checkbox/index.mjs";
const [name, bem, t] = createNamespace("coupon");
var stdin_default = defineComponent({
name,
props: {
chosen: Boolean,
coupon: makeRequiredProp(Object),
disabled: Boolean,
currency: makeStringProp("\xA5")
},
setup(props) {
const validPeriod = computed(() => {
const {
startAt,
endAt
} = props.coupon;
return `${getDate(startAt)} - ${getDate(endAt)}`;
});
const faceAmount = computed(() => {
const {
coupon,
currency
} = props;
if (coupon.valueDesc) {
return [coupon.valueDesc, _createVNode("span", null, [coupon.unitDesc || ""])];
}
if (coupon.denominations) {
const denominations = formatAmount(coupon.denominations);
return [_createVNode("span", null, [currency]), ` ${denominations}`];
}
if (coupon.discount) {
return t("discount", formatDiscount(coupon.discount));
}
return "";
});
const conditionMessage = computed(() => {
const condition = formatAmount(props.coupon.originCondition || 0);
return condition === "0" ? t("unlimited") : t("condition", condition);
});
return () => {
const {
chosen,
coupon,
disabled
} = props;
const description = disabled && coupon.reason || coupon.description;
return _createVNode("div", {
"class": bem({
disabled
})
}, [_createVNode("div", {
"class": bem("content")
}, [_createVNode("div", {
"class": bem("head")
}, [_createVNode("h2", {
"class": bem("amount")
}, [faceAmount.value]), _createVNode("p", {
"class": bem("condition")
}, [coupon.condition || conditionMessage.value])]), _createVNode("div", {
"class": bem("body")
}, [_createVNode("p", {
"class": bem("name")
}, [coupon.name]), _createVNode("p", {
"class": bem("valid")
}, [validPeriod.value]), !disabled && _createVNode(Checkbox, {
"class": bem("corner"),
"modelValue": chosen
}, null)])]), description && _createVNode("p", {
"class": bem("description")
}, [description])]);
};
}
});
export {
stdin_default as default
};