kts-component-invoice-operate 3.2.244 → 3.2.246

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 (278) 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/BRANCH.md +5 -0
  8. package/README.md +12 -12
  9. package/branch/3.2.x +1 -0
  10. package/dist/Invoice/ui/default/GoodsList/hook/useColumns/autoFillFn/index.d.ts +2 -0
  11. package/dist/Invoice/ui/digtal/StakeFarmerholder/index.d.ts +2 -0
  12. package/dist/index.esm.js +126 -7
  13. package/dist/index.js +126 -7
  14. package/docs/index.md +5 -5
  15. package/docs-dist/404.html +33 -33
  16. package/docs-dist/index.html +33 -33
  17. package/docs-dist/static/arrowDown.a1cbf0d8.svg +2 -2
  18. package/docs-dist/static/arrowUp.4c482054.svg +2 -2
  19. package/docs-dist/static/fork.5431267d.svg +11 -11
  20. package/docs-dist/static/plus.44013ce3.svg +11 -11
  21. package/docs-dist/static/plus.4fd1af30.svg +11 -11
  22. package/docs-dist/umi.css +18 -18
  23. package/index.html +12 -12
  24. package/package.json +62 -62
  25. package/src/Invoice/Invoice-digtal/_test/architecture/index.tsx +21 -21
  26. package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +40 -40
  27. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +214 -214
  28. package/src/Invoice/Invoice-digtal/_test/freight/index.tsx +14580 -14580
  29. package/src/Invoice/Invoice-digtal/_test/header/index.tsx +84 -84
  30. package/src/Invoice/Invoice-digtal/_test/importGoods/index.tsx +868 -868
  31. package/src/Invoice/Invoice-digtal/_test/importStakeholder/index.tsx +18 -18
  32. package/src/Invoice/Invoice-digtal/_test/lineCredit/index.tsx +19 -19
  33. package/src/Invoice/Invoice-digtal/_test/pay/index.tsx +14636 -14636
  34. package/src/Invoice/Invoice-digtal/_test/prefab/index.tsx +150 -150
  35. package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +55 -55
  36. package/src/Invoice/Invoice-digtal/_test/realEstateInfo/index.tsx +83 -83
  37. package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -12
  38. package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -29
  39. package/src/Invoice/Invoice-digtal/index.md +44 -44
  40. package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +116 -116
  41. package/src/Invoice/InvoiceController/InvoiceControllerState/AutoComplete/index.ts +26 -26
  42. package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
  43. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IColumnsReplenish/index.ts +10 -10
  44. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IGood/index.ts +33 -33
  45. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/ImportGoods/index.ts +81 -81
  46. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/index.ts +39 -39
  47. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/Drag/index.ts +15 -15
  48. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +104 -104
  49. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
  50. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +91 -90
  51. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +84 -84
  52. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +7 -7
  53. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
  54. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +134 -134
  55. package/src/Invoice/InvoiceController/InvoiceControllerState/PayListState/IColumnsReplenish/index.ts +10 -10
  56. package/src/Invoice/InvoiceController/InvoiceControllerState/PayListState/IGood/index.ts +35 -35
  57. package/src/Invoice/InvoiceController/InvoiceControllerState/PayListState/ImportGoods/index.ts +81 -81
  58. package/src/Invoice/InvoiceController/InvoiceControllerState/PayListState/index.ts +39 -39
  59. package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +13 -13
  60. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +76 -76
  61. package/src/Invoice/InvoiceController/fns/addFreight.ts +11 -11
  62. package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
  63. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +126 -126
  64. package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +86 -86
  65. package/src/Invoice/InvoiceController/fns/addPay.ts +11 -11
  66. package/src/Invoice/InvoiceController/fns/delFreight.ts +38 -38
  67. package/src/Invoice/InvoiceController/fns/delGood.ts +41 -41
  68. package/src/Invoice/InvoiceController/fns/delPay.ts +38 -38
  69. package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +26 -26
  70. package/src/Invoice/InvoiceController/fns/importGoodsDrawer.ts +79 -79
  71. package/src/Invoice/InvoiceController/fns/itemBlur.ts +40 -40
  72. package/src/Invoice/InvoiceController/fns/mergeDetails.ts +201 -201
  73. package/src/Invoice/InvoiceController/fns/mergeDiscount.ts +35 -35
  74. package/src/Invoice/InvoiceController/fns/saveEditFreight.ts +24 -24
  75. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +24 -24
  76. package/src/Invoice/InvoiceController/fns/saveEditPay.ts +23 -23
  77. package/src/Invoice/InvoiceController/fns/setEditFreight.ts +16 -16
  78. package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
  79. package/src/Invoice/InvoiceController/fns/setEditPay.ts +16 -16
  80. package/src/Invoice/InvoiceController/fns/setFreight.ts +10 -10
  81. package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
  82. package/src/Invoice/InvoiceController/fns/setPay.ts +10 -10
  83. package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
  84. package/src/Invoice/InvoiceController/index.ts +127 -127
  85. package/src/Invoice/_test/buyerNameSearch/index.tsx +42 -42
  86. package/src/Invoice/_test/children/index.tsx +214 -214
  87. package/src/Invoice/_test/deduction/index.tsx +956 -957
  88. package/src/Invoice/_test/draft/index.tsx +40 -40
  89. package/src/Invoice/_test/easiest/index.tsx +5 -5
  90. package/src/Invoice/_test/endowCode/index.tsx +1158 -1158
  91. package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
  92. package/src/Invoice/_test/importBuyer/index.tsx +74 -74
  93. package/src/Invoice/_test/importGoods/index.tsx +1197 -1197
  94. package/src/Invoice/_test/invoiceType/index.tsx +59 -59
  95. package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
  96. package/src/Invoice/_test/replaceHead/index.tsx +22 -22
  97. package/src/Invoice/_test/retrieveData/index.tsx +22 -22
  98. package/src/Invoice/_test/seller/index.tsx +28 -28
  99. package/src/Invoice/_test/setDataSource/index.tsx +73 -73
  100. package/src/Invoice/_test/unit/index.tsx +19 -19
  101. package/src/Invoice/index.less +31 -31
  102. package/src/Invoice/index.md +56 -56
  103. package/src/Invoice/index.tsx +200 -200
  104. package/src/Invoice/tools/calculate/index.ts +144 -144
  105. package/src/Invoice/tools/coolingFn/index.ts +17 -17
  106. package/src/Invoice/tools/evaluate/index.ts +7 -7
  107. package/src/Invoice/tools/idGenerator/index.ts +2 -2
  108. package/src/Invoice/tools/itemName/index.ts +55 -55
  109. package/src/Invoice/tools/lazyFn/index.ts +19 -19
  110. package/src/Invoice/tools/mounting/index.ts +13 -13
  111. package/src/Invoice/tools/strringFn/index.ts +40 -40
  112. package/src/Invoice/tools/useToGenerateId/index.ts +12 -12
  113. package/src/Invoice/tools/utils/index.ts +1 -1
  114. package/src/Invoice/tools/utils/money/index.ts +20 -20
  115. package/src/Invoice/ui/default/AddComparisonDrawer/index.tsx +149 -149
  116. package/src/Invoice/ui/default/Buyer/index.less +219 -219
  117. package/src/Invoice/ui/default/Buyer/index.tsx +114 -114
  118. package/src/Invoice/ui/default/Buyer/ui/BuyerNameInput/index.tsx +166 -166
  119. package/src/Invoice/ui/default/Buyer/ui/ImportBuyerButton/index.tsx +21 -21
  120. package/src/Invoice/ui/default/EndowCodeDrawer/index.less +8 -8
  121. package/src/Invoice/ui/default/EndowCodeDrawer/index.tsx +612 -612
  122. package/src/Invoice/ui/default/GoodsList/hook/useColumns/autoFillFn/index.ts +681 -647
  123. package/src/Invoice/ui/default/GoodsList/hook/useColumns/index.tsx +769 -719
  124. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  125. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  126. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Expand/index.tsx +57 -57
  127. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.less +18 -18
  128. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.tsx +49 -49
  129. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +17 -17
  130. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +91 -91
  131. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  132. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  133. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +118 -118
  134. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/dist/index.js +32 -32
  135. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  136. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +25 -25
  137. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  138. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +99 -99
  139. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  140. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  141. package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -24
  142. package/src/Invoice/ui/default/GoodsList/hook/useOnRow/index.tsx +52 -52
  143. package/src/Invoice/ui/default/GoodsList/hook/useRowSelection/index.tsx +120 -120
  144. package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -23
  145. package/src/Invoice/ui/default/GoodsList/index.less +185 -185
  146. package/src/Invoice/ui/default/GoodsList/index.tsx +207 -207
  147. package/src/Invoice/ui/default/GoodsList/ui/AddRowButton/index.tsx +72 -72
  148. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
  149. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
  150. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  151. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +69 -69
  152. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +65 -65
  153. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDetails/index.tsx +91 -91
  154. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDiscount/index.tsx +36 -36
  155. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesDiscount/index.tsx +109 -109
  156. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesGifts/index.tsx +94 -94
  157. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/index.tsx +37 -37
  158. package/src/Invoice/ui/default/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  159. package/src/Invoice/ui/default/GoodsList/ui/Search/index.less +10 -10
  160. package/src/Invoice/ui/default/GoodsList/ui/Search/index.tsx +52 -52
  161. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.less +18 -18
  162. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.tsx +114 -114
  163. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.less +40 -40
  164. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.tsx +71 -71
  165. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.less +38 -38
  166. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.tsx +130 -130
  167. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.less +44 -44
  168. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.tsx +96 -96
  169. package/src/Invoice/ui/default/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -31
  170. package/src/Invoice/ui/default/ImportBuyerDrawer/index.tsx +75 -75
  171. package/src/Invoice/ui/default/ImportGoodsDrawer/index.tsx +201 -201
  172. package/src/Invoice/ui/default/InvoiceHeader/index.less +68 -68
  173. package/src/Invoice/ui/default/InvoiceHeader/index.tsx +246 -246
  174. package/src/Invoice/ui/default/Seller/index.less +113 -113
  175. package/src/Invoice/ui/default/Seller/index.tsx +98 -98
  176. package/src/Invoice/ui/default/Sign/index.less +14 -14
  177. package/src/Invoice/ui/default/Sign/index.tsx +71 -71
  178. package/src/Invoice/ui/digtal/Architecture/index.less +18 -18
  179. package/src/Invoice/ui/digtal/Architecture/index.tsx +177 -177
  180. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/dist/index.js +616 -616
  181. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/index.tsx +246 -246
  182. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  183. package/src/Invoice/ui/digtal/FreightList/hook/useOnRow/index.tsx +37 -37
  184. package/src/Invoice/ui/digtal/FreightList/hook/useRowSelection/index.tsx +119 -119
  185. package/src/Invoice/ui/digtal/FreightList/hook/useWindowClick/index.tsx +23 -23
  186. package/src/Invoice/ui/digtal/FreightList/index.less +72 -72
  187. package/src/Invoice/ui/digtal/FreightList/index.tsx +129 -129
  188. package/src/Invoice/ui/digtal/FreightList/ui/AddRowButton/index.tsx +74 -74
  189. package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  190. package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +36 -36
  191. package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.less +28 -28
  192. package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.tsx +20 -20
  193. package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.less +38 -38
  194. package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.tsx +108 -108
  195. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +683 -683
  196. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/dist/index.js +616 -616
  197. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +723 -724
  198. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/svg/plus.svg +11 -11
  199. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  200. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  201. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +9 -9
  202. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +87 -87
  203. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  204. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  205. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
  206. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  207. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
  208. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  209. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  210. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  211. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  212. package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +51 -51
  213. package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +121 -121
  214. package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -23
  215. package/src/Invoice/ui/digtal/GoodsList/index.less +56 -56
  216. package/src/Invoice/ui/digtal/GoodsList/index.tsx +181 -181
  217. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +87 -87
  218. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +340 -340
  219. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +11 -11
  220. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  221. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  222. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +37 -37
  223. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -82
  224. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +57 -57
  225. package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  226. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +11 -11
  227. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +60 -60
  228. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +53 -53
  229. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +98 -98
  230. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +11 -11
  231. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.less +28 -28
  232. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +52 -52
  233. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +38 -38
  234. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +113 -113
  235. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +34 -34
  236. package/src/Invoice/ui/digtal/InvoiceHeader/index.less +57 -57
  237. package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -77
  238. package/src/Invoice/ui/digtal/PayList/hook/useColumns/dist/index.js +616 -616
  239. package/src/Invoice/ui/digtal/PayList/hook/useColumns/index.tsx +168 -168
  240. package/src/Invoice/ui/digtal/PayList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  241. package/src/Invoice/ui/digtal/PayList/hook/useOnRow/index.tsx +37 -37
  242. package/src/Invoice/ui/digtal/PayList/hook/useRowSelection/index.tsx +119 -119
  243. package/src/Invoice/ui/digtal/PayList/hook/useWindowClick/index.tsx +19 -19
  244. package/src/Invoice/ui/digtal/PayList/index.less +72 -72
  245. package/src/Invoice/ui/digtal/PayList/index.tsx +132 -132
  246. package/src/Invoice/ui/digtal/PayList/ui/AddRowButton/index.tsx +74 -74
  247. package/src/Invoice/ui/digtal/PayList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  248. package/src/Invoice/ui/digtal/PayList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +36 -36
  249. package/src/Invoice/ui/digtal/PayList/ui/TableRow/index.less +28 -28
  250. package/src/Invoice/ui/digtal/PayList/ui/TableRow/index.tsx +20 -20
  251. package/src/Invoice/ui/digtal/PayList/ui/TableVirtual/index.less +38 -38
  252. package/src/Invoice/ui/digtal/PayList/ui/TableVirtual/index.tsx +108 -108
  253. package/src/Invoice/ui/digtal/RealEstateInfo/index.less +21 -21
  254. package/src/Invoice/ui/digtal/RealEstateInfo/index.tsx +451 -451
  255. package/src/Invoice/ui/digtal/Sign/index.less +48 -48
  256. package/src/Invoice/ui/digtal/Sign/index.tsx +99 -99
  257. package/src/Invoice/ui/digtal/StakeFarmerholder/index.less +99 -99
  258. package/src/Invoice/ui/digtal/StakeFarmerholder/index.tsx +1102 -1096
  259. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/arrowDown.svg +2 -2
  260. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/arrowUp.svg +2 -2
  261. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/plus.svg +11 -11
  262. package/src/Invoice/ui/digtal/Stakeholder/index.less +99 -99
  263. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +453 -453
  264. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +2 -2
  265. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +2 -2
  266. package/src/Invoice/ui/digtal/Stakeholder/svg/plus.svg +11 -11
  267. package/src/InvoiceTypeModal/_test/easiest/index.tsx +31 -31
  268. package/src/InvoiceTypeModal/dist/index.js +92 -92
  269. package/src/InvoiceTypeModal/index.less +7 -7
  270. package/src/InvoiceTypeModal/index.md +5 -5
  271. package/src/InvoiceTypeModal/index.tsx +161 -161
  272. package/src/TaxClassificationCodeModal/_test/easiest/index.tsx +184 -184
  273. package/src/TaxClassificationCodeModal/index.less +17 -17
  274. package/src/TaxClassificationCodeModal/index.md +6 -6
  275. package/src/TaxClassificationCodeModal/index.tsx +152 -152
  276. package/src/index.ts +13 -13
  277. package/tsconfig.json +31 -31
  278. package/typings.d.ts +3 -3
