kts-component-invoice-operate 3.1.19 → 3.2.0

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 (315) 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 +5 -5
  8. package/dist/Invoice/Invoice-digtal/_test/disabled/index.d.ts +4 -0
  9. package/dist/Invoice/Invoice-digtal/_test/easiest/index.d.ts +4 -0
  10. package/dist/Invoice/Invoice-digtal/_test/header/index.d.ts +4 -0
  11. package/dist/Invoice/Invoice-digtal/_test/readOnly/index.d.ts +4 -0
  12. package/dist/Invoice/Invoice-digtal/_test/stakeholder/index.d.ts +4 -0
  13. package/dist/Invoice/Invoice-digtal/_test/typeSelection/index.d.ts +4 -0
  14. package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.d.ts +4 -0
  15. package/dist/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.d.ts +10 -0
  16. package/dist/Invoice/InvoiceController/InvoiceControllerState/index.d.ts +6 -0
  17. package/dist/Invoice/InvoiceController/fns/addGoodDiscount.d.ts +1 -1
  18. package/dist/Invoice/InvoiceController/fns/addGoodDiscountV2.d.ts +12 -0
  19. package/dist/Invoice/InvoiceController/fns/delGood.d.ts +1 -1
  20. package/dist/Invoice/InvoiceController/index.d.ts +2 -0
  21. package/dist/Invoice/index.d.ts +25 -12
  22. package/dist/Invoice/tools/mounting/index.d.ts +3 -0
  23. package/dist/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.d.ts +1 -1
  24. package/dist/Invoice/ui/{Buyer → default/Buyer}/index.d.ts +1 -1
  25. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.d.ts +2 -2
  26. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +0 -1
  27. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +1 -1
  28. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +1 -1
  29. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +1 -1
  30. package/dist/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  31. package/dist/Invoice/ui/default/GoodsList/hook/useDeduction/index.d.ts +8 -0
  32. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.d.ts +1 -1
  33. package/dist/Invoice/ui/default/GoodsList/hook/useWindowClick/index.d.ts +8 -0
  34. package/dist/Invoice/ui/{Seller → default/Seller}/index.d.ts +1 -1
  35. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.d.ts +35 -0
  36. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/index.d.ts +3 -0
  37. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
  38. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.d.ts +6 -0
  39. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
  40. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
  41. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
  42. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
  43. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  44. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
  45. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.d.ts +8 -0
  46. package/dist/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.d.ts +8 -0
  47. package/dist/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.d.ts +8 -0
  48. package/dist/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.d.ts +8 -0
  49. package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +17 -0
  50. package/dist/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.d.ts +3 -0
  51. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +5 -0
  52. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +5 -0
  53. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +6 -0
  54. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.d.ts +6 -0
  55. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +6 -0
  56. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.d.ts +5 -0
  57. package/dist/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.d.ts +3 -0
  58. package/dist/Invoice/ui/digtal/GoodsList/ui/Search/index.d.ts +3 -0
  59. package/dist/Invoice/ui/digtal/GoodsList/ui/Statistics/index.d.ts +4 -0
  60. package/dist/Invoice/ui/digtal/GoodsList/ui/TableRow/index.d.ts +2 -0
  61. package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.d.ts +4 -0
  62. package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.d.ts +4 -0
  63. package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +3 -0
  64. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.d.ts +35 -0
  65. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.d.ts +3 -0
  66. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
  67. package/dist/Invoice/ui/{GoodsList/hook/useColumns/ui/RowMenu → digtal/GoodsList.o/hook/useColumns/ui/RowEditButton}/index.d.ts +0 -1
  68. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
  69. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
  70. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
  71. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
  72. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  73. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
  74. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.d.ts +8 -0
  75. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.d.ts +8 -0
  76. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.d.ts +8 -0
  77. package/dist/Invoice/ui/digtal/GoodsList.o/index.d.ts +20 -0
  78. package/dist/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.d.ts +3 -0
  79. package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.d.ts +2 -0
  80. package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.d.ts +4 -0
  81. package/dist/Invoice/ui/digtal/InvoiceHeader/index.d.ts +14 -0
  82. package/dist/Invoice/ui/digtal/Sign/index.d.ts +10 -0
  83. package/dist/Invoice/ui/digtal/Stakeholder/index.d.ts +7 -0
  84. package/dist/InvoiceTypeModal/_test/easiest/index.d.ts +3 -0
  85. package/dist/InvoiceTypeModal/index.d.ts +34 -0
  86. package/dist/index.d.ts +2 -0
  87. package/dist/index.esm.js +10107 -2821
  88. package/dist/index.js +10101 -2814
  89. package/docs/index.md +5 -5
  90. package/docs-dist/404.html +33 -33
  91. package/docs-dist/index.html +33 -33
  92. package/docs-dist/umi.css +19 -19
  93. package/index.html +12 -12
  94. package/package.json +60 -60
  95. package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +38 -0
  96. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +5 -0
  97. package/src/Invoice/Invoice-digtal/_test/header/index.tsx +17 -0
  98. package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +42 -0
  99. package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -0
  100. package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -0
  101. package/src/Invoice/Invoice-digtal/index.md +19 -0
  102. package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +94 -94
  103. package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
  104. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +93 -93
  105. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
  106. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +75 -75
  107. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +80 -80
  108. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +5 -5
  109. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
  110. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +94 -88
  111. package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +11 -0
  112. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +56 -48
  113. package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
  114. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +125 -125
  115. package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +84 -0
  116. package/src/Invoice/InvoiceController/fns/delGood.ts +41 -43
  117. package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +23 -23
  118. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +24 -23
  119. package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
  120. package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
  121. package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
  122. package/src/Invoice/InvoiceController/index.ts +65 -61
  123. package/src/Invoice/_test/buyerNameSearch/index.tsx +41 -41
  124. package/src/Invoice/_test/deduction/index.tsx +935 -935
  125. package/src/Invoice/_test/draft/index.tsx +40 -40
  126. package/src/Invoice/_test/easiest/index.tsx +5 -5
  127. package/src/Invoice/_test/endowCode/index.tsx +1095 -1095
  128. package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
  129. package/src/Invoice/_test/importBuyer/index.tsx +74 -74
  130. package/src/Invoice/_test/importGoods/index.tsx +515 -515
  131. package/src/Invoice/_test/invoiceType/index.tsx +59 -59
  132. package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
  133. package/src/Invoice/_test/replaceHead/index.tsx +22 -22
  134. package/src/Invoice/_test/retrieveData/index.tsx +22 -22
  135. package/src/Invoice/_test/seller/index.tsx +28 -28
  136. package/src/Invoice/_test/setDataSource/index.tsx +22 -22
  137. package/src/Invoice/_test/unit/index.tsx +19 -19
  138. package/src/Invoice/index.less +30 -12
  139. package/src/Invoice/index.md +53 -53
  140. package/src/Invoice/index.tsx +164 -109
  141. package/src/Invoice/tools/calculate/index.ts +112 -112
  142. package/src/Invoice/tools/coolingFn/index.ts +17 -17
  143. package/src/Invoice/tools/evaluate/index.ts +7 -7
  144. package/src/Invoice/tools/idGenerator/index.ts +2 -2
  145. package/src/Invoice/tools/itemName/index.ts +55 -55
  146. package/src/Invoice/tools/lazyFn/index.ts +19 -19
  147. package/src/Invoice/tools/mounting/index.ts +14 -0
  148. package/src/Invoice/tools/strringFn/index.ts +40 -40
  149. package/src/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.ts +8 -8
  150. package/src/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.tsx +149 -149
  151. package/src/Invoice/ui/{Buyer → default/Buyer}/index.less +219 -219
  152. package/src/Invoice/ui/{Buyer → default/Buyer}/index.tsx +114 -114
  153. package/src/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.tsx +166 -166
  154. package/src/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.tsx +21 -21
  155. package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.less +8 -8
  156. package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.tsx +431 -431
  157. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.ts +519 -519
  158. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.tsx +620 -620
  159. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.less +9 -9
  160. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.tsx +19 -19
  161. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  162. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  163. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
  164. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -35
  165. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
  166. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.less +13 -13
  167. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  168. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  169. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.tsx +20 -20
  170. package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -0
  171. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.tsx +39 -39
  172. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.tsx +111 -111
  173. package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -0
  174. package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.less +177 -177
  175. package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.tsx +177 -177
  176. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.tsx +65 -61
  177. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
  178. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
  179. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  180. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.tsx +69 -66
  181. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +58 -58
  182. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.tsx +37 -37
  183. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.tsx +36 -36
  184. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.less +10 -10
  185. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.tsx +50 -50
  186. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.less +18 -18
  187. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.tsx +109 -109
  188. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.tsx +27 -27
  189. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.less +38 -38
  190. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.tsx +108 -108
  191. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.less +44 -44
  192. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.tsx +96 -96
  193. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.tsx +30 -30
  194. package/src/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.tsx +75 -75
  195. package/src/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.tsx +170 -170
  196. package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.less +68 -68
  197. package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.tsx +246 -246
  198. package/src/Invoice/ui/{Seller → default/Seller}/index.less +113 -113
  199. package/src/Invoice/ui/{Seller → default/Seller}/index.tsx +98 -98
  200. package/src/Invoice/ui/{Sign → default/Sign}/index.less +14 -14
  201. package/src/Invoice/ui/{Sign → default/Sign}/index.tsx +71 -71
  202. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +520 -0
  203. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +623 -0
  204. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +10 -0
  205. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
  206. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
  207. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
  208. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
  209. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
  210. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
  211. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -0
  212. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -0
  213. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/spot.svg +1 -0
  214. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
  215. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -0
  216. package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +39 -0
  217. package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +112 -0
  218. package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -0
  219. package/src/Invoice/ui/digtal/GoodsList/index.less +57 -0
  220. package/src/Invoice/ui/digtal/GoodsList/index.tsx +181 -0
  221. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +66 -0
  222. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +321 -0
  223. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +12 -0
  224. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -0
  225. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -0
  226. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +35 -0
  227. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -0
  228. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +56 -0
  229. package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +37 -0
  230. package/src/Invoice/ui/digtal/GoodsList/ui/Search/icon/magnifier.svg +1 -0
  231. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +12 -0
  232. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +50 -0
  233. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +54 -0
  234. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +99 -0
  235. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +12 -0
  236. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +28 -0
  237. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +39 -0
  238. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +109 -0
  239. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.less +44 -0
  240. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.tsx +96 -0
  241. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -0
  242. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.ts +520 -0
  243. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.tsx +624 -0
  244. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.less +10 -0
  245. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
  246. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
  247. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
  248. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
  249. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
  250. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
  251. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.less +13 -0
  252. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.tsx +98 -0
  253. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/spot.svg +1 -0
  254. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
  255. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.tsx +20 -0
  256. package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.tsx +24 -24
  257. package/src/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.tsx +39 -0
  258. package/src/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.tsx +112 -0
  259. package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.tsx +23 -23
  260. package/src/Invoice/ui/digtal/GoodsList.o/index.less +7 -0
  261. package/src/Invoice/ui/digtal/GoodsList.o/index.tsx +132 -0
  262. package/src/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.tsx +66 -0
  263. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.tsx +28 -0
  264. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.less +43 -0
  265. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.tsx +109 -0
  266. package/src/Invoice/ui/digtal/InvoiceHeader/index.less +58 -0
  267. package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -0
  268. package/src/Invoice/ui/digtal/Sign/index.less +49 -0
  269. package/src/Invoice/ui/digtal/Sign/index.tsx +90 -0
  270. package/src/Invoice/ui/digtal/Stakeholder/index.less +57 -0
  271. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +237 -0
  272. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +3 -0
  273. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +3 -0
  274. package/src/InvoiceTypeModal/_test/easiest/index.tsx +32 -0
  275. package/src/InvoiceTypeModal/index.less +8 -0
  276. package/src/InvoiceTypeModal/index.md +6 -0
  277. package/src/InvoiceTypeModal/index.tsx +123 -0
  278. package/src/index.ts +9 -6
  279. package/tsconfig.json +31 -31
  280. package/typings.d.ts +3 -3
  281. package/yarn.e.lock +14331 -14331
  282. package/yarn.o.lock +14800 -14800
  283. /package/dist/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.d.ts +0 -0
  284. /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.d.ts +0 -0
  285. /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.d.ts +0 -0
  286. /package/dist/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.d.ts +0 -0
  287. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.d.ts +0 -0
  288. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.d.ts +0 -0
  289. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.d.ts +0 -0
  290. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.d.ts +0 -0
  291. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.d.ts +0 -0
  292. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.d.ts +0 -0
  293. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/index.d.ts +0 -0
  294. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.d.ts +0 -0
  295. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +0 -0
  296. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +0 -0
  297. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +0 -0
  298. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +0 -0
  299. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.d.ts +0 -0
  300. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.d.ts +0 -0
  301. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.d.ts +0 -0
  302. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.d.ts +0 -0
  303. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.d.ts +0 -0
  304. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.d.ts +0 -0
  305. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.d.ts +0 -0
  306. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.d.ts +0 -0
  307. /package/dist/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.d.ts +0 -0
  308. /package/dist/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.d.ts +0 -0
  309. /package/dist/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.d.ts +0 -0
  310. /package/dist/Invoice/ui/{Sign → default/Sign}/index.d.ts +0 -0
  311. /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.d.ts +0 -0
  312. /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.d.ts +0 -0
  313. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/spot.svg +0 -0
  314. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/icon/magnifier.svg +0 -0
  315. /package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/auto.svg +0 -0
