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 @@
-
+
+