2021-05-11 16:32:21 +08:00
|
|
|
<template>
|
|
|
|
<component
|
|
|
|
:is="mode"
|
|
|
|
v-bind="$attrs"
|
|
|
|
v-on="$listeners"
|
2021-12-27 16:26:59 +08:00
|
|
|
:obj="obj"
|
2021-05-11 16:32:21 +08:00
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2021-05-30 20:24:54 +08:00
|
|
|
|
|
|
|
import { get } from '@/api/system/dynamic'
|
2021-05-11 16:32:21 +08:00
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'AsyncComponent',
|
|
|
|
inheritAttrs: true,
|
|
|
|
props: {
|
|
|
|
// 父组件提供请求地址
|
|
|
|
url: {
|
|
|
|
type: String,
|
|
|
|
default: ''
|
2021-12-27 16:26:59 +08:00
|
|
|
},
|
|
|
|
obj: {
|
|
|
|
type: Object,
|
2021-12-28 15:14:17 +08:00
|
|
|
default: () => {}
|
2021-05-11 16:32:21 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
resData: '',
|
|
|
|
mode: ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
url: {
|
|
|
|
immediate: true,
|
|
|
|
async handler(val, oldVal) {
|
|
|
|
if (!this.url) return
|
|
|
|
// Cache 缓存 根据 url 参数
|
|
|
|
if (!window.SyncComponentCache) {
|
|
|
|
window.SyncComponentCache = {}
|
|
|
|
}
|
|
|
|
let res
|
|
|
|
if (!window.SyncComponentCache[this.url]) {
|
2021-05-30 20:24:54 +08:00
|
|
|
window.SyncComponentCache[this.url] = get(this.url)
|
|
|
|
|
|
|
|
// window.SyncComponentCache[this.url] = Axios.get(this.url)
|
2021-05-11 16:32:21 +08:00
|
|
|
res = await window.SyncComponentCache[this.url]
|
|
|
|
} else {
|
|
|
|
res = await window.SyncComponentCache[this.url]
|
|
|
|
}
|
2021-11-11 14:13:48 +08:00
|
|
|
|
|
|
|
const Fn = Function
|
|
|
|
this.mode = new Fn(`return ${res.data || res}`)()
|
|
|
|
/* if (res && res.data) {
|
2021-11-11 14:06:03 +08:00
|
|
|
const Fn = Function
|
|
|
|
this.mode = new Fn(`return ${res.data || res}`)()
|
2021-11-11 14:13:48 +08:00
|
|
|
} */
|
2021-05-11 16:32:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|