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() dvMainStore.popAreaActiveSwitch()
}) })
} else if (config.value.events.type === 'jump') { } else if (config.value.events.type === 'jump') {
const url = config.value.events.jump.value
const jumpType = config.value.events.jump.type
try { 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) { } 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') { } else if (config.value.events.type === 'refreshDataV') {
useEmitt().emitter.emit('componentRefresh') 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) const deepScale = computed(() => scale.value / 100)
</script> </script>

View File

@ -93,8 +93,32 @@ const onJumpValueChange = () => {
@change="onJumpValueChange" @change="onJumpValueChange"
/> />
</el-form-item> </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-form>
</el-row> </el-row>
</template> </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: '刷新图表' } { key: 'refreshView', label: '刷新图表' }
], ],
jump: { jump: {
value: 'https://' value: 'https://',
type: '_blank'
}, },
download: { download: {
value: true value: true

View File

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