UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

247 lines (215 loc) 11.2 kB
'use strict'; var _toast = require('antd-mobile/lib/toast'); var _toast2 = _interopRequireDefault(_toast); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); require('antd-mobile/lib/toast/style/css'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _UrlUtils = require('../../utils/UrlUtils'); var _UrlUtils2 = _interopRequireDefault(_UrlUtils); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } window._yylib_global_cache_ = {}; var YYCreateView = require('./YYCreateView'); var _require = require('./../../common/RestUrl'), MODULE_URL = _require.MODULE_URL, ADDR = _require.ADDR; var _require2 = require('../../utils/FunctionUtil'), deepClone = _require2.deepClone; var CACHE_KEY = "YYCreatePage_"; var YYCreatePageProd = function (_React$Component) { _inherits(YYCreatePageProd, _React$Component); function YYCreatePageProd(props) { var _this$state; _classCallCheck(this, YYCreatePageProd); var _this = _possibleConstructorReturn(this, (YYCreatePageProd.__proto__ || Object.getPrototypeOf(YYCreatePageProd)).call(this, props)); _this.state = (_this$state = { appCode: props.appCode, pageCode: props.pageCode, billTypeCode: null, uiMeta: undefined, uiParser: props.uiParser, uiEvent: props.uiEvent, uiParams: props.uiParams }, _defineProperty(_this$state, 'uiMeta', props.uiMeta), _defineProperty(_this$state, 'pluginUrl', null), _this$state); return _this; } _createClass(YYCreatePageProd, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if ('uiMeta' in nextProps) { this.setState({ uiMeta: nextProps.uiMeta }); } if ('uiParams' in nextProps) { this.setState({ uiParser: nextProps.uiParams }); } if ('uiParser' in nextProps) { this.setState({ uiParser: nextProps.uiParser }); } if ('uiEvent' in nextProps) { this.setState({ uiEvent: nextProps.uiEvent }); } if ('appCode' in nextProps && 'pageCode' in nextProps) { if (this.props.appCode !== nextProps.appCode || this.props.pageCode !== nextProps.pageCode) { this.refreshPage(nextProps.appCode, nextProps.pageCode, null, null); } } if ('location' in nextProps) { var query = this.props.location ? this.props.location.query : {}; var nextQuery = nextProps.location ? nextProps.location.query : {}; if (query.appCode !== nextQuery.appCode || query.pageCode !== nextQuery.pageCode) { this.refreshPage(nextProps.appCode, nextProps.pageCode, nextProps.location, null); } } if ('routeParams' in nextProps) { var query = this.props.routeParams ? this.props.routeParams : {}; var nextQuery = nextProps.routeParams ? nextProps.routeParams : {}; if (query.appCode !== nextQuery.appCode || query.pageCode !== nextQuery.pageCode) { this.refreshPage(nextProps.appCode, nextProps.pageCode, null, nextProps.routeParams); } } } }, { key: 'refreshPage', value: function refreshPage(appCode, pageCode, location, routeParams) { var query = location ? location.query : {}; if (routeParams) query = routeParams; var _appCode = appCode ? appCode : query.appCode; var _pageCode = pageCode ? pageCode : query.pageCode; this.setState({ appCode: _appCode, pageCode: _pageCode }); this._loadPageData(_appCode, _pageCode); } }, { key: '_loadPageData', value: function _loadPageData(appCode, pageCode) { var ajax = window.YYUtils.Ajax; var self = this; if (!appCode || !pageCode) return; var _props2 = this.props, serverUrl = _props2.serverUrl, enableOrg = _props2.enableOrg, mode = _props2.mode, enableCache = _props2.enableCache; var params = { appCode: appCode, pageCode: pageCode, mode: mode }; if (enableOrg) { params.orgId = window.YYUtils.AuthToken.getOrgaId(); params.tenantId = window.YYUtils.AuthToken.getTenantId(); } var metaData = enableCache === false ? null : this.getCache(CACHE_KEY + appCode + "_" + pageCode); if (metaData) { self.setState({ uiMeta: deepClone(metaData), billTypeCode: metaData.billTypeCode }); } else { ajax.getJSONOffLine(serverUrl, params, function (result) { var data = null; if (result.success && result.backData && result.backData.data) { data = JSON.parse(result.backData.data); if (data.files) { self.filePath = data.files; } if (result.backData.orgId) { console.info('[加载页面]' + result.backData.orgId.name + '(' + result.backData.id + ')/' + appCode + '/' + pageCode); } var path = result.backData.files && result.backData.files != "" ? ADDR + "/" + result.backData.files : null; self.setState({ pluginUrl: path, uiMeta: data && data != "" ? data : null, billTypeCode: result.backData.billTypeCode }); self.setCache(CACHE_KEY + appCode + "_" + pageCode, data && data != "" ? null : deepClone(data)); } else { console.warn('[加载页面]' + appCode + '/' + pageCode + '/空页面'); } }); } } }, { key: 'componentWillUpdate', value: function componentWillUpdate(nextProps, nextState) { if (nextState.uiMeta) { _toast2.default.hide(); } } }, { key: 'componentWillMount', value: function componentWillMount() { _toast2.default.loading('加载中', 0); } }, { key: 'getCache', value: function getCache(key) { return window._yylib_global_cache_[key]; } }, { key: 'setCache', value: function setCache(key, value) { window._yylib_global_cache_[key] = value; } }, { key: 'componentDidMount', value: function componentDidMount() { var _props3 = this.props, appCode = _props3.appCode, pageCode = _props3.pageCode, location = _props3.location, routeParams = _props3.routeParams, localCode = _props3.localCode; !localCode && this.refreshPage(appCode, pageCode, location, routeParams); } }, { key: 'render', value: function render() { var _props4 = this.props, router = _props4.router, location = _props4.location, params = _props4.params, route = _props4.route, routeParams = _props4.routeParams, routes = _props4.routes, enableLoading = _props4.enableLoading, parserControl = _props4.parserControl; var _state = this.state, appCode = _state.appCode, pageCode = _state.pageCode, billTypeCode = _state.billTypeCode, pluginUrl = _state.pluginUrl; var _props = { router: router, location: location, params: params, route: route, routeParams: routeParams, routes: routes }; _props.uiParams = this.state.uiParams; _props.uiMeta = this.state.uiMeta; _props.uiParser = this.state.uiParser; _props.uiEvent = this.state.uiEvent; var returnDom = null; if (this.state.uiMeta) { returnDom = _react2.default.createElement(YYCreateView, _extends({}, _props, { pluginUrl: pluginUrl, parserControl: parserControl, appCode: appCode, pageCode: pageCode, billTypeCode: billTypeCode })); } else if (enableLoading) { returnDom = _react2.default.createElement('p', null); } return returnDom; } }]); return YYCreatePageProd; }(_react2.default.Component); YYCreatePageProd.defaultProps = { uiMeta: null, appCode: null, pageCode: null, uiParser: null, uiEvent: null, uiParams: null, mode: null, serverUrl: MODULE_URL.GET_PAGE_DATA, enableOrg: true, enableCache: false, enableLoading: true }; module.exports = YYCreatePageProd;