fix: 修复某处金额转换丢失精度的bug

v2
xiaojunnuo 2024-12-26 01:01:28 +08:00
parent b31c0b6a8d
commit d2d6f12218
5 changed files with 32 additions and 5 deletions

View File

@ -9,6 +9,10 @@ export * from './util.merge.js';
export * from './util.cache.js'; export * from './util.cache.js';
export * from './util.string.js'; export * from './util.string.js';
export * from './util.lock.js'; export * from './util.lock.js';
export * from './util.mitter.js';
export * from './util.id.js';
export * from './util.domain.js';
export * from './util.amount.js';
import { stringUtils } from './util.string.js'; import { stringUtils } from './util.string.js';
import sleep from './util.sleep.js'; import sleep from './util.sleep.js';
import { http, download } from './util.request.js'; import { http, download } from './util.request.js';
@ -23,6 +27,7 @@ import { cache } from './util.cache.js';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { domainUtils } from './util.domain.js'; import { domainUtils } from './util.domain.js';
import { optionsUtils } from './util.options.js'; import { optionsUtils } from './util.options.js';
import { amountUtils } from './util.amount.js';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import * as id from './util.id.js'; import * as id from './util.id.js';
import { locker } from './util.lock.js'; import { locker } from './util.lock.js';
@ -46,4 +51,5 @@ export const utils = {
string: stringUtils, string: stringUtils,
locker, locker,
mitter, mitter,
amount: amountUtils,
}; };

View File

@ -0,0 +1,9 @@
export const amountUtils = {
toCent(amount: number): number {
return parseInt((amount * 100).toFixed(0));
},
toYuan(amount: number): number {
return parseFloat((amount / 100).toFixed(2));
},
};

View File

@ -6,6 +6,7 @@ import * as mitt from "./util.mitt";
import { routerUtils } from "./util.router"; import { routerUtils } from "./util.router";
import { treeUtils } from "./util.tree"; import { treeUtils } from "./util.tree";
import { hashUtils } from "./util.hash"; import { hashUtils } from "./util.hash";
import { amountUtils } from "./util.amount";
export const util = { export const util = {
...envs, ...envs,
...sites, ...sites,
@ -14,5 +15,7 @@ export const util = {
...mitt, ...mitt,
router: routerUtils, router: routerUtils,
tree: treeUtils, tree: treeUtils,
hash: hashUtils hash: hashUtils,
amount: amountUtils
}; };
export const utils = util;

View File

@ -0,0 +1,9 @@
export const amountUtils = {
toCent(amount: number): number {
return parseInt((amount * 100).toFixed(0));
},
toYuan(amount: number): number {
return parseFloat((amount / 100).toFixed(2));
}
};

View File

@ -7,7 +7,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from "vue"; import { computed } from "vue";
import { utils } from "/@/utils";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
modelValue?: number; modelValue?: number;
@ -34,11 +34,11 @@ const priceValue = computed(() => {
if (props.modelValue == null) { if (props.modelValue == null) {
return 0; return 0;
} }
return (props.modelValue / 100.0).toFixed(2); return utils.amount.toYuan(props.modelValue);
}); });
const priceLabel = computed(() => { const priceLabel = computed(() => {
if (priceValue.value === 0 || priceValue.value === "0.00") { if (priceValue.value === 0) {
return "免费"; return "免费";
} }
return `¥${priceValue.value}`; return `¥${priceValue.value}`;
@ -47,7 +47,7 @@ const priceLabel = computed(() => {
const emit = defineEmits(["update:modelValue"]); const emit = defineEmits(["update:modelValue"]);
const onPriceChange = (price: number) => { const onPriceChange = (price: number) => {
emit("update:modelValue", price * 100); emit("update:modelValue", utils.amount.toCent(price));
}; };
</script> </script>