37 lines
1.2 KiB
Vue
37 lines
1.2 KiB
Vue
<template>
|
|
<div>{{maskLoanAndAmountByKeyword(row.content)}}</div>
|
|
</template>
|
|
<script setup>
|
|
const props = defineProps({
|
|
row: Object
|
|
})
|
|
function maskLoanAndAmountByKeyword(str) {
|
|
// Che mã đơn vay sau từ "đơn vay"
|
|
let result = str.replace(/(đơn vay\s+)([A-Z]{2})(\d+)(\d{3})/gi, (m, prefix, letters, middle, last3) => {
|
|
return prefix + letters + '*'.repeat(middle.length) + last3;
|
|
});
|
|
|
|
// Che mã đơn vay sau từ "khoản vay"
|
|
result = result.replace(/(khoản vay\s+)([A-Z]{2})(\d+)(\d{3})/gi, (m, prefix, letters, middle, last3) => {
|
|
return prefix + letters + '*'.repeat(middle.length) + last3;
|
|
});
|
|
|
|
// Che số tiền sau từ "số tiền"
|
|
result = result.replace(/(số tiền\s+)(\d{1,3}(?:,\d{3})*)/gi, (m, prefix, amount) => {
|
|
const digits = amount.replace(/,/g, '');
|
|
if (digits.length <= 3) return prefix + amount;
|
|
const masked = '*'.repeat(digits.length - 3) + digits.slice(-3);
|
|
|
|
// thêm lại dấu phẩy từ phải sang
|
|
const parts = [];
|
|
for (let i = masked.length; i > 0; i -= 3) {
|
|
const start = Math.max(0, i - 3);
|
|
parts.unshift(masked.slice(start, i));
|
|
}
|
|
return prefix + parts.join(',');
|
|
});
|
|
|
|
return result;
|
|
}
|
|
</script>
|