UNPKG

fx-form-widget

Version:
193 lines (189 loc) 8.59 kB
"use strict"; 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);