jeecgBootUniapp/src/pages-process/components/DynamicLink.vue

67 lines
1.4 KiB
Vue
Raw Normal View History

2025-05-23 01:48:28 +00:00
<!-- component标签可以变换组件 -->
<template>
<component :is="compUrl" :formData="formData" :history="history" :activeKey="activeKey" v-if="compUrl" @getStampSuc="getStampSuccess"></component>
</template>
<script setup lang="ts">
import { ref, reactive, onMounted,computed, watch, nextTick } from 'vue';
const compName = ref('');
const compUrl = ref(null);
defineOptions({
name: 'DynamicLink',
options: {
styleIsolation: 'shared',
},
})
const props = defineProps({
path: {
type: String,
default: ""
},
history: {
type: String,
default: ""
},
activeKey: {
type: String,
default: ""
},
formData: {
type: Object,
default: () => {},
}
})
// 监听 option 变化
watch(() => props.path, (newVal) => {
console.log(newVal)
// if(newVal) compName.value = newVal;
if(newVal) compName.value = 'pages-process/test';
compUrl.value = defineAsyncComponent(() => import(`@/${compName.value}.vue`));
}, {
deep: true,
// #ifdef MP-WEIXIN
immediate: true
// #endif
});
const comp = reactive({
component:compUrl.value
})
const getStampSuccess=(val)=>{
// this.$emit('getStampSuc', val)
// //在<component>标签动态组件使用vuex没有保存成功。
// //所以先传出来再试一下
// this.$store.commit("cache/setEsignTags", {
// esignTag: val
// });
}
</script>
<style lang="scss" scoped>
</style>