gm-printer 10.42.2 → 10.42.3-beta.1
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/build/demo.js +9 -9
- package/locales/en.json +3 -0
- package/locales/th.json +3 -0
- package/locales/zh-HK.json +3 -0
- package/package.json +1 -1
- package/src/common/common_context_menu.js +6 -4
- package/src/common/component.js +64 -8
- package/src/common/editor_edit_field.js +6 -1
- package/src/common/editor_store.js +34 -32
- package/src/common/hoc_with_store.js +9 -0
- package/src/common/style.lesss +43 -0
- package/src/editor/store.js +13 -0
- package/src/finance_voucher/components/table_subtotal_tr.js +12 -18
- package/src/index.js +2 -0
- package/src/printer/block.js +154 -4
- package/src/printer/compute_pages.js +2 -1
- package/src/printer/multi_column.js +53 -0
- package/src/printer/page_summary.js +3 -1
- package/src/printer/printer.js +8 -1
- package/src/printer/store.js +136 -39
- package/src/printer/table_diy_overallOrder_tr.js +8 -15
- package/src/printer/table_diy_summary_tr.js +18 -35
- package/src/printer/table_subtotal_tr.js +13 -16
- package/src/util.js +20 -1
- package/yarn-error.log +372 -152
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import _ from 'lodash'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
coverDigit2Uppercase,
|
|
6
|
+
getDataKey,
|
|
7
|
+
isMultiTable,
|
|
8
|
+
maskedSum
|
|
9
|
+
} from '../util'
|
|
5
10
|
import { MULTI_SUFFIX, MULTI_SUFFIX3 } from '../config'
|
|
6
11
|
import { observer } from 'mobx-react'
|
|
7
12
|
import classNames from 'classnames'
|
|
8
|
-
import Big from 'big.js'
|
|
9
13
|
|
|
10
14
|
function buildTemplateField(fieldStr, suffix) {
|
|
11
15
|
// 如果 field 是 "{{列.下单数}}",提取出 "下单数"
|
|
@@ -45,39 +49,18 @@ const DiySummary = props => {
|
|
|
45
49
|
|
|
46
50
|
// 计算合计
|
|
47
51
|
const sumData = field => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// 三栏
|
|
62
|
-
const multiField3 = buildTemplateField(field, MULTI_SUFFIX3)
|
|
63
|
-
result = result.plus(+getRes(multiField3, i) || 0)
|
|
64
|
-
|
|
65
|
-
return result
|
|
66
|
-
},
|
|
67
|
-
Big(0)
|
|
68
|
-
).toFixed(2)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return _.reduce(
|
|
72
|
-
tableData,
|
|
73
|
-
(a, b, i) => {
|
|
74
|
-
let result = a
|
|
75
|
-
const bRes = getRes(field, i)
|
|
76
|
-
result = a.plus(+bRes || 0)
|
|
77
|
-
return result
|
|
78
|
-
},
|
|
79
|
-
Big(0)
|
|
80
|
-
).toFixed(2)
|
|
52
|
+
// 收集本列渲染结果(含多栏后缀列),任一脱敏 '***' 则合计显 '***'
|
|
53
|
+
// 注意:基于渲染后字符串判定,假设模板整格就是脱敏值;带前后缀的模板(如 '{{列.金额}}元')无法识别
|
|
54
|
+
const values = []
|
|
55
|
+
_.each(tableData, (b, i) => {
|
|
56
|
+
values.push(getRes(field, i))
|
|
57
|
+
if (isMulti) {
|
|
58
|
+
// 双栏/三栏取后缀字段
|
|
59
|
+
values.push(getRes(buildTemplateField(field, MULTI_SUFFIX), i))
|
|
60
|
+
values.push(getRes(buildTemplateField(field, MULTI_SUFFIX3), i))
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
return maskedSum(values)
|
|
81
64
|
|
|
82
65
|
function getRes(field, i) {
|
|
83
66
|
return printerStore
|
|
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types'
|
|
|
4
4
|
import _ from 'lodash'
|
|
5
5
|
import { MULTI_SUFFIX, MULTI_SUFFIX3 } from '../config'
|
|
6
6
|
import Big from 'big.js'
|
|
7
|
-
import { coverDigit2Uppercase, getDataKey } from '../util'
|
|
7
|
+
import { coverDigit2Uppercase, getDataKey, maskedSum } from '../util'
|
|
8
8
|
import { observer } from 'mobx-react'
|
|
9
9
|
import { get } from 'mobx'
|
|
10
10
|
import classNames from 'classnames'
|
|
@@ -76,21 +76,18 @@ const SubtotalTr = props => {
|
|
|
76
76
|
if (field === 'real_item_price') field = '出库金额'
|
|
77
77
|
if (field === 'settle_money2') field = '结算金额'
|
|
78
78
|
if (field === 'total_money2') field = '金额'
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
},
|
|
92
|
-
Big(0)
|
|
93
|
-
).toFixed(2)
|
|
79
|
+
// 收集本列所有值(含多栏后缀列),任一脱敏 '***' 则合计显 '***',否则 Big('***') 会崩溃
|
|
80
|
+
const values = []
|
|
81
|
+
_.each(list, b => {
|
|
82
|
+
values.push(b[field])
|
|
83
|
+
if (b?.[field + MULTI_SUFFIX]) {
|
|
84
|
+
values.push(b[field + MULTI_SUFFIX])
|
|
85
|
+
}
|
|
86
|
+
if (b?.[field + MULTI_SUFFIX3]) {
|
|
87
|
+
values.push(b[field + MULTI_SUFFIX3])
|
|
88
|
+
}
|
|
89
|
+
})
|
|
90
|
+
return maskedSum(values)
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
const getData = field => {
|
package/src/util.js
CHANGED
|
@@ -120,7 +120,23 @@ function getOverallOrderTrHeight(overallOrder) {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
// eslint-disable-next-line
|
|
123
|
+
// 成本权限脱敏值:后端对无成本权限用户的金额字段返回 '***'(商品维度混合脱敏)
|
|
124
|
+
const MASKED_VALUE = '***'
|
|
125
|
+
const isMaskedValue = v => v === MASKED_VALUE
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* 脱敏感知求和:任一值为 '***' 则整体返回 '***'(口径:合计不能暴露脱敏行的贡献)
|
|
129
|
+
* 非数字值按 0 容错,同时兼容原始数值字段与渲染后字符串
|
|
130
|
+
* @param {Array} values 参与求和的值
|
|
131
|
+
*/
|
|
132
|
+
const maskedSum = values => {
|
|
133
|
+
if (values.some(isMaskedValue)) return MASKED_VALUE
|
|
134
|
+
return values.reduce((a, b) => a.plus(+b || 0), Big(0)).toFixed(2)
|
|
135
|
+
}
|
|
136
|
+
|
|
123
137
|
const coverDigit2Uppercase = n => {
|
|
138
|
+
// 脱敏值直接透传:否则 Math.abs('***') 得 NaN,Big(NaN) 会抛异常
|
|
139
|
+
if (isMaskedValue(n)) return MASKED_VALUE
|
|
124
140
|
if (_.isNil(n) || _.isNaN(n)) {
|
|
125
141
|
return '-'
|
|
126
142
|
}
|
|
@@ -384,5 +400,8 @@ export {
|
|
|
384
400
|
caclSingleDetailsPageHeight,
|
|
385
401
|
getArrayMid,
|
|
386
402
|
getColSpanLength,
|
|
387
|
-
getOverallOrderTrHeight
|
|
403
|
+
getOverallOrderTrHeight,
|
|
404
|
+
MASKED_VALUE,
|
|
405
|
+
isMaskedValue,
|
|
406
|
+
maskedSum
|
|
388
407
|
}
|