fx-form-widget
Version:
193 lines (189 loc) • 8.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.Context = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _react = _interopRequireWildcard(require("react"));
var _httpClient = _interopRequireDefault(require("../../config/httpClient"));
var _index = _interopRequireDefault(require("./component/ContentWrap/index"));
var _index2 = require("./tools/index");
var _shard = require("./shard");
var _plusConfigProvider = _interopRequireDefault(require("@fle-ui/plus-config-provider"));
require("./index.less");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
var Context = exports.Context = /*#__PURE__*/(0, _react.createContext)({});
var PreviewPlatform = function PreviewPlatform(props, ref) {
var variant = props.variant,
readonly = props.readonly,
_props$schema = props.schema,
schema = _props$schema === void 0 ? {} : _props$schema,
_props$hideInForm = props.hideInForm,
hideInForm = _props$hideInForm === void 0 ? [] : _props$hideInForm,
_props$loading = props.loading,
loading = _props$loading === void 0 ? false : _props$loading,
_props$defaultValue = props.defaultValue,
defaultValue = _props$defaultValue === void 0 ? [] : _props$defaultValue,
getAnchorInfo = props.getAnchorInfo,
formId = props.formId,
onCheck = props.onCheck;
var _schema$globalLayout = schema.globalLayout,
globalLayout = _schema$globalLayout === void 0 ? {} : _schema$globalLayout,
_schema$partitions = schema.partitions,
partitions = _schema$partitions === void 0 ? [] : _schema$partitions;
var contentRef = (0, _react.useRef)();
var allSchemaData = (0, _react.useRef)([]);
var _useState = (0, _react.useState)({}),
bindList = _useState[0],
setBindList = _useState[1];
var _useState2 = (0, _react.useState)({}),
dataContext = _useState2[0],
setDataContext = _useState2[1];
(0, _react.useEffect)(function () {
var schemaData = (0, _index2.transformFrom)(partitions, readonly, hideInForm);
allSchemaData.current = schemaData;
var anchor = (0, _index2.transformFromAnchor)(schemaData);
getAnchorInfo === null || getAnchorInfo === void 0 ? void 0 : getAnchorInfo(anchor);
setBindList((0, _index2.createBindMap)(schemaData.map(function (item) {
return item.viewSchema;
}).filter(function (item) {
return item.isBind;
})));
onDataChange({
schemaData: schemaData
});
}, [partitions]);
(0, _react.useEffect)(function () {
var _contentRef$current;
var defaultValues = {};
if (Object.prototype.toString.call(defaultValue) === '[object Array]') {
defaultValues = defaultValue.reduce(function (obj, item) {
obj[item.fieldName || item.wid] = item.value;
return obj;
}, {});
} else {
defaultValues = defaultValue;
}
defaultValues && ((_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.dynamicForm.setFieldsValue(defaultValues));
}, [defaultValue]);
(0, _react.useImperativeHandle)(ref, function () {
return {
onReset: onReset,
onSubmit: onSubmit,
setDefaultValue: setDefaultValue
};
});
var handleValuesChange = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(changedValue) {
var response;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(bindList[Object.keys(changedValue)[0]] && Object.values(changedValue)[0])) {
_context.next = 5;
break;
}
_context.next = 3;
return Promise.all(bindList[Object.keys(changedValue)[0]].map(function (item) {
return _httpClient["default"].post(item.bindUrl, changedValue);
}));
case 3:
response = _context.sent;
response.forEach(function (item, index) {
var _bindList$Object$keys = bindList[Object.keys(changedValue)[0]][index],
fieldName = _bindList$Object$keys.fieldName,
bindValueKey = _bindList$Object$keys.bindValueKey;
fieldName.forEach(function (i, index) {
var _contentRef$current2;
(_contentRef$current2 = contentRef.current) === null || _contentRef$current2 === void 0 ? void 0 : _contentRef$current2.dynamicForm.setFieldValue(i, item.data[bindValueKey[index]] || '');
});
});
case 5:
case "end":
return _context.stop();
}
}, _callee);
}));
return function handleValuesChange(_x) {
return _ref.apply(this, arguments);
};
}();
// 重置form表单数据
var onReset = function onReset() {
var tempArr = dataContext.schemaData.map(function (item) {
var _item$viewSchema;
if ((_item$viewSchema = item.viewSchema) !== null && _item$viewSchema !== void 0 && _item$viewSchema.data) {
item.viewSchema.data = undefined;
}
return item;
});
if (contentRef.current.dynamicForm) {
// 修改实际的值
onDataChange({
schemaData: tempArr
});
// form自带重置方法
contentRef.current.dynamicForm.resetFields();
}
};
// 校验
var onSubmit = function onSubmit() {
var dataList = [];
var schemaData = allSchemaData.current;
return new Promise(function (resolve, reject) {
contentRef.current.dynamicForm.validateFields().then(function (values) {
(0, _shard.setDatas)(schemaData, dataList, values);
resolve(dataList);
})["catch"](function () {
reject(false);
});
});
};
var onDataChange = function onDataChange(data) {
setDataContext((0, _extends2["default"])({}, dataContext, data));
};
var onSchemaChange = function onSchemaChange(type, newSchemaData) {
var schemaData = allSchemaData.current;
var wid = newSchemaData.wid;
var _findSchemaDataIndex = (0, _shard.findSchemaDataIndex)(schemaData, wid),
index = _findSchemaDataIndex.index,
children = _findSchemaDataIndex.children;
if (index < 0) {
return;
}
children.splice(index, 1, newSchemaData);
};
// 设置初始值
var setDefaultValue = function setDefaultValue(values) {
var defaultValues = {};
if (Object.prototype.toString.call(values) === '[object Array]') {
defaultValues = values.reduce(function (obj, item) {
obj[item.fieldName || item.wid] = item.value;
return obj;
}, {});
} else {
defaultValues = values;
}
contentRef.current.dynamicForm.setFieldsValue(defaultValues);
};
var values = (0, _extends2["default"])({}, dataContext, {
schemaData: allSchemaData.current,
onSchemaChange: onSchemaChange,
globalData: globalLayout,
formId: formId
});
return /*#__PURE__*/_react["default"].createElement(_plusConfigProvider["default"], null, /*#__PURE__*/_react["default"].createElement(Context.Provider, {
value: values
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "preview_wrap"
}, /*#__PURE__*/_react["default"].createElement(_index["default"], {
variant: variant,
ref: contentRef,
valuesChanged: handleValuesChange,
onCheck: onCheck,
loading: loading
}))));
};
var _default = exports["default"] = /*#__PURE__*/(0, _react.forwardRef)(PreviewPlatform);