knk
Version:
react components based on react
120 lines (118 loc) • 5.21 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _antd = require("antd");
var _api = require("../../../common/api");
var _tool = require("../../../common/tool");
var _propTypes = _interopRequireDefault(require("prop-types"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/**
* 异步选择组件(多选)
*/
var Option = _antd.Select.Option;
var AjaxSelectMulit = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var isOpen = _react.default.useRef(true);
var jaxSelectMulitRef = _react.default.useRef();
jaxSelectMulitRef = ref;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
loading = _useState2[0],
setLoading = _useState2[1];
var _useState3 = (0, _react.useState)([]),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
listData = _useState4[0],
setListData = _useState4[1];
(0, _react.useEffect)(function () {
handleGetList();
return function () {
isOpen.current = false;
};
}, []);
var handleGetList = function handleGetList() {
var apiPath = props.apiPath,
apiData = props.apiData,
apiMethod = props.apiMethod,
listName = props.listName;
setLoading(true);
(0, _api.fetch)(apiPath, apiData, apiMethod).then(function (data) {
// 判断如果卸载,则不再设置数据
if (!isOpen.current) return;
setLoading(false);
setListData(data.data);
}).catch(function (err) {
_tool.log.error(err);
setLoading(false);
_antd.message.error("\u83B7\u53D6".concat(listName, "\u5931\u8D25"));
});
};
var handleChange = function handleChange(value) {
var onChange = props.onChange,
listValueKey = props.listValueKey,
listNameKey = props.listNameKey;
value.map(function (item) {
item[listValueKey] = item.key;
item[listNameKey] = item.label;
delete item.key;
delete item.label;
});
onChange(value);
};
var value = props.value;
var listName = props.listName,
listValueKey = props.listValueKey,
listNameKey = props.listNameKey,
disabled = props.disabled;
value = value && Array.isArray(value) ? value : [];
value = listData && listData.length ? value.map(function (item) {
var target = listData.find(function (listItem) {
return listItem[listValueKey] === item[listValueKey];
});
return target && {
key: "".concat(target[listValueKey]),
label: target[listNameKey]
};
}).filter(function (item) {
return item != null;
}) : [];
return /*#__PURE__*/_react.default.createElement(_antd.Spin, {
spinning: loading,
className: "app-ajax-select-multi"
}, /*#__PURE__*/_react.default.createElement(_antd.Select, {
ref: jaxSelectMulitRef,
mode: "multiple",
showSearch: true,
allowClear: true,
value: value,
onChange: handleChange,
placeholder: "\u9009\u62E9".concat(listName),
optionFilterProp: "children",
labelInValue: true,
notFoundContent: "\u672A\u627E\u5230".concat(listName),
disabled: disabled
}, listData.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement(Option, {
key: index,
value: item[listValueKey] ? item[listValueKey].toString() : '',
title: item[listNameKey]
}, item[listNameKey]);
})));
});
AjaxSelectMulit.propTypes = {
apiPath: _propTypes.default.string,
apiData: _propTypes.default.object,
value: _propTypes.default.array,
apiMethod: _propTypes.default.string,
listName: _propTypes.default.string,
listNameKey: _propTypes.default.string,
listValueKey: _propTypes.default.string,
onChange: _propTypes.default.func,
disabled: _propTypes.default.bool
};
var _default = exports.default = AjaxSelectMulit;