UNPKG

amis

Version:

一种MIS页面生成工具

747 lines (743 loc) 36.3 kB
/** * amis v6.12.0 * build time: 2025-04-03 * Copyright 2018-2025 baidu */ import { __extends, __awaiter, __generator, __spreadArray, __read, __assign, __decorate, __metadata } from 'tslib'; import React from 'react'; import { bulkBindFunctions, isEffectiveApi, isApiOutdated, isObjectShallowModified, filter, filterTarget, isVisible, createObject, evalExpression, setThemeClassName, buildStyle, CustomStyle, autobind, ScopedContext, Renderer, ServiceStore } from 'amis-core'; import { Spinner, Alert2, PullRefresh } from 'amis-ui'; import { isAlive } from 'mobx-state-tree'; var Page = /** @class */ (function (_super) { __extends(Page, _super); function Page(props) { var _this = _super.call(this, props) || this; // autobind 会让继承里面的 super 指向有问题,所以先这样! bulkBindFunctions(_this, [ 'handleAction', 'handleChange', 'handleBulkChange', 'handleQuery', 'handleDialogConfirm', 'handleDialogClose', 'handleDrawerConfirm', 'handleDrawerClose', 'handleClick', 'reload', 'silentReload', 'initInterval' ]); _this.style = document.createElement('style'); _this.style.setAttribute('data-page', ''); document.getElementsByTagName('head')[0].appendChild(_this.style); _this.updateStyle(); _this.varStyle = document.createElement('style'); _this.varStyle.setAttribute('data-vars', ''); document.getElementsByTagName('head')[0].appendChild(_this.varStyle); _this.updateVarStyle(); return _this; } /** * 构建 css */ Page.prototype.updateStyle = function () { if (this.props.css || this.props.mobileCSS) { this.style.innerHTML = "\n ".concat(this.buildCSS(this.props.css), "\n\n @media (max-width: 768px) {\n ").concat(this.buildCSS(this.props.mobileCSS), "\n }\n "); } else { this.style.innerHTML = ''; } }; Page.prototype.buildCSS = function (cssRules) { if (!cssRules) { return ''; } var css = ''; for (var selector in cssRules) { var declaration = cssRules[selector]; var declarationStr = ''; for (var property in declaration) { var innerstr = ''; var innerValue = declaration[property]; if (typeof innerValue === 'string') { declarationStr += " ".concat(property, ": ").concat(innerValue, ";\n"); } else { for (var propsName in innerValue) { innerstr += " ".concat(propsName, ":").concat(innerValue[propsName], ";"); } declarationStr += " ".concat(property, " {").concat(innerstr, "}\n"); } } css += "\n ".concat(selector, " {\n ").concat(declarationStr, "\n }\n "); } return css; }; /** * 构建用于 css 变量的内联样式 */ Page.prototype.updateVarStyle = function () { var cssVars = this.props.cssVars; var cssVarsContent = ''; if (cssVars) { for (var key in cssVars) { if (key.startsWith('--')) { if (key.indexOf(':') !== -1) { continue; } var value = cssVars[key]; // 这是为了防止 xss,可能还有别的 if (typeof value === 'string' && (value.indexOf('expression(') !== -1 || value.indexOf(';') !== -1)) { continue; } cssVarsContent += "".concat(key, ": ").concat(value, "; \n"); } } this.varStyle.innerHTML = "\n :root {\n ".concat(cssVarsContent, "\n }\n "); } }; Page.prototype.componentDidMount = function () { return __awaiter(this, void 0, void 0, function () { var _a, initApi, initFetch, initFetchOn, store, messages, data, dispatchEvent, env, rendererEvent; return __generator(this, function (_b) { switch (_b.label) { case 0: _a = this.props, initApi = _a.initApi, initFetch = _a.initFetch, initFetchOn = _a.initFetchOn, store = _a.store, messages = _a.messages, data = _a.data, dispatchEvent = _a.dispatchEvent, env = _a.env; this.mounted = true; return [4 /*yield*/, dispatchEvent('init', data, this)]; case 1: rendererEvent = _b.sent(); // Page加载完成时触发 pageLoaded 事件 if (env === null || env === void 0 ? void 0 : env.tracker) { env.tracker({ eventType: 'pageLoaded' }, this.props); } if ((rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) || !isAlive(store)) { return [2 /*return*/]; } if (isEffectiveApi(initApi, store.data, initFetch, initFetchOn)) { store .fetchInitData(initApi, store.data, { successMessage: messages && messages.fetchSuccess, errorMessage: messages && messages.fetchFailed }) .then(this.initInterval); } return [2 /*return*/]; } }); }); }; Page.prototype.componentDidUpdate = function (prevProps) { var props = this.props; var store = props.store; var initApi = props.initApi; if ( // 前一次不构成条件,这次更新构成了条件,则需要重新拉取 (props.initFetchOn && props.initFetch && !prevProps.initFetch) || // 构成了条件,同时 url 里面有变量,且上次和这次还不一样,则需要重新拉取。 (props.initFetch !== false && isApiOutdated(prevProps.initApi, initApi, prevProps.data, props.data))) { var messages = props.messages; isEffectiveApi(initApi, store.data) && store .fetchData(initApi, store.data, { successMessage: messages && messages.fetchSuccess, errorMessage: messages && messages.fetchFailed }) .then(this.initInterval); } if (JSON.stringify(props.css) !== JSON.stringify(prevProps.css) || JSON.stringify(props.mobileCSS) !== JSON.stringify(prevProps.mobileCSS)) { this.updateStyle(); } if (JSON.stringify(props.cssVars) !== JSON.stringify(prevProps.cssVars)) { this.updateVarStyle(); } if (isObjectShallowModified(prevProps.defaultData, props.defaultData)) { store.reInitData(props.defaultData); } }; Page.prototype.componentWillUnmount = function () { var _a, _b; this.mounted = false; clearTimeout(this.timer); if (this.style) { (_a = this.style.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this.style); } if (this.varStyle) { (_b = this.varStyle.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(this.varStyle); } }; Page.prototype.reloadTarget = function (target, data) { // 会被覆写 }; Page.prototype.handleAction = function (e, action, ctx, throwErrors, delegate) { var _this = this; if (throwErrors === void 0) { throwErrors = false; } var _a = this.props, env = _a.env, store = _a.store, messages = _a.messages, onAction = _a.onAction; if (action.actionType === 'dialog') { store.setCurrentAction(action, this.props.resolveDefinitions); return new Promise(function (resolve) { store.openDialog(ctx, undefined, function (confirmed, value) { var _a; (_a = action.callback) === null || _a === void 0 ? void 0 : _a.call(action, confirmed, value); resolve({ confirmed: confirmed, value: value }); }, delegate || _this.context); }); } else if (action.actionType === 'drawer') { store.setCurrentAction(action, this.props.resolveDefinitions); return new Promise(function (resolve) { store.openDrawer(ctx, undefined, function (confirmed, value) { var _a; (_a = action.callback) === null || _a === void 0 ? void 0 : _a.call(action, confirmed, value); resolve({ confirmed: confirmed, value: value }); }, delegate); }); } else if (action.actionType === 'ajax') { store.setCurrentAction(action, this.props.resolveDefinitions); if (!isEffectiveApi(action.api, ctx)) { return; } return store .saveRemote(action.api, ctx, { successMessage: (action.messages && action.messages.success) || (messages && messages.saveSuccess), errorMessage: (action.messages && action.messages.failed) || (messages && messages.saveSuccess) }) .then(function () { return __awaiter(_this, void 0, void 0, function () { var redirect; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!(action.feedback && isVisible(action.feedback, store.data))) return [3 /*break*/, 2]; return [4 /*yield*/, this.openFeedback(action.feedback, store.data)]; case 1: _a.sent(); _a.label = 2; case 2: redirect = action.redirect && filter(action.redirect, store.data); redirect && env.jumpTo(redirect, action, store.data); action.reload && this.reloadTarget(filterTarget(action.reload, store.data), store.data); return [2 /*return*/]; } }); }); }) .catch(function (e) { if (throwErrors || action.countDown) { throw e; } }); } else { return onAction(e, action, ctx, throwErrors, delegate || this.context); } }; Page.prototype.handleQuery = function (query) { if (this.props.initApi) { // 如果是分页动作,则看接口里面有没有用,没用则 return false // 让组件自己去排序 if ((query === null || query === void 0 ? void 0 : query.hasOwnProperty('orderBy')) && !isApiOutdated(this.props.initApi, this.props.initApi, this.props.store.data, createObject(this.props.store.data, query))) { return false; } this.receive(query); return; } if (this.props.onQuery) { return this.props.onQuery(query); } else { return false; } }; Page.prototype.handleDialogConfirm = function (values, action) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } var store = this.props.store; if (action.mergeData && values.length === 1 && values[0]) { store.updateData(values[0]); } var dialog = store.action.dialog; if (dialog && dialog.onConfirm && dialog.onConfirm.apply(dialog, __spreadArray([values, action], __read(args), false)) === false) { return; } store.closeDialog(true, values); }; Page.prototype.handleDialogClose = function (confirmed) { if (confirmed === void 0) { confirmed = false; } var store = this.props.store; store.closeDialog(confirmed); }; Page.prototype.handleDrawerConfirm = function (values, action) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } var store = this.props.store; if (action.mergeData && values.length === 1 && values[0]) { store.updateData(values[0]); } var dialog = store.action.dialog; if (dialog && dialog.onConfirm && dialog.onConfirm.apply(dialog, __spreadArray([values, action], __read(args), false)) === false) { return; } store.closeDrawer(true, values); }; Page.prototype.handleDrawerClose = function () { var store = this.props.store; store.closeDrawer(false); }; Page.prototype.handleClick = function (e) { var _a; var target = e.target; var env = this.props.env; var link = target.tagName === 'A' && target.hasAttribute('data-link') ? target.getAttribute('data-link') : (_a = target.closest('a[data-link]')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-link'); if (env && link) { env.jumpTo(link, undefined, this.props.data); e.preventDefault(); } }; Page.prototype.handleResizeMouseDown = function (e) { // todo 可能 ie 不正确 var isRightMB = e.nativeEvent.which == 3; if (isRightMB) { return; } this.codeWrap = e.currentTarget.parentElement; document.addEventListener('mousemove', this.handleResizeMouseMove); document.addEventListener('mouseup', this.handleResizeMouseUp); this.startX = e.clientX; this.startWidth = this.codeWrap.offsetWidth; }; Page.prototype.handleResizeMouseMove = function (e) { var _a = this.props, _b = _a.asideMinWidth, asideMinWidth = _b === void 0 ? 160 : _b, _c = _a.asideMaxWidth, asideMaxWidth = _c === void 0 ? 350 : _c, asidePosition = _a.asidePosition; var dx = e.clientX - this.startX; var mx = asidePosition === 'right' ? this.startWidth - dx : this.startWidth + dx; var width = Math.min(Math.max(mx, asideMinWidth), asideMaxWidth); this.codeWrap.style.cssText += "width: ".concat(width, "px"); }; Page.prototype.handleResizeMouseUp = function () { document.removeEventListener('mousemove', this.handleResizeMouseMove); document.removeEventListener('mouseup', this.handleResizeMouseUp); }; Page.prototype.openFeedback = function (dialog, ctx) { var _this = this; return new Promise(function (resolve) { var store = _this.props.store; store.setCurrentAction({ type: 'button', actionType: 'dialog', dialog: dialog }, _this.props.resolveDefinitions); store.openDialog(ctx, undefined, function (confirmed) { resolve(confirmed); }, _this.context); }); }; Page.prototype.reload = function (subpath, query, ctx, silent, replace) { return __awaiter(this, void 0, void 0, function () { var _a, store, initApi, value; return __generator(this, function (_b) { switch (_b.label) { case 0: if (query) { return [2 /*return*/, this.receive(query, undefined, replace)]; } _a = this.props, store = _a.store, initApi = _a.initApi; clearTimeout(this.timer); if (!isEffectiveApi(initApi, store.data)) return [3 /*break*/, 2]; return [4 /*yield*/, store.fetchData(initApi, store.data, { silent: silent })]; case 1: value = _b.sent(); this.initInterval(value); _b.label = 2; case 2: return [2 /*return*/, store.data]; } }); }); }; Page.prototype.receive = function (values, subPath, replace) { var store = this.props.store; store.updateData(values, undefined, replace); this.reload(); }; Page.prototype.silentReload = function (target, query) { this.reload(query, undefined, undefined, true); }; Page.prototype.initInterval = function (value) { var _a; var _b = this.props, interval = _b.interval, silentPolling = _b.silentPolling, stopAutoRefreshWhen = _b.stopAutoRefreshWhen, data = _b.data, dispatchEvent = _b.dispatchEvent, store = _b.store; dispatchEvent('inited', createObject(data, __assign(__assign({}, value === null || value === void 0 ? void 0 : value.data), { responseData: (value === null || value === void 0 ? void 0 : value.ok) ? (_a = value === null || value === void 0 ? void 0 : value.data) !== null && _a !== void 0 ? _a : {} : value, responseStatus: (value === null || value === void 0 ? void 0 : value.status) === undefined ? ((store === null || store === void 0 ? void 0 : store.error) ? 1 : 0) : value === null || value === void 0 ? void 0 : value.status, responseMsg: (value === null || value === void 0 ? void 0 : value.msg) || (store === null || store === void 0 ? void 0 : store.msg) }))); (value === null || value === void 0 ? void 0 : value.ok) && // 接口正常返回才继续轮训 interval && this.mounted && (!stopAutoRefreshWhen || !evalExpression(stopAutoRefreshWhen, data)) && (this.timer = setTimeout(silentPolling ? this.silentReload : this.reload, Math.max(interval, 1000))); return value; }; Page.prototype.handleRefresh = function () { return __awaiter(this, void 0, void 0, function () { var _a, dispatchEvent, data, rendererEvent; return __generator(this, function (_b) { switch (_b.label) { case 0: _a = this.props, dispatchEvent = _a.dispatchEvent, data = _a.data; return [4 /*yield*/, dispatchEvent('pullRefresh', data)]; case 1: rendererEvent = _b.sent(); if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) { return [2 /*return*/]; } this.reload(); return [2 /*return*/]; } }); }); }; Page.prototype.handleChange = function (value, name, submit, changePristine) { var _a = this.props, store = _a.store, onChange = _a.onChange; if (typeof name === 'string' && name) { store.changeValue(name, value, changePristine); } onChange === null || onChange === void 0 ? void 0 : onChange.apply(null, arguments); }; Page.prototype.handleBulkChange = function (values) { var _a, _b; (_b = (_a = this.props.store) === null || _a === void 0 ? void 0 : _a.updateData) === null || _b === void 0 ? void 0 : _b.call(_a, values); }; Page.prototype.renderHeader = function () { var _a = this.props, title = _a.title, subTitle = _a.subTitle, remark = _a.remark, remarkPlacement = _a.remarkPlacement, headerClassName = _a.headerClassName, toolbarClassName = _a.toolbarClassName, toolbar = _a.toolbar, render = _a.render, store = _a.store, initApi = _a.initApi, popOverContainer = _a.popOverContainer, env = _a.env, cx = _a.classnames, regions = _a.regions, __ = _a.translate, id = _a.id, themeCss = _a.themeCss; var subProps = { onAction: this.handleAction, onQuery: initApi ? this.handleQuery : undefined, onChange: this.handleChange, onBulkChange: this.handleBulkChange, pageLoading: store.loading }; var header, right; if (Array.isArray(regions) ? ~regions.indexOf('header') : title || subTitle) { header = (React.createElement("div", { className: cx("Page-header", headerClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'headerControlClassName', id: id, themeCss: themeCss }))) }, title ? (React.createElement("h2", { className: cx('Page-title', setThemeClassName(__assign(__assign({}, this.props), { name: 'titleControlClassName', id: id, themeCss: themeCss }))) }, render('title', title, subProps), remark ? render('remark', { type: 'remark', tooltip: remark, placement: remarkPlacement || 'bottom', container: popOverContainer || env.getModalContainer }) : null)) : null, subTitle && (React.createElement("small", { className: cx('Page-subTitle') }, render('subTitle', subTitle, subProps))))); } if (Array.isArray(regions) ? ~regions.indexOf('toolbar') : toolbar) { right = (React.createElement("div", { className: cx("Page-toolbar", toolbarClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'toolbarControlClassName', id: id, themeCss: themeCss }))) }, render('toolbar', toolbar || '', subProps))); } if (header && right) { return (React.createElement("div", { className: cx('Page-headerRow') }, header, right)); } return header || right; }; Page.prototype.renderContent = function (subProps) { var _a = this.props, store = _a.store, body = _a.body, bodyClassName = _a.bodyClassName, render = _a.render, cx = _a.classnames, showErrorMsg = _a.showErrorMsg, regions = _a.regions, __ = _a.translate, loadingConfig = _a.loadingConfig, initApi = _a.initApi, id = _a.id, env = _a.env, themeCss = _a.themeCss; return (React.createElement("div", { className: cx('Page-content') }, React.createElement("div", { className: cx('Page-main') }, this.renderHeader(), React.createElement("div", { className: cx("Page-body", bodyClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'bodyControlClassName', id: id, themeCss: themeCss }))), role: "page-body" }, React.createElement(Spinner, { size: "lg", overlay: true, key: "info", show: store.loading, loadingConfig: loadingConfig }), !env.forceSilenceInsideError && store.error && showErrorMsg !== false ? (React.createElement(Alert2, { level: "danger", showCloseButton: true, onClose: store.clearMessage }, store.msg)) : null, (Array.isArray(regions) ? ~regions.indexOf('body') : body) ? render('body', body || '', subProps) : null)))); }; Page.prototype.render = function () { var _a = this.props, className = _a.className, store = _a.store, body = _a.body, bodyClassName = _a.bodyClassName, render = _a.render, aside = _a.aside, asideClassName = _a.asideClassName, cx = _a.classnames, showErrorMsg = _a.showErrorMsg, initApi = _a.initApi, regions = _a.regions, style = _a.style, data = _a.data, asideResizor = _a.asideResizor, asideSticky = _a.asideSticky, pullRefresh = _a.pullRefresh, mobileUI = _a.mobileUI, __ = _a.translate, loadingConfig = _a.loadingConfig, id = _a.id, wrapperCustomStyle = _a.wrapperCustomStyle, env = _a.env, themeCss = _a.themeCss, asidePosition = _a.asidePosition; var subProps = { onAction: this.handleAction, onQuery: initApi ? this.handleQuery : undefined, onChange: this.handleChange, onBulkChange: this.handleBulkChange, pageLoading: store.loading }; var hasAside = Array.isArray(regions) ? ~regions.indexOf('aside') : aside && (!Array.isArray(aside) || aside.length); var styleVar = buildStyle(style, data); var pageContent = this.renderContent(subProps); return (React.createElement("div", { className: cx("Page", hasAside ? "Page--withSidebar" : '', hasAside && asideSticky ? "Page--asideSticky" : '', hasAside && asidePosition ? "Page--".concat(asidePosition, "Aside") : '', className, setThemeClassName(__assign({ name: 'baseControlClassName', id: id, themeCss: themeCss }, this.props)), setThemeClassName(__assign({ name: 'wrapperCustomStyle', id: id, themeCss: wrapperCustomStyle }, this.props))), onClick: this.handleClick, style: styleVar }, hasAside ? (React.createElement("div", { className: cx("Page-aside", asideResizor ? 'relative' : 'Page-aside--withWidth', asideClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'asideControlClassName', id: id, themeCss: themeCss }))) }, render('aside', aside || '', __assign(__assign({}, subProps), (typeof aside === 'string' ? { inline: false, className: "Page-asideTplWrapper" } : null))), asideResizor ? (React.createElement("div", { onMouseDown: this.handleResizeMouseDown, className: cx("Page-asideResizor") })) : null)) : null, mobileUI && pullRefresh && !pullRefresh.disabled ? (React.createElement(PullRefresh, __assign({}, pullRefresh, { translate: __, onRefresh: this.handleRefresh }), pageContent)) : (pageContent), render('dialog', __assign(__assign({}, (store.action && store.action.dialog)), { type: 'dialog' }), { key: 'dialog', data: store.dialogData, onConfirm: this.handleDialogConfirm, onClose: this.handleDialogClose, show: store.dialogOpen, onAction: this.handleAction, onQuery: initApi ? this.handleQuery : undefined }), render('drawer', __assign(__assign({}, (store.action && store.action.drawer)), { type: 'drawer' }), { key: 'drawer', data: store.drawerData, onConfirm: this.handleDrawerConfirm, onClose: this.handleDrawerClose, show: store.drawerOpen, onAction: this.handleAction, onQuery: initApi ? this.handleQuery : undefined }), React.createElement(CustomStyle, __assign({}, this.props, { config: { wrapperCustomStyle: wrapperCustomStyle, id: id, themeCss: themeCss, classNames: [ { key: 'baseControlClassName', weights: { default: { important: true }, hover: { important: true }, active: { important: true } } }, { key: 'bodyControlClassName' }, { key: 'headerControlClassName' }, { key: 'titleControlClassName' }, { key: 'toolbarControlClassName' }, { key: 'asideControlClassName' } ] }, env: env })))); }; Page.defaultProps = { asideClassName: '', bodyClassName: '', headerClassName: '', initFetch: true, // primaryField: 'id', toolbarClassName: '', messages: {}, asideSticky: true, asidePosition: 'left', pullRefresh: { disabled: true } }; Page.propsList = [ 'title', 'subTitle', 'initApi', 'initFetchOn', 'initFetch', 'headerClassName', 'bodyClassName', 'asideClassName', 'toolbarClassName', 'toolbar', 'body', 'aside', 'messages', 'style', 'showErrorMsg' ]; __decorate([ autobind, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], Page.prototype, "handleResizeMouseDown", null); __decorate([ autobind, __metadata("design:type", Function), __metadata("design:paramtypes", [MouseEvent]), __metadata("design:returntype", void 0) ], Page.prototype, "handleResizeMouseMove", null); __decorate([ autobind, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], Page.prototype, "handleResizeMouseUp", null); __decorate([ autobind, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], Page.prototype, "handleRefresh", null); return Page; }(React.Component)); var PageRendererBase = /** @class */ (function (_super) { __extends(PageRendererBase, _super); function PageRendererBase(props, context) { var _this = _super.call(this, props) || this; var scoped = context; scoped.registerComponent(_this); return _this; } PageRendererBase.prototype.componentWillUnmount = function () { var scoped = this.context; scoped.unRegisterComponent(this); _super.prototype.componentWillUnmount.call(this); }; PageRendererBase.prototype.reloadTarget = function (target, data) { var scoped = this.context; scoped.reload(target, data); }; PageRendererBase.prototype.handleAction = function (e, action, ctx, throwErrors, delegate) { if (throwErrors === void 0) { throwErrors = false; } return __awaiter(this, void 0, void 0, function () { var scoped, ret; return __generator(this, function (_a) { switch (_a.label) { case 0: scoped = delegate || this.context; if (!(action.actionType === 'reload')) return [3 /*break*/, 1]; action.target && scoped.reload(action.target, ctx); return [3 /*break*/, 4]; case 1: if (!action.target) return [3 /*break*/, 2]; action.target.split(',').forEach(function (name) { var target = scoped.getComponentByName(name); target && target.doAction && target.doAction(__assign(__assign({}, action), { target: undefined }), ctx); }); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, _super.prototype.handleAction.call(this, e, action, ctx, throwErrors, delegate)]; case 3: ret = _a.sent(); if (action.reload && ~['url', 'link', 'jump'].indexOf(action.actionType)) { scoped.reload(action.reload, ctx); } return [2 /*return*/, ret]; case 4: return [2 /*return*/]; } }); }); }; PageRendererBase.prototype.handleDialogConfirm = function (values, action) { var _a, _b; var rest = []; for (var _i = 2; _i < arguments.length; _i++) { rest[_i - 2] = arguments[_i]; } var store = this.props.store; var dialogAction = store.action; var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : dialogAction.reload; var scoped = store.getDialogScoped() || this.context; _super.prototype.handleDialogConfirm.apply(this, __spreadArray([values, action], __read(rest), false)); if (reload) { scoped.reload(reload, store.data); } else if ((scoped === null || scoped === void 0 ? void 0 : scoped.component) !== this && ((_b = scoped.component) === null || _b === void 0 ? void 0 : _b.reload)) { scoped.component.reload(); } else { // 没有设置,则自动让页面中 crud 刷新。 this.context .getComponents() .filter(function (item) { return item.props.type === 'crud'; }) .forEach(function (item) { return item.reload && item.reload(); }); } }; PageRendererBase.prototype.handleDrawerConfirm = function (values, action) { var _this = this; var _a; var rest = []; for (var _i = 2; _i < arguments.length; _i++) { rest[_i - 2] = arguments[_i]; } var store = this.props.store; var drawerAction = store.action; var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : drawerAction.reload; var scoped = store.getDrawerScoped() || this.context; _super.prototype.handleDrawerConfirm.call(this, values, action); // 稍等会,等动画结束。 setTimeout(function () { var _a; if (reload) { scoped.reload(reload, store.data); } else if (scoped.component !== _this && ((_a = scoped === null || scoped === void 0 ? void 0 : scoped.component) === null || _a === void 0 ? void 0 : _a.reload)) { scoped.component.reload(); } else { _this.context .getComponents() .filter(function (item) { return item.props.type === 'crud'; }) .forEach(function (item) { return item.reload && item.reload(); }); } }, 300); }; PageRendererBase.prototype.setData = function (values, replace) { return this.props.store.updateData(values, undefined, replace); }; PageRendererBase.prototype.getData = function () { var store = this.props.store; return store.data; }; PageRendererBase.contextType = ScopedContext; return PageRendererBase; }(Page)); var PageRenderer = /** @class */ (function (_super) { __extends(PageRenderer, _super); function PageRenderer() { return _super !== null && _super.apply(this, arguments) || this; } PageRenderer = __decorate([ Renderer({ type: 'page', storeType: ServiceStore.name, isolateScope: true }) ], PageRenderer); return PageRenderer; }(PageRendererBase)); export { PageRenderer, PageRendererBase, Page as default };