kts-component-invoice-operate 3.1.2 → 3.1.4

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 (117) 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/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.d.ts +2 -2
  9. package/dist/Invoice/ui/GoodsList/hook/useColumns/autoFillFn/index.d.ts +1 -1
  10. package/dist/index.esm.js +2715 -3859
  11. package/dist/index.js +2715 -3859
  12. package/docs/index.md +5 -5
  13. package/docs-dist/umi.js +1 -1
  14. package/index.html +12 -12
  15. package/package.json +59 -59
  16. package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +94 -94
  17. package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
  18. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +90 -90
  19. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
  20. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +72 -72
  21. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +80 -80
  22. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +5 -5
  23. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
  24. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +88 -88
  25. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +42 -42
  26. package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
  27. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +125 -125
  28. package/src/Invoice/InvoiceController/fns/delGood.ts +43 -43
  29. package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +23 -23
  30. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +23 -23
  31. package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
  32. package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
  33. package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
  34. package/src/Invoice/InvoiceController/index.ts +61 -61
  35. package/src/Invoice/_test/buyerNameSearch/index.tsx +41 -41
  36. package/src/Invoice/_test/deduction/index.tsx +935 -935
  37. package/src/Invoice/_test/draft/index.tsx +40 -40
  38. package/src/Invoice/_test/easiest/index.tsx +5 -5
  39. package/src/Invoice/_test/endowCode/index.tsx +1095 -1095
  40. package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
  41. package/src/Invoice/_test/importBuyer/index.tsx +74 -74
  42. package/src/Invoice/_test/importGoods/index.tsx +515 -515
  43. package/src/Invoice/_test/invoiceType/index.tsx +59 -59
  44. package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
  45. package/src/Invoice/_test/replaceHead/index.tsx +22 -22
  46. package/src/Invoice/_test/retrieveData/index.tsx +22 -22
  47. package/src/Invoice/_test/seller/index.tsx +28 -28
  48. package/src/Invoice/_test/setDataSource/index.tsx +22 -22
  49. package/src/Invoice/_test/unit/index.tsx +19 -19
  50. package/src/Invoice/index.less +12 -12
  51. package/src/Invoice/index.md +53 -53
  52. package/src/Invoice/index.tsx +104 -104
  53. package/src/Invoice/tools/calculate/index.ts +97 -97
  54. package/src/Invoice/tools/coolingFn/index.ts +17 -17
  55. package/src/Invoice/tools/evaluate/index.ts +7 -7
  56. package/src/Invoice/tools/idGenerator/index.ts +2 -2
  57. package/src/Invoice/tools/itemName/index.ts +46 -46
  58. package/src/Invoice/tools/lazyFn/index.ts +19 -19
  59. package/src/Invoice/tools/strringFn/index.ts +40 -40
  60. package/src/Invoice/ui/AddComparisonDrawer/index.tsx +149 -149
  61. package/src/Invoice/ui/Buyer/index.less +219 -219
  62. package/src/Invoice/ui/Buyer/index.tsx +114 -114
  63. package/src/Invoice/ui/Buyer/ui/BuyerNameInput/index.tsx +166 -166
  64. package/src/Invoice/ui/Buyer/ui/ImportBuyerButton/index.tsx +21 -21
  65. package/src/Invoice/ui/EndowCodeDrawer/index.less +8 -8
  66. package/src/Invoice/ui/EndowCodeDrawer/index.tsx +441 -441
  67. package/src/Invoice/ui/GoodsList/hook/useColumns/autoFillFn/index.ts +490 -490
  68. package/src/Invoice/ui/GoodsList/hook/useColumns/index.tsx +603 -603
  69. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +9 -9
  70. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +34 -34
  71. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  72. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  73. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
  74. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +35 -35
  75. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
  76. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  77. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  78. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  79. package/src/Invoice/ui/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  80. package/src/Invoice/ui/GoodsList/hook/useDeduction/index.tsx +24 -24
  81. package/src/Invoice/ui/GoodsList/hook/useOnRow/index.tsx +39 -39
  82. package/src/Invoice/ui/GoodsList/hook/useRowSelection/index.tsx +111 -111
  83. package/src/Invoice/ui/GoodsList/hook/useToGenerateId/index.ts +8 -8
  84. package/src/Invoice/ui/GoodsList/hook/useWindowClick/index.tsx +23 -23
  85. package/src/Invoice/ui/GoodsList/index.less +170 -170
  86. package/src/Invoice/ui/GoodsList/index.tsx +177 -177
  87. package/src/Invoice/ui/GoodsList/ui/AddRowButton/index.tsx +61 -61
  88. package/src/Invoice/ui/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
  89. package/src/Invoice/ui/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
  90. package/src/Invoice/ui/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  91. package/src/Invoice/ui/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +66 -66
  92. package/src/Invoice/ui/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +58 -58
  93. package/src/Invoice/ui/GoodsList/ui/BulkMenu/index.tsx +37 -37
  94. package/src/Invoice/ui/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  95. package/src/Invoice/ui/GoodsList/ui/Search/index.less +10 -10
  96. package/src/Invoice/ui/GoodsList/ui/Search/index.tsx +50 -50
  97. package/src/Invoice/ui/GoodsList/ui/Statistics/index.less +18 -18
  98. package/src/Invoice/ui/GoodsList/ui/Statistics/index.tsx +109 -109
  99. package/src/Invoice/ui/GoodsList/ui/TableRow/index.tsx +27 -27
  100. package/src/Invoice/ui/GoodsList/ui/TableVirtual/index.less +38 -38
  101. package/src/Invoice/ui/GoodsList/ui/TableVirtual/index.tsx +105 -105
  102. package/src/Invoice/ui/GoodsList/ui/TableVirtual.o/index.less +44 -44
  103. package/src/Invoice/ui/GoodsList/ui/TableVirtual.o/index.tsx +96 -96
  104. package/src/Invoice/ui/GoodsList/ui/TaxIncludedSwitch/index.tsx +30 -30
  105. package/src/Invoice/ui/ImportBuyerDrawer/index.tsx +75 -75
  106. package/src/Invoice/ui/ImportGoodsDrawer/index.tsx +174 -174
  107. package/src/Invoice/ui/InvoiceHeader/index.less +68 -68
  108. package/src/Invoice/ui/InvoiceHeader/index.tsx +246 -246
  109. package/src/Invoice/ui/Seller/index.less +113 -113
  110. package/src/Invoice/ui/Seller/index.tsx +98 -98
  111. package/src/Invoice/ui/Sign/index.less +14 -14
  112. package/src/Invoice/ui/Sign/index.tsx +71 -71
  113. package/src/index.ts +6 -6
  114. package/tsconfig.json +31 -31
  115. package/typings.d.ts +3 -3
  116. package/yarn.e.lock +14331 -14331
  117. package/yarn.o.lock +14800 -14800
