diff --git a/src/Add-on/Erp/JumpView.tsx b/src/Add-on/Erp/JumpView.tsx new file mode 100644 index 000000000..3baa7f19b --- /dev/null +++ b/src/Add-on/Erp/JumpView.tsx @@ -0,0 +1,68 @@ +import * as React from "react"; +import { forwardRef, useEffect } from "react"; +import { app } from "../../ApplicationServices/Application"; +import { StoreageKeys } from "../../Common/StoreageKeys"; +import { ErpURL } from "./HostURL"; +interface JumpProp +{ + routeName: string; + routeParams: object; +} +const JumpView: React.FC = forwardRef((props) => +{ + const iframe = React.createRef(); + const loadedEvent = (ev) => + { + if (ev.data.command == 'loaded') + { + iframe.current.contentWindow.postMessage( + { + command: 'jumpUrl', + content: { + route: { name: props.routeName, params: props.routeParams }, + session: localStorage.getItem(StoreageKeys.PlatSession), + token: localStorage.getItem(StoreageKeys.PlatToken), + }, + }, + "*" + ); + } + }; + const closeEvent = (ev) => + { + if (ev.data.command == 'close') + { + app.Editor.ModalManage.Destory(); + } + + }; + useEffect(() => + { + window.addEventListener('message', loadedEvent); + window.addEventListener('message', closeEvent); + setTimeout(() => + { + window.removeEventListener('message', loadedEvent); + window.removeEventListener('message', closeEvent); + app.Editor.ModalManage.Destory(); + + }, 1000); + return () => + { + window.removeEventListener('message', loadedEvent); + window.removeEventListener('message', closeEvent); + }; + }); + const includes = ErpURL.host.includes('?'); + const url = ErpURL.host.replace(/\/$/, '') + `${includes ? '&' : '/?'}stamp=${new Date().getTime()}#/` + 'openUrl'; + return ( +