yylib-quick-mobile
Version:
yylib-quick-mobile
247 lines (215 loc) • 11.2 kB
JavaScript
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;
;