forked from github/dataease
refactor: 组件事件支持选择跳转方式
This commit is contained in:
parent
86c1e7f3fc
commit
3ec7bbaf6c
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -33,7 +33,8 @@ export const BASE_EVENTS = {
|
||||
{ key: 'refreshView', label: '刷新图表' }
|
||||
],
|
||||
jump: {
|
||||
value: 'https://'
|
||||
value: 'https://',
|
||||
type: '_blank'
|
||||
},
|
||||
download: {
|
||||
value: true
|
||||
|
@ -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') {
|
||||
|
Loading…
Reference in New Issue
Block a user