kts-component-invoice-operate 3.2.116 → 3.2.118-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/dist/Invoice/index.d.ts +3 -0
- package/dist/Invoice/tools/utils/index.d.ts +1 -0
- package/dist/Invoice/tools/utils/money/index.d.ts +2 -0
- package/dist/index.esm.js +121 -25
- package/dist/index.js +121 -25
- package/package.json +1 -1
- package/src/Invoice/index.tsx +4 -0
- package/src/Invoice/tools/utils/index.ts +1 -0
- package/src/Invoice/tools/utils/money/index.ts +66 -0
- package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +1 -1
- package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.tsx +2 -2
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +15 -17
- package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +2 -2
package/dist/Invoice/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import './index.less';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import InvoiceController from './InvoiceController';
|
|
4
4
|
import * as calculator from './tools/calculate';
|
|
5
|
+
import * as utils from './tools/utils';
|
|
5
6
|
import GoodsList from './ui/default/GoodsList';
|
|
6
7
|
import Seller from './ui/default/Seller';
|
|
7
8
|
import Buyer from './ui/default/Buyer';
|
|
@@ -53,6 +54,8 @@ export default class Invoice extends React.PureComponent<IInvoiceProps> {
|
|
|
53
54
|
static idGenerator: () => string;
|
|
54
55
|
/** 金额计算方法 */
|
|
55
56
|
static calculator: typeof calculator;
|
|
57
|
+
/** 工具方法 */
|
|
58
|
+
static utils: typeof utils;
|
|
56
59
|
/** 获取控制器钩子 */
|
|
57
60
|
static useInvoiceController: () => InvoiceController;
|
|
58
61
|
render(): JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Money from './money';
|
package/dist/index.esm.js
CHANGED
|
@@ -9547,6 +9547,102 @@ function useToGenerateId(controller) {
|
|
|
9547
9547
|
}, [goodsList]);
|
|
9548
9548
|
}
|
|
9549
9549
|
|
|
9550
|
+
/** 数字转中文 */
|
|
9551
|
+
var toStringChinese = function toStringChinese(value) {
|
|
9552
|
+
var numberValue = Math.round(value * 100).toString(); // 数字金额
|
|
9553
|
+
|
|
9554
|
+
var chineseValue = ''; // 转换后的汉字金额
|
|
9555
|
+
|
|
9556
|
+
var String1 = '零壹贰叁肆伍陆柒捌玖'; // 汉字数字
|
|
9557
|
+
|
|
9558
|
+
var String2 = '万仟佰拾亿仟佰拾万仟佰拾圆角分'; // 对应单位
|
|
9559
|
+
|
|
9560
|
+
var len = numberValue.length; // numberValue 的字符串长度
|
|
9561
|
+
|
|
9562
|
+
var Ch1; // 数字的汉语读法
|
|
9563
|
+
|
|
9564
|
+
var Ch2; // 数字位的汉字读法
|
|
9565
|
+
|
|
9566
|
+
var nZero = 0; // 用来计算连续的零值的个数
|
|
9567
|
+
|
|
9568
|
+
var String3; // 指定位置的数值
|
|
9569
|
+
|
|
9570
|
+
if (len > 15) {
|
|
9571
|
+
alert('超出计算范围');
|
|
9572
|
+
return '';
|
|
9573
|
+
}
|
|
9574
|
+
|
|
9575
|
+
if (parseFloat(numberValue) === 0) {
|
|
9576
|
+
chineseValue = '零圆整';
|
|
9577
|
+
return chineseValue;
|
|
9578
|
+
}
|
|
9579
|
+
|
|
9580
|
+
String2 = String2.substr(String2.length - len, len); // 取出对应位数的STRING2的值
|
|
9581
|
+
|
|
9582
|
+
for (var i = 0; i < len; i++) {
|
|
9583
|
+
String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需转换的某一位的值
|
|
9584
|
+
|
|
9585
|
+
if (i !== len - 3 && i !== len - 7 && i !== len - 11 && i !== len - 15) {
|
|
9586
|
+
if (String3 === 0) {
|
|
9587
|
+
Ch1 = '';
|
|
9588
|
+
Ch2 = '';
|
|
9589
|
+
nZero++;
|
|
9590
|
+
} else if (String3 !== 0 && nZero !== 0) {
|
|
9591
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
9592
|
+
Ch2 = String2.substr(i, 1);
|
|
9593
|
+
nZero = 0;
|
|
9594
|
+
} else {
|
|
9595
|
+
Ch1 = String1.substr(String3, 1);
|
|
9596
|
+
Ch2 = String2.substr(i, 1);
|
|
9597
|
+
nZero = 0;
|
|
9598
|
+
}
|
|
9599
|
+
} else {
|
|
9600
|
+
// 该位是万亿,亿,万,元位等关键位
|
|
9601
|
+
if (String3 !== 0 && nZero !== 0) {
|
|
9602
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
9603
|
+
Ch2 = String2.substr(i, 1);
|
|
9604
|
+
nZero = 0;
|
|
9605
|
+
} else if (String3 !== 0 && nZero === 0) {
|
|
9606
|
+
Ch1 = String1.substr(String3, 1);
|
|
9607
|
+
Ch2 = String2.substr(i, 1);
|
|
9608
|
+
nZero = 0;
|
|
9609
|
+
} else if (String3 === 0 && nZero >= 3) {
|
|
9610
|
+
Ch1 = '';
|
|
9611
|
+
Ch2 = '';
|
|
9612
|
+
nZero++;
|
|
9613
|
+
} else {
|
|
9614
|
+
Ch1 = '';
|
|
9615
|
+
Ch2 = String2.substr(i, 1);
|
|
9616
|
+
nZero++;
|
|
9617
|
+
}
|
|
9618
|
+
|
|
9619
|
+
if (i === len - 11 || i === len - 3) {
|
|
9620
|
+
// 如果该位是亿位或元位,则必须写上
|
|
9621
|
+
Ch2 = String2.substr(i, 1);
|
|
9622
|
+
}
|
|
9623
|
+
}
|
|
9624
|
+
|
|
9625
|
+
chineseValue = chineseValue + Ch1 + Ch2;
|
|
9626
|
+
}
|
|
9627
|
+
|
|
9628
|
+
if (String3 === 0) {
|
|
9629
|
+
// 最后一位(分)为0时,加上“整”
|
|
9630
|
+
chineseValue += '整';
|
|
9631
|
+
}
|
|
9632
|
+
|
|
9633
|
+
return chineseValue;
|
|
9634
|
+
};
|
|
9635
|
+
|
|
9636
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
9637
|
+
__proto__: null,
|
|
9638
|
+
toStringChinese: toStringChinese
|
|
9639
|
+
});
|
|
9640
|
+
|
|
9641
|
+
var utils = /*#__PURE__*/Object.freeze({
|
|
9642
|
+
__proto__: null,
|
|
9643
|
+
Money: index
|
|
9644
|
+
});
|
|
9645
|
+
|
|
9550
9646
|
var _defs, _path, _path2, _path3;
|
|
9551
9647
|
|
|
9552
9648
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -9906,8 +10002,6 @@ function TableVirtual (props) {
|
|
|
9906
10002
|
var css_248z$3 = ".kts-invoice-operate-goods-list-statistics {\n background: #fafafa;\n overflow-y: scroll;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row {\n height: 30px;\n line-height: 30px;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row > div {\n border-right: 1px solid #e8e8e8;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row > div label {\n padding: 0 10px;\n}\n";
|
|
9907
10003
|
styleInject(css_248z$3);
|
|
9908
10004
|
|
|
9909
|
-
var nzhcn = require('nzh').cn;
|
|
9910
|
-
|
|
9911
10005
|
var Statistics = (function () {
|
|
9912
10006
|
var controller = Invoice.useInvoiceController();
|
|
9913
10007
|
/** 是否不含税) */
|
|
@@ -10033,9 +10127,7 @@ var Statistics = (function () {
|
|
|
10033
10127
|
flex: 5,
|
|
10034
10128
|
border: 'none'
|
|
10035
10129
|
}
|
|
10036
|
-
}, /*#__PURE__*/React.createElement("label", null, "\u4EF7\u7A0E\u5408\u8BA1\uFF08\u5927\u5199\uFF09"), /*#__PURE__*/React.createElement("label", null,
|
|
10037
|
-
outSymbol: false
|
|
10038
|
-
}))), /*#__PURE__*/React.createElement("div", {
|
|
10130
|
+
}, /*#__PURE__*/React.createElement("label", null, "\u4EF7\u7A0E\u5408\u8BA1\uFF08\u5927\u5199\uFF09"), /*#__PURE__*/React.createElement("label", null, toStringChinese(lineAmountIncludeTax))), /*#__PURE__*/React.createElement("div", {
|
|
10039
10131
|
style: {
|
|
10040
10132
|
flex: 5,
|
|
10041
10133
|
border: 'none'
|
|
@@ -10993,7 +11085,8 @@ function ItemNameInput(props) {
|
|
|
10993
11085
|
}, []);
|
|
10994
11086
|
var onBlur = React.useCallback( /*#__PURE__*/function () {
|
|
10995
11087
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(searchText) {
|
|
10996
|
-
var taxCategoryData, params;
|
|
11088
|
+
var _searchText$target, taxCategoryData, params;
|
|
11089
|
+
|
|
10997
11090
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
10998
11091
|
while (1) {
|
|
10999
11092
|
switch (_context.prev = _context.next) {
|
|
@@ -11005,7 +11098,7 @@ function ItemNameInput(props) {
|
|
|
11005
11098
|
break;
|
|
11006
11099
|
}
|
|
11007
11100
|
|
|
11008
|
-
if (selectLine === null || selectLine === void 0 ? void 0 : selectLine.shorthand) {
|
|
11101
|
+
if (!(!(selectLine === null || selectLine === void 0 ? void 0 : selectLine.shorthand) && !!(searchText === null || searchText === void 0 ? void 0 : (_searchText$target = searchText.target) === null || _searchText$target === void 0 ? void 0 : _searchText$target.value))) {
|
|
11009
11102
|
_context.next = 7;
|
|
11010
11103
|
break;
|
|
11011
11104
|
}
|
|
@@ -17333,8 +17426,6 @@ function SvgFork(props) {
|
|
|
17333
17426
|
var css_248z$j = ".kts-invoice-operate-goods-list-statistics-digtal {\n overflow-y: scroll;\n /* 设置滚动条滑块颜色 */\n}\n.kts-invoice-operate-goods-list-statistics-digtal::-webkit-scrollbar-track {\n background-color: #f1f1f1;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax,\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total {\n height: 42px;\n display: flex;\n align-items: center;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax > div:first-child,\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total > div:first-child {\n width: 225px;\n color: #9F613E;\n font-family: PingFang SC;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax {\n border-top: 2px solid #9F613E;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax > div:first-child {\n border-right: 2px solid #9F613E;\n}\n";
|
|
17334
17427
|
styleInject(css_248z$j);
|
|
17335
17428
|
|
|
17336
|
-
var nzhcn$1 = require('nzh').cn;
|
|
17337
|
-
|
|
17338
17429
|
var Statistics$1 = (function () {
|
|
17339
17430
|
var controller = Invoice.useInvoiceController();
|
|
17340
17431
|
/** 是否不含税) */
|
|
@@ -17445,9 +17536,7 @@ var Statistics$1 = (function () {
|
|
|
17445
17536
|
fontWeight: 'bold',
|
|
17446
17537
|
marginLeft: 4
|
|
17447
17538
|
}
|
|
17448
|
-
},
|
|
17449
|
-
outSymbol: false
|
|
17450
|
-
}))), /*#__PURE__*/React.createElement("div", {
|
|
17539
|
+
}, toStringChinese(lineAmountIncludeTax))), /*#__PURE__*/React.createElement("div", {
|
|
17451
17540
|
style: {
|
|
17452
17541
|
flex: 1
|
|
17453
17542
|
}
|
|
@@ -20389,18 +20478,15 @@ var MyItemNameDiv$1 = /*#__PURE__*/function (_React$Component3) {
|
|
|
20389
20478
|
return /*#__PURE__*/React.createElement(Tooltip$1, {
|
|
20390
20479
|
title: valueT
|
|
20391
20480
|
}, /*#__PURE__*/React.createElement("span", {
|
|
20392
|
-
style: {
|
|
20393
|
-
padding: '0 10px',
|
|
20481
|
+
style: _objectSpread2(_objectSpread2({}, MyItemNameStyle), {}, {
|
|
20394
20482
|
color: '#0074ff'
|
|
20395
|
-
}
|
|
20483
|
+
})
|
|
20396
20484
|
}, valueT));
|
|
20397
20485
|
} else {
|
|
20398
20486
|
return /*#__PURE__*/React.createElement(Tooltip$1, {
|
|
20399
20487
|
title: valueF
|
|
20400
20488
|
}, /*#__PURE__*/React.createElement("span", {
|
|
20401
|
-
style:
|
|
20402
|
-
padding: '0 10px'
|
|
20403
|
-
}
|
|
20489
|
+
style: MyItemNameStyle
|
|
20404
20490
|
}, valueF));
|
|
20405
20491
|
}
|
|
20406
20492
|
} else {
|
|
@@ -20408,18 +20494,16 @@ var MyItemNameDiv$1 = /*#__PURE__*/function (_React$Component3) {
|
|
|
20408
20494
|
return /*#__PURE__*/React.createElement(Tooltip$1, {
|
|
20409
20495
|
title: valueF
|
|
20410
20496
|
}, /*#__PURE__*/React.createElement("span", {
|
|
20411
|
-
style:
|
|
20412
|
-
padding: '0 10px'
|
|
20413
|
-
}
|
|
20497
|
+
style: MyItemNameStyle
|
|
20414
20498
|
}, valueF));
|
|
20415
20499
|
} else {
|
|
20416
20500
|
return /*#__PURE__*/React.createElement(Tooltip$1, {
|
|
20417
|
-
title: valueT
|
|
20501
|
+
title: valueT,
|
|
20502
|
+
style: MyItemNameStyle
|
|
20418
20503
|
}, /*#__PURE__*/React.createElement("span", {
|
|
20419
|
-
style: {
|
|
20420
|
-
padding: '0 10px',
|
|
20504
|
+
style: _objectSpread2(_objectSpread2({}, MyItemNameStyle), {}, {
|
|
20421
20505
|
color: '#0074ff'
|
|
20422
|
-
}
|
|
20506
|
+
})
|
|
20423
20507
|
}, valueT));
|
|
20424
20508
|
}
|
|
20425
20509
|
}
|
|
@@ -20461,6 +20545,15 @@ function dcoding$1(v) {
|
|
|
20461
20545
|
}).join('');
|
|
20462
20546
|
}
|
|
20463
20547
|
|
|
20548
|
+
var MyItemNameStyle = {
|
|
20549
|
+
padding: '0px 10px',
|
|
20550
|
+
whiteSpace: 'nowrap',
|
|
20551
|
+
overflow: 'hidden',
|
|
20552
|
+
width: "100%",
|
|
20553
|
+
display: 'block',
|
|
20554
|
+
textOverflow: 'ellipsis'
|
|
20555
|
+
};
|
|
20556
|
+
|
|
20464
20557
|
var useOnRow$1 = (function () {
|
|
20465
20558
|
/** 控制器 */
|
|
20466
20559
|
var controller = Invoice.useInvoiceController();
|
|
@@ -23754,6 +23847,8 @@ var Invoice = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
23754
23847
|
|
|
23755
23848
|
/** 金额计算方法 */
|
|
23756
23849
|
|
|
23850
|
+
/** 工具方法 */
|
|
23851
|
+
|
|
23757
23852
|
/** 获取控制器钩子 */
|
|
23758
23853
|
function render() {
|
|
23759
23854
|
if (this.props.invoiceType === 'digtal') {
|
|
@@ -23781,6 +23876,7 @@ Invoice.SignDigtal = SignDigtal;
|
|
|
23781
23876
|
Invoice.GoodsListDigtal = GoodsList$1;
|
|
23782
23877
|
Invoice.idGenerator = idGenerator;
|
|
23783
23878
|
Invoice.calculator = calculator;
|
|
23879
|
+
Invoice.utils = utils;
|
|
23784
23880
|
|
|
23785
23881
|
Invoice.useInvoiceController = function () {
|
|
23786
23882
|
return React.useContext(InvoiceContext);
|
package/dist/index.js
CHANGED
|
@@ -9557,6 +9557,102 @@ function useToGenerateId(controller) {
|
|
|
9557
9557
|
}, [goodsList]);
|
|
9558
9558
|
}
|
|
9559
9559
|
|
|
9560
|
+
/** 数字转中文 */
|
|
9561
|
+
var toStringChinese = function toStringChinese(value) {
|
|
9562
|
+
var numberValue = Math.round(value * 100).toString(); // 数字金额
|
|
9563
|
+
|
|
9564
|
+
var chineseValue = ''; // 转换后的汉字金额
|
|
9565
|
+
|
|
9566
|
+
var String1 = '零壹贰叁肆伍陆柒捌玖'; // 汉字数字
|
|
9567
|
+
|
|
9568
|
+
var String2 = '万仟佰拾亿仟佰拾万仟佰拾圆角分'; // 对应单位
|
|
9569
|
+
|
|
9570
|
+
var len = numberValue.length; // numberValue 的字符串长度
|
|
9571
|
+
|
|
9572
|
+
var Ch1; // 数字的汉语读法
|
|
9573
|
+
|
|
9574
|
+
var Ch2; // 数字位的汉字读法
|
|
9575
|
+
|
|
9576
|
+
var nZero = 0; // 用来计算连续的零值的个数
|
|
9577
|
+
|
|
9578
|
+
var String3; // 指定位置的数值
|
|
9579
|
+
|
|
9580
|
+
if (len > 15) {
|
|
9581
|
+
alert('超出计算范围');
|
|
9582
|
+
return '';
|
|
9583
|
+
}
|
|
9584
|
+
|
|
9585
|
+
if (parseFloat(numberValue) === 0) {
|
|
9586
|
+
chineseValue = '零圆整';
|
|
9587
|
+
return chineseValue;
|
|
9588
|
+
}
|
|
9589
|
+
|
|
9590
|
+
String2 = String2.substr(String2.length - len, len); // 取出对应位数的STRING2的值
|
|
9591
|
+
|
|
9592
|
+
for (var i = 0; i < len; i++) {
|
|
9593
|
+
String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需转换的某一位的值
|
|
9594
|
+
|
|
9595
|
+
if (i !== len - 3 && i !== len - 7 && i !== len - 11 && i !== len - 15) {
|
|
9596
|
+
if (String3 === 0) {
|
|
9597
|
+
Ch1 = '';
|
|
9598
|
+
Ch2 = '';
|
|
9599
|
+
nZero++;
|
|
9600
|
+
} else if (String3 !== 0 && nZero !== 0) {
|
|
9601
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
9602
|
+
Ch2 = String2.substr(i, 1);
|
|
9603
|
+
nZero = 0;
|
|
9604
|
+
} else {
|
|
9605
|
+
Ch1 = String1.substr(String3, 1);
|
|
9606
|
+
Ch2 = String2.substr(i, 1);
|
|
9607
|
+
nZero = 0;
|
|
9608
|
+
}
|
|
9609
|
+
} else {
|
|
9610
|
+
// 该位是万亿,亿,万,元位等关键位
|
|
9611
|
+
if (String3 !== 0 && nZero !== 0) {
|
|
9612
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
9613
|
+
Ch2 = String2.substr(i, 1);
|
|
9614
|
+
nZero = 0;
|
|
9615
|
+
} else if (String3 !== 0 && nZero === 0) {
|
|
9616
|
+
Ch1 = String1.substr(String3, 1);
|
|
9617
|
+
Ch2 = String2.substr(i, 1);
|
|
9618
|
+
nZero = 0;
|
|
9619
|
+
} else if (String3 === 0 && nZero >= 3) {
|
|
9620
|
+
Ch1 = '';
|
|
9621
|
+
Ch2 = '';
|
|
9622
|
+
nZero++;
|
|
9623
|
+
} else {
|
|
9624
|
+
Ch1 = '';
|
|
9625
|
+
Ch2 = String2.substr(i, 1);
|
|
9626
|
+
nZero++;
|
|
9627
|
+
}
|
|
9628
|
+
|
|
9629
|
+
if (i === len - 11 || i === len - 3) {
|
|
9630
|
+
// 如果该位是亿位或元位,则必须写上
|
|
9631
|
+
Ch2 = String2.substr(i, 1);
|
|
9632
|
+
}
|
|
9633
|
+
}
|
|
9634
|
+
|
|
9635
|
+
chineseValue = chineseValue + Ch1 + Ch2;
|
|
9636
|
+
}
|
|
9637
|
+
|
|
9638
|
+
if (String3 === 0) {
|
|
9639
|
+
// 最后一位(分)为0时,加上“整”
|
|
9640
|
+
chineseValue += '整';
|
|
9641
|
+
}
|
|
9642
|
+
|
|
9643
|
+
return chineseValue;
|
|
9644
|
+
};
|
|
9645
|
+
|
|
9646
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
9647
|
+
__proto__: null,
|
|
9648
|
+
toStringChinese: toStringChinese
|
|
9649
|
+
});
|
|
9650
|
+
|
|
9651
|
+
var utils = /*#__PURE__*/Object.freeze({
|
|
9652
|
+
__proto__: null,
|
|
9653
|
+
Money: index
|
|
9654
|
+
});
|
|
9655
|
+
|
|
9560
9656
|
var _defs, _path, _path2, _path3;
|
|
9561
9657
|
|
|
9562
9658
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -9916,8 +10012,6 @@ function TableVirtual (props) {
|
|
|
9916
10012
|
var css_248z$3 = ".kts-invoice-operate-goods-list-statistics {\n background: #fafafa;\n overflow-y: scroll;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row {\n height: 30px;\n line-height: 30px;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row > div {\n border-right: 1px solid #e8e8e8;\n}\n.kts-invoice-operate-goods-list-statistics .kts-invoice-operate-goods-list-statistics-row > div label {\n padding: 0 10px;\n}\n";
|
|
9917
10013
|
styleInject(css_248z$3);
|
|
9918
10014
|
|
|
9919
|
-
var nzhcn = require('nzh').cn;
|
|
9920
|
-
|
|
9921
10015
|
var Statistics = (function () {
|
|
9922
10016
|
var controller = Invoice.useInvoiceController();
|
|
9923
10017
|
/** 是否不含税) */
|
|
@@ -10043,9 +10137,7 @@ var Statistics = (function () {
|
|
|
10043
10137
|
flex: 5,
|
|
10044
10138
|
border: 'none'
|
|
10045
10139
|
}
|
|
10046
|
-
}, /*#__PURE__*/React__default['default'].createElement("label", null, "\u4EF7\u7A0E\u5408\u8BA1\uFF08\u5927\u5199\uFF09"), /*#__PURE__*/React__default['default'].createElement("label", null,
|
|
10047
|
-
outSymbol: false
|
|
10048
|
-
}))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
10140
|
+
}, /*#__PURE__*/React__default['default'].createElement("label", null, "\u4EF7\u7A0E\u5408\u8BA1\uFF08\u5927\u5199\uFF09"), /*#__PURE__*/React__default['default'].createElement("label", null, toStringChinese(lineAmountIncludeTax))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
10049
10141
|
style: {
|
|
10050
10142
|
flex: 5,
|
|
10051
10143
|
border: 'none'
|
|
@@ -11003,7 +11095,8 @@ function ItemNameInput(props) {
|
|
|
11003
11095
|
}, []);
|
|
11004
11096
|
var onBlur = React__default['default'].useCallback( /*#__PURE__*/function () {
|
|
11005
11097
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(searchText) {
|
|
11006
|
-
var taxCategoryData, params;
|
|
11098
|
+
var _searchText$target, taxCategoryData, params;
|
|
11099
|
+
|
|
11007
11100
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
11008
11101
|
while (1) {
|
|
11009
11102
|
switch (_context.prev = _context.next) {
|
|
@@ -11015,7 +11108,7 @@ function ItemNameInput(props) {
|
|
|
11015
11108
|
break;
|
|
11016
11109
|
}
|
|
11017
11110
|
|
|
11018
|
-
if (selectLine === null || selectLine === void 0 ? void 0 : selectLine.shorthand) {
|
|
11111
|
+
if (!(!(selectLine === null || selectLine === void 0 ? void 0 : selectLine.shorthand) && !!(searchText === null || searchText === void 0 ? void 0 : (_searchText$target = searchText.target) === null || _searchText$target === void 0 ? void 0 : _searchText$target.value))) {
|
|
11019
11112
|
_context.next = 7;
|
|
11020
11113
|
break;
|
|
11021
11114
|
}
|
|
@@ -17343,8 +17436,6 @@ function SvgFork(props) {
|
|
|
17343
17436
|
var css_248z$j = ".kts-invoice-operate-goods-list-statistics-digtal {\n overflow-y: scroll;\n /* 设置滚动条滑块颜色 */\n}\n.kts-invoice-operate-goods-list-statistics-digtal::-webkit-scrollbar-track {\n background-color: #f1f1f1;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax,\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total {\n height: 42px;\n display: flex;\n align-items: center;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax > div:first-child,\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total > div:first-child {\n width: 225px;\n color: #9F613E;\n font-family: PingFang SC;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax {\n border-top: 2px solid #9F613E;\n}\n.kts-invoice-operate-goods-list-statistics-digtal .statistics-digtal-total-tax > div:first-child {\n border-right: 2px solid #9F613E;\n}\n";
|
|
17344
17437
|
styleInject(css_248z$j);
|
|
17345
17438
|
|
|
17346
|
-
var nzhcn$1 = require('nzh').cn;
|
|
17347
|
-
|
|
17348
17439
|
var Statistics$1 = (function () {
|
|
17349
17440
|
var controller = Invoice.useInvoiceController();
|
|
17350
17441
|
/** 是否不含税) */
|
|
@@ -17455,9 +17546,7 @@ var Statistics$1 = (function () {
|
|
|
17455
17546
|
fontWeight: 'bold',
|
|
17456
17547
|
marginLeft: 4
|
|
17457
17548
|
}
|
|
17458
|
-
},
|
|
17459
|
-
outSymbol: false
|
|
17460
|
-
}))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
17549
|
+
}, toStringChinese(lineAmountIncludeTax))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
17461
17550
|
style: {
|
|
17462
17551
|
flex: 1
|
|
17463
17552
|
}
|
|
@@ -20399,18 +20488,15 @@ var MyItemNameDiv$1 = /*#__PURE__*/function (_React$Component3) {
|
|
|
20399
20488
|
return /*#__PURE__*/React__default['default'].createElement(ktsXui.Tooltip, {
|
|
20400
20489
|
title: valueT
|
|
20401
20490
|
}, /*#__PURE__*/React__default['default'].createElement("span", {
|
|
20402
|
-
style: {
|
|
20403
|
-
padding: '0 10px',
|
|
20491
|
+
style: _objectSpread2(_objectSpread2({}, MyItemNameStyle), {}, {
|
|
20404
20492
|
color: '#0074ff'
|
|
20405
|
-
}
|
|
20493
|
+
})
|
|
20406
20494
|
}, valueT));
|
|
20407
20495
|
} else {
|
|
20408
20496
|
return /*#__PURE__*/React__default['default'].createElement(ktsXui.Tooltip, {
|
|
20409
20497
|
title: valueF
|
|
20410
20498
|
}, /*#__PURE__*/React__default['default'].createElement("span", {
|
|
20411
|
-
style:
|
|
20412
|
-
padding: '0 10px'
|
|
20413
|
-
}
|
|
20499
|
+
style: MyItemNameStyle
|
|
20414
20500
|
}, valueF));
|
|
20415
20501
|
}
|
|
20416
20502
|
} else {
|
|
@@ -20418,18 +20504,16 @@ var MyItemNameDiv$1 = /*#__PURE__*/function (_React$Component3) {
|
|
|
20418
20504
|
return /*#__PURE__*/React__default['default'].createElement(ktsXui.Tooltip, {
|
|
20419
20505
|
title: valueF
|
|
20420
20506
|
}, /*#__PURE__*/React__default['default'].createElement("span", {
|
|
20421
|
-
style:
|
|
20422
|
-
padding: '0 10px'
|
|
20423
|
-
}
|
|
20507
|
+
style: MyItemNameStyle
|
|
20424
20508
|
}, valueF));
|
|
20425
20509
|
} else {
|
|
20426
20510
|
return /*#__PURE__*/React__default['default'].createElement(ktsXui.Tooltip, {
|
|
20427
|
-
title: valueT
|
|
20511
|
+
title: valueT,
|
|
20512
|
+
style: MyItemNameStyle
|
|
20428
20513
|
}, /*#__PURE__*/React__default['default'].createElement("span", {
|
|
20429
|
-
style: {
|
|
20430
|
-
padding: '0 10px',
|
|
20514
|
+
style: _objectSpread2(_objectSpread2({}, MyItemNameStyle), {}, {
|
|
20431
20515
|
color: '#0074ff'
|
|
20432
|
-
}
|
|
20516
|
+
})
|
|
20433
20517
|
}, valueT));
|
|
20434
20518
|
}
|
|
20435
20519
|
}
|
|
@@ -20471,6 +20555,15 @@ function dcoding$1(v) {
|
|
|
20471
20555
|
}).join('');
|
|
20472
20556
|
}
|
|
20473
20557
|
|
|
20558
|
+
var MyItemNameStyle = {
|
|
20559
|
+
padding: '0px 10px',
|
|
20560
|
+
whiteSpace: 'nowrap',
|
|
20561
|
+
overflow: 'hidden',
|
|
20562
|
+
width: "100%",
|
|
20563
|
+
display: 'block',
|
|
20564
|
+
textOverflow: 'ellipsis'
|
|
20565
|
+
};
|
|
20566
|
+
|
|
20474
20567
|
var useOnRow$1 = (function () {
|
|
20475
20568
|
/** 控制器 */
|
|
20476
20569
|
var controller = Invoice.useInvoiceController();
|
|
@@ -23764,6 +23857,8 @@ var Invoice = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
23764
23857
|
|
|
23765
23858
|
/** 金额计算方法 */
|
|
23766
23859
|
|
|
23860
|
+
/** 工具方法 */
|
|
23861
|
+
|
|
23767
23862
|
/** 获取控制器钩子 */
|
|
23768
23863
|
function render() {
|
|
23769
23864
|
if (this.props.invoiceType === 'digtal') {
|
|
@@ -23791,6 +23886,7 @@ Invoice.SignDigtal = SignDigtal;
|
|
|
23791
23886
|
Invoice.GoodsListDigtal = GoodsList$1;
|
|
23792
23887
|
Invoice.idGenerator = idGenerator;
|
|
23793
23888
|
Invoice.calculator = calculator;
|
|
23889
|
+
Invoice.utils = utils;
|
|
23794
23890
|
|
|
23795
23891
|
Invoice.useInvoiceController = function () {
|
|
23796
23892
|
return React__default['default'].useContext(InvoiceContext);
|
package/package.json
CHANGED
package/src/Invoice/index.tsx
CHANGED
|
@@ -5,6 +5,7 @@ import InvoiceController from './InvoiceController';
|
|
|
5
5
|
import useToGenerateId from './tools/useToGenerateId';
|
|
6
6
|
import idGenerator from './tools/idGenerator';
|
|
7
7
|
import * as calculator from './tools/calculate';
|
|
8
|
+
import * as utils from './tools/utils';
|
|
8
9
|
|
|
9
10
|
import InvoiceHeader from './ui/default/InvoiceHeader';
|
|
10
11
|
import GoodsList from './ui/default/GoodsList';
|
|
@@ -93,6 +94,9 @@ export default class Invoice extends React.PureComponent<IInvoiceProps> {
|
|
|
93
94
|
/** 金额计算方法 */
|
|
94
95
|
static calculator = calculator;
|
|
95
96
|
|
|
97
|
+
/** 工具方法 */
|
|
98
|
+
static utils = utils;
|
|
99
|
+
|
|
96
100
|
/** 获取控制器钩子 */
|
|
97
101
|
static useInvoiceController = () => { return React.useContext(InvoiceContext) };
|
|
98
102
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Money from './money';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** 数字转中文 */
|
|
2
|
+
export const toStringChinese = (value: any) => {
|
|
3
|
+
let numberValue = Math.round(value * 100).toString(); // 数字金额
|
|
4
|
+
let chineseValue = ''; // 转换后的汉字金额
|
|
5
|
+
let String1 = '零壹贰叁肆伍陆柒捌玖'; // 汉字数字
|
|
6
|
+
let String2 = '万仟佰拾亿仟佰拾万仟佰拾圆角分'; // 对应单位
|
|
7
|
+
let len = numberValue.length; // numberValue 的字符串长度
|
|
8
|
+
let Ch1; // 数字的汉语读法
|
|
9
|
+
let Ch2; // 数字位的汉字读法
|
|
10
|
+
let nZero = 0; // 用来计算连续的零值的个数
|
|
11
|
+
let String3; // 指定位置的数值
|
|
12
|
+
if (len > 15) {
|
|
13
|
+
alert('超出计算范围');
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (parseFloat(numberValue) === 0) {
|
|
18
|
+
chineseValue = '零圆整';
|
|
19
|
+
return chineseValue;
|
|
20
|
+
}
|
|
21
|
+
String2 = String2.substr(String2.length - len, len); // 取出对应位数的STRING2的值
|
|
22
|
+
for (let i = 0; i < len; i++) {
|
|
23
|
+
String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需转换的某一位的值
|
|
24
|
+
if (i !== (len - 3) && i !== (len - 7) && i !== (len - 11) && i !== (len - 15)) {
|
|
25
|
+
if (String3 === 0) {
|
|
26
|
+
Ch1 = '';
|
|
27
|
+
Ch2 = '';
|
|
28
|
+
nZero++;
|
|
29
|
+
} else if (String3 !== 0 && nZero !== 0) {
|
|
30
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
31
|
+
Ch2 = String2.substr(i, 1);
|
|
32
|
+
nZero = 0;
|
|
33
|
+
} else {
|
|
34
|
+
Ch1 = String1.substr(String3, 1);
|
|
35
|
+
Ch2 = String2.substr(i, 1);
|
|
36
|
+
nZero = 0;
|
|
37
|
+
}
|
|
38
|
+
} else { // 该位是万亿,亿,万,元位等关键位
|
|
39
|
+
if (String3 !== 0 && nZero !== 0) {
|
|
40
|
+
Ch1 = '零' + String1.substr(String3, 1);
|
|
41
|
+
Ch2 = String2.substr(i, 1);
|
|
42
|
+
nZero = 0;
|
|
43
|
+
} else if (String3 !== 0 && nZero === 0) {
|
|
44
|
+
Ch1 = String1.substr(String3, 1);
|
|
45
|
+
Ch2 = String2.substr(i, 1);
|
|
46
|
+
nZero = 0;
|
|
47
|
+
} else if (String3 === 0 && nZero >= 3) {
|
|
48
|
+
Ch1 = '';
|
|
49
|
+
Ch2 = '';
|
|
50
|
+
nZero++;
|
|
51
|
+
} else {
|
|
52
|
+
Ch1 = '';
|
|
53
|
+
Ch2 = String2.substr(i, 1);
|
|
54
|
+
nZero++;
|
|
55
|
+
}
|
|
56
|
+
if (i === (len - 11) || i === (len - 3)) { // 如果该位是亿位或元位,则必须写上
|
|
57
|
+
Ch2 = String2.substr(i, 1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
chineseValue = chineseValue + Ch1 + Ch2;
|
|
61
|
+
}
|
|
62
|
+
if (String3 === 0) { // 最后一位(分)为0时,加上“整”
|
|
63
|
+
chineseValue += '整';
|
|
64
|
+
}
|
|
65
|
+
return chineseValue;
|
|
66
|
+
};
|
|
@@ -26,7 +26,7 @@ export default function ItemNameInput(props: { onChange?: (e: ChangeEvent<HTMLIn
|
|
|
26
26
|
const onBlur = React.useCallback(async (searchText: any) => {
|
|
27
27
|
try {
|
|
28
28
|
if (autoComplete.onItemNameBlur) {
|
|
29
|
-
if (!selectLine?.shorthand) {
|
|
29
|
+
if (!selectLine?.shorthand && !!searchText?.target?.value) {
|
|
30
30
|
const taxCategoryData: any = await autoComplete.onItemNameBlur(searchText);
|
|
31
31
|
if (taxCategoryData && taxCategoryData[0]) {
|
|
32
32
|
const params = {
|
|
@@ -4,8 +4,8 @@ import { chain, bignumber } from 'mathjs';
|
|
|
4
4
|
import { LineAttributeType } from '../../../../../../Invoice/InvoiceController';
|
|
5
5
|
import Invoice from '../../../../..';
|
|
6
6
|
import './index.less';
|
|
7
|
+
import { Money } from '../../../../../tools/utils';
|
|
7
8
|
|
|
8
|
-
const nzhcn = require('nzh').cn;
|
|
9
9
|
|
|
10
10
|
export default () => {
|
|
11
11
|
const controller = Invoice.useInvoiceController();
|
|
@@ -101,7 +101,7 @@ export default () => {
|
|
|
101
101
|
<div style={{ flex: 5, border: 'none' }}>
|
|
102
102
|
<label>价税合计(大写)</label>
|
|
103
103
|
<label>
|
|
104
|
-
{
|
|
104
|
+
{Money.toStringChinese(lineAmountIncludeTax)}
|
|
105
105
|
</label>
|
|
106
106
|
</div>
|
|
107
107
|
<div style={{ flex: 5, border: 'none' }}>
|
|
@@ -137,17 +137,6 @@ export default (form: WrappedFormUtils) => {
|
|
|
137
137
|
}}
|
|
138
138
|
/>
|
|
139
139
|
)}
|
|
140
|
-
{/* <div className="kts-invoice-operate-goods-list-able-list-itemName-import">
|
|
141
|
-
{controller.getGoodsList && model !== 'readOnly' && (
|
|
142
|
-
<Tooltip title="点击从商品管理中添加商品信息">
|
|
143
|
-
<Button
|
|
144
|
-
onClick={controller.pipeline(async s => { s.goodsListState.importGoods.isVisibleDrawer = true })}
|
|
145
|
-
type="link"
|
|
146
|
-
icon="plus-circle"
|
|
147
|
-
/>
|
|
148
|
-
</Tooltip>
|
|
149
|
-
)}
|
|
150
|
-
</div> */}
|
|
151
140
|
</div>
|
|
152
141
|
</Form.Item>
|
|
153
142
|
);
|
|
@@ -533,7 +522,7 @@ export default (form: WrappedFormUtils) => {
|
|
|
533
522
|
}
|
|
534
523
|
})
|
|
535
524
|
// 是否启动拖拽
|
|
536
|
-
.filter(e => e.key !=='drag' || isStart)
|
|
525
|
+
.filter(e => e.key !== 'drag' || isStart)
|
|
537
526
|
// 只读
|
|
538
527
|
.filter(e => {
|
|
539
528
|
if (model === 'readOnly') {
|
|
@@ -603,13 +592,13 @@ class MyItemNameDiv extends React.Component<{ valueT?: React.ReactNode, valueF?:
|
|
|
603
592
|
if (valueT) {
|
|
604
593
|
return (
|
|
605
594
|
<Tooltip title={valueT}>
|
|
606
|
-
<span style={{
|
|
595
|
+
<span style={{ ...MyItemNameStyle, color: '#0074ff' }}>{valueT}</span>
|
|
607
596
|
</Tooltip>
|
|
608
597
|
)
|
|
609
598
|
} else {
|
|
610
599
|
return (
|
|
611
600
|
<Tooltip title={valueF}>
|
|
612
|
-
<span style={
|
|
601
|
+
<span style={MyItemNameStyle}>{valueF}</span>
|
|
613
602
|
</Tooltip>
|
|
614
603
|
)
|
|
615
604
|
}
|
|
@@ -617,13 +606,13 @@ class MyItemNameDiv extends React.Component<{ valueT?: React.ReactNode, valueF?:
|
|
|
617
606
|
if (valueF) {
|
|
618
607
|
return (
|
|
619
608
|
<Tooltip title={valueF}>
|
|
620
|
-
<span style={
|
|
609
|
+
<span style={MyItemNameStyle}>{valueF}</span>
|
|
621
610
|
</Tooltip>
|
|
622
611
|
)
|
|
623
612
|
} else {
|
|
624
613
|
return (
|
|
625
|
-
<Tooltip title={valueT}>
|
|
626
|
-
<span style={{
|
|
614
|
+
<Tooltip title={valueT} style={MyItemNameStyle}>
|
|
615
|
+
<span style={{ ...MyItemNameStyle, color: '#0074ff' }}>{valueT}</span>
|
|
627
616
|
</Tooltip>
|
|
628
617
|
)
|
|
629
618
|
}
|
|
@@ -648,3 +637,12 @@ function ucoding(v: string): string {
|
|
|
648
637
|
function dcoding(v: string): string {
|
|
649
638
|
return v.split('U').map(e => e ? String.fromCharCode(parseInt(e.replace('E', ''))) : '').join('');
|
|
650
639
|
}
|
|
640
|
+
|
|
641
|
+
const MyItemNameStyle: any = {
|
|
642
|
+
padding: '0px 10px',
|
|
643
|
+
whiteSpace: 'nowrap',
|
|
644
|
+
overflow: 'hidden',
|
|
645
|
+
width: "100%",
|
|
646
|
+
display: 'block',
|
|
647
|
+
textOverflow: 'ellipsis'
|
|
648
|
+
}
|
|
@@ -4,9 +4,9 @@ import { } from 'kts-components-antd-x3';
|
|
|
4
4
|
import { ReactComponent as ForkSvg } from './svg/fork.svg';
|
|
5
5
|
import { chain, bignumber } from 'mathjs';
|
|
6
6
|
import Invoice from '../../../../..';
|
|
7
|
+
import { Money } from '../../../../../tools/utils';
|
|
7
8
|
import './index.less';
|
|
8
9
|
|
|
9
|
-
const nzhcn = require('nzh').cn;
|
|
10
10
|
|
|
11
11
|
export default () => {
|
|
12
12
|
const controller = Invoice.useInvoiceController();
|
|
@@ -88,7 +88,7 @@ export default () => {
|
|
|
88
88
|
<div>价税合计(大写)</div>
|
|
89
89
|
<div style={{ paddingLeft: 30 }} >
|
|
90
90
|
<Icon style={{fontSize: 16}} component={ForkSvg} />
|
|
91
|
-
<span style={{ fontWeight: 'bold', marginLeft: 4 }} >{
|
|
91
|
+
<span style={{ fontWeight: 'bold', marginLeft: 4 }} >{Money.toStringChinese(lineAmountIncludeTax)}</span>
|
|
92
92
|
</div>
|
|
93
93
|
<div style={{ flex: 1 }} />
|
|
94
94
|
<div style={{ width: 90, color: '#9F613E' }} >(小写)</div>
|