kts-component-invoice-operate 3.2.143 → 3.2.145

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.
Files changed (209) hide show
  1. package/.dumi/theme/builtins/API.tsx +66 -66
  2. package/.editorconfig +16 -16
  3. package/.fatherrc.ts +4 -4
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +8 -8
  7. package/README.md +9 -9
  8. package/dist/Invoice/ui/digtal/RealEstateInfo/index.d.ts +2 -2
  9. package/dist/index.esm.js +603 -601
  10. package/dist/index.js +603 -601
  11. package/docs/index.md +5 -5
  12. package/docs-dist/static/arrowDown.a1cbf0d8.svg +2 -2
  13. package/docs-dist/static/arrowUp.4c482054.svg +2 -2
  14. package/docs-dist/static/fork.5431267d.svg +11 -11
  15. package/docs-dist/static/plus.44013ce3.svg +11 -11
  16. package/docs-dist/static/plus.4fd1af30.svg +11 -11
  17. package/index.html +12 -12
  18. package/package.json +61 -61
  19. package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +39 -39
  20. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +16 -16
  21. package/src/Invoice/Invoice-digtal/_test/header/index.tsx +84 -84
  22. package/src/Invoice/Invoice-digtal/_test/importGoods/index.tsx +868 -868
  23. package/src/Invoice/Invoice-digtal/_test/importStakeholder/index.tsx +18 -18
  24. package/src/Invoice/Invoice-digtal/_test/lineCredit/index.tsx +19 -19
  25. package/src/Invoice/Invoice-digtal/_test/prefab/index.tsx +150 -150
  26. package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +42 -42
  27. package/src/Invoice/Invoice-digtal/_test/realEstateInfo/index.tsx +11 -11
  28. package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -12
  29. package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -29
  30. package/src/Invoice/Invoice-digtal/index.md +34 -34
  31. package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +95 -95
  32. package/src/Invoice/InvoiceController/InvoiceControllerState/AutoComplete/index.ts +20 -20
  33. package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
  34. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/Drag/index.ts +15 -15
  35. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +104 -104
  36. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
  37. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +78 -78
  38. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +81 -81
  39. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +7 -7
  40. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
  41. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +117 -117
  42. package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +13 -13
  43. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +65 -65
  44. package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
  45. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +126 -126
  46. package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +86 -86
  47. package/src/Invoice/InvoiceController/fns/delGood.ts +41 -41
  48. package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +26 -26
  49. package/src/Invoice/InvoiceController/fns/importGoodsDrawer.ts +79 -79
  50. package/src/Invoice/InvoiceController/fns/itemBlur.ts +40 -40
  51. package/src/Invoice/InvoiceController/fns/mergeDetails.ts +201 -201
  52. package/src/Invoice/InvoiceController/fns/mergeDiscount.ts +35 -35
  53. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +24 -24
  54. package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
  55. package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
  56. package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
  57. package/src/Invoice/InvoiceController/index.ts +81 -81
  58. package/src/Invoice/_test/buyerNameSearch/index.tsx +42 -42
  59. package/src/Invoice/_test/deduction/index.tsx +935 -935
  60. package/src/Invoice/_test/draft/index.tsx +40 -40
  61. package/src/Invoice/_test/easiest/index.tsx +5 -5
  62. package/src/Invoice/_test/endowCode/index.tsx +1158 -1158
  63. package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
  64. package/src/Invoice/_test/importBuyer/index.tsx +74 -74
  65. package/src/Invoice/_test/importGoods/index.tsx +1197 -1197
  66. package/src/Invoice/_test/invoiceType/index.tsx +59 -59
  67. package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
  68. package/src/Invoice/_test/replaceHead/index.tsx +22 -22
  69. package/src/Invoice/_test/retrieveData/index.tsx +22 -22
  70. package/src/Invoice/_test/seller/index.tsx +28 -28
  71. package/src/Invoice/_test/setDataSource/index.tsx +73 -73
  72. package/src/Invoice/_test/unit/index.tsx +19 -19
  73. package/src/Invoice/index.less +29 -29
  74. package/src/Invoice/index.md +53 -53
  75. package/src/Invoice/index.tsx +179 -179
  76. package/src/Invoice/tools/calculate/index.ts +132 -132
  77. package/src/Invoice/tools/coolingFn/index.ts +17 -17
  78. package/src/Invoice/tools/evaluate/index.ts +7 -7
  79. package/src/Invoice/tools/idGenerator/index.ts +2 -2
  80. package/src/Invoice/tools/itemName/index.ts +55 -55
  81. package/src/Invoice/tools/lazyFn/index.ts +19 -19
  82. package/src/Invoice/tools/mounting/index.ts +13 -13
  83. package/src/Invoice/tools/strringFn/index.ts +40 -40
  84. package/src/Invoice/tools/useToGenerateId/index.ts +8 -8
  85. package/src/Invoice/tools/utils/index.ts +1 -1
  86. package/src/Invoice/tools/utils/money/index.ts +20 -20
  87. package/src/Invoice/ui/default/AddComparisonDrawer/index.tsx +149 -149
  88. package/src/Invoice/ui/default/Buyer/index.less +219 -219
  89. package/src/Invoice/ui/default/Buyer/index.tsx +114 -114
  90. package/src/Invoice/ui/default/Buyer/ui/BuyerNameInput/index.tsx +166 -166
  91. package/src/Invoice/ui/default/Buyer/ui/ImportBuyerButton/index.tsx +21 -21
  92. package/src/Invoice/ui/default/EndowCodeDrawer/index.less +8 -8
  93. package/src/Invoice/ui/default/EndowCodeDrawer/index.tsx +550 -550
  94. package/src/Invoice/ui/default/GoodsList/hook/useColumns/autoFillFn/index.ts +632 -632
  95. package/src/Invoice/ui/default/GoodsList/hook/useColumns/index.tsx +691 -691
  96. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  97. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  98. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.less +18 -18
  99. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.tsx +47 -47
  100. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +17 -17
  101. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +88 -88
  102. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  103. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  104. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +118 -118
  105. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  106. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +25 -25
  107. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  108. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  109. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  110. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  111. package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -24
  112. package/src/Invoice/ui/default/GoodsList/hook/useOnRow/index.tsx +39 -39
  113. package/src/Invoice/ui/default/GoodsList/hook/useRowSelection/index.tsx +114 -114
  114. package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -23
  115. package/src/Invoice/ui/default/GoodsList/index.less +179 -179
  116. package/src/Invoice/ui/default/GoodsList/index.tsx +205 -205
  117. package/src/Invoice/ui/default/GoodsList/ui/AddRowButton/index.tsx +65 -65
  118. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
  119. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
  120. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  121. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +69 -69
  122. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +65 -65
  123. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDetails/index.tsx +91 -91
  124. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDiscount/index.tsx +36 -36
  125. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesDiscount/index.tsx +109 -109
  126. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesGifts/index.tsx +94 -94
  127. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/index.tsx +37 -37
  128. package/src/Invoice/ui/default/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  129. package/src/Invoice/ui/default/GoodsList/ui/Search/index.less +10 -10
  130. package/src/Invoice/ui/default/GoodsList/ui/Search/index.tsx +52 -52
  131. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.less +18 -18
  132. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.tsx +114 -114
  133. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.less +28 -28
  134. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.tsx +57 -57
  135. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.less +38 -38
  136. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.tsx +108 -108
  137. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.less +44 -44
  138. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.tsx +96 -96
  139. package/src/Invoice/ui/default/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -31
  140. package/src/Invoice/ui/default/ImportBuyerDrawer/index.tsx +75 -75
  141. package/src/Invoice/ui/default/ImportGoodsDrawer/index.tsx +198 -198
  142. package/src/Invoice/ui/default/InvoiceHeader/index.less +68 -68
  143. package/src/Invoice/ui/default/InvoiceHeader/index.tsx +246 -246
  144. package/src/Invoice/ui/default/Seller/index.less +113 -113
  145. package/src/Invoice/ui/default/Seller/index.tsx +98 -98
  146. package/src/Invoice/ui/default/Sign/index.less +14 -14
  147. package/src/Invoice/ui/default/Sign/index.tsx +71 -71
  148. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +624 -624
  149. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +654 -654
  150. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/svg/plus.svg +11 -11
  151. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  152. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  153. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +9 -9
  154. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +84 -84
  155. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  156. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  157. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
  158. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  159. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
  160. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  161. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  162. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  163. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  164. package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +39 -39
  165. package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +121 -121
  166. package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -23
  167. package/src/Invoice/ui/digtal/GoodsList/index.less +56 -56
  168. package/src/Invoice/ui/digtal/GoodsList/index.tsx +180 -180
  169. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +65 -65
  170. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +340 -340
  171. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +11 -11
  172. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  173. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  174. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +37 -37
  175. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -82
  176. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +57 -57
  177. package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  178. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +11 -11
  179. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +50 -50
  180. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +53 -53
  181. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +98 -98
  182. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +11 -11
  183. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.less +28 -28
  184. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +53 -53
  185. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +38 -38
  186. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +108 -108
  187. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -31
  188. package/src/Invoice/ui/digtal/InvoiceHeader/index.less +57 -57
  189. package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -77
  190. package/src/Invoice/ui/digtal/RealEstateInfo/index.less +14 -14
  191. package/src/Invoice/ui/digtal/RealEstateInfo/index.tsx +136 -129
  192. package/src/Invoice/ui/digtal/Sign/index.less +48 -48
  193. package/src/Invoice/ui/digtal/Sign/index.tsx +99 -99
  194. package/src/Invoice/ui/digtal/Stakeholder/index.less +99 -99
  195. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +393 -393
  196. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +2 -2
  197. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +2 -2
  198. package/src/Invoice/ui/digtal/Stakeholder/svg/plus.svg +11 -11
  199. package/src/InvoiceTypeModal/_test/easiest/index.tsx +31 -31
  200. package/src/InvoiceTypeModal/index.less +7 -7
  201. package/src/InvoiceTypeModal/index.md +5 -5
  202. package/src/InvoiceTypeModal/index.tsx +153 -153
  203. package/src/TaxClassificationCodeModal/_test/easiest/index.tsx +177 -177
  204. package/src/TaxClassificationCodeModal/index.md +6 -6
  205. package/src/TaxClassificationCodeModal/index.tsx +74 -74
  206. package/src/index.ts +12 -12
  207. package/tsconfig.json +31 -31
  208. package/typings.d.ts +3 -3
  209. package/yarn.e.lock +14331 -14331
