UNPKG

@aliretail/react-materials-components

Version:
198 lines (173 loc) 6.8 kB
import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; var _excluded = ["app", "page", "close", "refresh"], _excluded2 = ["value", "code", "uploadType", "imgLimitWidth", "imgLimitHeight", "multiSelect", "onSuccess", "materialCenterLinkage", "apis"]; import * as React from 'react'; import * as PropTypes from 'prop-types'; import Router, { getApiUrl } from '@aliretail/react-universal-request'; import MaterialSelector from '@aliretail/react-material-selector'; // 这些是由于兼容在富文本框中才有的属性,不需要外部传入 var MaterialDialog = /*#__PURE__*/function (_React$Component) { _inheritsLoose(MaterialDialog, _React$Component); function MaterialDialog() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; _this.state = { visible: false }; _this.formatTab = function (type) { if (type === 'video') { return ['video']; } return ['img']; }; return _this; } var _proto = MaterialDialog.prototype; // 富文本打开方法 _proto.openUploadLayer = function openUploadLayer() { this.setState({ visible: true }); }; _proto.hide = function hide() { this.setState({ visible: false }); }; _proto.getToMaterialCenterConfig = function getToMaterialCenterConfig() { var _this$props = this.props, code = _this$props.code, materialCenterLinkage = _this$props.materialCenterLinkage, apis = _this$props.apis, linkToMaterialCenter = _this$props.linkToMaterialCenter; // 去素材中的配置 var toMaterialCenterConfig = {}; // 如果配置了跳转的 app 和 page code ,则跳转到相应页面 if (materialCenterLinkage !== null && materialCenterLinkage !== void 0 && materialCenterLinkage.app && materialCenterLinkage !== null && materialCenterLinkage !== void 0 && materialCenterLinkage.page) { var app = materialCenterLinkage.app, page = materialCenterLinkage.page, _materialCenterLinkag = materialCenterLinkage.close, close = _materialCenterLinkag === void 0 ? false : _materialCenterLinkag, _materialCenterLinkag2 = materialCenterLinkage.refresh, refresh = _materialCenterLinkag2 === void 0 ? true : _materialCenterLinkag2, materialCenterOthers = _objectWithoutPropertiesLoose(materialCenterLinkage, _excluded); toMaterialCenterConfig = { linkToMaterialCenter: function linkToMaterialCenter() { Router.openPage(materialCenterLinkage, _extends({ close: close, refresh: refresh }, materialCenterOthers)); } }; // 如果没有进行其他的跳转配置则根据code跳转 } else if (!linkToMaterialCenter && !(apis !== null && apis !== void 0 && apis.materialAddress)) { var defaultJumpConfig = { close: false, refresh: true }; if (code === 'mall_portal') { toMaterialCenterConfig = { linkToMaterialCenter: function linkToMaterialCenter() { Router.openPage({ app: 'mall_portal', page: 'mng' }, defaultJumpConfig); } }; } else if (code === 'retailforce_crm') { toMaterialCenterConfig = { linkToMaterialCenter: function linkToMaterialCenter() { Router.openPage({ app: 'retailforce_crm', page: 'member-MediaMaterials' }, defaultJumpConfig); } }; } } return toMaterialCenterConfig; }; _proto.render = function render() { var _this2 = this; var _this$props2 = this.props, value = _this$props2.value, code = _this$props2.code, uploadType = _this$props2.uploadType, imgLimitWidth = _this$props2.imgLimitWidth, imgLimitHeight = _this$props2.imgLimitHeight, multiSelect = _this$props2.multiSelect, onSuccess = _this$props2.onSuccess, materialCenterLinkage = _this$props2.materialCenterLinkage, _this$props2$apis = _this$props2.apis, apis = _this$props2$apis === void 0 ? {} : _this$props2$apis, others = _objectWithoutPropertiesLoose(_this$props2, _excluded2); var visible = this.state.visible; var props = _extends({ // api集合 apis: _extends({ // 内容去查询接口 materialSearchURL: getApiUrl(code, 'MaterialSearch'), // 树形结构内容渲染接口 dirQueryURL: getApiUrl(code, 'MaterialDirQuery'), // 获取上传oss信息的api的url getOssSignature: getApiUrl(code, 'GetOssSignature'), // 上传oss接口 ossUpload: getApiUrl(code, 'UploadCallbackForOssFile'), // 素材创建 materialCreate: getApiUrl(code, 'MaterialCreate') }, apis) }, this.getToMaterialCenterConfig(), { showDialog: visible, multiSelect: multiSelect, showTabs: this.formatTab(uploadType), // 是否展示所有类型的素材,不传都展示,传了展示对应的tab showUpload: true, onComplete: function onComplete(result) { if (Array.isArray(result) && result.length) { var filePathList = result.map(function (item) { return item.filePath; }).filter(function (item) { return item; }); if (filePathList.length) { onSuccess({ fileUrl: filePathList }); } } _this2.hide(); }, onCancel: function onCancel() { _this2.hide(); }, onClose: function onClose() { _this2.hide(); }, value: value, // 控制图片大小,素材选择内部已限制只有图片限制长宽 imgWidth: imgLimitWidth, imgHeight: imgLimitHeight }, others); return /*#__PURE__*/React.createElement("div", null, visible ? /*#__PURE__*/React.createElement(MaterialSelector, props) : null); }; return MaterialDialog; }(React.Component); MaterialDialog.propTypes = { onSuccess: PropTypes.func, value: PropTypes.array, uploadType: PropTypes.string, imgLimitWidth: PropTypes.number, imgLimitHeight: PropTypes.number, code: PropTypes.string }; MaterialDialog.defaultProps = { onSuccess: function onSuccess() {}, value: [], uploadType: 'img', imgLimitWidth: null, imgLimitHeight: null, code: '', multiSelect: true }; export default MaterialDialog;