kts-component-invoice-operate 3.2.178 → 3.2.180
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/dist/Invoice/InvoiceController/InvoiceControllerState/index.d.ts +0 -5
- package/dist/Invoice/InvoiceController/index.d.ts +0 -10
- package/dist/Invoice/index.d.ts +0 -4
- package/dist/index.esm.js +47 -1958
- package/dist/index.js +47 -1958
- package/package.json +3 -3
- package/src/Invoice/Invoice-digtal/index.md +1 -7
- package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +0 -6
- package/src/Invoice/InvoiceController/index.ts +1 -20
- package/src/Invoice/index.tsx +1 -8
- package/src/Invoice/tools/useToGenerateId/index.ts +0 -2
- package/src/Invoice/ui/default/EndowCodeDrawer/index.tsx +11 -10
- package/src/Invoice/ui/digtal/GoodsList/index.tsx +1 -0
- package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +1 -0
- package/src/TaxClassificationCodeModal/index.less +8 -0
- package/src/TaxClassificationCodeModal/index.tsx +14 -6
- package/dist/Invoice/Invoice-digtal/_test/architecture/index.d.ts +0 -4
- package/dist/Invoice/Invoice-digtal/_test/freight/index.d.ts +0 -4
- package/dist/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IColumnsReplenish/index.d.ts +0 -6
- package/dist/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IGood/index.d.ts +0 -23
- package/dist/Invoice/InvoiceController/InvoiceControllerState/FreightListState/ImportGoods/index.d.ts +0 -21
- package/dist/Invoice/InvoiceController/InvoiceControllerState/FreightListState/index.d.ts +0 -31
- package/dist/Invoice/InvoiceController/fns/addFreight.d.ts +0 -6
- package/dist/Invoice/InvoiceController/fns/delFreight.d.ts +0 -6
- package/dist/Invoice/InvoiceController/fns/saveEditFreight.d.ts +0 -6
- package/dist/Invoice/InvoiceController/fns/setEditFreight.d.ts +0 -6
- package/dist/Invoice/InvoiceController/fns/setFreight.d.ts +0 -6
- package/dist/Invoice/ui/digtal/Architecture/index.d.ts +0 -15
- package/dist/Invoice/ui/digtal/FreightList/hook/useColumns/index.d.ts +0 -3
- package/dist/Invoice/ui/digtal/FreightList/hook/useColumns/ui/TitleText/index.d.ts +0 -8
- package/dist/Invoice/ui/digtal/FreightList/hook/useOnRow/index.d.ts +0 -8
- package/dist/Invoice/ui/digtal/FreightList/hook/useRowSelection/index.d.ts +0 -8
- package/dist/Invoice/ui/digtal/FreightList/hook/useWindowClick/index.d.ts +0 -8
- package/dist/Invoice/ui/digtal/FreightList/index.d.ts +0 -15
- package/dist/Invoice/ui/digtal/FreightList/ui/AddRowButton/index.d.ts +0 -3
- package/dist/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +0 -6
- package/dist/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useEmptyRefill/index.d.ts +0 -6
- package/dist/Invoice/ui/digtal/FreightList/ui/TableRow/index.d.ts +0 -3
- package/dist/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.d.ts +0 -4
- package/src/Invoice/Invoice-digtal/_test/architecture/index.tsx +0 -22
- package/src/Invoice/Invoice-digtal/_test/freight/index.tsx +0 -14575
- package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IColumnsReplenish/index.ts +0 -10
- package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IGood/index.ts +0 -33
- package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/ImportGoods/index.ts +0 -81
- package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/index.ts +0 -40
- package/src/Invoice/InvoiceController/fns/addFreight.ts +0 -11
- package/src/Invoice/InvoiceController/fns/delFreight.ts +0 -38
- package/src/Invoice/InvoiceController/fns/saveEditFreight.ts +0 -24
- package/src/Invoice/InvoiceController/fns/setEditFreight.ts +0 -16
- package/src/Invoice/InvoiceController/fns/setFreight.ts +0 -11
- package/src/Invoice/ui/digtal/Architecture/index.less +0 -15
- package/src/Invoice/ui/digtal/Architecture/index.tsx +0 -166
- package/src/Invoice/ui/digtal/FreightList/hook/useColumns/dist/index.js +0 -616
- package/src/Invoice/ui/digtal/FreightList/hook/useColumns/index.tsx +0 -246
- package/src/Invoice/ui/digtal/FreightList/hook/useColumns/ui/TitleText/index.tsx +0 -20
- package/src/Invoice/ui/digtal/FreightList/hook/useOnRow/index.tsx +0 -37
- package/src/Invoice/ui/digtal/FreightList/hook/useRowSelection/index.tsx +0 -120
- package/src/Invoice/ui/digtal/FreightList/hook/useWindowClick/index.tsx +0 -23
- package/src/Invoice/ui/digtal/FreightList/index.less +0 -74
- package/src/Invoice/ui/digtal/FreightList/index.tsx +0 -129
- package/src/Invoice/ui/digtal/FreightList/ui/AddRowButton/index.tsx +0 -65
- package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +0 -50
- package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +0 -37
- package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.less +0 -29
- package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.tsx +0 -21
- package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.less +0 -39
- package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.tsx +0 -109
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Invoice from '../../../../..';
|
|
3
|
-
import { Button, message } from 'kts-xui';
|
|
4
|
-
import InvoiceController, { LineAttributeType } from '../../../../../InvoiceController';
|
|
5
|
-
|
|
6
|
-
export default () => {
|
|
7
|
-
const controller = Invoice.useInvoiceController();
|
|
8
|
-
|
|
9
|
-
const model = controller.useMemo(s => s.model, []);
|
|
10
|
-
|
|
11
|
-
const rootElement = controller.useMemo(s => s.rootElement, []);
|
|
12
|
-
|
|
13
|
-
/** 产品数据量 */
|
|
14
|
-
const goodsNum = controller.useMemo(s => s.freightListState.goodsList.length, []);
|
|
15
|
-
|
|
16
|
-
/** 搜索条件 */
|
|
17
|
-
const isAddRow = controller.useMemo(s => s.freightListState.isAddRow, []);
|
|
18
|
-
|
|
19
|
-
/** 产品最大数 */
|
|
20
|
-
const goodMax = controller.useMemo(s => s.freightListState.goodMax, []);
|
|
21
|
-
|
|
22
|
-
/** 按钮是否禁用 */
|
|
23
|
-
const disabled = React.useMemo(() =>{
|
|
24
|
-
return typeof goodMax === 'number' ? goodsNum >= goodMax : false
|
|
25
|
-
}, [goodMax, goodsNum])
|
|
26
|
-
|
|
27
|
-
const onClick = React.useCallback(async () => {
|
|
28
|
-
await addGood(controller);
|
|
29
|
-
await rollBottom(controller, rootElement);
|
|
30
|
-
}, [controller, rootElement]);
|
|
31
|
-
|
|
32
|
-
if (isAddRow === false) return <></>;
|
|
33
|
-
if (model === 'prefab') return <></>;
|
|
34
|
-
if (model === 'readOnly') return <></>;
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
<Button size='small' type='primary' onClick={onClick} disabled={disabled}>
|
|
38
|
-
增行
|
|
39
|
-
</Button>
|
|
40
|
-
);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/** 添加一个空货物 */
|
|
44
|
-
async function addGood(controller: InvoiceController) {
|
|
45
|
-
await controller.saveEditFreight();
|
|
46
|
-
await controller.wait();
|
|
47
|
-
await controller.run(async (s) => {
|
|
48
|
-
if (s.freightListState.editGood) {
|
|
49
|
-
message.error({
|
|
50
|
-
content: '你正在编辑一个货物运输行',
|
|
51
|
-
key: '你正在编辑一个货物运输行',
|
|
52
|
-
});
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
s.freightListState.editGood = await controller.addFreight({});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** 货物列表,滚动到底部 */
|
|
60
|
-
async function rollBottom(controller: InvoiceController, rootElement: HTMLDivElement | null | undefined) {
|
|
61
|
-
await controller.wait();
|
|
62
|
-
const cont = rootElement?.querySelector('.ktsAntX-table-body');
|
|
63
|
-
if (!cont) return;
|
|
64
|
-
cont.scrollTop = cont.scrollHeight;
|
|
65
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
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.freightListState.isRemRow, []);
|
|
12
|
-
|
|
13
|
-
/** 是否禁用 */
|
|
14
|
-
const disabled = controller.useMemo((s) => {
|
|
15
|
-
if (s.freightListState.selectedGoodIndex.length <= 0) return true;
|
|
16
|
-
return false;
|
|
17
|
-
}, []);
|
|
18
|
-
|
|
19
|
-
/** 点击了删除 */
|
|
20
|
-
const onClick = React.useCallback(async () => {
|
|
21
|
-
const selectedGoodIndex = controller.state.freightListState.selectedGoodIndex.slice();
|
|
22
|
-
for (let i = 0; i < selectedGoodIndex.length; i++) {
|
|
23
|
-
await controller.delFreight(selectedGoodIndex[i]);
|
|
24
|
-
}
|
|
25
|
-
await controller.run(async s => { s.freightListState.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, isRemRow])
|
|
48
|
-
|
|
49
|
-
return { button, menuItem };
|
|
50
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
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.freightListState.goodsList = [];
|
|
16
|
-
s.freightListState.goodsMap = new Map();
|
|
17
|
-
s.freightListState.selectedGoodIndex = [];
|
|
18
|
-
})
|
|
19
|
-
}, [controller])
|
|
20
|
-
|
|
21
|
-
const button = React.useMemo(() => {
|
|
22
|
-
if (model === 'readOnly') return <></>;
|
|
23
|
-
if (model === 'prefab') return <></>;
|
|
24
|
-
return (
|
|
25
|
-
<Popconfirm
|
|
26
|
-
title="将要清空所有项目信息,是否继续"
|
|
27
|
-
onConfirm={confirm}
|
|
28
|
-
okText="确定"
|
|
29
|
-
cancelText="取消"
|
|
30
|
-
>
|
|
31
|
-
<Button size='small' >清空重填</Button>
|
|
32
|
-
</Popconfirm>
|
|
33
|
-
)
|
|
34
|
-
}, [model, confirm])
|
|
35
|
-
|
|
36
|
-
return { button }
|
|
37
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
.kts-invoice-operate-goods-list-itemName-drag-container-u {
|
|
2
|
-
position: relative;
|
|
3
|
-
|
|
4
|
-
&::after {
|
|
5
|
-
content : " ";
|
|
6
|
-
width : 100%;
|
|
7
|
-
height : 2px;
|
|
8
|
-
background: #0074ff;
|
|
9
|
-
position : absolute;
|
|
10
|
-
left : 0;
|
|
11
|
-
top : 0;
|
|
12
|
-
z-index : 9999;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.kts-invoice-operate-goods-list-itemName-drag-container-d {
|
|
17
|
-
position: relative;
|
|
18
|
-
|
|
19
|
-
&::after {
|
|
20
|
-
content : " ";
|
|
21
|
-
width : 100%;
|
|
22
|
-
height : 2px;
|
|
23
|
-
background: #0074ff;
|
|
24
|
-
position : absolute;
|
|
25
|
-
left : 0;
|
|
26
|
-
bottom : 0;
|
|
27
|
-
z-index : 9999;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import Invoice from '../../../../..';
|
|
3
|
-
import { LineAttributeType } from '../../../../../InvoiceController'
|
|
4
|
-
import classnames from 'classnames'
|
|
5
|
-
import './index.less'
|
|
6
|
-
|
|
7
|
-
export default function TableRow(props: any) {
|
|
8
|
-
|
|
9
|
-
const rowKey = props['data-row-key']
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return <tr
|
|
15
|
-
{...props}
|
|
16
|
-
className={classnames(
|
|
17
|
-
props.className,
|
|
18
|
-
)}
|
|
19
|
-
/>
|
|
20
|
-
|
|
21
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
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 || props.dataSource.length < 10)
|
|
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
|
-
}
|