@@ -1,95 +1,95 @@
1
- import React from 'react';
2
- import GreyReactBox from 'grey-react-box';
3
- import { chain, bignumber } from 'mathjs';
4
- import InvoiceControllerState from '../InvoiceControllerState';
5
- import { WrappedFormUtils } from 'kts-components-antd-x3/lib/form/Form';
6
- import LineAttributeType from '../InvoiceControllerState/GoodsListState/LineAttributeType';
7
-
8
- export default class InvoiceControllerForm extends GreyReactBox<InvoiceControllerState> {
9
- /** form 字典 */
10
- readonly formList = new Map<string, WrappedFormUtils>();
11
-
12
- /** 注册 form */
13
- useForm(key: string, value: WrappedFormUtils) {
14
- /** 注册 form 到组件 */
15
- React.useEffect(() => {
16
- this.formList.set(key, value);
17
- return () => {
18
- this.formList.delete(key);
19
- };
20
- }, [value, key]);
21
- }
22
-
23
- /** 校验所有表单 */
24
- async validateFields(): Promise<{ errors: Map<string, any>; values: Map<string, any> }> {
25
-
26
- await this.wait();
27
-
28
- const _errors = new Map<string, any>();
29
- const _values = new Map<string, any>();
30
-
31
- const arr = Array.from(this.formList);
32
- for (let i = 0; i < arr.length; i++) {
33
- const key = arr[i][0];
34
- const { errors, values } = await validateFields(arr[i][1]);
35
-
36
- errors && _errors.set(key, errors);
37
- _values && _values.set(key, values);
38
- }
39
-
40
- // 列表数据
41
- if (this.state.goodsListState.form) {
42
- try {
43
- await this.state.goodsListState.form?.validateFields()
44
- } catch (error: any) {
45
- _errors.set('goodsList', error.errors);
46
- }
47
- }
48
-
49
- _values.set('goodsList', this.state.goodsListState.goodsList.slice());
50
-
51
- // 金额(含税)
52
- _values.set('lineAmountIncludeTax', (() => {
53
- let sum = chain(bignumber(0));
54
- this.state.goodsListState.goodsList.forEach(e => {
55
- if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
56
- sum = sum.add(bignumber(e.lineAmountIncludeTax || 0));
57
- });
58
- return sum.done().toNumber();
59
- })());
60
-
61
- // 金额(不含税)
62
- _values.set('lineAmountExcludeTax', (() => {
63
- let sum = chain(bignumber(0));
64
- this.state.goodsListState.goodsList.forEach(e => {
65
- if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
66
- sum = sum.add(bignumber(e.lineAmountExcludeTax || 0));
67
- });
68
- return sum.done().toNumber();
69
- })());
70
-
71
- // 税额
72
- _values.set('taxAmount', (() => {
73
- let sum = chain(bignumber(0));
74
- this.state.goodsListState.goodsList.forEach((e) => {
75
- if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
76
- sum = sum.add(bignumber(e.taxAmount || 0));
77
- });
78
- return sum.done().toNumber();
79
- })());
80
-
81
- // 含税标记
82
- _values.set('isTaxIncluded', this.state.goodsListState.isTaxIncluded)
83
-
84
- return { errors: _errors, values: _values };
85
- }
86
- }
87
-
88
- const validateFields = (form: WrappedFormUtils) => {
89
- return new Promise<any>((resolve: (v: any) => void) => {
90
- form.validateFields((errors, values) => {
91
- resolve({ errors, values });
92
- });
93
- });
94
- };
95
-
1
+ import React from 'react';
2
+ import GreyReactBox from 'grey-react-box';
3
+ import { chain, bignumber } from 'mathjs';
4
+ import InvoiceControllerState from '../InvoiceControllerState';
5
+ import { WrappedFormUtils } from 'kts-components-antd-x3/lib/form/Form';
6
+ import LineAttributeType from '../InvoiceControllerState/GoodsListState/LineAttributeType';
7
+
8
+ export default class InvoiceControllerForm extends GreyReactBox<InvoiceControllerState> {
9
+ /** form 字典 */
10
+ readonly formList = new Map<string, WrappedFormUtils>();
11
+
12
+ /** 注册 form */
13
+ useForm(key: string, value: WrappedFormUtils) {
14
+ /** 注册 form 到组件 */
15
+ React.useEffect(() => {
16
+ this.formList.set(key, value);
17
+ return () => {
18
+ this.formList.delete(key);
19
+ };
20
+ }, [value, key]);
21
+ }
22
+
23
+ /** 校验所有表单 */
24
+ async validateFields(): Promise<{ errors: Map<string, any>; values: Map<string, any> }> {
25
+
26
+ await this.wait();
27
+
28
+ const _errors = new Map<string, any>();
29
+ const _values = new Map<string, any>();
30
+
31
+ const arr = Array.from(this.formList);
32
+ for (let i = 0; i < arr.length; i++) {
33
+ const key = arr[i][0];
34
+ const { errors, values } = await validateFields(arr[i][1]);
35
+
36
+ errors && _errors.set(key, errors);
37
+ _values && _values.set(key, values);
38
+ }
39
+
40
+ // 列表数据
41
+ if (this.state.goodsListState.form) {
42
+ try {
43
+ await this.state.goodsListState.form?.validateFields()
44
+ } catch (error: any) {
45
+ _errors.set('goodsList', error.errors);
46
+ }
47
+ }
48
+
49
+ _values.set('goodsList', this.state.goodsListState.goodsList.slice());
50
+
51
+ // 金额(含税)
52
+ _values.set('lineAmountIncludeTax', (() => {
53
+ let sum = chain(bignumber(0));
54
+ this.state.goodsListState.goodsList.forEach(e => {
55
+ if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
56
+ sum = sum.add(bignumber(e.lineAmountIncludeTax || 0));
57
+ });
58
+ return sum.done().toNumber();
59
+ })());
60
+
61
+ // 金额(不含税)
62
+ _values.set('lineAmountExcludeTax', (() => {
63
+ let sum = chain(bignumber(0));
64
+ this.state.goodsListState.goodsList.forEach(e => {
65
+ if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
66
+ sum = sum.add(bignumber(e.lineAmountExcludeTax || 0));
67
+ });
68
+ return sum.done().toNumber();
69
+ })());
70
+
71
+ // 税额
72
+ _values.set('taxAmount', (() => {
73
+ let sum = chain(bignumber(0));
74
+ this.state.goodsListState.goodsList.forEach((e) => {
75
+ if (!e || e.lineAttribute === LineAttributeType.赠品行) return;
76
+ sum = sum.add(bignumber(e.taxAmount || 0));
77
+ });
78
+ return sum.done().toNumber();
79
+ })());
80
+
81
+ // 含税标记
82
+ _values.set('isTaxIncluded', this.state.goodsListState.isTaxIncluded)
83
+
84
+ return { errors: _errors, values: _values };
85
+ }
86
+ }
87
+
88
+ const validateFields = (form: WrappedFormUtils) => {
89
+ return new Promise<any>((resolve: (v: any) => void) => {
90
+ form.validateFields((errors, values) => {
91
+ resolve({ errors, values });
92
+ });
93
+ });
94
+ };
95
+
@@ -1,20 +1,20 @@
1
- import IGood from "../GoodsListState/IGood";
2
-
3
- /** 自动补全 */
4
- export default class AutoComplete {
5
-
6
- /** 商品名称自动补全 */
7
- onItemNameSearch?: (searchText: string) => Promise<any[]>;
8
-
9
- /** 购方名称智能赋码 */
10
- onItemNameBlur?: (searchText: string) => Promise<any[]>;
11
-
12
- /** 购方名称自动补全 */
13
- onBuyerNameSearch?: (searchText: string) => Promise<any[]>;
14
-
15
- /** 统一社会信用代码/纳税人识别号 */
16
- onBuyerTaxIdSearch?: (searchText: string) => Promise<any[]>;
17
-
18
- /** 商品编码自动补全 */
19
- onItemCodeSearch?: (searchText: string, itemName: any) => Promise<any[]>;
20
- }
1
+ import IGood from "../GoodsListState/IGood";
2
+
3
+ /** 自动补全 */
4
+ export default class AutoComplete {
5
+
6
+ /** 商品名称自动补全 */
7
+ onItemNameSearch?: (searchText: string) => Promise<any[]>;
8
+
9
+ /** 购方名称智能赋码 */
10
+ onItemNameBlur?: (searchText: string) => Promise<any[]>;
11
+
12
+ /** 购方名称自动补全 */
13
+ onBuyerNameSearch?: (searchText: string) => Promise<any[]>;
14
+
15
+ /** 统一社会信用代码/纳税人识别号 */
16
+ onBuyerTaxIdSearch?: (searchText: string) => Promise<any[]>;
17
+
18
+ /** 商品编码自动补全 */
19
+ onItemCodeSearch?: (searchText: string, itemName: any) => Promise<any[]>;
20
+ }
@@ -1,88 +1,88 @@
1
-
2
- import React from 'react';
3
- import { ColumnProps } from 'kts-components-antd-x3/lib/Table/interface';
4
- import { PaginationConfig } from 'kts-components-antd-x3/lib/Table';
5
- import { GetFieldDecoratorOptions } from 'kts-components-antd-x3/lib/form/Form';
6
-
7
- export interface IGetBuyerListOption {
8
- /** 分页数据 */
9
- pagination: PaginationConfig;
10
- }
11
-
12
- export interface IFormItem {
13
- id: string;
14
- label: string;
15
- node: React.ReactNode;
16
- options: GetFieldDecoratorOptions;
17
- }
18
-
19
- export interface IBuyerInfo {
20
- /** 购买方名称 */
21
- buyerName?: string;
22
-
23
- /** 购买方纳税人识别号 */
24
- buyerNo?: string;
25
-
26
- /** 购买方地址及电话 */
27
- buyerAddress?: string;
28
-
29
- /** 购买方开户行及账号 */
30
- buyerBank?: string;
31
- }
32
-
33
- /** 自动填充 */
34
- export interface IAutoContainer {
35
-
36
- /** 购买方变化 */
37
- onBuyNameChange: (e?: string) => Promise<{ recent?: IBuyerInfo[], list?: IBuyerInfo[] }>;
38
- }
39
-
40
- export default class BuyerState {
41
-
42
- /** 表头 */
43
- columns: ColumnProps<any>[] = [
44
- {
45
- title: '公司名称',
46
- dataIndex: 'buyerName',
47
- key: 'buyerName',
48
- },
49
- {
50
- title: '纳税人识别号',
51
- dataIndex: 'buyerNo',
52
- key: 'buyerNo',
53
- },
54
- {
55
- title: '地址',
56
- dataIndex: 'address',
57
- key: 'address',
58
- },
59
- {
60
- title: '电话',
61
- dataIndex: 'phone',
62
- key: 'phone',
63
- },
64
- {
65
- title: '开户行及账号',
66
- dataIndex: 'buyerBank',
67
- key: 'buyerBank',
68
- },
69
- ];
70
-
71
- /** 行点击事件 */
72
- onRowClick = async (record: any) => record;
73
-
74
- /** 购方列表 */
75
- dataSource: any = [];
76
-
77
- /** 分页数据 */
78
- pagination: PaginationConfig = {};
79
-
80
- /** 是否显示导入 */
81
- isVisibleDrawer = false;
82
-
83
- /** 顶部扩展 */
84
- topExpand?: React.ReactNode;
85
-
86
- /** 自动填充 */
87
- autoContainer?: IAutoContainer;
88
- }
1
+
2
+ import React from 'react';
3
+ import { ColumnProps } from 'kts-components-antd-x3/lib/Table/interface';
4
+ import { PaginationConfig } from 'kts-components-antd-x3/lib/Table';
5
+ import { GetFieldDecoratorOptions } from 'kts-components-antd-x3/lib/form/Form';
6
+
7
+ export interface IGetBuyerListOption {
8
+ /** 分页数据 */
9
+ pagination: PaginationConfig;
10
+ }
11
+
12
+ export interface IFormItem {
13
+ id: string;
14
+ label: string;
15
+ node: React.ReactNode;
16
+ options: GetFieldDecoratorOptions;
17
+ }
18
+
19
+ export interface IBuyerInfo {
20
+ /** 购买方名称 */
21
+ buyerName?: string;
22
+
23
+ /** 购买方纳税人识别号 */
24
+ buyerNo?: string;
25
+
26
+ /** 购买方地址及电话 */
27
+ buyerAddress?: string;
28
+
29
+ /** 购买方开户行及账号 */
30
+ buyerBank?: string;
31
+ }
32
+
33
+ /** 自动填充 */
34
+ export interface IAutoContainer {
35
+
36
+ /** 购买方变化 */
37
+ onBuyNameChange: (e?: string) => Promise<{ recent?: IBuyerInfo[], list?: IBuyerInfo[] }>;
38
+ }
39
+
40
+ export default class BuyerState {
41
+
42
+ /** 表头 */
43
+ columns: ColumnProps<any>[] = [
44
+ {
45
+ title: '公司名称',
46
+ dataIndex: 'buyerName',
47
+ key: 'buyerName',
48
+ },
49
+ {
50
+ title: '纳税人识别号',
51
+ dataIndex: 'buyerNo',
52
+ key: 'buyerNo',
53
+ },
54
+ {
55
+ title: '地址',
56
+ dataIndex: 'address',
57
+ key: 'address',
58
+ },
59
+ {
60
+ title: '电话',
61
+ dataIndex: 'phone',
62
+ key: 'phone',
63
+ },
64
+ {
65
+ title: '开户行及账号',
66
+ dataIndex: 'buyerBank',
67
+ key: 'buyerBank',
68
+ },
69
+ ];
70
+
71
+ /** 行点击事件 */
72
+ onRowClick = async (record: any) => record;
73
+
74
+ /** 购方列表 */
75
+ dataSource: any = [];
76
+
77
+ /** 分页数据 */
78
+ pagination: PaginationConfig = {};
79
+
80
+ /** 是否显示导入 */
81
+ isVisibleDrawer = false;
82
+
83
+ /** 顶部扩展 */
84
+ topExpand?: React.ReactNode;
85
+
86
+ /** 自动填充 */
87
+ autoContainer?: IAutoContainer;
88
+ }
@@ -1,16 +1,16 @@
1
-
2
- /** 商品拖拽数据 */
3
- export default class Drag {
4
-
5
- /** 是否启用拖拽 */
6
- isStart: boolean = false;
7
-
8
- /** 当前拖动中的货品索引 */
9
- current?: string;
10
-
11
- /** 准备插入的货物索引 */
12
- container?: string;
13
-
14
- /** 插入位置 */
15
- site?: 'u' | 'd'
1
+
2
+ /** 商品拖拽数据 */
3
+ export default class Drag {
4
+
5
+ /** 是否启用拖拽 */
6
+ isStart: boolean = false;
7
+
8
+ /** 当前拖动中的货品索引 */
9
+ current?: string;
10
+
11
+ /** 准备插入的货物索引 */
12
+ container?: string;
13
+
14
+ /** 插入位置 */
15
+ site?: 'u' | 'd'
16
16
  }
@@ -1,104 +1,104 @@
1
- import GoodsListState from '../../GoodsListState';
2
- import IGood from '../IGood';
3
- import LineAttributeType from '../LineAttributeType';
4
-
5
- export default class EndowCode {
6
-
7
- /** 准备赋码的货物索引列表 */
8
- endowcodeGoodIndex: string[] = [];
9
-
10
- /**
11
- * 获取 税收分类编码列表 (弃用)
12
- * @deprecated 请使用 getTaxCategoryCodeTree 替换
13
- * */
14
- getTaxCategoryCodeList: (value: string) => Promise<{ value: string, label: string }[]> = async () => [];
15
-
16
- /**
17
- * 获取 税收分类编码树
18
- * @param taxCategoryCode 税收分类编码
19
- * @param val val
20
- * @returns 税收分类编码树
21
- */
22
- getTaxCategoryCodeTree?: (taxCategoryCode?: string, val?: string) => Promise<{ id: string, pid: string }[]>;
23
-
24
- /** 税率 优惠政策 */
25
- getReadOnlyTaxRate?: (value?: GoodsListState) => boolean;
26
-
27
- /** 优惠政策 优惠政策 */
28
- getReadOnlyFavouredPolicy?: (value?: GoodsListState) => boolean;
29
-
30
- /**
31
- * 获取赋码时候的默认值
32
- * @param value 商品信息
33
- * @param length 商品数量
34
- * */
35
- getDefaultValue?: (value: IGood, length: number) => Promise<IGood>;
36
-
37
- /** 税率 是否可以编辑 校验函数 */
38
- readonly readOnlyTaxRateMap: { [key: string]: (value?: GoodsListState) => boolean } = {
39
- /** 草稿发票 */
40
- DRAFT: draft,
41
- };
42
-
43
- /** 优惠政策类型列表 */
44
- favouredPolicyNameList: string[] = [
45
- '100%先征后退',
46
- '即征即退30%',
47
- '即征即退50%',
48
- '即征即退70%',
49
- '按3%简易征收',
50
- '按5%简易征收',
51
- '按3%简易征收减按1.5%计征',
52
- '稀土产品',
53
- '简易征收',
54
- '50%先征后退',
55
- '不征税',
56
- '先征后退',
57
- '免税',
58
- '即征即退100%',
59
- '超税负3%即征即退',
60
- '超税负8%即征即退',
61
- '超税负12%即征即退',
62
- ];
63
-
64
- /** 免税类型 是否需要 */
65
- isTaxFreeTypeNeeded: boolean = true;
66
-
67
- /** 免税类型 列表 */
68
- taxFreeTypeList: any[] = [
69
- { label: '出口免税和其他免税优惠政策(免税)', value: 1 },
70
- { label: '不征增值税(不征税)', value: 2 },
71
- { label: '普通零税率(0%)', value: 3 },
72
- ];
73
-
74
- /**
75
- * 小规模纳税人 自动赋码缓存 、
76
- * */
77
- cache: { [key: string]: any } = {};
78
-
79
- /**
80
- * 打开侧边栏
81
- * */
82
- onSearchTaxClassificationCode: (value?: any) => Promise<any[]> = async () => [];
83
-
84
- /**
85
- * 动态加载
86
- * */
87
- onLoadTaxClassificationCode: (value?: any) => Promise<any[]> = async () => [];
88
- }
89
-
90
- /** 草稿发票 税率 是否可以编辑 校验函数 */
91
- function draft(value?: GoodsListState) {
92
- if (!value) return true;
93
-
94
- // isDiscount
95
- const goods = value.endowCode.endowcodeGoodIndex.map(e => value.goodsMap.get(e)).filter(e => e?.lineAttribute !== LineAttributeType.折扣行);
96
- const isDiscount = goods.some(e => e?.lineAttribute === LineAttributeType.被折扣行);
97
-
98
- // 是否折扣
99
- if (isDiscount) {
100
- return goods.length === 1
101
- } else {
102
- return false;
103
- }
104
- }
1
+ import GoodsListState from '../../GoodsListState';
2
+ import IGood from '../IGood';
3
+ import LineAttributeType from '../LineAttributeType';
4
+
5
+ export default class EndowCode {
6
+
7
+ /** 准备赋码的货物索引列表 */
8
+ endowcodeGoodIndex: string[] = [];
9
+
10
+ /**
11
+ * 获取 税收分类编码列表 (弃用)
12
+ * @deprecated 请使用 getTaxCategoryCodeTree 替换
13
+ * */
14
+ getTaxCategoryCodeList: (value: string) => Promise<{ value: string, label: string }[]> = async () => [];
15
+
16
+ /**
17
+ * 获取 税收分类编码树
18
+ * @param taxCategoryCode 税收分类编码
19
+ * @param val val
20
+ * @returns 税收分类编码树
21
+ */
22
+ getTaxCategoryCodeTree?: (taxCategoryCode?: string, val?: string) => Promise<{ id: string, pid: string }[]>;
23
+
24
+ /** 税率 优惠政策 */
25
+ getReadOnlyTaxRate?: (value?: GoodsListState) => boolean;
26
+
27
+ /** 优惠政策 优惠政策 */
28
+ getReadOnlyFavouredPolicy?: (value?: GoodsListState) => boolean;
29
+
30
+ /**
31
+ * 获取赋码时候的默认值
32
+ * @param value 商品信息
33
+ * @param length 商品数量
34
+ * */
35
+ getDefaultValue?: (value: IGood, length: number) => Promise<IGood>;
36
+
37
+ /** 税率 是否可以编辑 校验函数 */
38
+ readonly readOnlyTaxRateMap: { [key: string]: (value?: GoodsListState) => boolean } = {
39
+ /** 草稿发票 */
40
+ DRAFT: draft,
41
+ };
42
+
43
+ /** 优惠政策类型列表 */
44
+ favouredPolicyNameList: string[] = [
45
+ '100%先征后退',
46
+ '即征即退30%',
47
+ '即征即退50%',
48
+ '即征即退70%',
49
+ '按3%简易征收',
50
+ '按5%简易征收',
51
+ '按3%简易征收减按1.5%计征',
52
+ '稀土产品',
53
+ '简易征收',
54
+ '50%先征后退',
55
+ '不征税',
56
+ '先征后退',
57
+ '免税',
58
+ '即征即退100%',
59
+ '超税负3%即征即退',
60
+ '超税负8%即征即退',
61
+ '超税负12%即征即退',
62
+ ];
63
+
64
+ /** 免税类型 是否需要 */
65
+ isTaxFreeTypeNeeded: boolean = true;
66
+
67
+ /** 免税类型 列表 */
68
+ taxFreeTypeList: any[] = [
69
+ { label: '出口免税和其他免税优惠政策(免税)', value: 1 },
70
+ { label: '不征增值税(不征税)', value: 2 },
71
+ { label: '普通零税率(0%)', value: 3 },
72
+ ];
73
+
74
+ /**
75
+ * 小规模纳税人 自动赋码缓存 、
76
+ * */
77
+ cache: { [key: string]: any } = {};
78
+
79
+ /**
80
+ * 打开侧边栏
81
+ * */
82
+ onSearchTaxClassificationCode: (value?: any) => Promise<any[]> = async () => [];
83
+
84
+ /**
85
+ * 动态加载
86
+ * */
87
+ onLoadTaxClassificationCode: (value?: any) => Promise<any[]> = async () => [];
88
+ }
89
+
90
+ /** 草稿发票 税率 是否可以编辑 校验函数 */
91
+ function draft(value?: GoodsListState) {
92
+ if (!value) return true;
93
+
94
+ // isDiscount
95
+ const goods = value.endowCode.endowcodeGoodIndex.map(e => value.goodsMap.get(e)).filter(e => e?.lineAttribute !== LineAttributeType.折扣行);
96
+ const isDiscount = goods.some(e => e?.lineAttribute === LineAttributeType.被折扣行);
97
+
98
+ // 是否折扣
99
+ if (isDiscount) {
100
+ return goods.length === 1
101
+ } else {
102
+ return false;
103
+ }
104
+ }
@@ -1,10 +1,10 @@
1
-
2
- /** 商品表格补充配置 */
3
-
4
- import { ValidationRule } from "kts-components-antd-x3/lib/form";
5
-
6
- export default interface IColumnsReplenish {
7
-
8
- /** 补充的规则 */
9
- rules: ValidationRule[];
10
- }
1
+
2
+ /** 商品表格补充配置 */
3
+
4
+ import { ValidationRule } from "kts-components-antd-x3/lib/form";
5
+
6
+ export default interface IColumnsReplenish {
7
+
8
+ /** 补充的规则 */
9
+ rules: ValidationRule[];
10
+ }