UNPKG

@cqmcui/cqmcui

Version:

轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)

126 lines (125 loc) 3.94 kB
import { computed, openBlock, createElementBlock, normalizeClass, createCommentVNode, createElementVNode, toDisplayString } from "vue"; import { c as createComponent } from "./component-81a4c1d0.js"; import { _ as _export_sfc } from "./_plugin-vue_export-helper-cc2b3d55.js"; import "../locale/lang"; const { componentName, create } = createComponent("price"); const _sfc_main = create({ props: { price: { type: [Number, String], default: 0 }, needSymbol: { type: Boolean, default: true }, symbol: { type: String, default: "¥" }, decimalDigits: { type: Number, default: 2 }, thousands: { type: Boolean, default: false }, position: { type: String, default: "before" }, size: { type: String, default: "normal" }, strikeThrough: { type: Boolean, default: false } }, setup(props) { const classes = computed(() => { return { [componentName]: true, [`${componentName}--strike`]: props.strikeThrough }; }); const showSymbol = computed(() => { const symbol = props.needSymbol ? props.symbol : ""; return symbol; }); const checkPoint = (price) => { return String(price).indexOf(".") > 0; }; const formatThousands = (num) => { if (Number(num) == 0) { num = 0; } if (checkPoint(num)) { num = Number(num).toFixed(props.decimalDigits); num = typeof num.split(".") === "string" ? num.split(".") : num.split(".")[0]; } else { num = num.toString(); } if (props.thousands) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); } else { return num; } }; const formatDecimal = (decimalNum) => { if (Number(decimalNum) == 0) { decimalNum = 0; } if (checkPoint(decimalNum)) { decimalNum = Number(decimalNum).toFixed(props.decimalDigits); decimalNum = typeof decimalNum.split(".") === "string" ? 0 : decimalNum.split(".")[1] ? decimalNum.split(".")[1] : 0; } else { decimalNum = 0; } const result = "0." + decimalNum; const resultFixed = Number(result).toFixed(props.decimalDigits); return String(resultFixed).substring(2, resultFixed.length); }; return { classes, showSymbol, checkPoint, formatThousands, formatDecimal }; } }); const _hoisted_1 = ["innerHTML"]; const _hoisted_2 = ["innerHTML"]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("view", { class: normalizeClass(_ctx.classes) }, [ _ctx.needSymbol && _ctx.position == "before" ? (openBlock(), createElementBlock("view", { key: 0, class: normalizeClass(["cqmc-price--symbol", `cqmc-price--symbol-${_ctx.size}`]), innerHTML: _ctx.showSymbol }, null, 10, _hoisted_1)) : createCommentVNode("", true), createElementVNode("view", { class: normalizeClass(`cqmc-price--${_ctx.size}`) }, toDisplayString(_ctx.formatThousands(_ctx.price)), 3), _ctx.decimalDigits != 0 ? (openBlock(), createElementBlock("view", { key: 1, class: normalizeClass(`cqmc-price--decimal-${_ctx.size}`) }, ".", 2)) : createCommentVNode("", true), createElementVNode("view", { class: normalizeClass(`cqmc-price--decimal-${_ctx.size}`) }, toDisplayString(_ctx.formatDecimal(_ctx.price)), 3), _ctx.needSymbol && _ctx.position == "after" ? (openBlock(), createElementBlock("view", { key: 2, class: normalizeClass(["cqmc-price--symbol", `cqmc-price--symbol-${_ctx.size}`]), innerHTML: _ctx.showSymbol }, null, 10, _hoisted_2)) : createCommentVNode("", true) ], 2); } const Price = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { Price as default };