This commit is contained in:
Viet An
2026-06-18 16:22:37 +07:00
parent 8b07ab4e65
commit 667832078d
23 changed files with 395 additions and 412 deletions

View File

@@ -530,102 +530,6 @@ export default defineNuxtPlugin((nuxtApp) => {
return result;
};
const numberToVietnameseCurrency = (amount) => {
if (amount === null || amount === undefined || amount === "") return "";
amount = Number(amount);
if (isNaN(amount)) return "";
const units = ["", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"];
const scales = ["", "nghìn", "triệu", "tỷ"];
function readThreeDigits(num) {
let result = "";
const hundred = Math.floor(num / 100);
const ten = Math.floor((num % 100) / 10);
const unit = num % 10;
if (hundred > 0) {
result += units[hundred] + " trăm";
if (ten === 0 && unit > 0) result += " lẻ";
}
if (ten > 1) {
result += " " + units[ten] + " mươi";
if (unit === 1) result += " mốt";
else if (unit === 5) result += " lăm";
else if (unit > 0) result += " " + units[unit];
} else if (ten === 1) {
result += " mười";
if (unit === 5) result += " lăm";
else if (unit > 0) result += " " + units[unit];
} else if (ten === 0 && unit > 0 && hundred === 0) {
result += units[unit];
}
return result.trim();
}
let text = "";
let scaleIndex = 0;
while (amount > 0) {
const chunk = amount % 1000;
if (chunk > 0) {
text = `${readThreeDigits(chunk)} ${scales[scaleIndex]} ${text}`;
}
amount = Math.floor(amount / 1000);
scaleIndex++;
}
text = text.trim();
text = text.charAt(0).toUpperCase() + text.slice(1);
return text;
};
const getFirstAndLastName = (fullName, showDots) => {
if (!fullName) return "";
var parts = fullName.trim().replace(/\s+/g, " ").split(" ");
if (parts.length === 1) return parts[0];
var first = parts[0];
var last = parts[parts.length - 1];
return showDots ? first + "..." + last : first + " " + last;
};
const paymentQR = (content = "", bankCode = "MB", amount = 0) => {
const listBanks = [
{
bank: {
code: "MB",
name: "MB Bank",
},
account: {
number: "146768686868",
name: "CONG TY CO PHAN BAT DONG SAN UTOPIA",
},
content: "Thanh toán hóa đơn",
},
];
let bankInfo = listBanks.find(
(item) => item.bank.code && bankCode && item.bank.code.toLowerCase() === bankCode.toLowerCase(),
);
if (!bankInfo) return;
const params = new URLSearchParams({
addInfo: content || bankInfo.content,
accountName: bankInfo.account.name || "",
amount: amount || 0,
});
return `https://img.vietqr.io/image/${bankInfo.bank.code}-${bankInfo.account.number}-print.png?${params.toString()}`;
};
function shortenCurrency(amount) {
return new Intl.NumberFormat("en", { notation: "compact" }).format(Number(amount));
}
@@ -654,10 +558,7 @@ export default defineNuxtPlugin((nuxtApp) => {
lang,
formatFileSize,
numberToVietnamese,
numberToVietnameseCurrency,
formatDateVN,
getFirstAndLastName,
paymentQR,
shortenCurrency,
},
};