@@ -0,0 +1,624 @@
1
+ import React from 'react';
2
+ import { Form } from 'kts-components-antd-x3';
3
+ import { AutoComplete, Select, Button, Input, Spin, Tooltip, InputProps } from 'kts-xui';
4
+ // import { } from 'kts-components-antd-x3/lib/input';
5
+ import { WrappedFormUtils } from 'kts-components-antd-x3/lib/form/Form';
6
+ import { IGood } from '../../../../../InvoiceController';
7
+ import Invoice from '../../../../..';
8
+ // import RowMenu from './ui/RowMenu';
9
+ import TitleText from './ui/TitleText';
10
+ import ItemNameInput from './ui/ItemNameInput';
11
+ import {
12
+ onChangeQuantity,
13
+ onChangePriceIncludeTax,
14
+ onChangePriceExcludeTax,
15
+ onChangeLineAmountIncludeTax,
16
+ onChangeLineAmountExcludeTax,
17
+ onChangeTaxRate,
18
+ onChangeItemName,
19
+ } from './autoFillFn';
20
+ import { getItemNameWithShorthand } from '../../../../../tools/itemName';
21
+
22
+ export default (form: WrappedFormUtils) => {
23
+ const { getFieldDecorator, getFieldValue } = form;
24
+
25
+ const controller = Invoice.useInvoiceController();
26
+
27
+ /** 是否含税 */
28
+ const isTaxIncluded = controller.useMemo(e => e.goodsListState.isTaxIncluded, []);
29
+
30
+ /** 组件模式 */
31
+ const model = controller.useMemo(e => e.model, []);
32
+
33
+ /** 是否显示我方 */
34
+ const isMyShow = controller.useMemo(e => e.goodsListState.isMyShow, []);
35
+
36
+ /** 正在编辑的货物 */
37
+ const editGood = controller.useMemo((e) => e.goodsListState.editGood, []);
38
+
39
+ /** 搜索条件 */
40
+ const searchValue = controller.useMemo((e) => e.goodsListState.searchValue, []);
41
+
42
+ /** 税率列表 */
43
+ const taxRateList = controller.useMemo((e) => e.goodsListState.taxRateList, []);
44
+
45
+ /** 单位列表 */
46
+ const unitList = controller.useMemo((e) => e.goodsListState.unitList, []);
47
+
48
+ /** 商品表格补充配置 */
49
+ const columnsReplenish = controller.useMemo((e) => e.goodsListState.columnsReplenish, []);
50
+
51
+ /** 扣除额 */
52
+ const deduction = controller.useMemo((e) => e.goodsListState.deduction, []);
53
+
54
+ /** 计算中启动字段 */
55
+ const changeField = controller.useMemo((e) => e.calculatingField, []);
56
+
57
+ /** 计算中启动字段 */
58
+ const setChangeField = React.useCallback((value: string) => controller.run(async s => { s.calculatingField = value }), []);
59
+
60
+ const onNumberValueChange = React.useCallback((e) => {
61
+ const value = e?.target?.value;
62
+ if (value) {
63
+ return value.replace(/[^0-9-\.]/g, '');
64
+ }
65
+ }, [])
66
+
67
+ /** 获取补充校验规则 */
68
+ const getReplenishRules = React.useCallback((id: string) => {
69
+ return columnsReplenish[id] ? columnsReplenish[id].rules || [] : []
70
+ }, [columnsReplenish])
71
+
72
+ /** 金额整数位限制,不传默认9位 */
73
+ const priceIntegerDigit = controller.useMemo((e) => e.priceIntegerDigit || 9, []);
74
+
75
+ /** 表头 */
76
+ const columns = React.useMemo(() => {
77
+ return [
78
+ {
79
+ title: '序号',
80
+ key: 'serialNo',
81
+ dataIndex: 'serialNo',
82
+ width: 70,
83
+ render: (e: number) => <span style={{ padding: '0 10px' }}>{e}</span>,
84
+ },
85
+ {
86
+ title: <TitleText required >项目名称</TitleText>,
87
+ key: 'itemName',
88
+ render: (_: string, record: IGood) => {
89
+ if (editGood?.$index === record.$index) {
90
+ return (
91
+ <Form.Item>
92
+ <div style={{ display: 'flex' }} >
93
+ {getFieldDecorator('itemName', {
94
+ initialValue: isMyShow ? record.itemNameSelf : record.itemName,
95
+ rules: [
96
+ ...getReplenishRules('itemName'),
97
+ {
98
+ validator: async (_, __, callback) => {
99
+ await controller.wait();
100
+ const value = controller.state.goodsListState.editGood;
101
+ if (!value?.itemName && !value?.itemNameSelf) {
102
+ callback('项目名称不能为空');
103
+ } else {
104
+ return;
105
+ }
106
+ }
107
+ }
108
+ ]
109
+ })(
110
+ <ItemNameInput
111
+ shorthand={editGood.shorthand}
112
+ onChange={() => {
113
+ onChangeItemName(controller, form, record);
114
+ }}
115
+ />
116
+ )}
117
+ <div className="kts-invoice-operate-goods-list-able-list-itemName-import">
118
+ {controller.getGoodsList && model !== 'readOnly' && (
119
+ <Tooltip title="点击从商品管理中添加商品信息">
120
+ <Button
121
+ onClick={controller.pipeline(async s => { s.goodsListState.importGoods.isVisibleDrawer = true })}
122
+ type="link"
123
+ icon="plus-circle"
124
+ />
125
+ </Tooltip>
126
+ )}
127
+ </div>
128
+ </div>
129
+ </Form.Item>
130
+ );
131
+ } else {
132
+ return (
133
+ <MyItemNameDiv
134
+ valueT={formatSearch(getItemNameWithShorthand({shorthand: record.shorthand, full: record.itemNameSelf || ''}), searchValue)}
135
+ valueF={formatSearch(getItemNameWithShorthand({shorthand: record.shorthand, full: record.itemName || ''}), searchValue)}
136
+ isMyShow={isMyShow}
137
+ />
138
+ )
139
+ }
140
+ },
141
+ },
142
+ {
143
+ title: <TitleText rules={columnsReplenish['itemModelName']?.rules} >规格型号</TitleText>,
144
+ key: 'itemModelName',
145
+ width: 119,
146
+ render: (_: string, record: IGood) => {
147
+ if (editGood?.$index === record.$index) {
148
+ return (
149
+ <Form.Item>
150
+ {getFieldDecorator('itemModelName', {
151
+ initialValue: isMyShow ? editGood.itemModelNameSelf : editGood.itemModelName,
152
+ rules: getReplenishRules('itemModelName'),
153
+ })(
154
+ <MyInput
155
+ onChange={async () => {
156
+ await controller.wait()
157
+ const key = isMyShow ? 'itemModelNameSelf' : 'itemModelName';
158
+ const value = {} as any;
159
+ value[key] = form.getFieldsValue().itemModelName;
160
+ controller.setEditGood(value);
161
+ }}
162
+ />,
163
+ )}
164
+ </Form.Item>
165
+ );
166
+ } else {
167
+ return (
168
+ <MyItemNameDiv
169
+ valueT={formatSearch(record.itemModelNameSelf, searchValue)}
170
+ valueF={formatSearch(record.itemModelName, searchValue)}
171
+ isMyShow={isMyShow}
172
+ />
173
+ )
174
+ }
175
+ },
176
+ },
177
+ {
178
+ title: <TitleText rules={columnsReplenish['unit']?.rules} >单位</TitleText>,
179
+ key: 'unit',
180
+ width: 70,
181
+ render: (_: string, record: IGood) => {
182
+ if (editGood?.$index === record.$index) {
183
+ return (
184
+ <Form.Item>
185
+ {getFieldDecorator('unit', {
186
+ initialValue: editGood.unit,
187
+ rules: getReplenishRules('unit'),
188
+ })(
189
+ <AutoComplete
190
+ style={{ width: '100%' }}
191
+ dataSource={unitList}
192
+ onChange={async () => {
193
+ await controller.wait()
194
+ // const key = isMyShow ? 'unit' : 'unitOther';
195
+ // const value = {} as any;
196
+ // value[key] = form.getFieldsValue().unit;
197
+ controller.setEditGood({ unit: form.getFieldsValue().unit });
198
+ }}
199
+ />,
200
+ )}
201
+ </Form.Item>
202
+ );
203
+ } else {
204
+ return <span style={{ padding: '0 10px' }}>{record.unit}</span>;
205
+ }
206
+ },
207
+ },
208
+ {
209
+ title: <TitleText rules={columnsReplenish['quantity']?.rules} >数量</TitleText>,
210
+ dataIndex: 'quantity',
211
+ key: 'quantity',
212
+ align: 'right',
213
+ width: 149,
214
+ render: (value: string, record: IGood) => {
215
+ if (editGood?.$index === record.$index) {
216
+ return (
217
+ <Form.Item>
218
+ {getFieldDecorator('quantity', {
219
+ initialValue: editGood.quantity,
220
+ getValueFromEvent: onNumberValueChange,
221
+ rules: [
222
+ ...getReplenishRules('quantity'),
223
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: '数量必须为数字' },
224
+ {
225
+ validator: async (_, value, callback) => {
226
+ await controller.wait();
227
+ const isvalue = !!value || value === 0;
228
+ const isPrice = !!getFieldValue(isTaxIncluded ? 'priceIncludeTax' : 'priceExcludeTax') || getFieldValue(isTaxIncluded ? 'priceIncludeTax' : 'priceExcludeTax') === 0;
229
+ if (isvalue || isPrice === isvalue) return;
230
+ callback('请输入数量');
231
+ }
232
+ }
233
+ ],
234
+ })(
235
+ <MyInput
236
+ style={{ textAlign: 'right' }}
237
+ maxLength={16}
238
+ loading={isCipher(changeField, "quantity")}
239
+ onChange={async () => {
240
+ setChangeField('quantity');
241
+ await onChangeQuantity(controller, form, record);
242
+ }}
243
+ />,
244
+ )}
245
+ </Form.Item>
246
+ );
247
+ } else {
248
+ return <span style={{ padding: '0 10px' }}>{value}</span>;
249
+ }
250
+ },
251
+ },
252
+ {
253
+ title: <TitleText rules={columnsReplenish['priceIncludeTax']?.rules} >单价(含税)</TitleText>,
254
+ dataIndex: 'priceIncludeTax',
255
+ key: 'priceIncludeTax',
256
+ align: 'right',
257
+ width: 149,
258
+ render: (value: string, record: IGood) => {
259
+ if (editGood?.$index === record.$index) {
260
+ return (
261
+ <Form.Item>
262
+ {getFieldDecorator('priceIncludeTax', {
263
+ initialValue: editGood.priceIncludeTax,
264
+ getValueFromEvent: onNumberValueChange,
265
+ rules: [
266
+ ...getReplenishRules('priceIncludeTax'),
267
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: '单价必须为数字' },
268
+ {
269
+ validator: async (_, value, callback) => {
270
+ await controller.wait();
271
+ const isQuantity = !!getFieldValue('quantity') || getFieldValue('quantity') === 0;
272
+ const isvalue = !!value || value === 0;
273
+ if (isvalue || isQuantity === isvalue) return;
274
+ callback('请输入单价');
275
+ }
276
+ }
277
+ ],
278
+ })(
279
+ <MyInput
280
+ style={{ textAlign: 'right' }}
281
+ maxLength={16}
282
+ loading={isCipher(changeField, 'priceIncludeTax')}
283
+ onChange={() => {
284
+ setChangeField('priceIncludeTax');
285
+ onChangePriceIncludeTax(controller, form, record);
286
+ }}
287
+ />,
288
+ )}
289
+ </Form.Item>
290
+ );
291
+ } else {
292
+ return <span style={{ padding: '0 10px' }}>{value}</span>;
293
+ }
294
+ },
295
+ },
296
+ {
297
+ title: <TitleText rules={columnsReplenish['priceExcludeTax']?.rules} >单价(不含税)</TitleText>,
298
+ dataIndex: 'priceExcludeTax',
299
+ key: 'priceExcludeTax',
300
+ align: 'right',
301
+ width: 149,
302
+ render: (value: string, record: IGood) => {
303
+ if (editGood?.$index === record.$index) {
304
+ return (
305
+ <Form.Item>
306
+ {getFieldDecorator('priceExcludeTax', {
307
+ initialValue: editGood.priceExcludeTax,
308
+ getValueFromEvent: onNumberValueChange,
309
+ rules: [
310
+ ...getReplenishRules('priceExcludeTax'),
311
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: '单价必须为数字' },
312
+ {
313
+ validator: async (_, value, callback) => {
314
+ await controller.wait();
315
+ const isQuantity = !!getFieldValue('quantity') || getFieldValue('quantity') === 0;
316
+ const isvalue = !!value || value === 0;
317
+ if (isvalue || isQuantity === isvalue) return;
318
+ callback('请输入单价');
319
+ }
320
+ }
321
+ ],
322
+ })(
323
+ <MyInput
324
+ style={{ textAlign: 'right' }}
325
+ maxLength={16}
326
+ loading={isCipher(changeField, 'priceExcludeTax')}
327
+ onChange={() => {
328
+ setChangeField('priceExcludeTax');
329
+ onChangePriceExcludeTax(controller, form, record);
330
+ }}
331
+ />,
332
+ )}
333
+ </Form.Item>
334
+ );
335
+ } else {
336
+ return <span style={{ padding: '0 10px' }}>{value}</span>;
337
+ }
338
+ },
339
+ },
340
+ {
341
+ title: <TitleText required >金额(含税)</TitleText>,
342
+ dataIndex: 'lineAmountIncludeTax',
343
+ key: 'lineAmountIncludeTax',
344
+ width: 119,
345
+ align: 'right',
346
+ render: (value: string, record: IGood) => {
347
+ if (editGood?.$index === record.$index) {
348
+ return (
349
+ <Form.Item>
350
+ {getFieldDecorator('lineAmountIncludeTax', {
351
+ initialValue: editGood.lineAmountIncludeTax,
352
+ getValueFromEvent: onNumberValueChange,
353
+ rules: [
354
+ ...getReplenishRules('lineAmountIncludeTax'),
355
+ { required: true, message: '金额不能为空' },
356
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: '金额必须为数字' },
357
+ {
358
+ validator: async (_, value, callback) => {
359
+ if (`${value}`.split('.')[0].length > priceIntegerDigit) {
360
+ callback(`金额整数部分不能大于${priceIntegerDigit}位,小数点后最多2位`);
361
+ }
362
+ }
363
+ },
364
+ {
365
+ validator: async (_, value, callback) => {
366
+ if (deduction && parseFloat(value) <= deduction) {
367
+ callback('扣除额不能大于等于价税合计');
368
+ }
369
+ }
370
+ },
371
+ ],
372
+ })(
373
+ <MyInput
374
+ style={{ textAlign: 'right' }}
375
+ loading={isCipher(changeField, 'lineAmountIncludeTax')}
376
+ onChange={() => {
377
+ setChangeField('lineAmountIncludeTax');
378
+ onChangeLineAmountIncludeTax(controller, form, record);
379
+ }}
380
+ />,
381
+ )}
382
+ </Form.Item>
383
+ );
384
+ } else {
385
+ return <span style={{ padding: '0 10px' }}>{formatSearch(parseFloat(value).toFixed(2), searchValue)}</span>;
386
+ }
387
+ },
388
+ },
389
+ {
390
+ title: <TitleText required >金额(不含税)</TitleText>,
391
+ dataIndex: 'lineAmountExcludeTax',
392
+ key: 'lineAmountExcludeTax',
393
+ align: 'right',
394
+ width: 119,
395
+ render: (value: string, record: IGood) => {
396
+ if (editGood?.$index === record.$index) {
397
+ return (
398
+ <Form.Item>
399
+ {getFieldDecorator('lineAmountExcludeTax', {
400
+ initialValue: editGood.lineAmountExcludeTax,
401
+ getValueFromEvent: onNumberValueChange,
402
+ rules: [
403
+ ...getReplenishRules('lineAmountExcludeTax'),
404
+ { required: true, message: '金额不能为空' },
405
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: '金额必须为数字' },
406
+ {
407
+ validator: async (_, value: string, callback) => {
408
+ if (`${value}`.split('.')[0].length > priceIntegerDigit) {
409
+ callback(`金额整数部分不能大于${priceIntegerDigit}位,小数点后最多2位`);
410
+ }
411
+ }
412
+ },
413
+ ],
414
+ })(
415
+ <MyInput
416
+ style={{ textAlign: 'right' }}
417
+ loading={isCipher(changeField, 'lineAmountExcludeTax')}
418
+ onChange={() => {
419
+ setChangeField('lineAmountExcludeTax');
420
+ onChangeLineAmountExcludeTax(controller, form, record);
421
+ }}
422
+ />,
423
+ )}
424
+ </Form.Item>
425
+ );
426
+ } else {
427
+ return <span style={{ padding: '0 10px' }}>{formatSearch(parseFloat(value).toFixed(2), searchValue)}</span>;
428
+ }
429
+ },
430
+ },
431
+ {
432
+ title: <TitleText required >税率%</TitleText>,
433
+ dataIndex: 'taxRate',
434
+ key: 'taxRate',
435
+ align: 'right',
436
+ width: 90,
437
+ render: (value: string, record: IGood) => {
438
+ if (editGood?.$index === record.$index) {
439
+ return (
440
+ <Form.Item>
441
+ {getFieldDecorator('taxRate', {
442
+ initialValue: editGood.taxRate,
443
+ rules: [
444
+ ...getReplenishRules('taxRate'),
445
+ { required: true, message: ' ' },
446
+ { pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: ' ' },
447
+ ],
448
+ })(
449
+ <Select
450
+ className="kts-invoice-operate-goods-list-table-tax-rate"
451
+ // dropdownMenuStyle={{ textAlign: "right" }}
452
+ showArrow={false}
453
+ style={{ width: '100%' }}
454
+ onChange={() => {
455
+ setChangeField('taxRate');
456
+ onChangeTaxRate(controller, form, record);
457
+ }}
458
+ >
459
+ {taxRateList.map((e, i) => {
460
+ return (
461
+ <Select.Option key={i} value={e}>
462
+ {e}%
463
+ </Select.Option>
464
+ );
465
+ })}
466
+ </Select>,
467
+ )}
468
+ </Form.Item>
469
+ );
470
+ } else {
471
+ return <span style={{ padding: '0 10px' }}>{value}%</span>;
472
+ }
473
+ },
474
+ },
475
+ {
476
+ title: <TitleText rules={columnsReplenish['taxAmount']?.rules} >税额</TitleText>,
477
+ dataIndex: 'taxAmount',
478
+ key: 'taxAmount',
479
+ align: 'right',
480
+ width: 119,
481
+ render: (value: string, record: IGood) => {
482
+ if (editGood?.$index === record.$index) {
483
+ return getFieldDecorator('taxAmount', {
484
+ initialValue: editGood.taxAmount,
485
+ rules: getReplenishRules('taxAmount'),
486
+ })(<MyDiv loading={isCipher(changeField, 'taxAmount')} />);
487
+ } else {
488
+ return <span style={{ padding: '0 10px' }}>{parseFloat(value).toFixed(2)}</span>;
489
+ }
490
+ },
491
+ },
492
+ // {
493
+ // title: '操作',
494
+ // key: 'operating',
495
+ // align: 'right',
496
+ // width: 130,
497
+ // fixed: 'right',
498
+ // render: (_value: string, record: IGood) => <RowMenu key={record.lineAttribute} goods={record} />,
499
+ // },
500
+ ]
501
+ // 含税不含税
502
+ .filter((e) => {
503
+ if (isTaxIncluded) {
504
+ return !(e.key === 'priceExcludeTax' || e.key === 'lineAmountExcludeTax');
505
+ } else {
506
+ return !(e.key === 'priceIncludeTax' || e.key === 'lineAmountIncludeTax');
507
+ }
508
+ })
509
+ // 只读
510
+ .filter(e => {
511
+ if (model === 'readOnly') {
512
+ return e.key !== 'operating';
513
+ } else {
514
+ return true;
515
+ }
516
+ })
517
+ .map((e) => {
518
+ return {
519
+ ...e,
520
+ ellipsis: true,
521
+ };
522
+ }) as any[];
523
+ }, [isTaxIncluded, editGood, controller, changeField, deduction, isMyShow, searchValue, model, columnsReplenish]);
524
+
525
+ // React.useEffect(() => {
526
+ // clearTimeout(t)
527
+ // const t = setTimeout(() => { setChangeField('') }, 1000);
528
+ // return () => { clearTimeout(t) }
529
+ // }, [changeField]);
530
+
531
+ return columns;
532
+ };
533
+
534
+ /** 字段 */
535
+ function isCipher(name?: string, field?: string) {
536
+ if (!name || !field) return false;
537
+ return name !== field;
538
+ }
539
+
540
+ class MyInput extends React.Component<InputProps & { loading?: boolean }> {
541
+ render() {
542
+ if (this.props.loading) {
543
+ return (
544
+ <Spin size="small">
545
+ <Input {...this.props} autoComplete="off" />
546
+ </Spin>
547
+ )
548
+ } else {
549
+ return (
550
+ <Input {...this.props} autoComplete="off" />
551
+ )
552
+ }
553
+ }
554
+ }
555
+
556
+ class MyDiv extends React.Component<{ value?: any, loading?: boolean }> {
557
+
558
+ render() {
559
+ if (this.props.loading) {
560
+ return (
561
+ <Spin size="small">
562
+ <span style={{ padding: '0 10px' }}>{this.props.value}</span>
563
+ </Spin>
564
+ )
565
+ } else {
566
+ return <span style={{ padding: '0 10px' }}>{this.props.value}</span>
567
+ }
568
+ }
569
+ }
570
+
571
+ class MyItemNameDiv extends React.Component<{ valueT?: React.ReactNode, valueF?: React.ReactNode, isMyShow: boolean }> {
572
+ render(): React.ReactNode {
573
+
574
+ const { isMyShow, valueT, valueF } = this.props;
575
+
576
+ if (isMyShow) {
577
+ if (valueT) {
578
+ return (
579
+ <Tooltip title={valueT}>
580
+ <span style={{ padding: '0 10px', color: '#0074ff' }}>{valueT}</span>
581
+ </Tooltip>
582
+ )
583
+ } else {
584
+ return (
585
+ <Tooltip title={valueF}>
586
+ <span style={{ padding: '0 10px' }}>{valueF}</span>
587
+ </Tooltip>
588
+ )
589
+ }
590
+ } else {
591
+ if (valueF) {
592
+ return (
593
+ <Tooltip title={valueF}>
594
+ <span style={{ padding: '0 10px' }}>{valueF}</span>
595
+ </Tooltip>
596
+ )
597
+ } else {
598
+ return (
599
+ <Tooltip title={valueT}>
600
+ <span style={{ padding: '0 10px', color: '#0074ff' }}>{valueT}</span>
601
+ </Tooltip>
602
+ )
603
+ }
604
+ }
605
+ }
606
+ }
607
+
608
+ /** 格式搜索结果 */
609
+ function formatSearch(value?: string, search?: string) {
610
+ if (!value || !search) return value;
611
+
612
+ const __html = ucoding(value).split(new RegExp(ucoding(search), 'g')).map(e => dcoding(e)).join(`<span class="kts-invoice-operate-goods-list-table-search-protrude" >${search}</span>`);
613
+ return <span dangerouslySetInnerHTML={{ __html }} />
614
+ }
615
+
616
+ /** 编码 */
617
+ function ucoding(v: string): string {
618
+ return v.split('').map(e => `U${e.charCodeAt(0)}E`).join('');
619
+ }
620
+
621
+ /** 解码 */
622
+ function dcoding(v: string): string {
623
+ return v.split('U').map(e => e ? String.fromCharCode(parseInt(e.replace('E', ''))) : '').join('');
624
+ }
@@ -0,0 +1,10 @@
1
+ .kts-invoice-operate-goods-list-itemName-input {
2
+ display : flex;
3
+ flex : 1;
4
+ padding-left: 10px;
5
+ height : 31px;
6
+ }
7
+
8
+ .has-error .kts-invoice-operate-goods-list-itemName-input{
9
+ border: 1px solid #f5222d;
10
+ }
@@ -0,0 +1,19 @@
1
+
2
+ import { Input } from 'kts-xui';
3
+ import React, { ChangeEvent } from 'react';
4
+ import './index.less';
5
+
6
+ export default function ItemNameInput(props: { onChange?: (e: ChangeEvent<HTMLInputElement>) => void, value?: string, shorthand?: string }) {
7
+
8
+ const onChange = React.useCallback((e: ChangeEvent<HTMLInputElement>) => {
9
+ const event = { ...e };
10
+ props.onChange && props.onChange(event);
11
+ }, [])
12
+
13
+ return (
14
+ <div className='kts-invoice-operate-goods-list-itemName-input'>
15
+ {props.shorthand && <span style={{ alignSelf: 'center', fontSize: 12 }} >*{props.shorthand}*</span>}
16
+ <Input style={{ height: '100%' }} value={props.value} onChange={onChange} />
17
+ </div>
18
+ )
19
+ }
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Button, message } from 'kts-components-antd-x3';
3
+ import Invoice from '../../../../../../';
4
+ import { IGood } from '../../../../../../InvoiceController';
5
+ import LineAttributeType from '../../../../../../InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType';
6
+
7
+ export default (props: { goods: IGood }) => {
8
+ const { goods } = props;
9
+
10
+ const controller = Invoice.useInvoiceController();
11
+
12
+ const editGood = controller.useMemo((s) => s.goodsListState.editGood, []);
13
+
14
+ const onClick = React.useCallback(() => {
15
+ if (editGood) {
16
+ message.error({
17
+ content: '你正在编辑一个货物',
18
+ key: '你正在编辑一个货物',
19
+ });
20
+ return;
21
+ }
22
+ controller.setEditGood(goods);
23
+ }, [controller, goods, editGood]);
24
+
25
+ if (goods.lineAttribute !== LineAttributeType.正常) {
26
+ return <></>;
27
+ } else {
28
+ return <Button type="link" icon="edit" onClick={onClick} />;
29
+ }
30
+ };