diff --git a/core/core-frontend/src/permission.ts b/core/core-frontend/src/permission.ts index 7a167efc56..ab79808e8e 100644 --- a/core/core-frontend/src/permission.ts +++ b/core/core-frontend/src/permission.ts @@ -38,7 +38,16 @@ router.beforeEach(async (to, from, next) => { done() loadDone() if (to.name === 'link') { - window.location.href = window.origin + '/mobile.html#' + to.path + let linkQuery = '' + if (Object.keys(to.query)) { + const tempQuery = Object.keys(to.query) + .map(key => key + '=' + to.query[key]) + .join('&') + if (tempQuery) { + linkQuery = '?' + tempQuery + } + } + window.location.href = window.origin + '/mobile.html#' + to.path + linkQuery } else if (to.path === '/dvCanvas') { next('/notSupport') } else if ( diff --git a/core/core-frontend/src/views/data-visualization/PreviewCanvasMobile.vue b/core/core-frontend/src/views/data-visualization/PreviewCanvasMobile.vue index f00d9af9b6..430277fe04 100644 --- a/core/core-frontend/src/views/data-visualization/PreviewCanvasMobile.vue +++ b/core/core-frontend/src/views/data-visualization/PreviewCanvasMobile.vue @@ -11,6 +11,7 @@ import { ElMessage } from 'element-plus-secondary' import { useEmbedded } from '@/store/modules/embedded' import { useI18n } from '@/hooks/web/useI18n' import { XpackComponent } from '@/components/plugin' +import { propTypes } from '@/utils/propTypes' const dvMainStore = dvMainStoreWithOut() const { t } = useI18n() @@ -32,7 +33,8 @@ const props = defineProps({ isSelector: { type: Boolean, default: false - } + }, + ticketArgs: propTypes.string.def(null) }) const loadCanvasDataAsync = async (dvId, dvType) => { @@ -56,6 +58,13 @@ const loadCanvasDataAsync = async (dvId, dvType) => { console.error(e) } } + let argsObject = null + try { + argsObject = JSON.parse(props.ticketArgs) + } catch (error) { + console.error(error) + } + const hasTicketArgs = argsObject && Object.keys(argsObject) // 添加外部参数 let attachParam @@ -65,9 +74,14 @@ const loadCanvasDataAsync = async (dvId, dvType) => { // 外部参数(iframe 或者 iframe嵌入) const attachParamsEncode = router.currentRoute.value.query.attachParams - if (attachParamsEncode) { + if (attachParamsEncode || hasTicketArgs) { try { - attachParam = JSON.parse(Base64.decode(decodeURIComponent(attachParamsEncode as string))) + if (!!attachParamsEncode) { + attachParam = JSON.parse(Base64.decode(decodeURIComponent(attachParamsEncode as string))) + } + if (hasTicketArgs) { + attachParam = Object.assign({}, attachParam, argsObject) + } } catch (e) { console.error(e) ElMessage.error(t('visualization.outer_param_decode_error')) diff --git a/core/core-frontend/src/views/share/link/mobile.vue b/core/core-frontend/src/views/share/link/mobile.vue index 6e3d55be11..c03b349096 100644 --- a/core/core-frontend/src/views/share/link/mobile.vue +++ b/core/core-frontend/src/views/share/link/mobile.vue @@ -3,13 +3,23 @@ - + +