refactor: 组件事件支持选择跳转方式

This commit is contained in:
wangjiahao 2024-09-18 18:46:42 +08:00
parent 86c1e7f3fc
commit 3ec7bbaf6c
4 changed files with 53 additions and 4 deletions

View File

@ -259,10 +259,22 @@ const onWrapperClick = e => {
dvMainStore.popAreaActiveSwitch()
})
} else if (config.value.events.type === 'jump') {
const url = config.value.events.jump.value
const jumpType = config.value.events.jump.type
try {
window.open(config.value.events.jump.value, '_blank')
let newWindow
if ('newPop' === jumpType) {
window.open(
url,
'_blank',
'width=800,height=600,left=200,top=100,toolbar=no,scrollbars=yes,resizable=yes,location=no'
)
} else {
newWindow = window.open(url, jumpType)
}
initOpenHandler(newWindow)
} catch (e) {
console.info('Something wrong when try to jump: ' + config.value.events?.jump?.value)
console.warn(t('visualization.url_check_error') + ':' + url)
}
} else if (config.value.events.type === 'refreshDataV') {
useEmitt().emitter.emit('componentRefresh')
@ -276,6 +288,16 @@ const onWrapperClick = e => {
}
}
const openHandler = ref(null)
const initOpenHandler = newWindow => {
if (openHandler?.value) {
const pm = {
methodName: 'initOpenHandler',
args: newWindow
}
openHandler.value.invokeMethod(pm)
}
}
const deepScale = computed(() => scale.value / 100)
</script>

View File

@ -93,8 +93,32 @@ const onJumpValueChange = () => {
@change="onJumpValueChange"
/>
</el-form-item>
<el-form-item
v-if="eventsInfo.type === 'jump' && eventsInfo.jump.type"
class="form-item"
:class="'form-item-' + themes"
style="margin-bottom: 8px"
>
<el-radio-group
size="small"
v-model="eventsInfo.jump.type"
:effect="themes"
:disabled="!eventsInfo.checked"
@change="onJumpValueChange"
>
<el-radio :effect="themes" label="_blank">新开页面</el-radio>
<el-radio :effect="themes" label="_self">当前页面</el-radio>
<el-radio :effect="themes" label="newPop">弹窗页面</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</el-row>
</template>
<style scoped lang="less"></style>
<style scoped lang="less">
.form-item-dark {
.ed-radio {
margin-right: 4px !important;
}
}
</style>

View File

@ -33,7 +33,8 @@ export const BASE_EVENTS = {
{ key: 'refreshView', label: '刷新图表' }
],
jump: {
value: 'https://'
value: 'https://',
type: '_blank'
},
download: {
value: true

View File

@ -190,6 +190,8 @@ export function historyItemAdaptor(
componentItem.events.type !== 'displayChange'
? componentItem.events
: deepCopy(BASE_EVENTS)
componentItem.events['jump'].type = componentItem.events['jump'].type || '_blank'
componentItem['category'] = componentItem['category'] || 'base'
if (componentItem.component === 'DeTabs') {