UNPKG

fx-form-widget

Version:
177 lines (173 loc) 7.83 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _modal = _interopRequireDefault(require("antd/lib/modal")); var _space = _interopRequireDefault(require("antd/lib/space")); var _upload = _interopRequireDefault(require("antd/lib/upload")); var _button = _interopRequireDefault(require("antd/lib/button")); var _message2 = _interopRequireDefault(require("antd/lib/message")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var React = _react; var _nanoid = require("nanoid"); var _tools = require("../../config/tools"); var _icons = require("@ant-design/icons"); var _url = require("./url"); var _tools2 = require("./tools"); 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 API_HOST = new Map([['dev', 'https://dev-gateway.fxqifu.net/pangu'], ['qa', 'https://qa-gateway.fxqifu.net/pangu'], ['prod', 'https://gateway.fxqifu.net/pangu']]); var UploadFileWidget = function UploadFileWidget(_ref) { var _ref$schema = _ref.schema, schema = _ref$schema === void 0 ? {} : _ref$schema, _ref$onChange = _ref.onChange, _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange, _ref$value = _ref.value, value = _ref$value === void 0 ? (0, _tools2.isNotNullValue)(schema.data) ? schema.data : [] : _ref$value; var _schema$readonly = schema.readonly, readonly = _schema$readonly === void 0 ? false : _schema$readonly, _schema$maxFileCount = schema.maxFileCount, maxFileCount = _schema$maxFileCount === void 0 ? 1 : _schema$maxFileCount, _schema$limitedFileSi = schema.limitedFileSize, limitedFileSize = _schema$limitedFileSi === void 0 ? undefined : _schema$limitedFileSi, _schema$isMultipleUpl = schema.isMultipleUpload, isMultipleUpload = _schema$isMultipleUpl === void 0 ? false : _schema$isMultipleUpl, _schema$uploadBtnTitl = schema.uploadBtnTitle, uploadBtnTitle = _schema$uploadBtnTitl === void 0 ? '点击上传' : _schema$uploadBtnTitl; var _useState = (0, _react.useState)([]), fileList = _useState[0], setFileList = _useState[1]; var _useState2 = (0, _react.useState)({ previewVisible: false, previewImage: '', previewTitle: '' }), previewModel = _useState2[0], setPreviewModel = _useState2[1]; var fileLength = 0; (0, _react.useEffect)(function () { if (value !== null && value !== void 0 && value.length) { setFileList(value.filter(function (item) { return item.status === 'done'; })); } }, [value]); var options = { disabled: readonly, multiple: isMultipleUpload }; var ENV = (0, _tools.getEnv)(); var token = (0, _tools.getToken)(); var loadProps = (0, _extends2["default"])({}, options, { name: 'files', style: { width: '100 % ' }, action: API_HOST.get(ENV) + _url.fileUpload, withCredentials: true, fileList: fileList, headers: { authority_token: token }, // onPreview: (file) => { // let { url = '', name = '' } = file; // setPreviewModel({ previewVisible: true, previewImage: url, previewTitle: name }) // }, onChange: function onChange(info) { setFileList(info.fileList.filter(function (item) { return item.status === 'done'; })); _onChange(info.fileList.filter(function (item) { return item.status === 'done'; })); }, beforeUpload: function beforeUpload(file, fileArray) { fileLength += 1; if (fileArray.length + fileList.length > maxFileCount) { fileLength === fileArray.length && _message2["default"].error("\u4E0A\u4F20\u4E0D\u80FD\u8D85\u8FC7" + maxFileCount + "\u4E2A\u6587\u4EF6"); return false; } if (fileList.length < maxFileCount) { if (limitedFileSize) { return new Promise(function (resolve, reject) { var isUnderLimitedSize = file.size / 1024 / 1024 < limitedFileSize; if (!isUnderLimitedSize) { _message2["default"].error("\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7" + limitedFileSize + "MB"); return reject(false); } return resolve(true); }); } return true; } else { _message2["default"].error("\u89C4\u5B9A\u4E0A\u4F20" + maxFileCount + "\u4E2A\u6587\u4EF6\uFF0C\u73B0\u5DF2\u8D85\u51FA\uFF0C\u8BF7\u5148\u5220\u9664\u5DF2\u4E0A\u4F20\u6587\u4EF6"); return false; } } }); var customProps = { onSuccess: function onSuccess(file) { var success = file.success, _file$data = file.data, data = _file$data === void 0 ? [] : _file$data; if (success) { data === null || data === void 0 ? void 0 : data.forEach(function (dataListItem) { fileList.push({ uid: (0, _nanoid.nanoid)(4), name: dataListItem.originName, status: 'done', url: dataListItem.url }); }); setFileList([].concat(fileList)); _onChange(fileList); } else { _message2["default"].error("" + file.message); } } }; // 关闭弹窗 var handleCancel = function handleCancel() { return setPreviewModel((0, _extends2["default"])({}, previewModel, { previewVisible: false })); }; // 渲染限制最大图片支持的大小 var renderLimitFileSize = function renderLimitFileSize(limitedFileSize) { if (!limitedFileSize) { return null; } return /*#__PURE__*/React.createElement("div", { className: "tips_limitedFileSize" }, "\u8BF7\u4E0A\u4F20\u5927\u5C0F\u4E0D\u8D85\u8FC7", limitedFileSize, "M\u7684\u6587\u4EF6"); }; // 渲染最多可以上传多少张图片 var renderMaxFileCount = function renderMaxFileCount(maxFileCount) { if (!maxFileCount) { return null; } return /*#__PURE__*/React.createElement("div", { className: "tips_limitedFileSize" }, "\u6587\u4EF6\u6700\u591A\u4E0D\u80FD\u8D85\u8FC7", maxFileCount, "\u4E2A"); }; return /*#__PURE__*/React.createElement("div", { className: "uploadFile-wrap" }, /*#__PURE__*/React.createElement(_upload["default"], (0, _extends2["default"])({}, loadProps, customProps), /*#__PURE__*/React.createElement(_button["default"], { icon: /*#__PURE__*/React.createElement(_icons.UploadOutlined, null), className: "upload-file-btn" }, uploadBtnTitle)), /*#__PURE__*/React.createElement(_space["default"], null, renderLimitFileSize(limitedFileSize), renderMaxFileCount(maxFileCount)), /*#__PURE__*/React.createElement(_modal["default"], { visible: previewModel.previewVisible, title: previewModel.previewTitle, footer: null, onCancel: handleCancel }, /*#__PURE__*/React.createElement("img", { alt: "example", style: { width: '100%' }, src: previewModel.previewImage }))); }; var _default = exports["default"] = UploadFileWidget;