@luck-design-biz/luckda 0.0.1
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/LICENSE +21 -0
- package/README.md +49 -0
- package/README.zh-CN.md +51 -0
- package/es/components/Builder/index.js +133 -0
- package/es/components/LdAutoForm/index.js +136 -0
- package/es/components/LdCard/index.js +198 -0
- package/es/components/LdCard/model.js +34 -0
- package/es/components/LdCom/index.js +24 -0
- package/es/components/LdFormList/index.js +293 -0
- package/es/components/LdFormList/model.js +24 -0
- package/es/components/LdGrid/index.js +214 -0
- package/es/components/LdGrid/model.js +36 -0
- package/es/components/LdGridForm/index.js +172 -0
- package/es/components/LdGridForm/index.less +7 -0
- package/es/components/LdInfoPanel/index.js +114 -0
- package/es/components/LdPop/index.js +31 -0
- package/es/components/LdTree/index.js +244 -0
- package/es/components/LdTree/index.less +36 -0
- package/es/helper/FromItems.js +267 -0
- package/es/helper/action.js +129 -0
- package/es/helper/form.js +100 -0
- package/es/helper/ldBuilder.js +47 -0
- package/es/helper/ldComBuild.js +38 -0
- package/es/index.js +9 -0
- package/es/services.js +46 -0
- package/es/utils/form.js +214 -0
- package/es/utils/grid.js +194 -0
- package/es/utils/index.js +2 -0
- package/lib/components/Builder/index.js +142 -0
- package/lib/components/LdAutoForm/index.js +145 -0
- package/lib/components/LdCard/index.js +207 -0
- package/lib/components/LdCard/model.js +41 -0
- package/lib/components/LdCom/index.js +35 -0
- package/lib/components/LdFormList/index.js +301 -0
- package/lib/components/LdFormList/model.js +30 -0
- package/lib/components/LdGrid/index.js +223 -0
- package/lib/components/LdGrid/model.js +43 -0
- package/lib/components/LdGridForm/index.js +181 -0
- package/lib/components/LdGridForm/index.less +7 -0
- package/lib/components/LdInfoPanel/index.js +123 -0
- package/lib/components/LdPop/index.js +40 -0
- package/lib/components/LdTree/index.js +253 -0
- package/lib/components/LdTree/index.less +36 -0
- package/lib/helper/FromItems.js +287 -0
- package/lib/helper/action.js +138 -0
- package/lib/helper/form.js +111 -0
- package/lib/helper/ldBuilder.js +56 -0
- package/lib/helper/ldComBuild.js +49 -0
- package/lib/index.js +84 -0
- package/lib/services.js +54 -0
- package/lib/utils/form.js +225 -0
- package/lib/utils/grid.js +203 -0
- package/lib/utils/index.js +27 -0
- package/package.json +92 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
+
var _excluded = ["columns", "resources", "actions", "doAction", "ldId", "dataSetKey", "columnsRewrite", "onQuery", "onAdd", "onUpdate", "onDelete", "mainFormLdId", "mainDataSetKey", "onValueChange", "type", "afterOperate", "moduleCode", "defaultDataSourceFormat", "ticketData", "className"];
|
|
6
|
+
import React, { useContext, useRef } from 'react';
|
|
7
|
+
import { useCreation, useMemoizedFn } from 'ahooks';
|
|
8
|
+
import { transform } from 'lodash';
|
|
9
|
+
import classNames from 'classnames';
|
|
10
|
+
import ldBuilder from '../../helper/ldBuilder';
|
|
11
|
+
import { GridForm } from '@luck-design-biz/base/FormList';
|
|
12
|
+
import { getFormColumn, formItemDataFormat, dataFormat } from '../../utils';
|
|
13
|
+
import { defaultComName } from '../../helper/form';
|
|
14
|
+
import { LuckDaContext } from '../Builder';
|
|
15
|
+
import { readBehaviorCall } from '../../services';
|
|
16
|
+
import styles from './index.less';
|
|
17
|
+
var buildLdGridForm = function buildLdGridForm(_ref) {
|
|
18
|
+
var _ref$columns = _ref.columns,
|
|
19
|
+
columns = _ref$columns === void 0 ? [] : _ref$columns,
|
|
20
|
+
_ref$resources = _ref.resources,
|
|
21
|
+
resources = _ref$resources === void 0 ? [] : _ref$resources,
|
|
22
|
+
_ref$actions = _ref.actions,
|
|
23
|
+
actions = _ref$actions === void 0 ? {} : _ref$actions,
|
|
24
|
+
_ref$doAction = _ref.doAction,
|
|
25
|
+
doAction = _ref$doAction === void 0 ? function () {} : _ref$doAction,
|
|
26
|
+
ldId = _ref.ldId,
|
|
27
|
+
dataSetKey = _ref.dataSetKey,
|
|
28
|
+
_ref$columnsRewrite = _ref.columnsRewrite,
|
|
29
|
+
columnsRewrite = _ref$columnsRewrite === void 0 ? [] : _ref$columnsRewrite,
|
|
30
|
+
_ref$onQuery = _ref.onQuery,
|
|
31
|
+
onQuery = _ref$onQuery === void 0 ? {} : _ref$onQuery,
|
|
32
|
+
_ref$onAdd = _ref.onAdd,
|
|
33
|
+
onAdd = _ref$onAdd === void 0 ? {} : _ref$onAdd,
|
|
34
|
+
_ref$onUpdate = _ref.onUpdate,
|
|
35
|
+
onUpdate = _ref$onUpdate === void 0 ? {} : _ref$onUpdate,
|
|
36
|
+
_ref$onDelete = _ref.onDelete,
|
|
37
|
+
onDelete = _ref$onDelete === void 0 ? {} : _ref$onDelete,
|
|
38
|
+
mainFormLdId = _ref.mainFormLdId,
|
|
39
|
+
mainDataSetKey = _ref.mainDataSetKey,
|
|
40
|
+
_ref$onValueChange = _ref.onValueChange,
|
|
41
|
+
onValueChange = _ref$onValueChange === void 0 ? function () {} : _ref$onValueChange,
|
|
42
|
+
_ref$type = _ref.type,
|
|
43
|
+
type = _ref$type === void 0 ? 'grid' : _ref$type,
|
|
44
|
+
_afterOperate = _ref.afterOperate,
|
|
45
|
+
moduleCode = _ref.moduleCode,
|
|
46
|
+
_ref$defaultDataSourc = _ref.defaultDataSourceFormat,
|
|
47
|
+
defaultDataSourceFormat = _ref$defaultDataSourc === void 0 ? function () {
|
|
48
|
+
return {};
|
|
49
|
+
} : _ref$defaultDataSourc,
|
|
50
|
+
_ref$ticketData = _ref.ticketData,
|
|
51
|
+
ticketData = _ref$ticketData === void 0 ? {} : _ref$ticketData,
|
|
52
|
+
className = _ref.className,
|
|
53
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
54
|
+
var _ref2 = useContext(LuckDaContext) || {},
|
|
55
|
+
setFieldProps = _ref2.setFieldProps;
|
|
56
|
+
var defaultValues = useRef();
|
|
57
|
+
var isMain = ldId === mainFormLdId;
|
|
58
|
+
var gridColumns = columns.map(function (col) {
|
|
59
|
+
if ((col.comName || defaultComName[col.property]) === 'radio') return _objectSpread(_objectSpread({}, col), {}, {
|
|
60
|
+
comName: 'select'
|
|
61
|
+
});
|
|
62
|
+
return col;
|
|
63
|
+
});
|
|
64
|
+
var _columns = useCreation(function () {
|
|
65
|
+
var _defaultValues = {};
|
|
66
|
+
var _nodes = transform(gridColumns, function (result, col) {
|
|
67
|
+
if (col.isShowInForm) {
|
|
68
|
+
var _objectSpread2;
|
|
69
|
+
var customColumn = columnsRewrite.find(function (column) {
|
|
70
|
+
return column.field === col.field;
|
|
71
|
+
}) || {};
|
|
72
|
+
if (col.isReadOnly) customColumn = _objectSpread(_objectSpread({}, customColumn), {}, {
|
|
73
|
+
editable: false,
|
|
74
|
+
mode: 'grid'
|
|
75
|
+
});
|
|
76
|
+
_defaultValues = _objectSpread(_objectSpread({}, _defaultValues), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, col.field, col['optDefaultValue']), _defineProperty(_objectSpread2, "".concat(col.field, "_virtual"), col['optDefaultValueCvt']), _objectSpread2));
|
|
77
|
+
result.push(getFormColumn(type, col, customColumn));
|
|
78
|
+
}
|
|
79
|
+
}, []);
|
|
80
|
+
defaultValues.current = _defaultValues;
|
|
81
|
+
setFieldProps(_defineProperty({}, ldId, _nodes.map(function (col) {
|
|
82
|
+
var node = col.renderBasicFormItem();
|
|
83
|
+
var renderBasicFormItem = node === null || node === void 0 ? void 0 : node.props;
|
|
84
|
+
return _objectSpread(_objectSpread({}, col), {}, {
|
|
85
|
+
renderBasicFormItem: _objectSpread({
|
|
86
|
+
component: node.type.comName || node.type.displayName
|
|
87
|
+
}, renderBasicFormItem)
|
|
88
|
+
});
|
|
89
|
+
})));
|
|
90
|
+
return _nodes;
|
|
91
|
+
}, [columns, columnsRewrite, isMain]);
|
|
92
|
+
var defaultDataSource = _objectSpread(_objectSpread({}, formItemDataFormat(columns, defaultValues.current)), defaultDataSourceFormat(defaultValues.current));
|
|
93
|
+
var formConfig = {
|
|
94
|
+
formId: ldId,
|
|
95
|
+
columns: _columns,
|
|
96
|
+
isMain: isMain,
|
|
97
|
+
defaultDataSource: defaultDataSource,
|
|
98
|
+
newItemDefaultValue: defaultDataSource
|
|
99
|
+
};
|
|
100
|
+
var onOperate = useMemoizedFn(function () {
|
|
101
|
+
var _onOperate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
102
|
+
var behaviorKey = arguments.length > 1 ? arguments[1] : undefined;
|
|
103
|
+
return _objectSpread(_objectSpread({
|
|
104
|
+
api: function api(get, post, formData) {
|
|
105
|
+
var _formData$mainFormLdI;
|
|
106
|
+
return readBehaviorCall(_objectSpread(_objectSpread({}, get), {}, _defineProperty({}, isMain ? 'indocno' : 'relationId', ((_formData$mainFormLdI = formData[mainFormLdId]) === null || _formData$mainFormLdI === void 0 ? void 0 : _formData$mainFormLdI.indocno) || ticketData.indocno)), post, formData);
|
|
107
|
+
},
|
|
108
|
+
get: function get() {
|
|
109
|
+
return {
|
|
110
|
+
moduleCode: moduleCode,
|
|
111
|
+
datasetCode: dataSetKey,
|
|
112
|
+
behaviorKey: behaviorKey
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}, _onOperate), {}, {
|
|
116
|
+
post: function post(data) {
|
|
117
|
+
var _submitData = data.map(function (item) {
|
|
118
|
+
return dataFormat(gridColumns, item);
|
|
119
|
+
});
|
|
120
|
+
if (_onOperate === null || _onOperate === void 0 ? void 0 : _onOperate.post) return _onOperate.post(_submitData); // 以预设为主
|
|
121
|
+
return _defineProperty({}, dataSetKey, _defineProperty({}, "".concat(behaviorKey, "List"), _submitData));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return /*#__PURE__*/React.createElement(GridForm, _extends({
|
|
126
|
+
noAddon: true,
|
|
127
|
+
operates: resources,
|
|
128
|
+
orderByAdd: "asc",
|
|
129
|
+
rowSelection: true,
|
|
130
|
+
type: type
|
|
131
|
+
}, props, {
|
|
132
|
+
onQuery: _objectSpread(_objectSpread({
|
|
133
|
+
api: readBehaviorCall,
|
|
134
|
+
get: function get(formData) {
|
|
135
|
+
var _formData$mainFormLdI2, _params2;
|
|
136
|
+
var _params = (_params2 = {}, _defineProperty(_params2, isMain ? 'indocno' : 'relationId', ((_formData$mainFormLdI2 = formData[mainFormLdId]) === null || _formData$mainFormLdI2 === void 0 ? void 0 : _formData$mainFormLdI2.indocno) || ticketData.indocno), _defineProperty(_params2, "moduleCode", moduleCode), _defineProperty(_params2, "datasetCode", dataSetKey), _defineProperty(_params2, "behaviorKey", 'readGrid'), _params2);
|
|
137
|
+
if (!isMain) _params.relationDs = mainDataSetKey;
|
|
138
|
+
return _params;
|
|
139
|
+
}
|
|
140
|
+
}, onQuery), {}, {
|
|
141
|
+
format: function format(data) {
|
|
142
|
+
var formItemData = data.map(function (item) {
|
|
143
|
+
return formItemDataFormat(gridColumns, item);
|
|
144
|
+
});
|
|
145
|
+
if (onQuery === null || onQuery === void 0 ? void 0 : onQuery.format) return onQuery.format(data, formItemData); // 以预设为主
|
|
146
|
+
return formItemData;
|
|
147
|
+
}
|
|
148
|
+
}),
|
|
149
|
+
onAdd: onOperate(onAdd, 'add'),
|
|
150
|
+
onUpdate: onOperate(onUpdate, 'update'),
|
|
151
|
+
onDelete: _objectSpread(_objectSpread({}, onOperate(onDelete, 'delete')), {}, {
|
|
152
|
+
post: function post(data) {
|
|
153
|
+
var _submitData = data.map(function (item) {
|
|
154
|
+
return {
|
|
155
|
+
indocno: item.indocno
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
if (onDelete === null || onDelete === void 0 ? void 0 : onDelete.post) return onDelete.post(_submitData); // 以预设为主
|
|
159
|
+
return _defineProperty({}, dataSetKey, {
|
|
160
|
+
deleteList: _submitData
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
})
|
|
164
|
+
}, formConfig, {
|
|
165
|
+
afterOperate: function afterOperate(dataList, operate) {
|
|
166
|
+
onValueChange(_defineProperty({}, ldId, _defineProperty({}, operate, dataList)));
|
|
167
|
+
_afterOperate && _afterOperate(dataList, operate);
|
|
168
|
+
},
|
|
169
|
+
className: classNames(styles.ldGridForm, _defineProperty({}, className, !!className))
|
|
170
|
+
}));
|
|
171
|
+
};
|
|
172
|
+
export default ldBuilder(buildLdGridForm);
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
+
var _excluded = ["columns", "resources", "actions", "doAction", "wrapperRef", "moduleCode", "dataSetKey", "defaultParmas", "suppressInit", "afterInit", "customColumns", "service"];
|
|
6
|
+
import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { useCreation, useRequest } from 'ahooks';
|
|
9
|
+
import { InfoPanel } from 'luck-design';
|
|
10
|
+
import { readBehaviorCall } from '../../services';
|
|
11
|
+
import { transform } from 'lodash';
|
|
12
|
+
import ldBuilder from '../../helper/ldBuilder';
|
|
13
|
+
var formatInfoPanelData = function formatInfoPanelData(columns, data) {
|
|
14
|
+
return transform(columns, function (result, col) {
|
|
15
|
+
result[col.dataIndex] = col.render && col.render(data[col.dataIndex], data) || data["".concat(col.dataIndex, "_virtual")] || data[col.dataIndex];
|
|
16
|
+
}, {});
|
|
17
|
+
};
|
|
18
|
+
var LdInfoPanel = function LdInfoPanel(_ref) {
|
|
19
|
+
var columns = _ref.columns,
|
|
20
|
+
resources = _ref.resources,
|
|
21
|
+
actions = _ref.actions,
|
|
22
|
+
doAction = _ref.doAction,
|
|
23
|
+
wrapperRef = _ref.wrapperRef,
|
|
24
|
+
moduleCode = _ref.moduleCode,
|
|
25
|
+
dataSetKey = _ref.dataSetKey,
|
|
26
|
+
_defaultParmas = _ref.defaultParmas,
|
|
27
|
+
suppressInit = _ref.suppressInit,
|
|
28
|
+
afterInit = _ref.afterInit,
|
|
29
|
+
customColumns = _ref.customColumns,
|
|
30
|
+
service = _ref.service,
|
|
31
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
var infoPanelRef = useRef(null);
|
|
33
|
+
var _useState = useState({}),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
dataSource = _useState2[0],
|
|
36
|
+
setDataSource = _useState2[1];
|
|
37
|
+
var defaultParams = useCreation(function () {
|
|
38
|
+
return [_objectSpread({
|
|
39
|
+
moduleCode: moduleCode,
|
|
40
|
+
datasetCode: dataSetKey,
|
|
41
|
+
behaviorKey: 'readForm'
|
|
42
|
+
}, _defaultParmas)];
|
|
43
|
+
}, []);
|
|
44
|
+
useImperativeHandle(wrapperRef, function () {
|
|
45
|
+
return _objectSpread(_objectSpread({}, infoPanelRef.current), {}, {
|
|
46
|
+
onLdQuery: function onLdQuery() {
|
|
47
|
+
var _params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
48
|
+
run(_objectSpread(_objectSpread(_objectSpread({}, params[0]), defaultParams[0]), _params));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
var _columns = useCreation(function () {
|
|
53
|
+
return customColumns ? customColumns.map(function (col) {
|
|
54
|
+
var xCol = columns.find(function (column) {
|
|
55
|
+
return column.field === col.dataIndex;
|
|
56
|
+
}) || {};
|
|
57
|
+
return _objectSpread({
|
|
58
|
+
title: xCol.fieldName
|
|
59
|
+
}, col);
|
|
60
|
+
}) : customColumns.map(function (item) {
|
|
61
|
+
return {
|
|
62
|
+
title: item.fieldName,
|
|
63
|
+
dataIndex: item.field
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}, [columns]);
|
|
67
|
+
var _useRequest = useRequest(service || readBehaviorCall, {
|
|
68
|
+
// 获取树数据源
|
|
69
|
+
defaultParams: defaultParams,
|
|
70
|
+
manual: suppressInit,
|
|
71
|
+
onSuccess: function onSuccess(data) {
|
|
72
|
+
var code = data.code,
|
|
73
|
+
list = data.list,
|
|
74
|
+
detail = data.detail;
|
|
75
|
+
if (code === 1 && list[0]) {
|
|
76
|
+
var _data = detail[list[0]];
|
|
77
|
+
setDataSource(_data);
|
|
78
|
+
afterInit && afterInit(_data);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}),
|
|
82
|
+
loading = _useRequest.loading,
|
|
83
|
+
run = _useRequest.run,
|
|
84
|
+
params = _useRequest.params;
|
|
85
|
+
return /*#__PURE__*/React.createElement(InfoPanel, _extends({
|
|
86
|
+
dataSource: formatInfoPanelData(_columns, dataSource),
|
|
87
|
+
columns: _columns,
|
|
88
|
+
mode: 'grid',
|
|
89
|
+
loading: loading
|
|
90
|
+
}, props, {
|
|
91
|
+
ref: infoPanelRef
|
|
92
|
+
}));
|
|
93
|
+
};
|
|
94
|
+
var Index = ldBuilder(LdInfoPanel);
|
|
95
|
+
Index.propTypes = {
|
|
96
|
+
dataSetKey: PropTypes.string.isRequired,
|
|
97
|
+
// 数据集key
|
|
98
|
+
suppressInit: PropTypes.bool,
|
|
99
|
+
// 抑制初始化
|
|
100
|
+
afterInit: PropTypes.func,
|
|
101
|
+
// 初始化后
|
|
102
|
+
customColumns: PropTypes.array,
|
|
103
|
+
defaultParmas: PropTypes.object
|
|
104
|
+
};
|
|
105
|
+
Index.defaultProps = {
|
|
106
|
+
suppressInit: false,
|
|
107
|
+
customColumns: null,
|
|
108
|
+
defaultParmas: {}
|
|
109
|
+
};
|
|
110
|
+
export default /*#__PURE__*/forwardRef(function (props, ref) {
|
|
111
|
+
return /*#__PURE__*/React.createElement(Index, _extends({
|
|
112
|
+
wrapperRef: ref
|
|
113
|
+
}, props));
|
|
114
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["component", "size"];
|
|
4
|
+
import React, { createContext } from 'react';
|
|
5
|
+
import { includes } from 'lodash';
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import { FormWindow } from '@luck-design-biz/base';
|
|
8
|
+
var LuckDaPopContext = /*#__PURE__*/createContext();
|
|
9
|
+
var LdPop = function LdPop() {
|
|
10
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
11
|
+
ldId = _ref.ldId,
|
|
12
|
+
_ref$params = _ref.params,
|
|
13
|
+
params = _ref$params === void 0 ? {} : _ref$params;
|
|
14
|
+
var component = params.component,
|
|
15
|
+
size = params.size,
|
|
16
|
+
_params = _objectWithoutProperties(params, _excluded);
|
|
17
|
+
return /*#__PURE__*/React.createElement(FormWindow, _extends({
|
|
18
|
+
showBtn: false,
|
|
19
|
+
size: size,
|
|
20
|
+
id: ldId
|
|
21
|
+
}, _params), /*#__PURE__*/React.createElement(LuckDaPopContext.Provider, {
|
|
22
|
+
value: {
|
|
23
|
+
affixLayout: includes(['large', 'full'], size) ? 'top' : 'bottom'
|
|
24
|
+
} // 用于动态显示formList布局
|
|
25
|
+
}, component));
|
|
26
|
+
};
|
|
27
|
+
LdPop.propTypes = {
|
|
28
|
+
ldId: PropTypes.string.isRequired
|
|
29
|
+
};
|
|
30
|
+
export default LdPop;
|
|
31
|
+
export { LuckDaPopContext };
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
6
|
+
var _excluded = ["columns", "resources", "actions", "doAction", "wrapperRef", "ldId", "dataSetKey", "defaultParmas", "moduleCode", "readOnly", "title", "rowKey", "treeNodeTitle", "unselectableNodes", "rightMenus", "defaultExpandDeep", "draggable", "onDrop", "className", "treeClassName", "rootAdd", "suppressInit", "afterInit", "isTree", "service"],
|
|
7
|
+
_excluded2 = ["onClick"];
|
|
8
|
+
import React, { useState, useRef, useImperativeHandle, forwardRef } from 'react';
|
|
9
|
+
import { isFunction, isNumber, transform, includes, remove, cloneDeep, keys } from 'lodash';
|
|
10
|
+
import { useRequest, useMemoizedFn, useCreation } from 'ahooks';
|
|
11
|
+
import PropTypes from 'prop-types';
|
|
12
|
+
import classNames from 'classnames';
|
|
13
|
+
import { Icon, Popover } from 'antd';
|
|
14
|
+
import { LuckTree } from 'luck-design';
|
|
15
|
+
import { formatMessage, dataToTree, dragTreeData } from '@luck-design-biz/base/utils';
|
|
16
|
+
import { TreeBox } from '@luck-design-biz/base';
|
|
17
|
+
import ldBuilder from '../../helper/ldBuilder';
|
|
18
|
+
import { readBehaviorCall } from '../../services';
|
|
19
|
+
import styles from './index.less';
|
|
20
|
+
var LdTree = function LdTree(_ref) {
|
|
21
|
+
var columns = _ref.columns,
|
|
22
|
+
resources = _ref.resources,
|
|
23
|
+
actions = _ref.actions,
|
|
24
|
+
doAction = _ref.doAction,
|
|
25
|
+
wrapperRef = _ref.wrapperRef,
|
|
26
|
+
ldId = _ref.ldId,
|
|
27
|
+
dataSetKey = _ref.dataSetKey,
|
|
28
|
+
_defaultParmas = _ref.defaultParmas,
|
|
29
|
+
moduleCode = _ref.moduleCode,
|
|
30
|
+
readOnly = _ref.readOnly,
|
|
31
|
+
title = _ref.title,
|
|
32
|
+
rowKey = _ref.rowKey,
|
|
33
|
+
treeNodeTitle = _ref.treeNodeTitle,
|
|
34
|
+
unselectableNodes = _ref.unselectableNodes,
|
|
35
|
+
rightMenus = _ref.rightMenus,
|
|
36
|
+
defaultExpandDeep = _ref.defaultExpandDeep,
|
|
37
|
+
draggable = _ref.draggable,
|
|
38
|
+
onDrop = _ref.onDrop,
|
|
39
|
+
className = _ref.className,
|
|
40
|
+
treeClassName = _ref.treeClassName,
|
|
41
|
+
rootAdd = _ref.rootAdd,
|
|
42
|
+
suppressInit = _ref.suppressInit,
|
|
43
|
+
afterInit = _ref.afterInit,
|
|
44
|
+
isTree = _ref.isTree,
|
|
45
|
+
service = _ref.service,
|
|
46
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
47
|
+
if (!includes(isTree, dataSetKey)) return formatMessage({
|
|
48
|
+
id: 'luckda.ldTree.notTres',
|
|
49
|
+
label: '此数据集非树形数据集,请选择树形数据集'
|
|
50
|
+
});
|
|
51
|
+
var _useState = useState(null),
|
|
52
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
53
|
+
dataSource = _useState2[0],
|
|
54
|
+
setDataSource = _useState2[1];
|
|
55
|
+
var _useState3 = useState({}),
|
|
56
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
57
|
+
defaultExpandedProps = _useState4[0],
|
|
58
|
+
setDefaultExpandedProps = _useState4[1];
|
|
59
|
+
var treeRef = useRef(null);
|
|
60
|
+
var defaultParams = [_objectSpread({
|
|
61
|
+
moduleCode: moduleCode,
|
|
62
|
+
datasetCode: dataSetKey,
|
|
63
|
+
behaviorKey: 'readTree'
|
|
64
|
+
}, _defaultParmas)];
|
|
65
|
+
var _useRequest = useRequest(service || readBehaviorCall, {
|
|
66
|
+
// 获取树数据源
|
|
67
|
+
defaultParams: defaultParams,
|
|
68
|
+
manual: suppressInit,
|
|
69
|
+
onSuccess: function onSuccess(data) {
|
|
70
|
+
var code = data.code,
|
|
71
|
+
list = data.list,
|
|
72
|
+
detail = data.detail;
|
|
73
|
+
if (code === 1) {
|
|
74
|
+
var _data = list.map(function (i) {
|
|
75
|
+
return detail[i];
|
|
76
|
+
});
|
|
77
|
+
// 判断是否默认展开
|
|
78
|
+
if (defaultExpandDeep === 'all') setDefaultExpandedProps({
|
|
79
|
+
defaultExpandAll: true
|
|
80
|
+
});else if (isNumber(defaultExpandDeep) && defaultExpandDeep > 0) {
|
|
81
|
+
var defaultExpanded = transform(_data, function (result, n) {
|
|
82
|
+
if (n.sidcc.substring(1, n.sidcc.length - 1).split('/').length < defaultExpandDeep + 1) {
|
|
83
|
+
result.push("".concat(n[rowKey]));
|
|
84
|
+
}
|
|
85
|
+
}, []);
|
|
86
|
+
setDefaultExpandedProps({
|
|
87
|
+
defaultExpandedKeys: defaultExpanded
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
var treeData = dataToTree(_data);
|
|
91
|
+
setDataSource(treeData);
|
|
92
|
+
afterInit && afterInit(treeData);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}),
|
|
96
|
+
loading = _useRequest.loading,
|
|
97
|
+
run = _useRequest.run,
|
|
98
|
+
params = _useRequest.params;
|
|
99
|
+
useImperativeHandle(wrapperRef, function () {
|
|
100
|
+
return _objectSpread(_objectSpread({}, treeRef.current), {}, {
|
|
101
|
+
onLdQuery: function onLdQuery() {
|
|
102
|
+
var _params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
103
|
+
run(_objectSpread(_objectSpread(_objectSpread({}, params[0]), _params), defaultParams[0]));
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
var handleMenuClick = function handleMenuClick(menu, data) {
|
|
108
|
+
var onClick = menu.onClick,
|
|
109
|
+
other = _objectWithoutProperties(menu, _excluded2);
|
|
110
|
+
onClick && onClick(other, data);
|
|
111
|
+
};
|
|
112
|
+
var renderRightMenus = function renderRightMenus(menus, data) {
|
|
113
|
+
return menus.map(function (menu) {
|
|
114
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
115
|
+
onClick: function onClick() {
|
|
116
|
+
return handleMenuClick(menu, data);
|
|
117
|
+
},
|
|
118
|
+
className: styles.rightMenu,
|
|
119
|
+
key: menu.key
|
|
120
|
+
}, menu.name || '');
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
var renderRight = function renderRight(data) {
|
|
124
|
+
var rightMenusResult = rightMenus(data);
|
|
125
|
+
var _rightMenusResult = cloneDeep(rightMenusResult);
|
|
126
|
+
// 去除没有权限或者该模块下没有的行为
|
|
127
|
+
remove(_rightMenusResult, function (n) {
|
|
128
|
+
return n.resource && !includes(data['__infuse_serial__'] || resources, n.resource);
|
|
129
|
+
});
|
|
130
|
+
return _rightMenusResult.length > 0 && /*#__PURE__*/React.createElement(Popover, {
|
|
131
|
+
overlayClassName: styles.classTreeOperates,
|
|
132
|
+
placement: "right",
|
|
133
|
+
title: null,
|
|
134
|
+
content: renderRightMenus(_rightMenusResult, data)
|
|
135
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
136
|
+
type: "more"
|
|
137
|
+
}));
|
|
138
|
+
};
|
|
139
|
+
var renderTitleNode = function renderTitleNode(data, unSelectable) {
|
|
140
|
+
var nodeTitle = isFunction(treeNodeTitle) ? treeNodeTitle(data) : data[treeNodeTitle];
|
|
141
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
142
|
+
className: styles.nodeTitle
|
|
143
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
144
|
+
title: nodeTitle,
|
|
145
|
+
className: classNames(_defineProperty({}, styles.nodeTitleDisabled, unSelectable))
|
|
146
|
+
}, nodeTitle), !readOnly && renderRight(data));
|
|
147
|
+
};
|
|
148
|
+
var renderTreeNodes = useMemoizedFn(function (data) {
|
|
149
|
+
return data.map(function (item) {
|
|
150
|
+
// 判断是否可选择
|
|
151
|
+
var unSelectable = isFunction(unselectableNodes) ? unselectableNodes(item) : unselectableNodes.includes(item[rowKey]);
|
|
152
|
+
if (item.children) {
|
|
153
|
+
return /*#__PURE__*/React.createElement(LuckTree.TreeNode, {
|
|
154
|
+
isLeaf: false,
|
|
155
|
+
title: renderTitleNode(item, unSelectable),
|
|
156
|
+
key: item[rowKey],
|
|
157
|
+
dataRef: item,
|
|
158
|
+
selectable: !unSelectable
|
|
159
|
+
}, renderTreeNodes(item.children));
|
|
160
|
+
}
|
|
161
|
+
return /*#__PURE__*/React.createElement(LuckTree.TreeNode, {
|
|
162
|
+
title: renderTitleNode(item, unSelectable),
|
|
163
|
+
key: item[rowKey],
|
|
164
|
+
dataRef: item,
|
|
165
|
+
selectable: !unSelectable
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
var handleDrop = useMemoizedFn(function (info) {
|
|
170
|
+
var dragInfo = dragTreeData(info, dataSource);
|
|
171
|
+
onDrop && onDrop(info, dragInfo);
|
|
172
|
+
});
|
|
173
|
+
var onAdd = useCreation(function () {
|
|
174
|
+
return !(readOnly || !rootAdd || rootAdd.resource && !includes(resources, rootAdd.resource)) ? function () {
|
|
175
|
+
return handleMenuClick(rootAdd);
|
|
176
|
+
} : null;
|
|
177
|
+
}, [readOnly, rootAdd, resources]);
|
|
178
|
+
return /*#__PURE__*/React.createElement(TreeBox, {
|
|
179
|
+
suppressTitle: !title,
|
|
180
|
+
title: title,
|
|
181
|
+
loading: loading,
|
|
182
|
+
id: ldId,
|
|
183
|
+
onAdd: onAdd,
|
|
184
|
+
className: className
|
|
185
|
+
}, dataSource && /*#__PURE__*/React.createElement(LuckTree, _extends({
|
|
186
|
+
blockNode: true,
|
|
187
|
+
className: classNames(styles.tree, _defineProperty({}, className, !!treeClassName)),
|
|
188
|
+
draggable: !readOnly && draggable,
|
|
189
|
+
onDrop: handleDrop
|
|
190
|
+
}, defaultExpandedProps, props, {
|
|
191
|
+
ref: treeRef
|
|
192
|
+
}), renderTreeNodes(dataSource)));
|
|
193
|
+
};
|
|
194
|
+
var Index = ldBuilder(LdTree);
|
|
195
|
+
Index.propTypes = {
|
|
196
|
+
ldId: PropTypes.string.isRequired,
|
|
197
|
+
// 唯一key
|
|
198
|
+
dataSetKey: PropTypes.string.isRequired,
|
|
199
|
+
// 数据集key
|
|
200
|
+
readOnly: PropTypes.bool,
|
|
201
|
+
// 是否只读
|
|
202
|
+
title: PropTypes.string,
|
|
203
|
+
// 树的标题
|
|
204
|
+
rowKey: PropTypes.string,
|
|
205
|
+
// 数据主键key
|
|
206
|
+
treeNodeTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
|
207
|
+
// 树节点名称
|
|
208
|
+
unselectableNodes: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),
|
|
209
|
+
// 不可选择树节点
|
|
210
|
+
rightMenus: PropTypes.func,
|
|
211
|
+
// 自定义追加的操作
|
|
212
|
+
defaultExpandDeep: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['all'])]),
|
|
213
|
+
// 默认展开的节点深度
|
|
214
|
+
draggable: PropTypes.bool,
|
|
215
|
+
// 是否可拖拽排序
|
|
216
|
+
onDrop: PropTypes.func,
|
|
217
|
+
// 拖拽排序的事件,当draggable为true时使用
|
|
218
|
+
actions: PropTypes.object,
|
|
219
|
+
// 行为
|
|
220
|
+
suppressInit: PropTypes.bool,
|
|
221
|
+
// 抑制初始化
|
|
222
|
+
afterInit: PropTypes.func // 初始化后
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
Index.defaultProps = {
|
|
226
|
+
readOnly: false,
|
|
227
|
+
title: false,
|
|
228
|
+
rowKey: 'indocno',
|
|
229
|
+
treeNodeTitle: 'sname',
|
|
230
|
+
defaultExpandDeep: 0,
|
|
231
|
+
draggable: false,
|
|
232
|
+
unselectableNodes: [],
|
|
233
|
+
actions: {},
|
|
234
|
+
rightMenus: function rightMenus() {
|
|
235
|
+
return [];
|
|
236
|
+
},
|
|
237
|
+
suppressInit: false,
|
|
238
|
+
defaultParmas: {}
|
|
239
|
+
};
|
|
240
|
+
export default /*#__PURE__*/forwardRef(function (props, ref) {
|
|
241
|
+
return /*#__PURE__*/React.createElement(Index, _extends({
|
|
242
|
+
wrapperRef: ref
|
|
243
|
+
}, props));
|
|
244
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.tree {
|
|
2
|
+
.nodeTitle {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
width: 100%;
|
|
6
|
+
|
|
7
|
+
div {
|
|
8
|
+
flex: 1;
|
|
9
|
+
overflow-x: hidden;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-overflow: ellipsis;
|
|
12
|
+
}
|
|
13
|
+
div.nodeTitleDisabled {
|
|
14
|
+
color: var(--luck-text-color-disabled);
|
|
15
|
+
}
|
|
16
|
+
div.nodeTitleDisabled:hover {
|
|
17
|
+
cursor: not-allowed;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:global {
|
|
22
|
+
.ant-tree-title {
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
.classTreeOperates {
|
|
28
|
+
:global(.ant-popover-inner-content) {
|
|
29
|
+
padding: 0;
|
|
30
|
+
}
|
|
31
|
+
.rightMenu {
|
|
32
|
+
display: block;
|
|
33
|
+
padding: 4px 8px;
|
|
34
|
+
color: var(--luck-text-color-);
|
|
35
|
+
}
|
|
36
|
+
}
|