@@ -1,341 +1,341 @@
1
-
2
- import React from "react";
3
- import { chain, bignumber } from 'mathjs';
4
- import { Button, Drawer, Form, InputNumber, Radio, message, Space } from "kts-xui";
5
- import Invoice from "../../../../../../..";
6
- import { LineAttributeType } from "../../../../../../../InvoiceController";
7
-
8
- export default () => {
9
-
10
- /** 控制器 */
11
- const controller = Invoice.useInvoiceController();
12
-
13
- /** 组件模式 prefab 预制 readOnly 只读 */
14
- const model = controller.useMemo(s => s.model, []);
15
-
16
- /** 准备添加折扣的货物索引列表 */
17
- const discountGoodIndex = controller.useMemo(s => s.goodsListState.discountGoodIndex || [], []);
18
-
19
- /** 列表选中的货物索引列表 */
20
- const selectedGoodIndex = controller.useMemo(s => s.goodsListState.selectedGoodIndex, []);
21
-
22
- /** 货物字典 */
23
- const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
24
-
25
- /** 是否能添加折扣行 */
26
- const isAddDiscount = controller.useMemo(s => s.goodsListState.isAddDiscount, []);
27
-
28
- // 抽屉开启状态
29
- const open = React.useMemo(() => discountGoodIndex.length > 0, [discountGoodIndex]);
30
-
31
- /** 打开抽屉 */
32
- const onOpen = React.useCallback(async () => {
33
- await controller.saveEditGood();
34
- await controller.wait();
35
- await controller.run(async s => {
36
-
37
- // 不能给编辑状态的行增加折扣!
38
- let isOk = s.goodsListState.editGood && s.goodsListState.selectedGoodIndex.indexOf(s.goodsListState.editGood.$index) >= 0;
39
- if (isOk) {
40
- message.error({ content: '不能给编辑状态的行增加折扣!', key: '不能给编辑状态的行增加折扣!' });
41
- return;
42
- }
43
-
44
- // 项目不连续,不允许添加折扣
45
- if (!isContinuityNum(s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e)?.serialNo || -2).sort((a, b) => a - b))) {
46
- message.error({ content: '项目不连续,不允许添加折扣', key: '项目不连续,不允许添加折扣' });
47
- return;
48
- }
49
-
50
- // 不允许重复添加折扣
51
- isOk = s.goodsListState.selectedGoodIndex.some($index => s.goodsListState.goodsMap.get($index)?.lineAttribute !== LineAttributeType.正常)
52
- if (isOk) {
53
- message.error({ content: '不允许重复添加折扣', key: '不允许重复添加折扣' });
54
- return;
55
- }
56
-
57
- // 存在不同税率,不允许同时添加折扣
58
- if (areAllValuesEqual(s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e)?.taxRate)) === false) {
59
- message.error({ content: '存在不同税率,不允许同时添加折扣', key: '存在不同税率,不允许同时添加折扣' });
60
- return;
61
- }
62
-
63
- // 添加折扣时项目金额不能为空或零
64
- isOk = s.goodsListState.selectedGoodIndex.some($index => {
65
- const good = s.goodsListState.goodsMap.get($index);
66
- return `${good?.lineAmountIncludeTax}` === '0'
67
- })
68
- if (isOk) {
69
- message.error({ content: '添加折扣时项目金额不能为空或零', key: '添加折扣时项目金额不能为空或零' });
70
- return;
71
- }
72
-
73
- // 零税率需要设置免税类型,请在赋码中设置!
74
- isOk = s.goodsListState.selectedGoodIndex.some($index => {
75
- const good = s.goodsListState.goodsMap.get($index);
76
- return !good || (good.taxRate === 0 && s.goodsListState.endowCode.isTaxFreeTypeNeeded && !good.taxFreeType)
77
- })
78
- if (isOk) {
79
- message.error({ content: '零税率需要设置免税类型,请在赋码中设置!', key: '零税率需要设置免税类型,请在赋码中设置!' });
80
- return;
81
- }
82
-
83
- s.goodsListState.discountGoodIndex = s.goodsListState.selectedGoodIndex.slice();
84
- });
85
- }, [controller]);
86
-
87
- /** 关闭抽屉 */
88
- const onClose = React.useCallback(() => {
89
- controller.run(async s => {
90
- s.goodsListState.discountGoodIndex = []
91
- })
92
- }, [controller]);
93
-
94
- /** 是否禁用 */
95
- const disabled = React.useMemo(() => selectedGoodIndex.length === 0, [selectedGoodIndex, goodsMap]);
96
-
97
- /** 是否启用 */
98
- const isEnable = React.useMemo(() => {
99
- if (model === 'readOnly') return false;
100
- if (model === 'prefab') return false;
101
- return !(isAddDiscount === false)
102
- }, [isAddDiscount, model]);
103
-
104
- const button = React.useMemo(() => {
105
- if (isEnable) {
106
- return (
107
- <>
108
- <Button
109
- size='small'
110
- onClick={onOpen}
111
- disabled={disabled}
112
- >
113
- 添加折扣
114
- </Button>
115
- <AddDiscountRowDrawer open={open} onClose={onClose} />
116
- </>
117
- )
118
- } else {
119
- return (
120
- <></>
121
- )
122
- }
123
- }, [open, onOpen, onClose, isEnable, disabled])
124
-
125
- return {
126
- button,
127
- }
128
- }
129
-
130
- /** 添加折扣行的抽屉 */
131
- function AddDiscountRowDrawer(props: {
132
-
133
- /** 是否打开 */
134
- open: boolean;
135
-
136
- /** 点击关闭 */
137
- onClose: () => void;
138
-
139
- }) {
140
-
141
- const { open, onClose } = props;
142
-
143
- const [form] = Form.useForm();
144
-
145
- const [formValues, setFormValues] = React.useState<{ discolineType: string }>()
146
-
147
- /** 控制器 */
148
- const controller = Invoice.useInvoiceController();
149
-
150
- /** 货物字典 */
151
- const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
152
-
153
- /** 准备添加折扣的货物索引列表 */
154
- const discountGoodIndex = controller.useMemo(s => s.goodsListState.discountGoodIndex || [], []);
155
-
156
- /** 准备添加折扣的货物列表 */
157
- const discountGood = React.useMemo(() => discountGoodIndex.map(e => goodsMap.get(e)), [discountGoodIndex, goodsMap])
158
-
159
- /** 总金额 */
160
- const totalAmount = React.useMemo(() => {
161
- let sum = 0;
162
- discountGood.forEach(e => {
163
- sum += e?.lineAmountIncludeTax ?? 0;
164
- })
165
- return sum;
166
- }, [discountGood])
167
-
168
- /** 表单变化 */
169
- const onChangeForm = React.useCallback(async () => {
170
- setFormValues(form.getFieldsValue())
171
- }, [form])
172
-
173
- /** 点击了确认 */
174
- const onDefine = React.useCallback(async () => {
175
- // 表单数据
176
- const values = await form.validateFields();
177
-
178
- // 折扣总金额
179
- const totalDiscoline = values.discolineType === '1'
180
- ? chain(bignumber(values.discolineValue))
181
- : chain(bignumber(totalAmount)).multiply(bignumber(values.discolineValue)).multiply(bignumber(0.01));
182
-
183
- let discolinesSum = chain(bignumber(0));
184
-
185
- // 每行的折扣金额
186
- const discolines: number[] = discountGood.map((e, i) => {
187
- // 折扣金额占比
188
- const share = chain(bignumber(e?.lineAmountIncludeTax ?? 0))
189
- .divide(bignumber(totalAmount));
190
-
191
- // 折扣金额
192
- const value = totalDiscoline
193
- .multiply(share.done())
194
-
195
- .multiply(bignumber(100))
196
- .round()
197
- .divide(bignumber(100))
198
-
199
- .done();
200
-
201
- discolinesSum = discolinesSum.add(value);
202
- return value.toNumber();
203
- });
204
-
205
- // 剩余折扣金额
206
- let surplus = totalDiscoline.subtract(discolinesSum.done());
207
-
208
- // 补充剩余折扣金
209
- for (let i = 0; i < discolines.length; i++) {
210
- if (surplus.smaller(0.01).done()) break;
211
- discolines[i] = chain(bignumber(discolines[i])).add(bignumber(0.01)).done().toNumber();
212
- surplus = surplus.subtract(bignumber(0.01));
213
- }
214
-
215
- // 给一组货物添加折扣行
216
- await controller.addGoodDiscountV2(discolines.map((e, i) => {
217
- return {
218
- $index: discountGood[i]?.$index as string,
219
- discolineAmountunt: e as number,
220
- }
221
- }))
222
-
223
- await controller.run(async s => { s.goodsListState.selectedGoodIndex = [] })
224
-
225
- // 关闭抽屉
226
- onClose();
227
- }, [discountGood, form, totalAmount, onClose, controller])
228
-
229
- // 打开抽屉时 重置form
230
- React.useEffect(() => {
231
- if (open) {
232
- form.resetFields();
233
- setFormValues(form.getFieldsValue())
234
- }
235
- }, [open])
236
-
237
- // 切换 折扣方式 清空折扣值
238
- React.useEffect(() => {
239
- form.setFieldsValue({ ...formValues, discolineValue: undefined })
240
- }, [formValues?.discolineType])
241
-
242
- return (
243
- <Drawer
244
- title="添加折扣"
245
- placement="right"
246
- width={350}
247
- onClose={onClose}
248
- open={open}
249
- footer={
250
- <Space size="middle" style={{ display: 'flex', justifyContent: 'end' }}>
251
- <Button onClick={onDefine} type='primary' >确定</Button>
252
- <Button onClick={onClose} >取消</Button>
253
- </Space>
254
- }
255
- >
256
- <Form
257
- form={form}
258
- layout='vertical'
259
- onChange={onChangeForm}
260
- >
261
- <Form.Item label='商品金额(含税)' >
262
- {totalAmount.toFixed(2)}(共 {discountGood.length} 行)
263
- </Form.Item>
264
-
265
- <Form.Item
266
- label='折扣方式'
267
- name='discolineType'
268
- initialValue='1'
269
- >
270
- <Radio.Group options={[
271
- { label: '按金额折扣', value: '1' },
272
- { label: '按比例折扣', value: '2' },
273
- ]} />
274
- </Form.Item>
275
- {
276
- formValues?.discolineType === '2' ?
277
- (
278
- <Form.Item
279
- label='折扣比例(%)(含税)'
280
- name='discolineValue'
281
- rules={[
282
- { required: true, message: '必填' },
283
- {
284
- validator: async (_, value) => {
285
- if (isNaN(parseFloat(value))) return;
286
- if (value <= 0) throw new Error('需大于0');
287
- if (value > 100) throw new Error('不可以大于100');
288
- }
289
- }
290
- ]}
291
- >
292
- <InputNumber style={{ width: '100%' }} />
293
- </Form.Item>
294
- ) :
295
- (
296
- <Form.Item
297
- label='折扣金额(元)(含税)'
298
- name='discolineValue'
299
- rules={[
300
- { required: true, message: '必填' },
301
- {
302
- validator: async (_, value) => {
303
- if (isNaN(parseFloat(value))) return;
304
- if (value <= 0) throw new Error('需大于0');
305
- if (value > totalAmount) throw new Error('不可以大于商品金额');
306
- }
307
- }
308
- ]}
309
- >
310
- <InputNumber style={{ width: '100%' }} />
311
- </Form.Item>
312
- )
313
- }
314
- </Form>
315
- </Drawer>
316
- )
317
- }
318
-
319
- /** 判断数组是否连续 */
320
- function isContinuityNum(array: number[]) {
321
- var i = array[0];
322
- var isContinuation = true;
323
- for (var e in array) {
324
- if (array[e] != i) {
325
- isContinuation = false;
326
- break;
327
- }
328
- i++;
329
- }
330
- return isContinuation;
331
- }
332
-
333
- /** 数组的值是否相等 */
334
- function areAllValuesEqual(arr: any[]) {
335
- for (let i = 1; i < arr.length; i++) {
336
- if (arr[i] !== arr[0]) {
337
- return false;
338
- }
339
- }
340
- return true;
1
+
2
+ import React from "react";
3
+ import { chain, bignumber } from 'mathjs';
4
+ import { Button, Drawer, Form, InputNumber, Radio, message, Space } from "kts-xui";
5
+ import Invoice from "../../../../../../..";
6
+ import { LineAttributeType } from "../../../../../../../InvoiceController";
7
+
8
+ export default () => {
9
+
10
+ /** 控制器 */
11
+ const controller = Invoice.useInvoiceController();
12
+
13
+ /** 组件模式 prefab 预制 readOnly 只读 */
14
+ const model = controller.useMemo(s => s.model, []);
15
+
16
+ /** 准备添加折扣的货物索引列表 */
17
+ const discountGoodIndex = controller.useMemo(s => s.goodsListState.discountGoodIndex || [], []);
18
+
19
+ /** 列表选中的货物索引列表 */
20
+ const selectedGoodIndex = controller.useMemo(s => s.goodsListState.selectedGoodIndex, []);
21
+
22
+ /** 货物字典 */
23
+ const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
24
+
25
+ /** 是否能添加折扣行 */
26
+ const isAddDiscount = controller.useMemo(s => s.goodsListState.isAddDiscount, []);
27
+
28
+ // 抽屉开启状态
29
+ const open = React.useMemo(() => discountGoodIndex.length > 0, [discountGoodIndex]);
30
+
31
+ /** 打开抽屉 */
32
+ const onOpen = React.useCallback(async () => {
33
+ await controller.saveEditGood();
34
+ await controller.wait();
35
+ await controller.run(async s => {
36
+
37
+ // 不能给编辑状态的行增加折扣!
38
+ let isOk = s.goodsListState.editGood && s.goodsListState.selectedGoodIndex.indexOf(s.goodsListState.editGood.$index) >= 0;
39
+ if (isOk) {
40
+ message.error({ content: '不能给编辑状态的行增加折扣!', key: '不能给编辑状态的行增加折扣!' });
41
+ return;
42
+ }
43
+
44
+ // 项目不连续,不允许添加折扣
45
+ if (!isContinuityNum(s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e)?.serialNo || -2).sort((a, b) => a - b))) {
46
+ message.error({ content: '项目不连续,不允许添加折扣', key: '项目不连续,不允许添加折扣' });
47
+ return;
48
+ }
49
+
50
+ // 不允许重复添加折扣
51
+ isOk = s.goodsListState.selectedGoodIndex.some($index => s.goodsListState.goodsMap.get($index)?.lineAttribute !== LineAttributeType.正常)
52
+ if (isOk) {
53
+ message.error({ content: '不允许重复添加折扣', key: '不允许重复添加折扣' });
54
+ return;
55
+ }
56
+
57
+ // 存在不同税率,不允许同时添加折扣
58
+ if (areAllValuesEqual(s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e)?.taxRate)) === false) {
59
+ message.error({ content: '存在不同税率,不允许同时添加折扣', key: '存在不同税率,不允许同时添加折扣' });
60
+ return;
61
+ }
62
+
63
+ // 添加折扣时项目金额不能为空或零
64
+ isOk = s.goodsListState.selectedGoodIndex.some($index => {
65
+ const good = s.goodsListState.goodsMap.get($index);
66
+ return `${good?.lineAmountIncludeTax}` === '0'
67
+ })
68
+ if (isOk) {
69
+ message.error({ content: '添加折扣时项目金额不能为空或零', key: '添加折扣时项目金额不能为空或零' });
70
+ return;
71
+ }
72
+
73
+ // 零税率需要设置免税类型,请在赋码中设置!
74
+ isOk = s.goodsListState.selectedGoodIndex.some($index => {
75
+ const good = s.goodsListState.goodsMap.get($index);
76
+ return !good || (good.taxRate === 0 && s.goodsListState.endowCode.isTaxFreeTypeNeeded && !good.taxFreeType)
77
+ })
78
+ if (isOk) {
79
+ message.error({ content: '零税率需要设置免税类型,请在赋码中设置!', key: '零税率需要设置免税类型,请在赋码中设置!' });
80
+ return;
81
+ }
82
+
83
+ s.goodsListState.discountGoodIndex = s.goodsListState.selectedGoodIndex.slice();
84
+ });
85
+ }, [controller]);
86
+
87
+ /** 关闭抽屉 */
88
+ const onClose = React.useCallback(() => {
89
+ controller.run(async s => {
90
+ s.goodsListState.discountGoodIndex = []
91
+ })
92
+ }, [controller]);
93
+
94
+ /** 是否禁用 */
95
+ const disabled = React.useMemo(() => selectedGoodIndex.length === 0, [selectedGoodIndex, goodsMap]);
96
+
97
+ /** 是否启用 */
98
+ const isEnable = React.useMemo(() => {
99
+ if (model === 'readOnly') return false;
100
+ if (model === 'prefab') return false;
101
+ return !(isAddDiscount === false)
102
+ }, [isAddDiscount, model]);
103
+
104
+ const button = React.useMemo(() => {
105
+ if (isEnable) {
106
+ return (
107
+ <>
108
+ <Button
109
+ size='small'
110
+ onClick={onOpen}
111
+ disabled={disabled}
112
+ >
113
+ 添加折扣
114
+ </Button>
115
+ <AddDiscountRowDrawer open={open} onClose={onClose} />
116
+ </>
117
+ )
118
+ } else {
119
+ return (
120
+ <></>
121
+ )
122
+ }
123
+ }, [open, onOpen, onClose, isEnable, disabled])
124
+
125
+ return {
126
+ button,
127
+ }
128
+ }
129
+
130
+ /** 添加折扣行的抽屉 */
131
+ function AddDiscountRowDrawer(props: {
132
+
133
+ /** 是否打开 */
134
+ open: boolean;
135
+
136
+ /** 点击关闭 */
137
+ onClose: () => void;
138
+
139
+ }) {
140
+
141
+ const { open, onClose } = props;
142
+
143
+ const [form] = Form.useForm();
144
+
145
+ const [formValues, setFormValues] = React.useState<{ discolineType: string }>()
146
+
147
+ /** 控制器 */
148
+ const controller = Invoice.useInvoiceController();
149
+
150
+ /** 货物字典 */
151
+ const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
152
+
153
+ /** 准备添加折扣的货物索引列表 */
154
+ const discountGoodIndex = controller.useMemo(s => s.goodsListState.discountGoodIndex || [], []);
155
+
156
+ /** 准备添加折扣的货物列表 */
157
+ const discountGood = React.useMemo(() => discountGoodIndex.map(e => goodsMap.get(e)), [discountGoodIndex, goodsMap])
158
+
159
+ /** 总金额 */
160
+ const totalAmount = React.useMemo(() => {
161
+ let sum = 0;
162
+ discountGood.forEach(e => {
163
+ sum += e?.lineAmountIncludeTax ?? 0;
164
+ })
165
+ return sum;
166
+ }, [discountGood])
167
+
168
+ /** 表单变化 */
169
+ const onChangeForm = React.useCallback(async () => {
170
+ setFormValues(form.getFieldsValue())
171
+ }, [form])
172
+
173
+ /** 点击了确认 */
174
+ const onDefine = React.useCallback(async () => {
175
+ // 表单数据
176
+ const values = await form.validateFields();
177
+
178
+ // 折扣总金额
179
+ const totalDiscoline = values.discolineType === '1'
180
+ ? chain(bignumber(values.discolineValue))
181
+ : chain(bignumber(totalAmount)).multiply(bignumber(values.discolineValue)).multiply(bignumber(0.01));
182
+
183
+ let discolinesSum = chain(bignumber(0));
184
+
185
+ // 每行的折扣金额
186
+ const discolines: number[] = discountGood.map((e, i) => {
187
+ // 折扣金额占比
188
+ const share = chain(bignumber(e?.lineAmountIncludeTax ?? 0))
189
+ .divide(bignumber(totalAmount));
190
+
191
+ // 折扣金额
192
+ const value = totalDiscoline
193
+ .multiply(share.done())
194
+
195
+ .multiply(bignumber(100))
196
+ .round()
197
+ .divide(bignumber(100))
198
+
199
+ .done();
200
+
201
+ discolinesSum = discolinesSum.add(value);
202
+ return value.toNumber();
203
+ });
204
+
205
+ // 剩余折扣金额
206
+ let surplus = totalDiscoline.subtract(discolinesSum.done());
207
+
208
+ // 补充剩余折扣金
209
+ for (let i = 0; i < discolines.length; i++) {
210
+ if (surplus.smaller(0.01).done()) break;
211
+ discolines[i] = chain(bignumber(discolines[i])).add(bignumber(0.01)).done().toNumber();
212
+ surplus = surplus.subtract(bignumber(0.01));
213
+ }
214
+
215
+ // 给一组货物添加折扣行
216
+ await controller.addGoodDiscountV2(discolines.map((e, i) => {
217
+ return {
218
+ $index: discountGood[i]?.$index as string,
219
+ discolineAmountunt: e as number,
220
+ }
221
+ }))
222
+
223
+ await controller.run(async s => { s.goodsListState.selectedGoodIndex = [] })
224
+
225
+ // 关闭抽屉
226
+ onClose();
227
+ }, [discountGood, form, totalAmount, onClose, controller])
228
+
229
+ // 打开抽屉时 重置form
230
+ React.useEffect(() => {
231
+ if (open) {
232
+ form.resetFields();
233
+ setFormValues(form.getFieldsValue())
234
+ }
235
+ }, [open])
236
+
237
+ // 切换 折扣方式 清空折扣值
238
+ React.useEffect(() => {
239
+ form.setFieldsValue({ ...formValues, discolineValue: undefined })
240
+ }, [formValues?.discolineType])
241
+
242
+ return (
243
+ <Drawer
244
+ title="添加折扣"
245
+ placement="right"
246
+ width={350}
247
+ onClose={onClose}
248
+ open={open}
249
+ footer={
250
+ <Space size="middle" style={{ display: 'flex', justifyContent: 'end' }}>
251
+ <Button onClick={onDefine} type='primary' >确定</Button>
252
+ <Button onClick={onClose} >取消</Button>
253
+ </Space>
254
+ }
255
+ >
256
+ <Form
257
+ form={form}
258
+ layout='vertical'
259
+ onChange={onChangeForm}
260
+ >
261
+ <Form.Item label='商品金额(含税)' >
262
+ {totalAmount.toFixed(2)}(共 {discountGood.length} 行)
263
+ </Form.Item>
264
+
265
+ <Form.Item
266
+ label='折扣方式'
267
+ name='discolineType'
268
+ initialValue='1'
269
+ >
270
+ <Radio.Group options={[
271
+ { label: '按金额折扣', value: '1' },
272
+ { label: '按比例折扣', value: '2' },
273
+ ]} />
274
+ </Form.Item>
275
+ {
276
+ formValues?.discolineType === '2' ?
277
+ (
278
+ <Form.Item
279
+ label='折扣比例(%)(含税)'
280
+ name='discolineValue'
281
+ rules={[
282
+ { required: true, message: '必填' },
283
+ {
284
+ validator: async (_, value) => {
285
+ if (isNaN(parseFloat(value))) return;
286
+ if (value <= 0) throw new Error('需大于0');
287
+ if (value > 100) throw new Error('不可以大于100');
288
+ }
289
+ }
290
+ ]}
291
+ >
292
+ <InputNumber style={{ width: '100%' }} />
293
+ </Form.Item>
294
+ ) :
295
+ (
296
+ <Form.Item
297
+ label='折扣金额(元)(含税)'
298
+ name='discolineValue'
299
+ rules={[
300
+ { required: true, message: '必填' },
301
+ {
302
+ validator: async (_, value) => {
303
+ if (isNaN(parseFloat(value))) return;
304
+ if (value <= 0) throw new Error('需大于0');
305
+ if (value > totalAmount) throw new Error('不可以大于商品金额');
306
+ }
307
+ }
308
+ ]}
309
+ >
310
+ <InputNumber style={{ width: '100%' }} />
311
+ </Form.Item>
312
+ )
313
+ }
314
+ </Form>
315
+ </Drawer>
316
+ )
317
+ }
318
+
319
+ /** 判断数组是否连续 */
320
+ function isContinuityNum(array: number[]) {
321
+ var i = array[0];
322
+ var isContinuation = true;
323
+ for (var e in array) {
324
+ if (array[e] != i) {
325
+ isContinuation = false;
326
+ break;
327
+ }
328
+ i++;
329
+ }
330
+ return isContinuation;
331
+ }
332
+
333
+ /** 数组的值是否相等 */
334
+ function areAllValuesEqual(arr: any[]) {
335
+ for (let i = 1; i < arr.length; i++) {
336
+ if (arr[i] !== arr[0]) {
337
+ return false;
338
+ }
339
+ }
340
+ return true;
341
341
  }