|
@@ -2,11 +2,13 @@ import Vue from 'vue'
|
|
import {
|
|
import {
|
|
dateFormatter,
|
|
dateFormatter,
|
|
dateFromNow,
|
|
dateFromNow,
|
|
- addSpaceForTel
|
|
|
|
|
|
+ addSpaceForTel,
|
|
|
|
+ upPrice,
|
|
|
|
+ formatPrice
|
|
} from './globalFunctions'
|
|
} from './globalFunctions'
|
|
|
|
|
|
// 注册全局过滤器
|
|
// 注册全局过滤器
|
|
-
|
|
|
|
|
|
+// 分转元
|
|
Vue.filter('fen2Yuan', function (v) {
|
|
Vue.filter('fen2Yuan', function (v) {
|
|
return v / 100
|
|
return v / 100
|
|
})
|
|
})
|
|
@@ -18,6 +20,11 @@ Vue.filter('dateFromNow', dateFromNow)
|
|
// 手机号加空格
|
|
// 手机号加空格
|
|
Vue.filter('addSpaceForTel', addSpaceForTel)
|
|
Vue.filter('addSpaceForTel', addSpaceForTel)
|
|
|
|
|
|
|
|
+// 金额大写
|
|
|
|
+Vue.filter('upPrice', upPrice)
|
|
|
|
+// 金额3位逗号分隔
|
|
|
|
+Vue.filter('formatPrice', formatPrice)
|
|
|
|
+
|
|
// Vue.filter('addSpaceForBank', function (v) {
|
|
// Vue.filter('addSpaceForBank', function (v) {
|
|
// // 纯数字银行卡号字符串加空格
|
|
// // 纯数字银行卡号字符串加空格
|
|
// // return v.replace(/\s/g, '').replace(/(\d{4})(?=\d)/g, '$1 ')
|
|
// // return v.replace(/\s/g, '').replace(/(\d{4})(?=\d)/g, '$1 ')
|
|
@@ -33,74 +40,3 @@ Vue.filter('addSpaceForTel', addSpaceForTel)
|
|
// return v.replace(/\s/g, '').replace(/^(\d{4})\d+(\d{4})$/, '$1 **** **** $2')
|
|
// return v.replace(/\s/g, '').replace(/^(\d{4})\d+(\d{4})$/, '$1 **** **** $2')
|
|
// }
|
|
// }
|
|
// })
|
|
// })
|
|
-
|
|
|
|
-// 金额大写,链接:https://juejin.im/post/5a2a7a5051882535cd4abfce
|
|
|
|
-// upDigit(1682)
|
|
|
|
-// result:"人民币壹仟陆佰捌拾贰元整"
|
|
|
|
-// upDigit(-1693)
|
|
|
|
-// result:"欠壹仟陆佰玖拾叁元整"
|
|
|
|
-Vue.filter('upPrice', function (n) {
|
|
|
|
- const fraction = ['角', '分', '厘']
|
|
|
|
- const digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
|
|
|
|
- const unit = [
|
|
|
|
- ['元', '万', '亿'],
|
|
|
|
- ['', '拾', '佰', '仟']
|
|
|
|
- ]
|
|
|
|
- // const head = n < 0 ? '欠人民币' : '人民币'
|
|
|
|
- const head = ''
|
|
|
|
- n = Math.abs(n)
|
|
|
|
- let s = ''
|
|
|
|
- for (let i = 0; i < fraction.length; i++) {
|
|
|
|
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '')
|
|
|
|
- }
|
|
|
|
- s = s || '整'
|
|
|
|
- n = Math.floor(n)
|
|
|
|
- for (let i = 0; i < unit[0].length && n > 0; i++) {
|
|
|
|
- let p = ''
|
|
|
|
- for (let j = 0; j < unit[1].length && n > 0; j++) {
|
|
|
|
- p = digit[n % 10] + unit[1][j] + p
|
|
|
|
- n = Math.floor(n / 10)
|
|
|
|
- }
|
|
|
|
- s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s
|
|
|
|
- // s = p + unit[0][i] + s;
|
|
|
|
- }
|
|
|
|
- return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
|
|
|
|
-})
|
|
|
|
-
|
|
|
|
-// 金额3位逗号分隔
|
|
|
|
-Vue.filter('formatNumber', function (s, n = -1, comma = false) {
|
|
|
|
- if (n !== -1) n = n > 0 && n <= 20 ? n : 2
|
|
|
|
- const intS = parseInt(s)
|
|
|
|
- let point = '.'
|
|
|
|
- let left = []
|
|
|
|
- let right = ''
|
|
|
|
- s = parseFloat((s + '').replace(/[^\d.-]/g, ''))
|
|
|
|
- // 没传n或者n为-1,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
|
|
|
|
- if (n === -1) {
|
|
|
|
- if (s === intS) {
|
|
|
|
- n = 0
|
|
|
|
- right = ''
|
|
|
|
- point = ''
|
|
|
|
- } else {
|
|
|
|
- n = 2
|
|
|
|
- s = s.toFixed(n)
|
|
|
|
- right = s.split('.')[1]
|
|
|
|
- }
|
|
|
|
- s = s + ''
|
|
|
|
- left = s.split('.')[0].split('').reverse()
|
|
|
|
- } else {
|
|
|
|
- s = parseFloat((s + '').replace(/[^\d.-]/g, '')).toFixed(n) + ''
|
|
|
|
- left = s.split('.')[0].split('').reverse()
|
|
|
|
- right = s.split('.')[1]
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (comma) {
|
|
|
|
- let t = ''
|
|
|
|
- for (let i = 0; i < left.length; i++) {
|
|
|
|
- t += left[i] + ((i + 1) % 3 === 0 && (i + 1) !== left.length ? ',' : '')
|
|
|
|
- }
|
|
|
|
- return t.split('').reverse().join('') + point + right
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return left.reverse().join('') + point + right
|
|
|
|
-})
|
|
|