@@ -1,41 +1,41 @@
1
- /**
2
- * 判断一个字符串得字节长度
3
- * @param str
4
- * @returns
5
- */
6
- export function bytesLnegth(str: string) {
7
- var count = str.length;
8
- for (var i = 0; i < str.length; i++) {
9
- if (str.charCodeAt(i) > 255) {
10
- count++;
11
- }
12
- }
13
- return count;
14
- }
15
-
16
- /*
17
- * param str 要截取的字符串
18
- * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节
19
- * return 截取后的字符串
20
- */
21
- export function cutStr(str: string, L: number) {
22
- var result = '',
23
- strlen = str.length, // 字符串长度
24
- chrlen = str.replace(/[^\x00-\xff]/g, '**').length; // 字节长度
25
-
26
- if (chrlen <= L) { return str; }
27
-
28
- for (var i = 0, j = 0; i < strlen; i++) {
29
- var chr = str.charAt(i);
30
- if (/[\x00-\xff]/.test(chr)) {
31
- j++; // ascii码为0-255,一个字符就是一个字节的长度
32
- } else {
33
- j += 2; // ascii码为0-255以外,一个字符就是两个字节的长度
34
- }
35
- if (j <= L) { // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后
36
- result += chr;
37
- } else { // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回
38
- return result;
39
- }
40
- }
1
+ /**
2
+ * 判断一个字符串得字节长度
3
+ * @param str
4
+ * @returns
5
+ */
6
+ export function bytesLnegth(str: string) {
7
+ var count = str.length;
8
+ for (var i = 0; i < str.length; i++) {
9
+ if (str.charCodeAt(i) > 255) {
10
+ count++;
11
+ }
12
+ }
13
+ return count;
14
+ }
15
+
16
+ /*
17
+ * param str 要截取的字符串
18
+ * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节
19
+ * return 截取后的字符串
20
+ */
21
+ export function cutStr(str: string, L: number) {
22
+ var result = '',
23
+ strlen = str.length, // 字符串长度
24
+ chrlen = str.replace(/[^\x00-\xff]/g, '**').length; // 字节长度
25
+
26
+ if (chrlen <= L) { return str; }
27
+
28
+ for (var i = 0, j = 0; i < strlen; i++) {
29
+ var chr = str.charAt(i);
30
+ if (/[\x00-\xff]/.test(chr)) {
31
+ j++; // ascii码为0-255,一个字符就是一个字节的长度
32
+ } else {
33
+ j += 2; // ascii码为0-255以外,一个字符就是两个字节的长度
34
+ }
35
+ if (j <= L) { // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后
36
+ result += chr;
37
+ } else { // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回
38
+ return result;
39
+ }
40
+ }
41
41
  }
@@ -1,150 +1,150 @@
1
-
2
- import React from "react";
3
- import { Row, Col, Input, Button, message } from "kts-components-antd-x3";
4
- import { Form, Drawer } from "kts-xui";
5
- import { Invoice, IGood } from "../../../";
6
- import { getSN } from "../../tools/itemName";
7
- import { LineAttributeType } from "../../InvoiceController";
8
-
9
- export default function AddComparisonDrawer() {
10
-
11
- const [form] = Form.useForm();
12
-
13
- /** 控制器 */
14
- const controller = Invoice.useInvoiceController();
15
-
16
- /** 正在 添加商品对照 的货物索引 */
17
- const addComparisonIndex = controller.useMemo(s => s.goodsListState.addComparisonIndex, []);
18
-
19
- /** 货物字典 */
20
- const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
21
-
22
- /** 正在 对照 的货物 */
23
- const good = React.useMemo(() => addComparisonIndex ? goodsMap.get(addComparisonIndex) : undefined, [addComparisonIndex]);
24
-
25
- /** 关闭对照 */
26
- const onClose = React.useCallback(controller.pipeline<any>(async s => { s.goodsListState.addComparisonIndex = undefined }), [controller]);
27
-
28
- /** 提交数据 */
29
- const onSubmit = React.useCallback(() => {
30
- controller.run(async s => {
31
- if (!good) return
32
-
33
- try {
34
- const values = await form.validateFields()
35
- const shorthand = s.goodsListState.isMyShow ? getSN(good.itemNameSelf)?.shorthand : getSN(good.itemName)?.shorthand;
36
- const setGood = (good: IGood) => {
37
- good.itemCode = values.itemCode;
38
- good.itemCodeSelf = values.itemCodeSelf;
39
- good.itemName = shorthand ? `*${shorthand}*${values.itemName}` : values.itemName;
40
- good.itemNameSelf = shorthand ? `*${shorthand}*${values.itemNameSelf}` : values.itemNameSelf;
41
-
42
- if (good.lineAttribute !== LineAttributeType.折扣行) {
43
- good.itemModelName = values.itemModelName;
44
- good.itemModelNameSelf = values.itemModelNameSelf;
45
- }
46
- }
47
-
48
- setGood(good);
49
-
50
- if (good.lineAttribute !== LineAttributeType.正常) {
51
- const c = good.lineAttribute === LineAttributeType.折扣行 ? -1 : good.lineAttribute === LineAttributeType.被折扣行 ? 1 : 0
52
- const g = s.goodsListState.goodsList[s.goodsListState.goodsList.indexOf(good) + c]
53
- setGood(g);
54
- }
55
-
56
- s.goodsListState.addComparisonIndex = undefined;
57
- s.goodsListState.goodsList = [...s.goodsListState.goodsList];
58
-
59
- message.success('商品映射成功');
60
- } catch (error) {
61
-
62
- }
63
- })
64
- }, [form, good])
65
-
66
- React.useEffect(() => {
67
- form.resetFields();
68
- if (good) {
69
- form.setFieldsValue({
70
- ...good,
71
- itemName: getSN(good.itemName)?.full,
72
- itemNameSelf: getSN(good.itemNameSelf)?.full,
73
- })
74
- }
75
- }, [good])
76
-
77
- return (
78
- <Drawer
79
- width={500}
80
- onClose={onClose}
81
- placement="right"
82
- title="商品映射"
83
- visible={!!good}
84
- footer={
85
- <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 10 }} >
86
- <Button type="primary" onClick={onSubmit} >提交</Button>
87
- <Button onClick={onClose} >取消</Button>
88
- </div>
89
- }
90
- >
91
- {
92
- !!good &&
93
- <Form layout="vertical" style={{ flex: 1 }} form={form} >
94
- <Row gutter={[8, 8]} >
95
- {/* <Col span={12}>
96
- <Form.Item
97
- name="itemCodeSelf"
98
- label="我方商品编码"
99
- >
100
- <Input />
101
- </Form.Item>
102
- </Col>
103
- <Col span={12} >
104
- <Form.Item
105
- name="itemCode"
106
- label="对方商品编码"
107
- >
108
- <Input />
109
- </Form.Item>
110
- </Col> */}
111
- <Col span={12} >
112
- <Form.Item
113
- name="itemNameSelf"
114
- label="我方商品名称"
115
- >
116
- <Input />
117
- </Form.Item>
118
- </Col>
119
- <Col span={12} >
120
- <Form.Item
121
- name="itemName"
122
- label="对方商品名称"
123
- >
124
- <Input />
125
- </Form.Item>
126
- </Col>
127
- <Col span={12} >
128
- <Form.Item name='itemModelNameSelf' label="我方规格型号">
129
- <Input />
130
- </Form.Item>
131
- </Col>
132
- <Col span={12} >
133
- <Form.Item name="itemModelName" label="对方规格型号">
134
- <Input />
135
- </Form.Item>
136
- </Col>
137
- </Row>
138
- </Form>
139
- }
140
- </Drawer>
141
- )
142
- }
143
-
144
- // function validateFields(form: WrappedFormUtils<any>) {
145
- // return new Promise<{ err: any, values: any }>(resolve => {
146
- // form.validateFields((err, values) => {
147
- // resolve({ err, values })
148
- // })
149
- // })
1
+
2
+ import React from "react";
3
+ import { Row, Col, Input, Button, message } from "kts-components-antd-x3";
4
+ import { Form, Drawer } from "kts-xui";
5
+ import { Invoice, IGood } from "../../../";
6
+ import { getSN } from "../../tools/itemName";
7
+ import { LineAttributeType } from "../../InvoiceController";
8
+
9
+ export default function AddComparisonDrawer() {
10
+
11
+ const [form] = Form.useForm();
12
+
13
+ /** 控制器 */
14
+ const controller = Invoice.useInvoiceController();
15
+
16
+ /** 正在 添加商品对照 的货物索引 */
17
+ const addComparisonIndex = controller.useMemo(s => s.goodsListState.addComparisonIndex, []);
18
+
19
+ /** 货物字典 */
20
+ const goodsMap = controller.useMemo(s => s.goodsListState.goodsMap, []);
21
+
22
+ /** 正在 对照 的货物 */
23
+ const good = React.useMemo(() => addComparisonIndex ? goodsMap.get(addComparisonIndex) : undefined, [addComparisonIndex]);
24
+
25
+ /** 关闭对照 */
26
+ const onClose = React.useCallback(controller.pipeline<any>(async s => { s.goodsListState.addComparisonIndex = undefined }), [controller]);
27
+
28
+ /** 提交数据 */
29
+ const onSubmit = React.useCallback(() => {
30
+ controller.run(async s => {
31
+ if (!good) return
32
+
33
+ try {
34
+ const values = await form.validateFields()
35
+ const shorthand = s.goodsListState.isMyShow ? getSN(good.itemNameSelf)?.shorthand : getSN(good.itemName)?.shorthand;
36
+ const setGood = (good: IGood) => {
37
+ good.itemCode = values.itemCode;
38
+ good.itemCodeSelf = values.itemCodeSelf;
39
+ good.itemName = shorthand ? `*${shorthand}*${values.itemName}` : values.itemName;
40
+ good.itemNameSelf = shorthand ? `*${shorthand}*${values.itemNameSelf}` : values.itemNameSelf;
41
+
42
+ if (good.lineAttribute !== LineAttributeType.折扣行) {
43
+ good.itemModelName = values.itemModelName;
44
+ good.itemModelNameSelf = values.itemModelNameSelf;
45
+ }
46
+ }
47
+
48
+ setGood(good);
49
+
50
+ if (good.lineAttribute !== LineAttributeType.正常) {
51
+ const c = good.lineAttribute === LineAttributeType.折扣行 ? -1 : good.lineAttribute === LineAttributeType.被折扣行 ? 1 : 0
52
+ const g = s.goodsListState.goodsList[s.goodsListState.goodsList.indexOf(good) + c]
53
+ setGood(g);
54
+ }
55
+
56
+ s.goodsListState.addComparisonIndex = undefined;
57
+ s.goodsListState.goodsList = [...s.goodsListState.goodsList];
58
+
59
+ message.success('商品映射成功');
60
+ } catch (error) {
61
+
62
+ }
63
+ })
64
+ }, [form, good])
65
+
66
+ React.useEffect(() => {
67
+ form.resetFields();
68
+ if (good) {
69
+ form.setFieldsValue({
70
+ ...good,
71
+ itemName: getSN(good.itemName)?.full,
72
+ itemNameSelf: getSN(good.itemNameSelf)?.full,
73
+ })
74
+ }
75
+ }, [good])
76
+
77
+ return (
78
+ <Drawer
79
+ width={500}
80
+ onClose={onClose}
81
+ placement="right"
82
+ title="商品映射"
83
+ visible={!!good}
84
+ footer={
85
+ <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 10 }} >
86
+ <Button type="primary" onClick={onSubmit} >提交</Button>
87
+ <Button onClick={onClose} >取消</Button>
88
+ </div>
89
+ }
90
+ >
91
+ {
92
+ !!good &&
93
+ <Form layout="vertical" style={{ flex: 1 }} form={form} >
94
+ <Row gutter={[8, 8]} >
95
+ {/* <Col span={12}>
96
+ <Form.Item
97
+ name="itemCodeSelf"
98
+ label="我方商品编码"
99
+ >
100
+ <Input />
101
+ </Form.Item>
102
+ </Col>
103
+ <Col span={12} >
104
+ <Form.Item
105
+ name="itemCode"
106
+ label="对方商品编码"
107
+ >
108
+ <Input />
109
+ </Form.Item>
110
+ </Col> */}
111
+ <Col span={12} >
112
+ <Form.Item
113
+ name="itemNameSelf"
114
+ label="我方商品名称"
115
+ >
116
+ <Input />
117
+ </Form.Item>
118
+ </Col>
119
+ <Col span={12} >
120
+ <Form.Item
121
+ name="itemName"
122
+ label="对方商品名称"
123
+ >
124
+ <Input />
125
+ </Form.Item>
126
+ </Col>
127
+ <Col span={12} >
128
+ <Form.Item name='itemModelNameSelf' label="我方规格型号">
129
+ <Input />
130
+ </Form.Item>
131
+ </Col>
132
+ <Col span={12} >
133
+ <Form.Item name="itemModelName" label="对方规格型号">
134
+ <Input />
135
+ </Form.Item>
136
+ </Col>
137
+ </Row>
138
+ </Form>
139
+ }
140
+ </Drawer>
141
+ )
142
+ }
143
+
144
+ // function validateFields(form: WrappedFormUtils<any>) {
145
+ // return new Promise<{ err: any, values: any }>(resolve => {
146
+ // form.validateFields((err, values) => {
147
+ // resolve({ err, values })
148
+ // })
149
+ // })
150
150
  // }