优化跳转新地址
parent
87c5746a01
commit
cfe5d4c5ec
|
|
@ -1,18 +1,38 @@
|
|||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
|
||||
import { mapFun } from '@/hooks/ceshiFun.hook';
|
||||
import { router } from '@/router';
|
||||
|
||||
const chartEditStore = useChartEditStore();
|
||||
const ceshiFunction = mapFun();
|
||||
|
||||
// 交互事件
|
||||
export const eventHandlerHook = (comonentList: any, elementList: any, params:any = null) => {
|
||||
export const eventHandlerHook = (comonentList: any, elementList: any, params: any = null) => {
|
||||
let obj: any = {};
|
||||
let index = 0;
|
||||
for (let i = 0; i < comonentList.length; i++) {
|
||||
for (let j = 0; j < elementList.length; j++) {
|
||||
if (elementList[j].movement == 'newaddress') {
|
||||
// 跳转新地址
|
||||
window.open(elementList[j].url);
|
||||
// 打开新页面
|
||||
if (elementList[j].openNewPage) {
|
||||
if (elementList[j].skipType == 'routeLink') {
|
||||
const routeUrl = router.resolve({
|
||||
path: elementList[j].url,
|
||||
});
|
||||
window.open(routeUrl.href, '_blank');
|
||||
return;
|
||||
} else {
|
||||
window.open(elementList[j].url, '_blank');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (elementList[j].skipType == 'routeLink') {
|
||||
router.replace(elementList[j].url);
|
||||
return;
|
||||
} else {
|
||||
window.open(elementList[j].url, '_self');
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (elementList[j].movement == 'reveal') {
|
||||
// 显示
|
||||
for (let k = 0; k < elementList[j].elementId.length; k++) {
|
||||
|
|
@ -37,9 +57,9 @@ export const eventHandlerHook = (comonentList: any, elementList: any, params:any
|
|||
// 地图事件联动
|
||||
for (let k = 0; k < elementList[j].elementId.length; k++) {
|
||||
if (comonentList[i].id == elementList[j].elementId[k]) {
|
||||
if(params){
|
||||
if (params) {
|
||||
ceshiFunction[elementList[j].funName](params);
|
||||
}else{
|
||||
} else {
|
||||
ceshiFunction[elementList[j].funName]();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,10 +71,43 @@
|
|||
:options="funSelectOptions"
|
||||
/>
|
||||
</div>
|
||||
<div class="movement-type__element" v-if="panel.movement == 'newaddress'">
|
||||
跳转新地址
|
||||
<n-input v-model:value="panel.url" type="text" placeholder="请输入网址" />
|
||||
</div>
|
||||
<template v-if="panel.movement == 'newaddress'">
|
||||
<div class="movement-type__element">
|
||||
跳转方式
|
||||
<n-select
|
||||
v-model:value="panel.skipType"
|
||||
placeholder="请选择"
|
||||
:options="skipTypeOptions"
|
||||
/>
|
||||
</div>
|
||||
<div class="movement-type__element">
|
||||
是否在新页面打开
|
||||
<n-switch v-model:value="panel.openNewPage" />
|
||||
</div>
|
||||
<!-- 外部链接 -->
|
||||
<div class="movement-type__element" v-if="panel.skipType == 'outLink'">
|
||||
外部链接
|
||||
<n-input v-model:value="panel.url" type="text" placeholder="请输入网址" />
|
||||
</div>
|
||||
<!-- 发布地址 -->
|
||||
<div class="movement-type__element" v-if="panel.skipType == 'publishLink'">
|
||||
发布地址
|
||||
<n-select
|
||||
v-model:value="panel.url"
|
||||
placeholder="请选择"
|
||||
:options="publishOptions"
|
||||
/>
|
||||
</div>
|
||||
<!-- 路由 -->
|
||||
<div class="movement-type__element" v-if="panel.skipType == 'routeLink'">
|
||||
路由地址
|
||||
<n-select
|
||||
v-model:value="panel.url"
|
||||
placeholder="请选择"
|
||||
:options="routeOptions"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</n-tab-pane>
|
||||
|
|
@ -84,13 +117,17 @@
|
|||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, defineEmits } from 'vue';
|
||||
import { ref, defineEmits, onMounted } from 'vue';
|
||||
import { eventTypeOptions, movementTypeOptions } from '../../../../hooks/eventData.hook';
|
||||
import { goDialog } from '@/utils';
|
||||
import { DesktopOutline } from '@vicons/ionicons5';
|
||||
import { useTargetData } from '../../../../hooks/useTargetData.hook';
|
||||
import { getMenuList } from '@/api/sys/menu';
|
||||
import { previewPath } from '@/utils';
|
||||
import { projectListApi } from '@/api/path/project.api';
|
||||
|
||||
const { chartEditStore } = useTargetData();
|
||||
const routeOptions = ref([]);
|
||||
const funSelectOptions = ref([
|
||||
{
|
||||
// 事件名称(用于选择显示)
|
||||
|
|
@ -99,71 +136,101 @@
|
|||
value: 'ceshiClick',
|
||||
},
|
||||
{
|
||||
label:"根据坐标定位地图视角",
|
||||
value: 'handlerFlyToPoint'
|
||||
label: '根据坐标定位地图视角',
|
||||
value: 'handlerFlyToPoint',
|
||||
},
|
||||
{
|
||||
label:"添加任意类型图层",
|
||||
value: 'handlerAddLayer'
|
||||
label: '添加任意类型图层',
|
||||
value: 'handlerAddLayer',
|
||||
},
|
||||
{
|
||||
label:"隐藏任意类型图层",
|
||||
value: 'handlerHiddenLayer'
|
||||
label: '隐藏任意类型图层',
|
||||
value: 'handlerHiddenLayer',
|
||||
},
|
||||
{
|
||||
label:"删除任意类型图层",
|
||||
value: 'handlerRemoveLayer'
|
||||
label: '删除任意类型图层',
|
||||
value: 'handlerRemoveLayer',
|
||||
},
|
||||
{
|
||||
label:"添加单个矢量数据",
|
||||
value: 'handlerAddEntity'
|
||||
},{
|
||||
label:"隐藏单个矢量数据",
|
||||
value:"handlerHiddenEntity"
|
||||
},{
|
||||
label:"移除单个矢量数据",
|
||||
value:"handlerRemoveEntity"
|
||||
},{
|
||||
label:"定位和高亮矢量数据",
|
||||
value:"handlerFlyToEntity"
|
||||
},{
|
||||
label:"清除全部矢量数据",
|
||||
value:"handlerClearEntityLayer"
|
||||
},{
|
||||
label:"隐藏全部矢量数据",
|
||||
value:"handlerHiddenEntityLayer"
|
||||
},{
|
||||
label:"点击地图拾取坐标",
|
||||
value:"handlerDrawPoint"
|
||||
},{
|
||||
label:"绘制贴地线",
|
||||
value:"handlerDrawLine"
|
||||
},{
|
||||
label:"绘制贴地面",
|
||||
value:"handlerDrawPolygon"
|
||||
},{
|
||||
label:"贴地距离测量",
|
||||
value:"handlerMeasureSurfaceLength"
|
||||
},{
|
||||
label:"空间距离测量",
|
||||
value:"handlerMeasureLength"
|
||||
},{
|
||||
label:"贴地面积测量",
|
||||
value:"handlerMeasureSurfaceArea"
|
||||
},{
|
||||
label:"水平面积测量",
|
||||
value:"handlerMeasureArea"
|
||||
},{
|
||||
label:"坐标点位测量",
|
||||
value:"handlerMeasurePoint"
|
||||
},{
|
||||
label:"高度差测量",
|
||||
value:"handlerMeasureHeight"
|
||||
},{
|
||||
label:"清空测量数据",
|
||||
value:"handlerClearMeasure"
|
||||
}
|
||||
label: '添加单个矢量数据',
|
||||
value: 'handlerAddEntity',
|
||||
},
|
||||
{
|
||||
label: '隐藏单个矢量数据',
|
||||
value: 'handlerHiddenEntity',
|
||||
},
|
||||
{
|
||||
label: '移除单个矢量数据',
|
||||
value: 'handlerRemoveEntity',
|
||||
},
|
||||
{
|
||||
label: '定位和高亮矢量数据',
|
||||
value: 'handlerFlyToEntity',
|
||||
},
|
||||
{
|
||||
label: '清除全部矢量数据',
|
||||
value: 'handlerClearEntityLayer',
|
||||
},
|
||||
{
|
||||
label: '隐藏全部矢量数据',
|
||||
value: 'handlerHiddenEntityLayer',
|
||||
},
|
||||
{
|
||||
label: '点击地图拾取坐标',
|
||||
value: 'handlerDrawPoint',
|
||||
},
|
||||
{
|
||||
label: '绘制贴地线',
|
||||
value: 'handlerDrawLine',
|
||||
},
|
||||
{
|
||||
label: '绘制贴地面',
|
||||
value: 'handlerDrawPolygon',
|
||||
},
|
||||
{
|
||||
label: '贴地距离测量',
|
||||
value: 'handlerMeasureSurfaceLength',
|
||||
},
|
||||
{
|
||||
label: '空间距离测量',
|
||||
value: 'handlerMeasureLength',
|
||||
},
|
||||
{
|
||||
label: '贴地面积测量',
|
||||
value: 'handlerMeasureSurfaceArea',
|
||||
},
|
||||
{
|
||||
label: '水平面积测量',
|
||||
value: 'handlerMeasureArea',
|
||||
},
|
||||
{
|
||||
label: '坐标点位测量',
|
||||
value: 'handlerMeasurePoint',
|
||||
},
|
||||
{
|
||||
label: '高度差测量',
|
||||
value: 'handlerMeasureHeight',
|
||||
},
|
||||
{
|
||||
label: '清空测量数据',
|
||||
value: 'handlerClearMeasure',
|
||||
},
|
||||
]);
|
||||
const skipTypeOptions = ref([
|
||||
{
|
||||
label: '外部链接',
|
||||
value: 'outLink',
|
||||
},
|
||||
{
|
||||
label: '发布地址',
|
||||
value: 'publishLink',
|
||||
},
|
||||
{
|
||||
label: '路由',
|
||||
value: 'routeLink',
|
||||
},
|
||||
]);
|
||||
const publishOptions = ref([]);
|
||||
const props = defineProps({
|
||||
eventData: {
|
||||
type: Object,
|
||||
|
|
@ -232,6 +299,43 @@
|
|||
};
|
||||
}),
|
||||
);
|
||||
const treeIterator = (tree) => {
|
||||
tree.forEach((node) => {
|
||||
var obj = {};
|
||||
obj.label = node.item.name;
|
||||
obj.value = node.item.url;
|
||||
if (node.children.length > 0) {
|
||||
node.children && treeIterator(node.children);
|
||||
} else {
|
||||
routeOptions.value.push(obj);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 获取路由列表
|
||||
const getRouteList = async () => {
|
||||
const data = await getMenuList();
|
||||
treeIterator(data);
|
||||
await data;
|
||||
};
|
||||
// 获取已发布页面列表
|
||||
const getPublishedPageList = async () => {
|
||||
const data = await projectListApi({
|
||||
state: 1,
|
||||
page: 1,
|
||||
limit: 1000,
|
||||
});
|
||||
publishOptions.value = data.items.map((item) => {
|
||||
return {
|
||||
label: item.projectName,
|
||||
value: previewPath(item.id),
|
||||
};
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
routeOptions.value = [];
|
||||
getRouteList();
|
||||
getPublishedPageList();
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.event-item {
|
||||
|
|
|
|||
Loading…
Reference in New Issue