n20-common-lib 2.5.5 → 2.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.5.5",
3
+ "version": "2.5.7",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -116,4 +116,4 @@
116
116
  "last 2 versions",
117
117
  "not dead"
118
118
  ]
119
- }
119
+ }
@@ -156,6 +156,13 @@ export default {
156
156
  this.pageObj[this.pageKey.size] = this.pageObjC[this.pageKey.size]
157
157
  this.pageObjC[this.pageKey.total] = this.pageObj[this.pageKey.total]
158
158
  this.$emit('change', this.pageObjC)
159
+ },
160
+ pageObj: {
161
+ immediate: true,
162
+ deep: true,
163
+ handler(newValue, oldValue) {
164
+ this.pageObjC = this.pageObj
165
+ }
159
166
  }
160
167
  },
161
168
  methods: {
@@ -2,45 +2,80 @@ const CHINESE_NUMERALS = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒'
2
2
 
3
3
  /**
4
4
  *
5
- * @param {number|string} num 需转换的金额
5
+ * @param {number|string} amount 需转换的金额
6
6
  */
7
- export const convert = (num) => {
8
- const digits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
9
- const integerUnits = [
10
- ['', '万', '亿'],
11
- ['', '', '', '']
12
- ]
13
- const negativeSign = num < 0 ? '' : ''
14
- num = Math.abs(num)
15
-
16
- let result = ''
17
-
18
- // 处理小数部分
19
- const decimal = Math.round((num - Math.floor(num)) * 100)
20
- if (decimal > 0) {
21
- result = digits[Math.floor(decimal / 10)] + '' + digits[decimal % 10] + '分'
22
- } else {
23
- result = '整'
7
+ export const convert = (money) => {
8
+ var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖') //汉字的数字
9
+ var cnIntRadice = new Array('', '拾', '佰', '仟') //基本单位
10
+ var cnIntUnits = new Array('', '万', '亿', '兆') //对应整数部分扩展单位
11
+ var cnDecUnits = new Array('', '', '', '') //对应小数部分单位
12
+ var cnInteger = '整' //整数金额时后面跟的字符
13
+ var cnIntLast = '' //整数完以后的单位
14
+ //最大处理的数字
15
+ var maxNum = 999999999999999.9999
16
+ var integerNum //金额整数部分
17
+ var decimalNum //金额小数部分
18
+ //输出的中文金额字符串
19
+ var chineseStr = ''
20
+ var parts //分离金额后用的数组,预定义
21
+ if (money == '') {
22
+ return ''
24
23
  }
25
- num = Math.floor(num)
26
24
 
27
- // 处理整数部分
28
- for (let i = 0; i < integerUnits[0].length && num > 0; i++) {
29
- let temp = ''
30
- for (let j = 0; j < integerUnits[1].length && num > 0; j++) {
31
- temp = digits[num % 10] + integerUnits[1][j] + temp
32
- num = Math.floor(num / 10)
25
+ money = parseFloat(money)
26
+ if (money >= maxNum) {
27
+ //超出最大处理数字
28
+ return '超出最大处理数字'
29
+ }
30
+ if (money == 0) {
31
+ chineseStr = cnNums[0] + cnIntLast + cnInteger
32
+ return chineseStr
33
+ }
34
+ //四舍五入保留两位小数,转换为字符串
35
+ money = Math.round(money * 100).toString()
36
+ integerNum = money.substr(0, money.length - 2)
37
+ decimalNum = money.substr(money.length - 2)
38
+ //获取整型部分转换
39
+ if (parseInt(integerNum, 10) > 0) {
40
+ var zeroCount = 0
41
+ var IntLen = integerNum.length
42
+ for (var i = 0; i < IntLen; i++) {
43
+ var n = integerNum.substr(i, 1)
44
+ var p = IntLen - i - 1
45
+ var q = p / 4
46
+ var m = p % 4
47
+ if (n == '0') {
48
+ zeroCount++
49
+ } else {
50
+ if (zeroCount > 0) {
51
+ chineseStr += cnNums[0]
52
+ }
53
+ //归零
54
+ zeroCount = 0
55
+ chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
56
+ }
57
+ if (m == 0 && zeroCount < 4) {
58
+ chineseStr += cnIntUnits[q]
59
+ }
33
60
  }
34
- result = temp.replace(/(零.)*零$/, '').replace(/^$/, '零') + integerUnits[0][i] + result
61
+ chineseStr += cnIntLast
62
+ }
63
+ //小数部分
64
+ if (decimalNum != '') {
65
+ var decLen = decimalNum.length
66
+ for (var i = 0; i < decLen; i++) {
67
+ var n = decimalNum.substr(i, 1)
68
+ if (n != '0') {
69
+ chineseStr += cnNums[Number(n)] + cnDecUnits[i]
70
+ }
71
+ }
72
+ }
73
+ if (chineseStr == '') {
74
+ chineseStr += cnNums[0] + cnIntLast + cnInteger
75
+ } else if (decimalNum == '' || /^0*$/.test(decimalNum)) {
76
+ chineseStr += cnInteger
35
77
  }
36
- return (
37
- negativeSign +
38
- result
39
- .replace(/(零.)+/g, '零')
40
- .replace(/零+$/, '')
41
- .replace(/(零元)$/, '元')
42
- .replace(/^整$/, '零元整')
43
- )
78
+ return chineseStr
44
79
  }
45
80
  /**
46
81
  * 单个数字转换