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.
- package/.dumi/theme/builtins/API.tsx +66 -66
- package/.editorconfig +16 -16
- package/.fatherrc.ts +4 -4
- package/.prettierignore +7 -7
- package/.prettierrc +11 -11
- package/.umirc.ts +8 -8
- package/README.md +5 -5
- package/dist/Invoice/Invoice-digtal/_test/disabled/index.d.ts +4 -0
- package/dist/Invoice/Invoice-digtal/_test/easiest/index.d.ts +4 -0
- package/dist/Invoice/Invoice-digtal/_test/header/index.d.ts +4 -0
- package/dist/Invoice/Invoice-digtal/_test/readOnly/index.d.ts +4 -0
- package/dist/Invoice/Invoice-digtal/_test/stakeholder/index.d.ts +4 -0
- package/dist/Invoice/Invoice-digtal/_test/typeSelection/index.d.ts +4 -0
- package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.d.ts +4 -0
- package/dist/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.d.ts +10 -0
- package/dist/Invoice/InvoiceController/InvoiceControllerState/index.d.ts +6 -0
- package/dist/Invoice/InvoiceController/fns/addGoodDiscount.d.ts +1 -1
- package/dist/Invoice/InvoiceController/fns/addGoodDiscountV2.d.ts +12 -0
- package/dist/Invoice/InvoiceController/fns/delGood.d.ts +1 -1
- package/dist/Invoice/InvoiceController/index.d.ts +2 -0
- package/dist/Invoice/index.d.ts +25 -12
- package/dist/Invoice/tools/mounting/index.d.ts +3 -0
- package/dist/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.d.ts +1 -1
- package/dist/Invoice/ui/{Buyer → default/Buyer}/index.d.ts +1 -1
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.d.ts +2 -2
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +0 -1
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +1 -1
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +1 -1
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +1 -1
- package/dist/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
- package/dist/Invoice/ui/default/GoodsList/hook/useDeduction/index.d.ts +8 -0
- package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.d.ts +1 -1
- package/dist/Invoice/ui/default/GoodsList/hook/useWindowClick/index.d.ts +8 -0
- package/dist/Invoice/ui/{Seller → default/Seller}/index.d.ts +1 -1
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.d.ts +35 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +17 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +5 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +5 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.d.ts +5 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/Search/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/Statistics/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/TableRow/index.d.ts +2 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.d.ts +35 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
- package/dist/Invoice/ui/{GoodsList/hook/useColumns/ui/RowMenu → digtal/GoodsList.o/hook/useColumns/ui/RowEditButton}/index.d.ts +0 -1
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.d.ts +8 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/index.d.ts +20 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.d.ts +3 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.d.ts +2 -0
- package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.d.ts +4 -0
- package/dist/Invoice/ui/digtal/InvoiceHeader/index.d.ts +14 -0
- package/dist/Invoice/ui/digtal/Sign/index.d.ts +10 -0
- package/dist/Invoice/ui/digtal/Stakeholder/index.d.ts +7 -0
- package/dist/InvoiceTypeModal/_test/easiest/index.d.ts +3 -0
- package/dist/InvoiceTypeModal/index.d.ts +34 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +10107 -2821
- package/dist/index.js +10101 -2814
- package/docs/index.md +5 -5
- package/docs-dist/404.html +33 -33
- package/docs-dist/index.html +33 -33
- package/docs-dist/umi.css +19 -19
- package/index.html +12 -12
- package/package.json +60 -60
- package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +38 -0
- package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +5 -0
- package/src/Invoice/Invoice-digtal/_test/header/index.tsx +17 -0
- package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +42 -0
- package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -0
- package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -0
- package/src/Invoice/Invoice-digtal/index.md +19 -0
- package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +94 -94
- package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +93 -93
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +75 -75
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +80 -80
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +5 -5
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +94 -88
- package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +11 -0
- package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +56 -48
- package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
- package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +125 -125
- package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +84 -0
- package/src/Invoice/InvoiceController/fns/delGood.ts +41 -43
- package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +23 -23
- package/src/Invoice/InvoiceController/fns/saveEditGood.ts +24 -23
- package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
- package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
- package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
- package/src/Invoice/InvoiceController/index.ts +65 -61
- package/src/Invoice/_test/buyerNameSearch/index.tsx +41 -41
- package/src/Invoice/_test/deduction/index.tsx +935 -935
- package/src/Invoice/_test/draft/index.tsx +40 -40
- package/src/Invoice/_test/easiest/index.tsx +5 -5
- package/src/Invoice/_test/endowCode/index.tsx +1095 -1095
- package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
- package/src/Invoice/_test/importBuyer/index.tsx +74 -74
- package/src/Invoice/_test/importGoods/index.tsx +515 -515
- package/src/Invoice/_test/invoiceType/index.tsx +59 -59
- package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
- package/src/Invoice/_test/replaceHead/index.tsx +22 -22
- package/src/Invoice/_test/retrieveData/index.tsx +22 -22
- package/src/Invoice/_test/seller/index.tsx +28 -28
- package/src/Invoice/_test/setDataSource/index.tsx +22 -22
- package/src/Invoice/_test/unit/index.tsx +19 -19
- package/src/Invoice/index.less +30 -12
- package/src/Invoice/index.md +53 -53
- package/src/Invoice/index.tsx +164 -109
- package/src/Invoice/tools/calculate/index.ts +112 -112
- package/src/Invoice/tools/coolingFn/index.ts +17 -17
- package/src/Invoice/tools/evaluate/index.ts +7 -7
- package/src/Invoice/tools/idGenerator/index.ts +2 -2
- package/src/Invoice/tools/itemName/index.ts +55 -55
- package/src/Invoice/tools/lazyFn/index.ts +19 -19
- package/src/Invoice/tools/mounting/index.ts +14 -0
- package/src/Invoice/tools/strringFn/index.ts +40 -40
- package/src/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.ts +8 -8
- package/src/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.tsx +149 -149
- package/src/Invoice/ui/{Buyer → default/Buyer}/index.less +219 -219
- package/src/Invoice/ui/{Buyer → default/Buyer}/index.tsx +114 -114
- package/src/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.tsx +166 -166
- package/src/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.tsx +21 -21
- package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.less +8 -8
- package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.tsx +431 -431
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.ts +519 -519
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.tsx +620 -620
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.less +9 -9
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.tsx +19 -19
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -35
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.less +13 -13
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.tsx +98 -98
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.tsx +20 -20
- package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -0
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.tsx +39 -39
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.tsx +111 -111
- package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -0
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.less +177 -177
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.tsx +177 -177
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.tsx +65 -61
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.tsx +69 -66
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +58 -58
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.tsx +37 -37
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.tsx +36 -36
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.less +10 -10
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.tsx +50 -50
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.less +18 -18
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.tsx +109 -109
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.tsx +27 -27
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.less +38 -38
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.tsx +108 -108
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.less +44 -44
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.tsx +96 -96
- package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.tsx +30 -30
- package/src/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.tsx +75 -75
- package/src/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.tsx +170 -170
- package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.less +68 -68
- package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.tsx +246 -246
- package/src/Invoice/ui/{Seller → default/Seller}/index.less +113 -113
- package/src/Invoice/ui/{Seller → default/Seller}/index.tsx +98 -98
- package/src/Invoice/ui/{Sign → default/Sign}/index.less +14 -14
- package/src/Invoice/ui/{Sign → default/Sign}/index.tsx +71 -71
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +520 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +623 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +10 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/spot.svg +1 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +39 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +112 -0
- package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -0
- package/src/Invoice/ui/digtal/GoodsList/index.less +57 -0
- package/src/Invoice/ui/digtal/GoodsList/index.tsx +181 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +66 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +321 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +12 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +35 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +56 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +37 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Search/icon/magnifier.svg +1 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +12 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +50 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +54 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +99 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +12 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +28 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +39 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +109 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.less +44 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.tsx +96 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.ts +520 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.tsx +624 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.less +10 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.less +13 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.tsx +98 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/spot.svg +1 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.tsx +20 -0
- package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.tsx +24 -24
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.tsx +39 -0
- package/src/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.tsx +112 -0
- package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.tsx +23 -23
- package/src/Invoice/ui/digtal/GoodsList.o/index.less +7 -0
- package/src/Invoice/ui/digtal/GoodsList.o/index.tsx +132 -0
- package/src/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.tsx +66 -0
- package/src/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.tsx +28 -0
- package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.less +43 -0
- package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.tsx +109 -0
- package/src/Invoice/ui/digtal/InvoiceHeader/index.less +58 -0
- package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -0
- package/src/Invoice/ui/digtal/Sign/index.less +49 -0
- package/src/Invoice/ui/digtal/Sign/index.tsx +90 -0
- package/src/Invoice/ui/digtal/Stakeholder/index.less +57 -0
- package/src/Invoice/ui/digtal/Stakeholder/index.tsx +237 -0
- package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +3 -0
- package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +3 -0
- package/src/InvoiceTypeModal/_test/easiest/index.tsx +32 -0
- package/src/InvoiceTypeModal/index.less +8 -0
- package/src/InvoiceTypeModal/index.md +6 -0
- package/src/InvoiceTypeModal/index.tsx +123 -0
- package/src/index.ts +9 -6
- package/tsconfig.json +31 -31
- package/typings.d.ts +3 -3
- package/yarn.e.lock +14331 -14331
- package/yarn.o.lock +14800 -14800
- /package/dist/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.d.ts +0 -0
- /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.d.ts +0 -0
- /package/dist/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{Sign → default/Sign}/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.d.ts +0 -0
- /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.d.ts +0 -0
- /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/spot.svg +0 -0
- /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/icon/magnifier.svg +0 -0
- /package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/auto.svg +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Invoice from '../../../../../../..';
|
|
3
|
+
import { Button, Menu } from 'kts-xui';
|
|
4
|
+
|
|
5
|
+
export default () => {
|
|
6
|
+
|
|
7
|
+
const controller = Invoice.useInvoiceController();
|
|
8
|
+
|
|
9
|
+
const model = controller.useMemo(s => s.model, []);
|
|
10
|
+
|
|
11
|
+
const isRemRow = controller.useMemo(s => s.goodsListState.isRemRow, []);
|
|
12
|
+
|
|
13
|
+
/** 是否禁用 */
|
|
14
|
+
const disabled = controller.useMemo((s) => {
|
|
15
|
+
if (s.goodsListState.selectedGoodIndex.length <= 0) return true;
|
|
16
|
+
return false;
|
|
17
|
+
}, []);
|
|
18
|
+
|
|
19
|
+
/** 点击了删除 */
|
|
20
|
+
const onClick = React.useCallback(async () => {
|
|
21
|
+
const selectedGoodIndex = controller.state.goodsListState.selectedGoodIndex.slice();
|
|
22
|
+
for (let i = 0; i < selectedGoodIndex.length; i++) {
|
|
23
|
+
await controller.delGood(selectedGoodIndex[i]);
|
|
24
|
+
}
|
|
25
|
+
await controller.run(async s => { s.goodsListState.selectedGoodIndex = [] });
|
|
26
|
+
}, [])
|
|
27
|
+
|
|
28
|
+
const menuItem = React.useMemo(() => {
|
|
29
|
+
|
|
30
|
+
if (model === 'prefab') return <></>;
|
|
31
|
+
if (model === 'readOnly') return <></>;
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Menu.Item key="1" onClick={onClick} disabled={disabled}> 删除行 </Menu.Item>
|
|
35
|
+
)
|
|
36
|
+
}, [model, onClick, disabled])
|
|
37
|
+
|
|
38
|
+
const button = React.useMemo(() => {
|
|
39
|
+
|
|
40
|
+
if (isRemRow === false) return <></>;
|
|
41
|
+
if (model === 'prefab') return <></>;
|
|
42
|
+
if (model === 'readOnly') return <></>;
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<Button size='small' onClick={onClick} disabled={disabled} >删除</Button>
|
|
46
|
+
)
|
|
47
|
+
}, [model, onClick, disabled])
|
|
48
|
+
|
|
49
|
+
return { button, menuItem };
|
|
50
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
import Invoice from '../../../../../../..';
|
|
3
|
+
import { Button, Popconfirm } from "kts-xui"
|
|
4
|
+
import React from "react"
|
|
5
|
+
|
|
6
|
+
/** 清空重填 */
|
|
7
|
+
export default () => {
|
|
8
|
+
|
|
9
|
+
const controller = Invoice.useInvoiceController();
|
|
10
|
+
|
|
11
|
+
const model = controller.useMemo(s => s.model, []);
|
|
12
|
+
|
|
13
|
+
const confirm = React.useCallback(() => {
|
|
14
|
+
controller.run(async s => {
|
|
15
|
+
s.goodsListState.goodsList = [];
|
|
16
|
+
s.goodsListState.goodsMap = new Map();
|
|
17
|
+
})
|
|
18
|
+
}, [controller])
|
|
19
|
+
|
|
20
|
+
const button = React.useMemo(() => {
|
|
21
|
+
if (model === 'readOnly') return <></>;
|
|
22
|
+
return (
|
|
23
|
+
<Popconfirm
|
|
24
|
+
title="将要清空所有项目信息,是否继续"
|
|
25
|
+
onConfirm={confirm}
|
|
26
|
+
okText="确定"
|
|
27
|
+
cancelText="取消"
|
|
28
|
+
>
|
|
29
|
+
<Button size='small' >清空重填</Button>
|
|
30
|
+
</Popconfirm>
|
|
31
|
+
)
|
|
32
|
+
}, [model, confirm])
|
|
33
|
+
|
|
34
|
+
return { button }
|
|
35
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Invoice from '../../../../../../..';
|
|
3
|
+
import { message, Menu, Button } from 'kts-xui';
|
|
4
|
+
import coolingFn from '../../../../../../../tools/coolingFn';
|
|
5
|
+
import { IGood, LineAttributeType } from '../../../../../../../InvoiceController';
|
|
6
|
+
|
|
7
|
+
export default () => {
|
|
8
|
+
|
|
9
|
+
const controller = Invoice.useInvoiceController();
|
|
10
|
+
|
|
11
|
+
const model = controller.useMemo(s => s.model, []);
|
|
12
|
+
|
|
13
|
+
/** 是否禁用 */
|
|
14
|
+
const disabled = controller.useMemo((s) => s.goodsListState.selectedGoodIndex.length <= 0, []);
|
|
15
|
+
|
|
16
|
+
const onClick = React.useCallback(async () => {
|
|
17
|
+
await controller.saveEditGood();
|
|
18
|
+
await controller.wait();
|
|
19
|
+
await controller.pipeline(async s => {
|
|
20
|
+
|
|
21
|
+
// 不能给正在编辑的货物赋码
|
|
22
|
+
let mv = '不能给正在编辑的货物赋码';
|
|
23
|
+
if (s.goodsListState.editGood && s.goodsListState.selectedGoodIndex.indexOf(s.goodsListState.editGood.$index) >= 0) {
|
|
24
|
+
coolingFn(mv, 3000, () => { message.error(mv) });
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// 税率不一样不能批量赋码
|
|
29
|
+
mv = '商品税率不一致不能操作批量赋码';
|
|
30
|
+
if (s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e)).some((e, _, arr) => e?.taxRate !== arr[0]?.taxRate)) {
|
|
31
|
+
coolingFn(mv, 3000, () => { message.error(mv) });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// 校验 折扣行和被折扣行是否同时勾选
|
|
36
|
+
mv = '请同时勾选“折扣行与被折扣行”';
|
|
37
|
+
if (verifyDiscountLine(s.goodsListState.selectedGoodIndex.map(e => s.goodsListState.goodsMap.get(e) as IGood).filter(e => !!e))) {
|
|
38
|
+
coolingFn(mv, 3000, () => { message.error(mv) });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// 设置赋码
|
|
43
|
+
s.goodsListState.endowCode.endowcodeGoodIndex = s.goodsListState.selectedGoodIndex;
|
|
44
|
+
})();
|
|
45
|
+
}, [controller]);
|
|
46
|
+
|
|
47
|
+
const menuItem = React.useMemo(() => {
|
|
48
|
+
if (model === 'readOnly') return <></>;
|
|
49
|
+
return (
|
|
50
|
+
<Menu.Item key="2" onClick={onClick} disabled={disabled}>
|
|
51
|
+
批量赋码
|
|
52
|
+
</Menu.Item>
|
|
53
|
+
)
|
|
54
|
+
}, [onClick, disabled, model])
|
|
55
|
+
|
|
56
|
+
const button = React.useMemo(() => {
|
|
57
|
+
if (model === 'readOnly') return <></>;
|
|
58
|
+
return (
|
|
59
|
+
<Button onClick={onClick} disabled={disabled} size='small'>
|
|
60
|
+
赋码
|
|
61
|
+
</Button>
|
|
62
|
+
)
|
|
63
|
+
}, [onClick, disabled, model])
|
|
64
|
+
|
|
65
|
+
return { menuItem, button };
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 校验 折扣行和被折扣行是否同时勾选
|
|
70
|
+
* */
|
|
71
|
+
function verifyDiscountLine(selectedGood: IGood[]) {
|
|
72
|
+
selectedGood = selectedGood.sort((a, b) => (a.serialNo || 0) - (b.serialNo || 0));
|
|
73
|
+
for (let i = 0; i < selectedGood.length; i++) {
|
|
74
|
+
const good = selectedGood[i];
|
|
75
|
+
if (good.lineAttribute === LineAttributeType.折扣行)
|
|
76
|
+
return true;
|
|
77
|
+
|
|
78
|
+
if (good.lineAttribute === LineAttributeType.被折扣行 && selectedGood[++i].lineAttribute === LineAttributeType.折扣行)
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import { Button } from "kts-xui";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import Invoice from '../../../../../../..';
|
|
6
|
+
import InvoiceTypeModal from "../../../../../../../../InvoiceTypeModal";
|
|
7
|
+
import { e } from "mathjs";
|
|
8
|
+
|
|
9
|
+
export default () => {
|
|
10
|
+
|
|
11
|
+
const controller = Invoice.useInvoiceController();
|
|
12
|
+
|
|
13
|
+
const model = controller.useMemo(s => s.model, [])
|
|
14
|
+
|
|
15
|
+
const typeModalProps = controller.useMemo(s => s.typeModalProps, []);
|
|
16
|
+
|
|
17
|
+
const [open, setOpen] = React.useState(false);
|
|
18
|
+
|
|
19
|
+
const onOpen = React.useCallback(() => { setOpen(true) }, [])
|
|
20
|
+
|
|
21
|
+
const onClose = React.useCallback(() => { setOpen(false) }, [])
|
|
22
|
+
|
|
23
|
+
const onOk = React.useCallback(e => {
|
|
24
|
+
try {
|
|
25
|
+
typeModalProps?.onOk && typeModalProps.onOk(e);
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error(error);
|
|
28
|
+
}
|
|
29
|
+
onClose();
|
|
30
|
+
}, [onClose, typeModalProps?.onOk]);
|
|
31
|
+
|
|
32
|
+
const isEnable = React.useMemo(()=>{
|
|
33
|
+
if (model === 'readOnly') return false;
|
|
34
|
+
return true;
|
|
35
|
+
}, [model])
|
|
36
|
+
|
|
37
|
+
const button = React.useMemo(() => {
|
|
38
|
+
if (isEnable === false) return <></>;
|
|
39
|
+
return (
|
|
40
|
+
<>
|
|
41
|
+
<Button size='small' onClick={onOpen} >重选发票类型</Button>
|
|
42
|
+
<InvoiceTypeModal
|
|
43
|
+
{...typeModalProps}
|
|
44
|
+
open={open}
|
|
45
|
+
onCancel={onClose}
|
|
46
|
+
onOk={onOk}
|
|
47
|
+
/>
|
|
48
|
+
</>
|
|
49
|
+
)
|
|
50
|
+
}, [open, onClose, onOpen, typeModalProps, isEnable])
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
button,
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Switch, Icon, Tooltip } from 'kts-components-antd-x3';
|
|
4
|
+
import Invoice from '../../../../..';
|
|
5
|
+
|
|
6
|
+
export default () => {
|
|
7
|
+
|
|
8
|
+
const controller = Invoice.useInvoiceController();
|
|
9
|
+
|
|
10
|
+
const productComparison = controller.useMemo(s => s.goodsListState.productComparison, [])
|
|
11
|
+
|
|
12
|
+
const isMyShow = controller.useMemo(s => s.goodsListState.isMyShow, []);
|
|
13
|
+
|
|
14
|
+
const onChange = React.useCallback(e => {
|
|
15
|
+
controller.run(async s => s.goodsListState.isMyShow = !s.goodsListState.isMyShow)
|
|
16
|
+
}, [])
|
|
17
|
+
|
|
18
|
+
if (!productComparison.onComply) return <></>;
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<span>
|
|
22
|
+
<label style={{ marginRight: 2 }} >
|
|
23
|
+
<Tooltip title="蓝色代表我方商品描述,黑色代表对方的商品描述。">
|
|
24
|
+
<Icon style={{ marginRight: 3 }} type="info-circle" />
|
|
25
|
+
</Tooltip>
|
|
26
|
+
使用哪方商品描述:
|
|
27
|
+
</label>
|
|
28
|
+
<Switch
|
|
29
|
+
checked={isMyShow}
|
|
30
|
+
checkedChildren="我方"
|
|
31
|
+
unCheckedChildren="对方"
|
|
32
|
+
defaultChecked
|
|
33
|
+
onChange={onChange}
|
|
34
|
+
/>
|
|
35
|
+
</span>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg t="1656901778998" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9253" width="200" height="200"><path d="M985.781333 918.594133 820.773333 765.5264c27.3728-32.973867 49.6544-69.5776 66.436267-109.258667 22.933333-54.218667 34.561067-111.7952 34.561067-171.1296 0-59.333333-11.627733-116.910933-34.561067-171.1296-22.142933-52.354133-53.837867-99.365333-94.200533-139.729067S705.633067 102.222933 653.28 80.08c-54.218667-22.933333-111.7952-34.561067-171.1296-34.561067S365.240533 57.147733 311.021867 80.08c-52.354133 22.142933-99.365333 53.8368-139.729067 94.200533s-72.0576 87.374933-94.200533 139.729067c-22.932267 54.218667-34.56 111.7952-34.56 171.1296 0 59.3344 11.627733 116.910933 34.56 171.1296 22.144 52.354133 53.837867 99.365333 94.200533 139.729067s87.374933 72.0576 139.729067 94.200533c54.218667 22.932267 111.7952 34.56 171.1296 34.56s116.910933-11.627733 171.1296-34.56c45.352533-19.181867 86.686933-45.543467 123.172267-78.487467L942.256 965.514667c6.16 5.714133 13.966933 8.539733 21.755733 8.539733 8.593067 0 17.163733-3.441067 23.467733-10.237867C999.4976 950.8608 998.738133 930.612267 985.781333 918.594133zM482.151467 860.7584c-207.117867 0-375.620267-168.5024-375.620267-375.620267 0-207.1168 168.5024-375.6192 375.620267-375.6192S857.770667 278.021333 857.770667 485.138133C857.770667 692.256 689.268267 860.7584 482.151467 860.7584z" p-id="9254"></path></svg>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Icon } from "kts-components-antd-x3";
|
|
4
|
+
import { Input, message } from "kts-xui";
|
|
5
|
+
import { ReactComponent as MagnifierSvg } from './icon/magnifier.svg';
|
|
6
|
+
import Invoice from '../../../../..';
|
|
7
|
+
import './index.less';
|
|
8
|
+
|
|
9
|
+
export default function Search() {
|
|
10
|
+
|
|
11
|
+
const controller = Invoice.useInvoiceController();
|
|
12
|
+
|
|
13
|
+
const [value, setValue] = React.useState('');
|
|
14
|
+
|
|
15
|
+
const readOnly = controller.useMemo(s => !!s.goodsListState.editGood, [])
|
|
16
|
+
|
|
17
|
+
/** 是否含税 */
|
|
18
|
+
const isTaxIncluded = controller.useMemo(s => s.goodsListState.isTaxIncluded, [])
|
|
19
|
+
|
|
20
|
+
const onClick = React.useCallback(async () => {
|
|
21
|
+
await controller.saveEditGood();
|
|
22
|
+
await controller.wait();
|
|
23
|
+
if (controller.state.goodsListState.editGood) {
|
|
24
|
+
message.error({
|
|
25
|
+
content: '你正在编辑一个货物',
|
|
26
|
+
key: '你正在编辑一个货物',
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}, [])
|
|
31
|
+
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
controller.run(async s => {
|
|
34
|
+
s.goodsListState.searchValue = value.trim();
|
|
35
|
+
})
|
|
36
|
+
}, [value, controller])
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<Input
|
|
40
|
+
readOnly={readOnly}
|
|
41
|
+
value={value}
|
|
42
|
+
className="kts-invoice-operate-goods-list-search"
|
|
43
|
+
placeholder={`请您输入项目名称、规格型号、金额(${isTaxIncluded ? '含税' : '不含税'})搜索`}
|
|
44
|
+
prefix={<Icon component={MagnifierSvg} style={{ color: "#b8b8b8" }} />}
|
|
45
|
+
onChange={e => { setValue(e.target.value); }}
|
|
46
|
+
onClick={onClick}
|
|
47
|
+
/>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// .kts-invoice-operate-goods-list-statistics {
|
|
2
|
+
// // background: #fafafa;
|
|
3
|
+
// overflow-y: scroll;
|
|
4
|
+
|
|
5
|
+
// .kts-invoice-operate-goods-list-statistics-row {
|
|
6
|
+
// height : 30px;
|
|
7
|
+
// line-height : 30px;
|
|
8
|
+
// border-bottom: 2px solid #e8e8e8;
|
|
9
|
+
// display : flex;
|
|
10
|
+
|
|
11
|
+
// &>div {
|
|
12
|
+
// border-right: 2px solid #e8e8e8;
|
|
13
|
+
|
|
14
|
+
// label {
|
|
15
|
+
// padding: 0 10px;
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
18
|
+
// }
|
|
19
|
+
// }
|
|
20
|
+
|
|
21
|
+
.kts-invoice-operate-goods-list-statistics-digtal {
|
|
22
|
+
|
|
23
|
+
overflow-y: scroll;
|
|
24
|
+
|
|
25
|
+
/* 设置滚动条滑块颜色 */
|
|
26
|
+
&::-webkit-scrollbar-track {
|
|
27
|
+
background-color: #f1f1f1;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.statistics-digtal-total-tax,
|
|
31
|
+
.statistics-digtal-total {
|
|
32
|
+
height : 42px;
|
|
33
|
+
display : flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
|
|
36
|
+
&>div:first-child {
|
|
37
|
+
width : 225px;
|
|
38
|
+
color : #9F613E;
|
|
39
|
+
font-family : PingFang SC;
|
|
40
|
+
height : 100%;
|
|
41
|
+
display : flex;
|
|
42
|
+
align-items : center;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.statistics-digtal-total-tax {
|
|
48
|
+
border-top: 2px solid #9F613E;
|
|
49
|
+
|
|
50
|
+
&>div:first-child {
|
|
51
|
+
border-right: 2px solid #9F613E;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Icon from '@ant-design/icons';
|
|
3
|
+
import { } from 'kts-components-antd-x3';
|
|
4
|
+
import { ReactComponent as ForkSvg } from './svg/fork.svg';
|
|
5
|
+
import { chain, bignumber } from 'mathjs';
|
|
6
|
+
import Invoice from '../../../../..';
|
|
7
|
+
import './index.less';
|
|
8
|
+
|
|
9
|
+
const nzhcn = require('nzh').cn;
|
|
10
|
+
|
|
11
|
+
export default () => {
|
|
12
|
+
const controller = Invoice.useInvoiceController();
|
|
13
|
+
|
|
14
|
+
/** 是否不含税) */
|
|
15
|
+
const isTaxIncluded = controller.useMemo(s => s.goodsListState.isTaxIncluded, []);
|
|
16
|
+
|
|
17
|
+
/** 金额(含税) */
|
|
18
|
+
const lineAmountIncludeTax = controller.useMemo((s) => {
|
|
19
|
+
if (typeof s.goodsListState.amountIncludeTax === 'number') {
|
|
20
|
+
return s.goodsListState.amountIncludeTax
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let sum = chain(bignumber(0));
|
|
24
|
+
const editGood = s.goodsListState.editGood; // 正在编辑的货物
|
|
25
|
+
const err = s.goodsListState.form?.getFieldsError() ?? {};
|
|
26
|
+
|
|
27
|
+
s.goodsListState.goodsList.forEach((e) => {
|
|
28
|
+
if (e.$index === editGood?.$index) {
|
|
29
|
+
if (!err.lineAmountIncludeTax) {
|
|
30
|
+
sum = sum.add(bignumber(editGood.lineAmountIncludeTax || 0));
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
sum = sum.add(bignumber(e.lineAmountIncludeTax || 0));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return sum.done().toNumber();
|
|
37
|
+
}, []);
|
|
38
|
+
|
|
39
|
+
/** 金额(不含税) */
|
|
40
|
+
const lineAmountExcludeTax = controller.useMemo((s) => {
|
|
41
|
+
if (typeof s.goodsListState.amountExcludeTax === 'number') {
|
|
42
|
+
return s.goodsListState.amountExcludeTax
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let sum = chain(bignumber(0));
|
|
46
|
+
const editGood = s.goodsListState.editGood; // 正在编辑的货物
|
|
47
|
+
const err = s.goodsListState.form?.getFieldsError() ?? {};
|
|
48
|
+
|
|
49
|
+
s.goodsListState.goodsList.forEach((e) => {
|
|
50
|
+
if (e.$index === editGood?.$index) {
|
|
51
|
+
if (!err.lineAmountExcludeTax) {
|
|
52
|
+
sum = sum.add(bignumber(editGood.lineAmountExcludeTax || 0));
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
sum = sum.add(bignumber(e.lineAmountExcludeTax || 0));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return sum.done().toNumber();
|
|
59
|
+
}, []);
|
|
60
|
+
|
|
61
|
+
/** 税额 */
|
|
62
|
+
const taxAmount = controller.useMemo((s) => {
|
|
63
|
+
if (typeof s.goodsListState.amountTax === 'number') {
|
|
64
|
+
return s.goodsListState.amountTax;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let sum = chain(bignumber(0));
|
|
68
|
+
const editGood = s.goodsListState.editGood; // 正在编辑的货物
|
|
69
|
+
s.goodsListState.goodsList.forEach((e) => {
|
|
70
|
+
if (e.$index === editGood?.$index) {
|
|
71
|
+
sum = sum.add(bignumber(editGood.taxAmount || 0));
|
|
72
|
+
} else {
|
|
73
|
+
sum = sum.add(bignumber(e.taxAmount || 0));
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return sum.done().toNumber();
|
|
77
|
+
}, []);
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<div className='kts-invoice-operate-goods-list-statistics-digtal' >
|
|
81
|
+
<div className='statistics-digtal-total' >
|
|
82
|
+
<div>合计</div>
|
|
83
|
+
<div style={{ flex: 1 }} />
|
|
84
|
+
<div style={{ width: 119, textAlign: 'right', paddingRight: 15 }} >¥{parseFloat(isTaxIncluded ? lineAmountIncludeTax : lineAmountExcludeTax).toFixed(2)}</div>
|
|
85
|
+
<div style={{ width: 119, textAlign: 'right', paddingRight: 15 }} >¥{parseFloat(taxAmount).toFixed(2)}</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div className='statistics-digtal-total-tax' >
|
|
88
|
+
<div>价税合计(大写)</div>
|
|
89
|
+
<div style={{ paddingLeft: 30 }} >
|
|
90
|
+
<Icon component={ForkSvg} />
|
|
91
|
+
<span style={{ fontWeight: 'bold', marginLeft: 4 }} >{nzhcn.toMoney(lineAmountIncludeTax, { outSymbol: false })}</span>
|
|
92
|
+
</div>
|
|
93
|
+
<div style={{ flex: 1 }} />
|
|
94
|
+
<div style={{ width: 90, color: '#9F613E' }} >(小写)</div>
|
|
95
|
+
<div style={{ width: 119 }} >¥{parseFloat(lineAmountIncludeTax).toFixed(2)}</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div >
|
|
98
|
+
);
|
|
99
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
2
|
+
<g clip-path="url(#clip0_695_1221)">
|
|
3
|
+
<path d="M7.99978 0.888916C4.08867 0.888916 0.888672 4.08892 0.888672 8.00003C0.888672 11.9111 4.08867 15.1111 7.99978 15.1111C11.9109 15.1111 15.1109 11.9111 15.1109 8.00003C15.1109 4.08892 11.9109 0.888916 7.99978 0.888916ZM7.99978 14.2222C4.53312 14.2222 1.77756 11.4667 1.77756 8.00003C1.77756 4.53336 4.53312 1.7778 7.99978 1.7778C11.4664 1.7778 14.222 4.53336 14.222 8.00003C14.222 11.4667 11.4664 14.2222 7.99978 14.2222Z" fill="#333333"/>
|
|
4
|
+
<path d="M10.7019 11.3288L4.72949 5.35818L5.35794 4.72974L11.3295 10.7004L10.7019 11.3288Z" fill="#333333"/>
|
|
5
|
+
<path d="M4.66895 10.7023L10.6396 4.73071L11.2681 5.35916L5.29739 11.3307L4.66895 10.7023Z" fill="#333333"/>
|
|
6
|
+
</g>
|
|
7
|
+
<defs>
|
|
8
|
+
<clipPath id="clip0_695_1221">
|
|
9
|
+
<rect width="16" height="16" fill="white"/>
|
|
10
|
+
</clipPath>
|
|
11
|
+
</defs>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Invoice from '../../../../..';
|
|
3
|
+
import { LineAttributeType } from '../../../../../InvoiceController'
|
|
4
|
+
import classnames from 'classnames'
|
|
5
|
+
|
|
6
|
+
export default function TableRow(props: any) {
|
|
7
|
+
|
|
8
|
+
const controller = Invoice.useInvoiceController();
|
|
9
|
+
|
|
10
|
+
const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, [])
|
|
11
|
+
|
|
12
|
+
const discount = React.useMemo(() => {
|
|
13
|
+
const i = goodsMap.get(props['data-row-key']);
|
|
14
|
+
if (!i) return undefined;
|
|
15
|
+
|
|
16
|
+
if (i.lineAttribute === LineAttributeType.折扣行) {
|
|
17
|
+
return 'kts-invoice-operate-goods-be-discount'
|
|
18
|
+
} else if (i.lineAttribute === LineAttributeType.被折扣行) {
|
|
19
|
+
return 'kts-invoice-operate-goods-discount'
|
|
20
|
+
} else {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
}, [props['data-row-key'], goodsMap])
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<tr {...props} className={classnames(props.className, discount)} />
|
|
27
|
+
)
|
|
28
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
.kts-invoice-operate-goods-table-virtual {
|
|
2
|
+
|
|
3
|
+
.ktsAntX-table-body {
|
|
4
|
+
height: 280px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ktsAntX-table.ktsAntX-table-bordered>.ktsAntX-table-container>.ktsAntX-table-header>table>thead>tr>th {
|
|
8
|
+
padding : 0 10px;
|
|
9
|
+
height : 32px;
|
|
10
|
+
background: #f4f4f4;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ktsAntX-table.ktsAntX-table-bordered>.ktsAntX-table-container>.ktsAntX-table-body>table>tbody>tr>td {
|
|
14
|
+
padding: 0;
|
|
15
|
+
height : 32px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.ktsAntX-table .ktsAntX-table-body {
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.ktsAntX-table .ktsAntX-table-body>table {
|
|
23
|
+
position: absolute;
|
|
24
|
+
left : 0;
|
|
25
|
+
top : 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.ktsAntX-table .ktsAntX-table-tbody {
|
|
29
|
+
position: relative;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.ktsAntX-checkbox-wrapper .ktsAntX-checkbox-inner {
|
|
33
|
+
width : 16px;
|
|
34
|
+
height : 16px;
|
|
35
|
+
border : 1px solid #d9d9d9;
|
|
36
|
+
border-radius: 2px;
|
|
37
|
+
top : 1px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { TableManual, TableProps } from "kts-xui";
|
|
4
|
+
import { Table } from 'kts-components-antd-x4-v4';
|
|
5
|
+
import './index.less';
|
|
6
|
+
|
|
7
|
+
export default function <T extends object = any>(props: TableProps<T>) {
|
|
8
|
+
|
|
9
|
+
const [self, setSelf] = React.useState<HTMLSpanElement | null>(null);
|
|
10
|
+
|
|
11
|
+
const tableBody = React.useMemo(() => {
|
|
12
|
+
if (!self) return;
|
|
13
|
+
return self.querySelector('.ktsAntX-table-body') as HTMLDivElement;
|
|
14
|
+
}, [self]);
|
|
15
|
+
|
|
16
|
+
/** 显示指针 */
|
|
17
|
+
const [pointer, setPointer] = React.useState(0);
|
|
18
|
+
|
|
19
|
+
/** 行高 */
|
|
20
|
+
const rowHeight = React.useMemo(() => {
|
|
21
|
+
if (!self) return 50;
|
|
22
|
+
|
|
23
|
+
const td = self.querySelector('.ktsAntX-table-tbody .ktsAntX-table-row');
|
|
24
|
+
if (!td) return 50;
|
|
25
|
+
|
|
26
|
+
return td.clientHeight;
|
|
27
|
+
}, [self, props.dataSource]);
|
|
28
|
+
|
|
29
|
+
/** 间隔容器 */
|
|
30
|
+
const placeholder = React.useMemo(() => {
|
|
31
|
+
if (!self || !tableBody) return;
|
|
32
|
+
let placeholder = tableBody.querySelector('.table-virtual-placeholder') as HTMLDivElement;
|
|
33
|
+
if (!placeholder) {
|
|
34
|
+
placeholder = document.createElement('div');
|
|
35
|
+
placeholder.className = 'table-virtual-placeholder';
|
|
36
|
+
tableBody.appendChild(placeholder);
|
|
37
|
+
}
|
|
38
|
+
return placeholder;
|
|
39
|
+
}, [self, tableBody]);
|
|
40
|
+
|
|
41
|
+
// 设置占位dom的搞
|
|
42
|
+
const placeholderHeight = React.useMemo(() => {
|
|
43
|
+
if (!self || !rowHeight || !props.dataSource || !placeholder) return;
|
|
44
|
+
const placeholderHeight = rowHeight * props.dataSource.length;
|
|
45
|
+
placeholder.style.height = `${placeholderHeight}px`;
|
|
46
|
+
return placeholderHeight;
|
|
47
|
+
}, [self, rowHeight, props.dataSource, placeholder]);
|
|
48
|
+
|
|
49
|
+
/** 可以容纳的行数 */
|
|
50
|
+
const rowSize = React.useMemo(() => {
|
|
51
|
+
if (!tableBody! || !rowHeight) return 0;
|
|
52
|
+
return Math.ceil(tableBody.clientHeight / rowHeight);
|
|
53
|
+
}, [tableBody, rowHeight, placeholderHeight]);
|
|
54
|
+
|
|
55
|
+
// 计算渲染的行
|
|
56
|
+
const dataSource = React.useMemo(() => {
|
|
57
|
+
if (!props.dataSource) return [];
|
|
58
|
+
if (props.dataSource.length < 10) return props.dataSource;
|
|
59
|
+
|
|
60
|
+
if (!rowSize) return [props.dataSource[0]];
|
|
61
|
+
return props.dataSource?.slice(pointer, pointer + 2 * rowSize);
|
|
62
|
+
}, [props.dataSource, pointer, rowSize]);
|
|
63
|
+
|
|
64
|
+
// 监听滚动
|
|
65
|
+
React.useEffect(() => {
|
|
66
|
+
if (!self || !placeholder || !props.dataSource || !rowHeight || !tableBody)
|
|
67
|
+
return;
|
|
68
|
+
|
|
69
|
+
const onScroll = () => {
|
|
70
|
+
if (!props.dataSource || !tableBody) return;
|
|
71
|
+
setPointer(Math.floor((props.dataSource.length - rowSize) * (tableBody.scrollTop / (placeholder.clientHeight - tableBody.clientHeight))));
|
|
72
|
+
};
|
|
73
|
+
onScroll();
|
|
74
|
+
|
|
75
|
+
tableBody.addEventListener('scroll', onScroll);
|
|
76
|
+
return () => {
|
|
77
|
+
tableBody.removeEventListener('scroll', onScroll);
|
|
78
|
+
};
|
|
79
|
+
}, [self, placeholder, props.dataSource, rowHeight, rowSize]);
|
|
80
|
+
|
|
81
|
+
// 移动列表
|
|
82
|
+
React.useEffect(() => {
|
|
83
|
+
if (!self) return;
|
|
84
|
+
|
|
85
|
+
const table = self.querySelector('.ktsAntX-table .ktsAntX-table-body>table') as HTMLDivElement;
|
|
86
|
+
if (!table) return;
|
|
87
|
+
|
|
88
|
+
table.style.top = `${pointer * rowHeight}px`;
|
|
89
|
+
}, [pointer, self, rowHeight]);
|
|
90
|
+
|
|
91
|
+
React.useEffect(() => {
|
|
92
|
+
if (!self) return;
|
|
93
|
+
const cont = self.querySelector('.kts-invoice-operate-goods-table-virtual .ktsAntX-table-body');
|
|
94
|
+
if (!cont) return;
|
|
95
|
+
|
|
96
|
+
cont.scrollTop = 0;
|
|
97
|
+
}, [props.dataSource?.length])
|
|
98
|
+
|
|
99
|
+
return (
|
|
100
|
+
<span className="kts-invoice-operate-goods-table-virtual" ref={(e) => { setSelf(e) }} >
|
|
101
|
+
<TableManual
|
|
102
|
+
{...props}
|
|
103
|
+
dataSource={dataSource}
|
|
104
|
+
// 新版本Table会有输入框无法连续输入的问题,先兼容老版本
|
|
105
|
+
tableComponent={Table as any}
|
|
106
|
+
/>
|
|
107
|
+
</span>
|
|
108
|
+
)
|
|
109
|
+
}
|