ztxkui 4.2.23-2 → 4.2.23-21
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/DemoCom/PrintContainerDemo.js +223 -70
- package/dist/TableDemo/data.js +1 -1
- package/dist/UI/Basic/index.d.ts +2 -0
- package/dist/UI/Basic/index.js +18 -0
- package/dist/UI/Form/index.d.ts +3 -0
- package/dist/UI/Form/index.js +187 -0
- package/dist/UI/Modal/hooks.d.ts +15 -0
- package/dist/UI/Modal/hooks.js +172 -0
- package/dist/UI/Modal/index.d.ts +3 -0
- package/dist/UI/Modal/index.js +46 -0
- package/dist/UI/Table/DefaultTable.d.ts +2 -0
- package/dist/UI/Table/DefaultTable.js +49 -0
- package/dist/UI/Table/EditTable.d.ts +2 -0
- package/dist/UI/Table/EditTable.js +259 -0
- package/dist/UI/Table/data.d.ts +10 -0
- package/dist/UI/Table/data.js +14 -0
- package/dist/UI/Table/index.d.ts +2 -0
- package/dist/UI/Table/index.js +5 -0
- package/dist/UI/index.d.ts +2 -0
- package/dist/UI/index.js +26 -0
- package/dist/components/EnhanceSelect/index.js +4 -0
- package/dist/components/Input/input.js +38 -13
- package/dist/components/PrintContainer/print-container.js +70 -30
- package/dist/components/ProForm/hooks.d.ts +23 -0
- package/dist/components/ProForm/hooks.js +209 -0
- package/dist/components/ProForm/index.d.ts +6 -0
- package/dist/components/ProForm/index.js +87 -0
- package/dist/components/ProForm/interface.d.ts +116 -0
- package/dist/components/ProForm/interface.js +1 -0
- package/dist/components/ProForm/items.d.ts +5 -0
- package/dist/components/ProForm/items.js +136 -0
- package/dist/components/ProForm/search-drawer.d.ts +11 -0
- package/dist/components/ProForm/search-drawer.js +76 -0
- package/dist/components/ProForm/setting.d.ts +5 -0
- package/dist/components/ProForm/setting.js +13 -0
- package/dist/components/ProFormList/index.d.ts +12 -0
- package/dist/components/ProFormList/index.js +34 -0
- package/dist/components/ProModal/ModalForm.d.ts +8 -0
- package/dist/components/ProModal/ModalForm.js +32 -0
- package/dist/components/ProModal/ModalTable.d.ts +8 -0
- package/dist/components/ProModal/ModalTable.js +32 -0
- package/dist/components/ProModal/hooks.d.ts +33 -0
- package/dist/components/ProModal/hooks.js +193 -0
- package/dist/components/ProModal/index.d.ts +17 -0
- package/dist/components/ProModal/index.js +80 -0
- package/dist/components/ProModal/interface.d.ts +47 -0
- package/dist/components/ProModal/interface.js +1 -0
- package/dist/components/ProTable/hooks.d.ts +28 -0
- package/dist/components/ProTable/hooks.js +272 -0
- package/dist/components/ProTable/index.d.ts +8 -0
- package/dist/components/ProTable/index.js +76 -0
- package/dist/components/ProTable/interface.d.ts +51 -0
- package/dist/components/ProTable/interface.js +1 -0
- package/dist/components/Table/hooks/useColumns.d.ts +4 -4
- package/dist/components/Table/hooks/useColumns.js +227 -169
- package/dist/components/Table/hooks/useInnerPagination.js +1 -0
- package/dist/components/Table/table-adddel-column.d.ts +2 -1
- package/dist/components/Table/table-adddel-column.js +5 -3
- package/dist/components/Table/table-enhance-cell.d.ts +6 -3
- package/dist/components/Table/table-enhance-cell.js +119 -110
- package/dist/components/Table/table-enhance-row.d.ts +3 -4
- package/dist/components/Table/table-enhance-row.js +6 -10
- package/dist/components/Table/table-resizable-title.d.ts +4 -5
- package/dist/components/Table/table-resizable-title.js +31 -6
- package/dist/components/Table/table.d.ts +2 -0
- package/dist/components/Table/table.js +154 -150
- package/dist/components/Table/utils/shallowEqual.d.ts +2 -0
- package/dist/components/Table/utils/shallowEqual.js +34 -0
- package/dist/components/Table/utils/validate.js +0 -3
- package/dist/components/Tabs/DraggableTabNode.d.ts +7 -0
- package/dist/components/Tabs/DraggableTabNode.js +33 -0
- package/dist/components/Tabs/hooks.d.ts +3 -0
- package/dist/components/Tabs/hooks.js +59 -0
- package/dist/components/Tabs/tabs.d.ts +3 -0
- package/dist/components/Tabs/tabs.js +8 -2
- package/dist/components/business/Footer/index.d.ts +1 -0
- package/dist/components/business/Footer/index.js +18 -4
- package/dist/components/business/Signatures/components/QunjSeal.js +3 -2
- package/dist/components/business/Signatures/index.js +13 -14
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/index.css +327 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -1
- package/package.json +4 -4
|
@@ -9,8 +9,19 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
12
23
|
import React from 'react';
|
|
13
|
-
import Modal from '../Modal';
|
|
24
|
+
// import Modal from '../Modal';
|
|
14
25
|
import { Input as AntInput } from 'antd';
|
|
15
26
|
import classNames from 'classnames';
|
|
16
27
|
function Input(props) {
|
|
@@ -22,21 +33,35 @@ function Input(props) {
|
|
|
22
33
|
return React.createElement(AntInput, __assign({}, props));
|
|
23
34
|
}
|
|
24
35
|
var TextArea = React.forwardRef(function (props, ref) {
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
var _a = props.handleSize, handleSize = _a === void 0 ? true : _a, _b = props.autoSize, autoSize = _b === void 0 ? true : _b, className = props.className, resetProps = __rest(props, ["handleSize", "autoSize", "className"]);
|
|
37
|
+
// const onDoubleClickHandle = (i) => {
|
|
38
|
+
// if (i.target.value) {
|
|
39
|
+
// Modal.info({
|
|
40
|
+
// title: '',
|
|
41
|
+
// width: '80%',
|
|
42
|
+
// content: (
|
|
43
|
+
// <div style={{ maxHeight: '60vh', overflow: 'auto' }}>
|
|
44
|
+
// {i.target.value}
|
|
45
|
+
// </div>
|
|
46
|
+
// ),
|
|
47
|
+
// icon: null,
|
|
48
|
+
// });
|
|
49
|
+
// }
|
|
50
|
+
// };
|
|
36
51
|
var classes = classNames(className, {
|
|
37
52
|
'textArea-handleSize-true': handleSize,
|
|
38
53
|
});
|
|
39
|
-
|
|
54
|
+
// 不要最大高度限制
|
|
55
|
+
var newAutoSize = typeof autoSize === 'object'
|
|
56
|
+
? autoSize.minRows
|
|
57
|
+
? { minRows: autoSize.minRows }
|
|
58
|
+
: true
|
|
59
|
+
: autoSize;
|
|
60
|
+
return (React.createElement(AntInput.TextArea
|
|
61
|
+
// onDoubleClick={onDoubleClickHandle}
|
|
62
|
+
, __assign({
|
|
63
|
+
// onDoubleClick={onDoubleClickHandle}
|
|
64
|
+
className: classes, autoSize: newAutoSize }, resetProps, { ref: ref })));
|
|
40
65
|
});
|
|
41
66
|
Input.Group = AntInput.Group;
|
|
42
67
|
Input.Search = AntInput.Search;
|
|
@@ -250,14 +250,16 @@ var PrintContainer = function (_a) {
|
|
|
250
250
|
useEffect(function () {
|
|
251
251
|
if (defaultAddWater) {
|
|
252
252
|
addWaterHandle({
|
|
253
|
+
waterText: waterText,
|
|
253
254
|
waterClassName: ['.html2canvas-container-page'],
|
|
254
255
|
});
|
|
255
256
|
setShowWater(true);
|
|
256
257
|
}
|
|
257
|
-
}, [defaultAddWater]);
|
|
258
|
+
}, [defaultAddWater, waterText]);
|
|
258
259
|
var onWaterHandle = function () {
|
|
259
260
|
if (!showWater) {
|
|
260
261
|
addWaterHandle({
|
|
262
|
+
waterText: waterText,
|
|
261
263
|
waterClassName: ['.html2canvas-container-page'],
|
|
262
264
|
});
|
|
263
265
|
setShowWater(true);
|
|
@@ -590,6 +592,7 @@ var PrintContainer = function (_a) {
|
|
|
590
592
|
isShowPage: isAddExportPage,
|
|
591
593
|
pdfOptions: __assign({}, (pdfOptions || {})),
|
|
592
594
|
imgPositionX: imgPositionX,
|
|
595
|
+
waterText: waterText,
|
|
593
596
|
})
|
|
594
597
|
.then(function () {
|
|
595
598
|
setSpinning(false);
|
|
@@ -702,32 +705,59 @@ var PrintContainer = function (_a) {
|
|
|
702
705
|
if (isSetPosition) {
|
|
703
706
|
setPositionDom(setPositionDeviation(value));
|
|
704
707
|
}
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
708
|
+
if (options.isOnlyOne) {
|
|
709
|
+
htmlToPdfUseCanvas({
|
|
710
|
+
dom: containerRef.current,
|
|
711
|
+
isShowPage: isAddExportPage,
|
|
712
|
+
isOnlyOne: options.isOnlyOne,
|
|
713
|
+
pdfName: pdfName,
|
|
714
|
+
noWater: true,
|
|
715
|
+
// isDownload: true,
|
|
716
|
+
pdfOptions: {
|
|
717
|
+
orientation: options.pdfOptions.orientation,
|
|
718
|
+
format: options.pdfOptions.format,
|
|
719
|
+
},
|
|
720
|
+
})
|
|
721
|
+
.then(function (option) {
|
|
722
|
+
clickCreatePdfHandleNext && clickCreatePdfHandleNext();
|
|
723
|
+
setPositionDom(value);
|
|
724
|
+
// 成功回调
|
|
725
|
+
successCallback(option);
|
|
726
|
+
})
|
|
727
|
+
.catch(function () {
|
|
728
|
+
clickCreatePdfHandleNext && clickCreatePdfHandleNext();
|
|
729
|
+
setPositionDom(value);
|
|
730
|
+
setSpinning(false);
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
else {
|
|
734
|
+
htmlToPdfNoCanvas({
|
|
735
|
+
dom: containerRef.current,
|
|
736
|
+
isShowPage: isAddExportPage,
|
|
737
|
+
fileBinary: fontTTF,
|
|
738
|
+
// isDownload: true,
|
|
739
|
+
isCompress: true,
|
|
740
|
+
pdfName: pdfName,
|
|
741
|
+
pdfOption: {
|
|
742
|
+
pageFormat: options.pdfOptions.format,
|
|
743
|
+
// 因为生成的pdf需要打印,所以边距需要去掉
|
|
744
|
+
pageMarginX: isSetPosition ? 0 : 20,
|
|
745
|
+
pageMarginY: isSetPosition ? 0 : 10,
|
|
746
|
+
pageOrient: options.pdfOptions.orientation,
|
|
747
|
+
},
|
|
748
|
+
})
|
|
749
|
+
.then(function (option) {
|
|
750
|
+
clickCreatePdfHandleNext && clickCreatePdfHandleNext();
|
|
751
|
+
setPositionDom(value);
|
|
752
|
+
// 成功回调
|
|
753
|
+
successCallback(option);
|
|
754
|
+
})
|
|
755
|
+
.catch(function () {
|
|
756
|
+
clickCreatePdfHandleNext && clickCreatePdfHandleNext();
|
|
757
|
+
setPositionDom(value);
|
|
758
|
+
setSpinning(false);
|
|
759
|
+
});
|
|
760
|
+
}
|
|
731
761
|
});
|
|
732
762
|
}
|
|
733
763
|
// 确认盖章位置
|
|
@@ -1187,7 +1217,7 @@ var PrintContainer = function (_a) {
|
|
|
1187
1217
|
cancelText: '取消',
|
|
1188
1218
|
onOk: function () {
|
|
1189
1219
|
setSpinning(true);
|
|
1190
|
-
var newFiles = downloadFailIndexArr.map(function (i) { return files[i]; });
|
|
1220
|
+
var newFiles = downloadFailIndexArr.map(function (i) { return files[i - 1]; });
|
|
1191
1221
|
noZipDownloadHandle(newFiles);
|
|
1192
1222
|
},
|
|
1193
1223
|
});
|
|
@@ -1376,7 +1406,7 @@ var PrintContainer = function (_a) {
|
|
|
1376
1406
|
},
|
|
1377
1407
|
});
|
|
1378
1408
|
}
|
|
1379
|
-
else {
|
|
1409
|
+
else if (e.key === 'p') {
|
|
1380
1410
|
onSurePositionHandle({
|
|
1381
1411
|
pdfOptions: {
|
|
1382
1412
|
orientation: 'p',
|
|
@@ -1384,9 +1414,19 @@ var PrintContainer = function (_a) {
|
|
|
1384
1414
|
},
|
|
1385
1415
|
});
|
|
1386
1416
|
}
|
|
1417
|
+
else if (e.key === 'lmerge') {
|
|
1418
|
+
onSurePositionHandle({
|
|
1419
|
+
pdfOptions: {
|
|
1420
|
+
orientation: 'l',
|
|
1421
|
+
format: PAGEFORMATL,
|
|
1422
|
+
},
|
|
1423
|
+
isOnlyOne: true,
|
|
1424
|
+
});
|
|
1425
|
+
}
|
|
1387
1426
|
} },
|
|
1388
1427
|
React.createElement(Menu.Item, { key: "l" }, "\u6A2A\u5411"),
|
|
1389
|
-
React.createElement(Menu.Item, { key: "p" }, "\u7EB5\u5411")
|
|
1428
|
+
React.createElement(Menu.Item, { key: "p" }, "\u7EB5\u5411"),
|
|
1429
|
+
React.createElement(Menu.Item, { key: "lmerge", title: "\u5373\u5C06\u591A\u4E2A\u5355\u636E\u5408\u5E76\u5230\u4E00\u4E2Apdf\u4E2D\uFF0C\u524D\u5F80\u5951\u7EA6\u9501\u624B\u52A8\u76D6\u7AE0" }, "\u5408\u5E76\u786E\u8BA4\u4F4D\u7F6E"))); }, placement: "bottomLeft" },
|
|
1390
1430
|
React.createElement(Button, { type: "primary" }, "\u786E\u8BA4\u76D6\u7AE0\u4F4D\u7F6E")),
|
|
1391
1431
|
currentContractId && (React.createElement(Button, { type: "primary", onClick: onSealHandle }, "\u76D6\u7AE0")))),
|
|
1392
1432
|
showAutoSeal && (React.createElement(Dropdown, { overlay: function () { return (React.createElement(Menu, { onClick: function (e) {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ISearchLayout, IFormItem } from './interface';
|
|
3
|
+
export declare function getCurrentDynamicItems(showDynamic?: boolean, showDynamicKey?: string, items?: IFormItem[]): ISearchLayout[];
|
|
4
|
+
/**
|
|
5
|
+
* @description 将动态配置存在本地存储中
|
|
6
|
+
* @param dynamicStorageKey 保留的key值
|
|
7
|
+
* @param value 值
|
|
8
|
+
*/
|
|
9
|
+
export declare function setDynamicKey(dynamicStorageKey: string, value: any): void;
|
|
10
|
+
export declare function useDynamic(showDynamic?: boolean, showDynamicKey?: string, items?: IFormItem[]): {
|
|
11
|
+
initDynamicList: ISearchLayout[];
|
|
12
|
+
currentDynamicList: ISearchLayout[];
|
|
13
|
+
setCurrentDynamicList: import("react").Dispatch<import("react").SetStateAction<ISearchLayout[]>>;
|
|
14
|
+
currentItems: IFormItem[];
|
|
15
|
+
};
|
|
16
|
+
export declare function getItems(currentDynamicList: ISearchLayout[], items: IFormItem[]): IFormItem[];
|
|
17
|
+
export declare function useDrawer(initList: any, setCurrentDynamicList: any, showDynamicKey: any): {
|
|
18
|
+
visible: boolean;
|
|
19
|
+
setVisible: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
20
|
+
onClose: () => void;
|
|
21
|
+
onReset: () => void;
|
|
22
|
+
onSure: (newList: ISearchLayout[]) => void;
|
|
23
|
+
};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { useMemo, useState, useCallback, useEffect } from 'react';
|
|
13
|
+
/**
|
|
14
|
+
* 获取动态列配置相关信息
|
|
15
|
+
*/
|
|
16
|
+
// 搜索表单存储位置信息key
|
|
17
|
+
var LOCALSTORAGE_KEY = 'ztui_dynamic-form-key_key';
|
|
18
|
+
// 搜索表单LRU排序规则key
|
|
19
|
+
var LOCALSTORAGE_LRU_KEY = 'ztui_dynamic-form-key_lru_key';
|
|
20
|
+
// 搜索表单存储表单最大长度
|
|
21
|
+
var LOCALSTORAGE_LRU_MAX_SIZE = 500;
|
|
22
|
+
export function getCurrentDynamicItems(showDynamic, showDynamicKey, items) {
|
|
23
|
+
if (showDynamic && showDynamicKey && Array.isArray(items)) {
|
|
24
|
+
// 从storage中取到历史数据
|
|
25
|
+
var dynamicList = [];
|
|
26
|
+
try {
|
|
27
|
+
var obj = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY) || '{}') || {};
|
|
28
|
+
dynamicList = obj[showDynamicKey];
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.log(err);
|
|
32
|
+
}
|
|
33
|
+
var currentDynamicList_1 = Array.isArray(dynamicList) && dynamicList.length > 0 ? dynamicList : [];
|
|
34
|
+
// 如果缓存中没值的话,那么直接取当前配置相关字段
|
|
35
|
+
if (!dynamicList || dynamicList.length === 0) {
|
|
36
|
+
items.forEach(function (item) {
|
|
37
|
+
var name = item.name, label = item.label, disabled = item.disabled, dynamicDisabled = item.dynamicDisabled, hiddenLabel = item.hiddenLabel;
|
|
38
|
+
var result = {
|
|
39
|
+
name: name,
|
|
40
|
+
label: label,
|
|
41
|
+
disabled: disabled,
|
|
42
|
+
dynamicDisabled: dynamicDisabled,
|
|
43
|
+
hiddenLabel: hiddenLabel,
|
|
44
|
+
show: true,
|
|
45
|
+
};
|
|
46
|
+
currentDynamicList_1.push(__assign(__assign({}, result), { isFind: true }));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
items.forEach(function (item, index) {
|
|
51
|
+
var name = item.name, label = item.label, disabled = item.disabled, dynamicDisabled = item.dynamicDisabled, hiddenLabel = item.hiddenLabel;
|
|
52
|
+
var result = {
|
|
53
|
+
name: name,
|
|
54
|
+
label: label,
|
|
55
|
+
disabled: disabled,
|
|
56
|
+
dynamicDisabled: dynamicDisabled,
|
|
57
|
+
hiddenLabel: hiddenLabel,
|
|
58
|
+
show: true,
|
|
59
|
+
};
|
|
60
|
+
// 将最新的名字等同步
|
|
61
|
+
// 如果之前有数据,那么需要验证数据的准确性,比如修改了名字但是key没替换
|
|
62
|
+
var currentData = currentDynamicList_1.find(function (currentDynamic) { return currentDynamic.name === name; });
|
|
63
|
+
if (currentData) {
|
|
64
|
+
currentData.label = label;
|
|
65
|
+
currentData.disabled = disabled;
|
|
66
|
+
currentData.dynamicDisabled = dynamicDisabled;
|
|
67
|
+
currentData.hiddenLabel = hiddenLabel;
|
|
68
|
+
currentData.isFind = true; // 代表当前这个字段被找到
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// 没有从之前的字段中被找到的话,说明是业务新增的 需要添加上
|
|
72
|
+
currentDynamicList_1.push(__assign(__assign({}, result), { isFind: true }));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return currentDynamicList_1
|
|
77
|
+
.filter(function (item) { return item.isFind; })
|
|
78
|
+
.map(function (item) {
|
|
79
|
+
var result = __assign({}, item);
|
|
80
|
+
Reflect.deleteProperty(result, 'isFind');
|
|
81
|
+
return result;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description 将动态配置存在本地存储中
|
|
88
|
+
* @param dynamicStorageKey 保留的key值
|
|
89
|
+
* @param value 值
|
|
90
|
+
*/
|
|
91
|
+
export function setDynamicKey(dynamicStorageKey, value) {
|
|
92
|
+
var obj = {};
|
|
93
|
+
var lruKeys = [];
|
|
94
|
+
try {
|
|
95
|
+
obj = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY) || '{}') || {};
|
|
96
|
+
lruKeys =
|
|
97
|
+
JSON.parse(localStorage.getItem(LOCALSTORAGE_LRU_KEY) || '[]') || [];
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
console.error(err);
|
|
101
|
+
}
|
|
102
|
+
// 需要初始化lru排序数据
|
|
103
|
+
if (lruKeys.length !== Object.keys(obj).length) {
|
|
104
|
+
lruKeys = Object.keys(obj);
|
|
105
|
+
}
|
|
106
|
+
// 设置值之前,先判断是否满足LRU条件,最后面的最新鲜
|
|
107
|
+
var currentKeyIndex = lruKeys.findIndex(function (lruKey) { return lruKey === dynamicStorageKey; });
|
|
108
|
+
// 如果新增key本身就在原keys里面,那删除原key,将原key添加最新鲜的位置
|
|
109
|
+
// 如果不在原keys里面,那么直接添加到最新鲜的位置
|
|
110
|
+
if (currentKeyIndex !== -1) {
|
|
111
|
+
lruKeys.splice(currentKeyIndex, 1);
|
|
112
|
+
lruKeys.push(dynamicStorageKey);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
lruKeys.push(dynamicStorageKey);
|
|
116
|
+
}
|
|
117
|
+
var length = lruKeys.length;
|
|
118
|
+
// 长度是否有问题
|
|
119
|
+
// 如果长度大于最大可存储长度,那么删除最老旧的元素
|
|
120
|
+
// 把对象里面存储的最老旧元素清除
|
|
121
|
+
if (length > LOCALSTORAGE_LRU_MAX_SIZE) {
|
|
122
|
+
var oldKey = lruKeys.shift();
|
|
123
|
+
try {
|
|
124
|
+
delete obj[oldKey];
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
//
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
obj[dynamicStorageKey] = value;
|
|
131
|
+
localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(obj));
|
|
132
|
+
localStorage.setItem(LOCALSTORAGE_LRU_KEY, JSON.stringify(lruKeys));
|
|
133
|
+
}
|
|
134
|
+
export function useDynamic(showDynamic, showDynamicKey, items) {
|
|
135
|
+
var initDynamicList = useMemo(function () {
|
|
136
|
+
if (Array.isArray(items)) {
|
|
137
|
+
return items.map(function (item) {
|
|
138
|
+
var name = item.name, label = item.label, disabled = item.disabled, dynamicDisabled = item.dynamicDisabled, hiddenLabel = item.hiddenLabel;
|
|
139
|
+
var result = {
|
|
140
|
+
name: name,
|
|
141
|
+
label: label,
|
|
142
|
+
disabled: disabled,
|
|
143
|
+
dynamicDisabled: dynamicDisabled,
|
|
144
|
+
hiddenLabel: hiddenLabel,
|
|
145
|
+
show: true,
|
|
146
|
+
};
|
|
147
|
+
return result;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return [];
|
|
151
|
+
}, [items]);
|
|
152
|
+
var currentDynamicListMemo = useMemo(function () {
|
|
153
|
+
return getCurrentDynamicItems(showDynamic, showDynamicKey, items);
|
|
154
|
+
}, [showDynamic, showDynamicKey, items]);
|
|
155
|
+
var _a = useState(currentDynamicListMemo), currentDynamicList = _a[0], setCurrentDynamicList = _a[1];
|
|
156
|
+
useEffect(function () {
|
|
157
|
+
if (currentDynamicListMemo) {
|
|
158
|
+
setCurrentDynamicList(currentDynamicListMemo);
|
|
159
|
+
}
|
|
160
|
+
}, [currentDynamicListMemo]);
|
|
161
|
+
var currentItems = useMemo(function () {
|
|
162
|
+
return getItems(currentDynamicList, items || []);
|
|
163
|
+
}, [currentDynamicList, items]);
|
|
164
|
+
return {
|
|
165
|
+
initDynamicList: initDynamicList,
|
|
166
|
+
currentDynamicList: currentDynamicList,
|
|
167
|
+
setCurrentDynamicList: setCurrentDynamicList,
|
|
168
|
+
currentItems: currentItems,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function getItems(currentDynamicList, items) {
|
|
172
|
+
if (currentDynamicList.length > 0 && items) {
|
|
173
|
+
var resultItems_1 = [];
|
|
174
|
+
currentDynamicList.forEach(function (currentDynamicItem) {
|
|
175
|
+
var name = currentDynamicItem.name, show = currentDynamicItem.show;
|
|
176
|
+
var result = items.find(function (item) { return item.name === name; });
|
|
177
|
+
if (result && show) {
|
|
178
|
+
resultItems_1.push(result);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return resultItems_1;
|
|
182
|
+
}
|
|
183
|
+
return items;
|
|
184
|
+
}
|
|
185
|
+
export function useDrawer(initList, setCurrentDynamicList, showDynamicKey) {
|
|
186
|
+
var _a = useState(false), visible = _a[0], setVisible = _a[1];
|
|
187
|
+
var onClose = useCallback(function () {
|
|
188
|
+
setVisible(false);
|
|
189
|
+
}, []);
|
|
190
|
+
/**重置 */
|
|
191
|
+
var onReset = useCallback(function () {
|
|
192
|
+
setVisible(false);
|
|
193
|
+
setCurrentDynamicList(initList);
|
|
194
|
+
setDynamicKey(showDynamicKey, initList);
|
|
195
|
+
}, [initList, setCurrentDynamicList, showDynamicKey]);
|
|
196
|
+
/**确定修改 */
|
|
197
|
+
var onSure = useCallback(function (newList) {
|
|
198
|
+
setVisible(false);
|
|
199
|
+
setCurrentDynamicList(newList);
|
|
200
|
+
setDynamicKey(showDynamicKey, newList);
|
|
201
|
+
}, [setCurrentDynamicList, showDynamicKey]);
|
|
202
|
+
return {
|
|
203
|
+
visible: visible,
|
|
204
|
+
setVisible: setVisible,
|
|
205
|
+
onClose: onClose,
|
|
206
|
+
onReset: onReset,
|
|
207
|
+
onSure: onSure,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IProFormProps } from './interface';
|
|
3
|
+
declare function ProForm(props: IProFormProps): JSX.Element;
|
|
4
|
+
export declare const useForm: typeof import("antd/lib/form/Form").useForm;
|
|
5
|
+
declare const _default: React.MemoExoticComponent<typeof ProForm>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import React, { memo, useCallback, useMemo } from 'react';
|
|
24
|
+
import { Form } from 'antd';
|
|
25
|
+
import { Button } from '../../index';
|
|
26
|
+
import { useDynamic } from './hooks';
|
|
27
|
+
import Items from './items';
|
|
28
|
+
import Setting from './setting';
|
|
29
|
+
import classNames from 'classnames';
|
|
30
|
+
function ProForm(props) {
|
|
31
|
+
var items = props.items, noBottom = props.noBottom, wrapClassName = props.wrapClassName, leftClassName = props.leftClassName, itemClassName = props.itemClassName, _a = props.isFlex, isFlex = _a === void 0 ? true : _a, rightWrapVisible = props.rightWrapVisible, rightClassName = props.rightClassName, onResetHandle = props.onResetHandle, onSearchHandle = props.onSearchHandle, showDynamic = props.showDynamic, showDynamicKey = props.showDynamicKey, form = props.form, onValuesChange = props.onValuesChange, restProps = __rest(props, ["items", "noBottom", "wrapClassName", "leftClassName", "itemClassName", "isFlex", "rightWrapVisible", "rightClassName", "onResetHandle", "onSearchHandle", "showDynamic", "showDynamicKey", "form", "onValuesChange"]);
|
|
32
|
+
var _b = useDynamic(showDynamic, showDynamicKey, items), initDynamicList = _b.initDynamicList, currentDynamicList = _b.currentDynamicList, setCurrentDynamicList = _b.setCurrentDynamicList, currentItems = _b.currentItems;
|
|
33
|
+
var wrapClasses = classNames('pro-form', wrapClassName, {
|
|
34
|
+
'pro-form--no-bottom': noBottom,
|
|
35
|
+
});
|
|
36
|
+
var leftClasses = classNames('pro-form__left', leftClassName, {
|
|
37
|
+
'pro-form__left--flex': isFlex,
|
|
38
|
+
});
|
|
39
|
+
var rightClasses = classNames('pro-form__right', rightClassName);
|
|
40
|
+
// 获取依赖项关联
|
|
41
|
+
var itemsShouldUpdate = useMemo(function () {
|
|
42
|
+
var result = {};
|
|
43
|
+
if (items) {
|
|
44
|
+
for (var i = 0; i < items.length; i++) {
|
|
45
|
+
var item = items[i];
|
|
46
|
+
if (typeof item.name === 'string' &&
|
|
47
|
+
item.shouldUpdateNames &&
|
|
48
|
+
item.shouldUpdateClear) {
|
|
49
|
+
result[item.name] =
|
|
50
|
+
typeof item.shouldUpdateClear === 'boolean'
|
|
51
|
+
? item.shouldUpdateNames
|
|
52
|
+
: item.shouldUpdateClear;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}, [items]);
|
|
58
|
+
// 依赖关系发生改变 是否需要清空依赖项逻辑
|
|
59
|
+
var onValuesCHangeHandle = useCallback(function (changedValues, allValues) {
|
|
60
|
+
if (changedValues) {
|
|
61
|
+
var keys_1 = Object.keys(changedValues);
|
|
62
|
+
var nameKeys = Object.keys(itemsShouldUpdate);
|
|
63
|
+
nameKeys.forEach(function (nameKey) {
|
|
64
|
+
var _a;
|
|
65
|
+
var _b;
|
|
66
|
+
var shouldUpdateClear = itemsShouldUpdate[nameKey]
|
|
67
|
+
? itemsShouldUpdate[nameKey]
|
|
68
|
+
: [];
|
|
69
|
+
if (keys_1.find(function (key) { return shouldUpdateClear.includes(key); })) {
|
|
70
|
+
(_b = form === null || form === void 0 ? void 0 : form.setFieldsValue) === null || _b === void 0 ? void 0 : _b.call(form, (_a = {},
|
|
71
|
+
_a[nameKey] = undefined,
|
|
72
|
+
_a));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
onValuesChange && onValuesChange(changedValues, allValues);
|
|
77
|
+
}, [onValuesChange, itemsShouldUpdate, form]);
|
|
78
|
+
return (React.createElement(Form, __assign({ form: form, onValuesChange: onValuesCHangeHandle }, restProps, { className: wrapClasses }),
|
|
79
|
+
React.createElement("div", { className: leftClasses },
|
|
80
|
+
React.createElement(Items, { items: currentItems, itemClassName: itemClassName })),
|
|
81
|
+
showDynamic && (React.createElement(Setting, { list: currentDynamicList, initList: initDynamicList, showDynamicKey: showDynamicKey, setCurrentDynamicList: setCurrentDynamicList })),
|
|
82
|
+
rightWrapVisible ? (React.createElement("div", { className: rightClasses },
|
|
83
|
+
onResetHandle ? (React.createElement(Button, { type: "default", onClick: onResetHandle }, "\u91CD\u7F6E")) : null,
|
|
84
|
+
onSearchHandle ? (React.createElement(Button, { type: "primary", onClick: onSearchHandle }, "\u67E5\u8BE2")) : null)) : null));
|
|
85
|
+
}
|
|
86
|
+
export var useForm = Form.useForm;
|
|
87
|
+
export default memo(ProForm);
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormProps, FormItemProps, FormInstance } from 'antd/lib/form';
|
|
3
|
+
export declare type IWidth = 'half' | 'double' | 'all' | 'halfAll';
|
|
4
|
+
export interface IFormItemWrap {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
width?: IWidth;
|
|
8
|
+
}
|
|
9
|
+
export interface IFormItem extends FormItemProps {
|
|
10
|
+
/**
|
|
11
|
+
* 是否必填
|
|
12
|
+
*/
|
|
13
|
+
isRequire?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* 是否可以修改
|
|
16
|
+
*/
|
|
17
|
+
isChangeable?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 是否展示
|
|
20
|
+
*/
|
|
21
|
+
isDisplay?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 子元素渲染
|
|
24
|
+
*/
|
|
25
|
+
render: (itemProps: any, formInstance?: FormInstance<any>) => JSX.Element;
|
|
26
|
+
/**
|
|
27
|
+
* 子项禁用
|
|
28
|
+
*/
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 是否要边框
|
|
32
|
+
*/
|
|
33
|
+
noBorder?: boolean;
|
|
34
|
+
width?: IWidth;
|
|
35
|
+
/**
|
|
36
|
+
* 动态列配置 是否禁止隐藏
|
|
37
|
+
*/
|
|
38
|
+
dynamicDisabled?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 是否隐藏lable
|
|
41
|
+
*/
|
|
42
|
+
hiddenLabel?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* 通过shouldUpdate控制依赖关系的默认处理
|
|
45
|
+
*/
|
|
46
|
+
shouldUpdateNames?: string[];
|
|
47
|
+
/**
|
|
48
|
+
* 依赖关系发生改变是否需要清空 当前item
|
|
49
|
+
*/
|
|
50
|
+
shouldUpdateClear?: boolean | string[];
|
|
51
|
+
}
|
|
52
|
+
export interface IProFormProps extends FormProps {
|
|
53
|
+
items: IFormItem[];
|
|
54
|
+
/**
|
|
55
|
+
* 容器是否需要下边框
|
|
56
|
+
*/
|
|
57
|
+
noBottom?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 主容器类名
|
|
60
|
+
*/
|
|
61
|
+
wrapClassName?: string;
|
|
62
|
+
/**
|
|
63
|
+
* 左容器类名
|
|
64
|
+
*/
|
|
65
|
+
leftClassName?: string;
|
|
66
|
+
/**
|
|
67
|
+
* 是否开启做容器flex布局
|
|
68
|
+
*/
|
|
69
|
+
isFlex?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 子项类名
|
|
72
|
+
*/
|
|
73
|
+
itemClassName?: string;
|
|
74
|
+
/**
|
|
75
|
+
* 是否显示右侧容器
|
|
76
|
+
*/
|
|
77
|
+
rightWrapVisible?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* 右容器
|
|
80
|
+
*/
|
|
81
|
+
rightClassName?: string;
|
|
82
|
+
/**
|
|
83
|
+
* 点击重置
|
|
84
|
+
*/
|
|
85
|
+
onResetHandle?: any;
|
|
86
|
+
/**
|
|
87
|
+
* 点击查询
|
|
88
|
+
*/
|
|
89
|
+
onSearchHandle?: any;
|
|
90
|
+
/**
|
|
91
|
+
* 是否开启动态列配置
|
|
92
|
+
*/
|
|
93
|
+
showDynamic?: boolean;
|
|
94
|
+
showDynamicKey?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface IFormItemProps {
|
|
97
|
+
items: IFormItem[];
|
|
98
|
+
/**
|
|
99
|
+
* 子项类名
|
|
100
|
+
*/
|
|
101
|
+
itemClassName?: string;
|
|
102
|
+
}
|
|
103
|
+
export interface ISearchLayout {
|
|
104
|
+
name: string | IFormItem['name'];
|
|
105
|
+
label?: string | IFormItem['label'];
|
|
106
|
+
show?: boolean;
|
|
107
|
+
disabled?: boolean;
|
|
108
|
+
dynamicDisabled?: any;
|
|
109
|
+
[props: string]: any;
|
|
110
|
+
}
|
|
111
|
+
export interface ISettingProps {
|
|
112
|
+
showDynamicKey?: string;
|
|
113
|
+
list: ISearchLayout[];
|
|
114
|
+
initList: ISearchLayout[];
|
|
115
|
+
setCurrentDynamicList: any;
|
|
116
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|