ls-pro-common 1.0.27 → 1.0.30
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/common.js +1 -1
- package/dist/common.min.js +1 -1
- package/es/components/IconSelector.d.ts +19 -0
- package/es/components/IconSelector.js +293 -0
- package/es/components/InputTable.js +19 -9
- package/es/index.d.ts +2 -1
- package/es/index.js +2 -1
- package/es/utils/index.d.ts +8 -0
- package/es/utils/index.js +93 -0
- package/lib/components/IconSelector.d.ts +19 -0
- package/lib/components/IconSelector.js +322 -0
- package/lib/components/InputTable.js +19 -9
- package/lib/index.d.ts +2 -1
- package/lib/index.js +8 -0
- package/lib/utils/index.d.ts +8 -0
- package/lib/utils/index.js +97 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { InputProps } from 'antd';
|
|
3
|
+
import type { ProFormItemProps } from 'ls-pro-form';
|
|
4
|
+
export declare type IconSelectorProps = ProFormItemProps<InputProps> & {
|
|
5
|
+
/** @name 图标类型 */
|
|
6
|
+
type: string;
|
|
7
|
+
/** @name 是否可上传,默认可上传 */
|
|
8
|
+
uploadable?: boolean;
|
|
9
|
+
/** @name 弹框title */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** @name 弹框宽度 */
|
|
12
|
+
modalWidth?: string;
|
|
13
|
+
/**
|
|
14
|
+
* @name 最大值, 默认2M
|
|
15
|
+
*/
|
|
16
|
+
maxSize?: number;
|
|
17
|
+
};
|
|
18
|
+
declare function IconSelector(prop: IconSelectorProps): JSX.Element;
|
|
19
|
+
export default IconSelector;
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import "antd/es/modal/style";
|
|
2
|
+
import _Modal from "antd/es/modal";
|
|
3
|
+
import "antd/es/card/style";
|
|
4
|
+
import _Card from "antd/es/card";
|
|
5
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
6
|
+
import "antd/es/upload/style";
|
|
7
|
+
import _Upload from "antd/es/upload";
|
|
8
|
+
import "antd/es/button/style";
|
|
9
|
+
import _Button from "antd/es/button";
|
|
10
|
+
import "antd/es/input/style";
|
|
11
|
+
import _Input from "antd/es/input";
|
|
12
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
13
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
14
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
15
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
16
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
17
|
+
var _excluded = ["type", "uploadable", "readonly", "allowClear", "title", "modalWidth", "name", "maxSize"];
|
|
18
|
+
import React from "react";
|
|
19
|
+
import { useMemo, useState, useEffect, useContext } from 'react';
|
|
20
|
+
import { ProFormText, ProFormContext } from 'ls-pro-form';
|
|
21
|
+
import { PlusOutlined, UploadOutlined } from '@ant-design/icons';
|
|
22
|
+
import { httpGet, httpPost } from '../http';
|
|
23
|
+
import { getCache, toGatewayUrl, showError, showWarn, showSuccess } from '../utils';
|
|
24
|
+
var fileCenter = getCache('file-center-api') || '/zuul/petrel-file-center-api/';
|
|
25
|
+
var pageSize = 16;
|
|
26
|
+
|
|
27
|
+
function IconSelector(prop) {
|
|
28
|
+
//@ts-ignore?
|
|
29
|
+
var _useContext = useContext(ProFormContext),
|
|
30
|
+
formRef = _useContext.formRef;
|
|
31
|
+
|
|
32
|
+
var _useState = useState(false),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
visible = _useState2[0],
|
|
35
|
+
setVisible = _useState2[1];
|
|
36
|
+
|
|
37
|
+
var _useState3 = useState(''),
|
|
38
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
+
imgUrl = _useState4[0],
|
|
40
|
+
setImgUrl = _useState4[1];
|
|
41
|
+
|
|
42
|
+
var _useState5 = useState(1),
|
|
43
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
44
|
+
page = _useState6[0],
|
|
45
|
+
setPage = _useState6[1];
|
|
46
|
+
|
|
47
|
+
var _useState7 = useState(0),
|
|
48
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
49
|
+
total = _useState8[0],
|
|
50
|
+
setTotal = _useState8[1];
|
|
51
|
+
|
|
52
|
+
var _useState9 = useState([]),
|
|
53
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
54
|
+
list = _useState10[0],
|
|
55
|
+
setList = _useState10[1];
|
|
56
|
+
|
|
57
|
+
var type = prop.type,
|
|
58
|
+
_prop$uploadable = prop.uploadable,
|
|
59
|
+
uploadable = _prop$uploadable === void 0 ? true : _prop$uploadable,
|
|
60
|
+
_prop$readonly = prop.readonly,
|
|
61
|
+
readonly = _prop$readonly === void 0 ? true : _prop$readonly,
|
|
62
|
+
allowClear = prop.allowClear,
|
|
63
|
+
_prop$title = prop.title,
|
|
64
|
+
title = _prop$title === void 0 ? "选择图标" : _prop$title,
|
|
65
|
+
_prop$modalWidth = prop.modalWidth,
|
|
66
|
+
modalWidth = _prop$modalWidth === void 0 ? '600px' : _prop$modalWidth,
|
|
67
|
+
name = prop.name,
|
|
68
|
+
_prop$maxSize = prop.maxSize,
|
|
69
|
+
maxSize = _prop$maxSize === void 0 ? 2 : _prop$maxSize,
|
|
70
|
+
rest = _objectWithoutProperties(prop, _excluded);
|
|
71
|
+
|
|
72
|
+
var uploadImgApi = useMemo(function () {
|
|
73
|
+
return toGatewayUrl(fileCenter + 'file/upload/' + type);
|
|
74
|
+
}, [type]);
|
|
75
|
+
var showImgApi = useMemo(function () {
|
|
76
|
+
return fileCenter + 'file/show/' + type;
|
|
77
|
+
}, [type]);
|
|
78
|
+
|
|
79
|
+
var loadData = /*#__PURE__*/function () {
|
|
80
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(pageIndex) {
|
|
81
|
+
var url, param, result, rows;
|
|
82
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
83
|
+
while (1) {
|
|
84
|
+
switch (_context.prev = _context.next) {
|
|
85
|
+
case 0:
|
|
86
|
+
url = "/petrel-itg-api/sysMongo/page";
|
|
87
|
+
param = {
|
|
88
|
+
"search.status": 1,
|
|
89
|
+
"search.collectName": type,
|
|
90
|
+
"page.pn": pageIndex,
|
|
91
|
+
"page.size": pageSize
|
|
92
|
+
};
|
|
93
|
+
_context.next = 4;
|
|
94
|
+
return httpGet(url, param);
|
|
95
|
+
|
|
96
|
+
case 4:
|
|
97
|
+
result = _context.sent;
|
|
98
|
+
rows = result.rows || [];
|
|
99
|
+
setList(rows);
|
|
100
|
+
setTotal(result.total || 0);
|
|
101
|
+
|
|
102
|
+
case 8:
|
|
103
|
+
case "end":
|
|
104
|
+
return _context.stop();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}, _callee);
|
|
108
|
+
}));
|
|
109
|
+
|
|
110
|
+
return function loadData(_x) {
|
|
111
|
+
return _ref.apply(this, arguments);
|
|
112
|
+
};
|
|
113
|
+
}();
|
|
114
|
+
|
|
115
|
+
useEffect(function () {
|
|
116
|
+
if (!visible) return;
|
|
117
|
+
loadData(page);
|
|
118
|
+
}, [visible, page]);
|
|
119
|
+
var totalPage = useMemo(function () {
|
|
120
|
+
if (total === 0) return 1;
|
|
121
|
+
return Math.ceil(total / pageSize);
|
|
122
|
+
}, [total]); // 验证上传文件大小
|
|
123
|
+
|
|
124
|
+
var beforeUpload = function beforeUpload(file) {
|
|
125
|
+
var sizeLimit = file.size / 1024 / 1024 >= maxSize;
|
|
126
|
+
|
|
127
|
+
if (sizeLimit) {
|
|
128
|
+
showError("\u4E0A\u4F20\u7684\u6587\u4EF6\u4E0D\u80FD\u5927\u4E8E".concat(maxSize, "M"));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return !sizeLimit;
|
|
132
|
+
}; // 上传图片并调用 sysMongo 接口保存
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
var onUpload = function onUpload(info) {
|
|
136
|
+
if (info.file.status === 'done') {
|
|
137
|
+
var _result$flag;
|
|
138
|
+
|
|
139
|
+
var result = info.file.response;
|
|
140
|
+
|
|
141
|
+
if ((result === null || result === void 0 ? void 0 : (_result$flag = result.flag) === null || _result$flag === void 0 ? void 0 : _result$flag.retCode) === '0') {
|
|
142
|
+
var f = result.data[0];
|
|
143
|
+
var data = {
|
|
144
|
+
collectName: type,
|
|
145
|
+
mongoUrl: showImgApi + "/" + f.fileId,
|
|
146
|
+
mongoName: f.fileName || "",
|
|
147
|
+
remarks: "",
|
|
148
|
+
status: 1
|
|
149
|
+
};
|
|
150
|
+
var url = "/petrel/petrel-itg-api/sysMongo";
|
|
151
|
+
httpPost(url, data, true, false).then(function (res) {
|
|
152
|
+
if (res.flag.retCode === "0") {
|
|
153
|
+
showSuccess("上传成功");
|
|
154
|
+
|
|
155
|
+
if (page !== totalPage) {
|
|
156
|
+
setPage(totalPage);
|
|
157
|
+
} else {
|
|
158
|
+
loadData(totalPage);
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
showSuccess(result.flag.retMsg);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
} else {
|
|
165
|
+
var _result$flag2;
|
|
166
|
+
|
|
167
|
+
showError((result === null || result === void 0 ? void 0 : (_result$flag2 = result.flag) === null || _result$flag2 === void 0 ? void 0 : _result$flag2.retMsg) || '上传图片失败,请联系管理员');
|
|
168
|
+
}
|
|
169
|
+
} else if (info.file.status === 'error') {
|
|
170
|
+
showError('上传数据失败,请联系管理员');
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProFormText, _extends({
|
|
175
|
+
name: name
|
|
176
|
+
}, rest), /*#__PURE__*/React.createElement(_Input, _extends({
|
|
177
|
+
addonAfter: imgUrl ? /*#__PURE__*/React.createElement("img", {
|
|
178
|
+
style: {
|
|
179
|
+
maxWidth: 22,
|
|
180
|
+
maxHeight: 22
|
|
181
|
+
},
|
|
182
|
+
src: imgUrl,
|
|
183
|
+
onClick: function onClick() {
|
|
184
|
+
return setVisible(true);
|
|
185
|
+
}
|
|
186
|
+
}) : /*#__PURE__*/React.createElement(PlusOutlined, {
|
|
187
|
+
onClick: function onClick() {
|
|
188
|
+
return setVisible(true);
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
}, rest.fieldProps, {
|
|
192
|
+
readOnly: readonly,
|
|
193
|
+
allowClear: allowClear
|
|
194
|
+
}))), /*#__PURE__*/React.createElement(_Modal, {
|
|
195
|
+
title: title,
|
|
196
|
+
visible: visible,
|
|
197
|
+
width: modalWidth,
|
|
198
|
+
destroyOnClose: true,
|
|
199
|
+
onCancel: function onCancel() {
|
|
200
|
+
return setVisible(false);
|
|
201
|
+
},
|
|
202
|
+
bodyStyle: {
|
|
203
|
+
padding: 8
|
|
204
|
+
},
|
|
205
|
+
footer: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
206
|
+
style: {
|
|
207
|
+
display: 'inline-block',
|
|
208
|
+
marginRight: 8
|
|
209
|
+
}
|
|
210
|
+
}, /*#__PURE__*/React.createElement(_Upload, {
|
|
211
|
+
beforeUpload: beforeUpload,
|
|
212
|
+
onChange: onUpload,
|
|
213
|
+
action: uploadImgApi,
|
|
214
|
+
showUploadList: false,
|
|
215
|
+
name: "file",
|
|
216
|
+
maxCount: 1,
|
|
217
|
+
headers: {
|
|
218
|
+
token: localStorage.getItem('token') || ''
|
|
219
|
+
},
|
|
220
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp"
|
|
221
|
+
}, /*#__PURE__*/React.createElement(_Button, {
|
|
222
|
+
icon: /*#__PURE__*/React.createElement(UploadOutlined, null)
|
|
223
|
+
}, "\u4E0A\u4F20\u65B0\u56FE"))), /*#__PURE__*/React.createElement(_Button, {
|
|
224
|
+
disabled: page === 1,
|
|
225
|
+
onClick: function onClick() {
|
|
226
|
+
setPage(page - 1);
|
|
227
|
+
}
|
|
228
|
+
}, "\u4E0A\u4E00\u9875"), /*#__PURE__*/React.createElement("span", {
|
|
229
|
+
style: {
|
|
230
|
+
padding: 8
|
|
231
|
+
}
|
|
232
|
+
}, page, "/", totalPage), /*#__PURE__*/React.createElement(_Button, {
|
|
233
|
+
disabled: page === totalPage,
|
|
234
|
+
onClick: function onClick() {
|
|
235
|
+
setPage(page + 1);
|
|
236
|
+
}
|
|
237
|
+
}, "\u4E0B\u4E00\u9875"), /*#__PURE__*/React.createElement(_Button, {
|
|
238
|
+
onClick: function onClick() {
|
|
239
|
+
return loadData(page);
|
|
240
|
+
}
|
|
241
|
+
}, "\u5237\u65B0"))
|
|
242
|
+
}, list.map(function (o) {
|
|
243
|
+
return /*#__PURE__*/React.createElement(_Card, {
|
|
244
|
+
hoverable: true,
|
|
245
|
+
style: {
|
|
246
|
+
width: '125px',
|
|
247
|
+
height: '130px',
|
|
248
|
+
display: 'inline-block',
|
|
249
|
+
margin: '10px',
|
|
250
|
+
verticalAlign: 'middle'
|
|
251
|
+
},
|
|
252
|
+
bodyStyle: {
|
|
253
|
+
padding: '15px 8px',
|
|
254
|
+
textAlign: 'center'
|
|
255
|
+
},
|
|
256
|
+
onDoubleClick: function onDoubleClick() {
|
|
257
|
+
if (!name) {
|
|
258
|
+
showWarn('选择图标组件未设置name属性');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
var formVal = formRef.current.getFieldsValue();
|
|
263
|
+
|
|
264
|
+
var val = _objectSpread({}, formVal); //@ts-ignore
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
val[name] = o.mongoUrl;
|
|
268
|
+
formRef.current.setFieldsValue(val);
|
|
269
|
+
setImgUrl(toGatewayUrl(o.mongoUrl));
|
|
270
|
+
setVisible(false);
|
|
271
|
+
}
|
|
272
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
273
|
+
style: {
|
|
274
|
+
height: 80
|
|
275
|
+
}
|
|
276
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
277
|
+
title: o.mongoName,
|
|
278
|
+
style: {
|
|
279
|
+
maxWidth: '80px',
|
|
280
|
+
maxHeight: '80px'
|
|
281
|
+
},
|
|
282
|
+
src: toGatewayUrl(o.mongoUrl)
|
|
283
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
284
|
+
style: {
|
|
285
|
+
whiteSpace: 'nowrap',
|
|
286
|
+
textOverflow: 'ellipsis',
|
|
287
|
+
overflow: 'hidden'
|
|
288
|
+
}
|
|
289
|
+
}, o.mongoName));
|
|
290
|
+
})));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export default IconSelector;
|
|
@@ -10,7 +10,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
10
10
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
11
11
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
12
12
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
13
|
-
var _excluded = ["columns", "url", "textName", "name", "tableConfig", "tableHeight", "tableWidth", "readonly", "multiple", "valueField", "labelWidth", "textField", "onSelectChange", "beforeLoad", "afterLoad", "isV2", "allowClear", "keepSelect"],
|
|
13
|
+
var _excluded = ["columns", "url", "textName", "name", "tableConfig", "tableHeight", "tableWidth", "readonly", "multiple", "valueField", "labelWidth", "textField", "onSelectChange", "beforeLoad", "afterLoad", "isV2", "allowClear", "keepSelect", "fieldProps"],
|
|
14
14
|
_excluded2 = ["current", "pageSize"];
|
|
15
15
|
import React from "react";
|
|
16
16
|
import { useRef, useState, useEffect, useContext } from 'react';
|
|
@@ -66,6 +66,7 @@ function InputTable(prop) {
|
|
|
66
66
|
allowClear = _prop$allowClear === void 0 ? true : _prop$allowClear,
|
|
67
67
|
_prop$keepSelect = prop.keepSelect,
|
|
68
68
|
keepSelect = _prop$keepSelect === void 0 ? false : _prop$keepSelect,
|
|
69
|
+
fieldProps = prop.fieldProps,
|
|
69
70
|
rest = _objectWithoutProperties(prop, _excluded);
|
|
70
71
|
|
|
71
72
|
var textNameProp = textName || name + '__text';
|
|
@@ -148,7 +149,6 @@ function InputTable(prop) {
|
|
|
148
149
|
var tableDom = /*#__PURE__*/React.createElement(ProTable, _extends({
|
|
149
150
|
columns: columns,
|
|
150
151
|
request: loadData,
|
|
151
|
-
rowKey: valueField,
|
|
152
152
|
manualRequest: false,
|
|
153
153
|
actionRef: tableRef,
|
|
154
154
|
search: {
|
|
@@ -219,7 +219,7 @@ function InputTable(prop) {
|
|
|
219
219
|
name: name
|
|
220
220
|
})), rest.label ? /*#__PURE__*/React.createElement(ProFormText, _extends({
|
|
221
221
|
name: textNameProp
|
|
222
|
-
}, rest), /*#__PURE__*/React.createElement(_Input, {
|
|
222
|
+
}, rest), /*#__PURE__*/React.createElement(_Input, _extends({
|
|
223
223
|
suffix: /*#__PURE__*/React.createElement(_Popover, {
|
|
224
224
|
content: /*#__PURE__*/React.createElement("div", {
|
|
225
225
|
style: {
|
|
@@ -232,9 +232,14 @@ function InputTable(prop) {
|
|
|
232
232
|
trigger: "click",
|
|
233
233
|
visible: visible,
|
|
234
234
|
onVisibleChange: setVisible
|
|
235
|
-
}, /*#__PURE__*/React.createElement(MoreOutlined,
|
|
235
|
+
}, /*#__PURE__*/React.createElement(MoreOutlined, {
|
|
236
|
+
onClick: function onClick(e) {
|
|
237
|
+
setVisible(true);
|
|
238
|
+
e.stopPropagation && e.stopPropagation();
|
|
239
|
+
}
|
|
240
|
+
})),
|
|
236
241
|
onClick: function onClick() {
|
|
237
|
-
|
|
242
|
+
setVisible(true);
|
|
238
243
|
},
|
|
239
244
|
onInput: function onInput(e) {
|
|
240
245
|
var _formRef$current6;
|
|
@@ -257,7 +262,7 @@ function InputTable(prop) {
|
|
|
257
262
|
},
|
|
258
263
|
readOnly: readonly,
|
|
259
264
|
allowClear: allowClear
|
|
260
|
-
})) : /*#__PURE__*/React.createElement(_Input, _extends({
|
|
265
|
+
}, fieldProps))) : /*#__PURE__*/React.createElement(_Input, _extends({
|
|
261
266
|
suffix: /*#__PURE__*/React.createElement(_Popover, {
|
|
262
267
|
content: /*#__PURE__*/React.createElement("div", {
|
|
263
268
|
style: {
|
|
@@ -270,9 +275,14 @@ function InputTable(prop) {
|
|
|
270
275
|
trigger: "click",
|
|
271
276
|
visible: visible,
|
|
272
277
|
onVisibleChange: setVisible
|
|
273
|
-
}, /*#__PURE__*/React.createElement(MoreOutlined,
|
|
278
|
+
}, /*#__PURE__*/React.createElement(MoreOutlined, {
|
|
279
|
+
onClick: function onClick(e) {
|
|
280
|
+
setVisible(true);
|
|
281
|
+
e.stopPropagation && e.stopPropagation();
|
|
282
|
+
}
|
|
283
|
+
})),
|
|
274
284
|
onClick: function onClick() {
|
|
275
|
-
|
|
285
|
+
setVisible(true);
|
|
276
286
|
},
|
|
277
287
|
onInput: function onInput(e) {
|
|
278
288
|
var _formRef$current8;
|
|
@@ -299,7 +309,7 @@ function InputTable(prop) {
|
|
|
299
309
|
readOnly: readonly,
|
|
300
310
|
value: text,
|
|
301
311
|
allowClear: allowClear
|
|
302
|
-
},
|
|
312
|
+
}, fieldProps)));
|
|
303
313
|
}
|
|
304
314
|
|
|
305
315
|
export default InputTable;
|
package/es/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import DtlLayout from './components/DtlLayout';
|
|
|
2
2
|
import InputTable from './components/InputTable';
|
|
3
3
|
import Page404 from './components/404';
|
|
4
4
|
import Loading from './components/Loading';
|
|
5
|
+
import IconSelector from './components/IconSelector';
|
|
5
6
|
import BaseService from './service/BaseService';
|
|
6
7
|
import request, { httpGet, httpPut, httpPost, httpDelete, getDict, fetchOptions } from './http';
|
|
7
8
|
import * as utils from './utils';
|
|
@@ -13,4 +14,4 @@ import usePermission from './hooks/usePermission';
|
|
|
13
14
|
import type { ApiResponse, TableToolbar, BaseApiType, MethodType } from './typing';
|
|
14
15
|
import type { DtlLyaoutProps } from './components/DtlLayout';
|
|
15
16
|
export type { ApiResponse, TableToolbar, BaseApiType, MethodType, DtlLyaoutProps };
|
|
16
|
-
export { DtlLayout, InputTable, Page404, Loading, BaseService, request, httpDelete, httpGet, httpPost, httpPut, getDict, fetchOptions, utils, useSingle, useDtl, usePermission };
|
|
17
|
+
export { DtlLayout, InputTable, Page404, Loading, IconSelector, BaseService, request, httpDelete, httpGet, httpPost, httpPut, getDict, fetchOptions, utils, useSingle, useDtl, usePermission };
|
package/es/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import DtlLayout from './components/DtlLayout';
|
|
|
2
2
|
import InputTable from './components/InputTable';
|
|
3
3
|
import Page404 from './components/404';
|
|
4
4
|
import Loading from './components/Loading';
|
|
5
|
+
import IconSelector from './components/IconSelector';
|
|
5
6
|
import BaseService from './service/BaseService';
|
|
6
7
|
import request, { httpGet, httpPut, httpPost, httpDelete, getDict, fetchOptions } from './http';
|
|
7
8
|
import * as utils from './utils';
|
|
@@ -10,4 +11,4 @@ import * as utils from './utils';
|
|
|
10
11
|
import useSingle from './hooks/useSingle';
|
|
11
12
|
import useDtl from './hooks/useDtl';
|
|
12
13
|
import usePermission from './hooks/usePermission';
|
|
13
|
-
export { DtlLayout, InputTable, Page404, Loading, BaseService, request, httpDelete, httpGet, httpPost, httpPut, getDict, fetchOptions, utils, useSingle, useDtl, usePermission };
|
|
14
|
+
export { DtlLayout, InputTable, Page404, Loading, IconSelector, BaseService, request, httpDelete, httpGet, httpPost, httpPut, getDict, fetchOptions, utils, useSingle, useDtl, usePermission };
|
package/es/utils/index.d.ts
CHANGED
|
@@ -82,6 +82,14 @@ export declare const treeEach: (list: any[], fn: (item: any, index: any, list: a
|
|
|
82
82
|
* @returns 返回符合条件的第一条对象
|
|
83
83
|
*/
|
|
84
84
|
export declare const treeFind: (list: any[], key: string, val: any, children?: string) => any;
|
|
85
|
+
/**
|
|
86
|
+
* 处理普通的尺码横排
|
|
87
|
+
* @param orgSizeHeader 后端返回的原始尺码组表头
|
|
88
|
+
* @param typeWidth 尺码组宽 sizeTypeNo,默认120
|
|
89
|
+
* @param sizeWidth 尺码宽f1~f100, 默认100
|
|
90
|
+
* @returns 返回已处理好的表头[{dataIndex:sizeTypeNo,title:'国标码',width:120,children[...]},{dataIndex:'f1',...}...]
|
|
91
|
+
*/
|
|
92
|
+
export declare const handleSizeCols: (orgSizeHeader: any[], typeWidth?: number, sizeWidth?: number) => any[];
|
|
85
93
|
export declare const isDev: boolean;
|
|
86
94
|
export declare type UserType = {
|
|
87
95
|
id?: string;
|
package/es/utils/index.js
CHANGED
|
@@ -217,6 +217,99 @@ export var treeFind = function treeFind(list, key, val) {
|
|
|
217
217
|
|
|
218
218
|
return item;
|
|
219
219
|
};
|
|
220
|
+
/**
|
|
221
|
+
* 处理普通的尺码横排
|
|
222
|
+
* @param orgSizeHeader 后端返回的原始尺码组表头
|
|
223
|
+
* @param typeWidth 尺码组宽 sizeTypeNo,默认120
|
|
224
|
+
* @param sizeWidth 尺码宽f1~f100, 默认100
|
|
225
|
+
* @returns 返回已处理好的表头[{dataIndex:sizeTypeNo,title:'国标码',width:120,children[...]},{dataIndex:'f1',...}...]
|
|
226
|
+
*/
|
|
227
|
+
|
|
228
|
+
export var handleSizeCols = function handleSizeCols(orgSizeHeader) {
|
|
229
|
+
var typeWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 120;
|
|
230
|
+
var sizeWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
|
|
231
|
+
// f1~f100 当所有尺码组都为null时,删除不需要的尺码。
|
|
232
|
+
var arr = orgSizeHeader.map(function (o) {
|
|
233
|
+
var _loop = function _loop(key) {
|
|
234
|
+
if (orgSizeHeader.every(function (item) {
|
|
235
|
+
return !item['f' + key];
|
|
236
|
+
})) {
|
|
237
|
+
delete o['f' + key];
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
for (var key = 1; key <= 100; key++) {
|
|
242
|
+
_loop(key);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return o;
|
|
246
|
+
}); // 多表头时找到最底层的表头
|
|
247
|
+
|
|
248
|
+
var findNext = function findNext(item) {
|
|
249
|
+
if (item.children.length) {
|
|
250
|
+
return findNext(item.children[0]);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return item;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
var headers = []; // 用于保存返回表头
|
|
257
|
+
|
|
258
|
+
var header; // 用于保存每个配码的表头信息
|
|
259
|
+
|
|
260
|
+
arr.forEach(function (h, i) {
|
|
261
|
+
// 先处理尺码组
|
|
262
|
+
header = {
|
|
263
|
+
dataIndex: 'sizeTypeNo',
|
|
264
|
+
title: h.sizeTypeNo,
|
|
265
|
+
width: typeWidth,
|
|
266
|
+
ellipsis: true
|
|
267
|
+
}; //当返回多个尺码组时,需要用children支持多表头
|
|
268
|
+
|
|
269
|
+
if (arr.length > i + 1) {
|
|
270
|
+
header.children = [];
|
|
271
|
+
} // 第一个尺码组,直接添加,第二个之后,加到上一个的children中。
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
if (i === 0) {
|
|
275
|
+
headers.push(header);
|
|
276
|
+
} else {
|
|
277
|
+
findNext(headers.find(function (o) {
|
|
278
|
+
return o.dataIndex === 'sizeTypeNo';
|
|
279
|
+
})).children.push(header);
|
|
280
|
+
} // 处理 f1~f100
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
var _loop2 = function _loop2(k) {
|
|
284
|
+
if (k === 'sizeTypeNo') return "continue";
|
|
285
|
+
header = {
|
|
286
|
+
dataIndex: k,
|
|
287
|
+
title: h[k] || ' ',
|
|
288
|
+
width: sizeWidth,
|
|
289
|
+
ellipsis: true
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
if (arr.length > i + 1) {
|
|
293
|
+
header.children = [];
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (i === 0) {
|
|
297
|
+
headers.push(header);
|
|
298
|
+
} else {
|
|
299
|
+
findNext(headers.find(function (o) {
|
|
300
|
+
return o.dataIndex === k;
|
|
301
|
+
})).children.push(header);
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
for (var k in h) {
|
|
306
|
+
var _ret = _loop2(k);
|
|
307
|
+
|
|
308
|
+
if (_ret === "continue") continue;
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
return headers;
|
|
312
|
+
};
|
|
220
313
|
export var isDev = location.href.includes("//localhost");
|
|
221
314
|
/** @name 用户信息 */
|
|
222
315
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { InputProps } from 'antd';
|
|
3
|
+
import type { ProFormItemProps } from 'ls-pro-form';
|
|
4
|
+
export declare type IconSelectorProps = ProFormItemProps<InputProps> & {
|
|
5
|
+
/** @name 图标类型 */
|
|
6
|
+
type: string;
|
|
7
|
+
/** @name 是否可上传,默认可上传 */
|
|
8
|
+
uploadable?: boolean;
|
|
9
|
+
/** @name 弹框title */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** @name 弹框宽度 */
|
|
12
|
+
modalWidth?: string;
|
|
13
|
+
/**
|
|
14
|
+
* @name 最大值, 默认2M
|
|
15
|
+
*/
|
|
16
|
+
maxSize?: number;
|
|
17
|
+
};
|
|
18
|
+
declare function IconSelector(prop: IconSelectorProps): JSX.Element;
|
|
19
|
+
export default IconSelector;
|