Files
im-uniapp/components/gaoyia-parse/components/wxParseTemplate2.vue
2025-07-04 16:18:58 +08:00

112 lines
2.6 KiB
Vue

<template>
<!--判断是否是标签节点-->
<block v-if="node.node == 'element'">
<!--button类型-->
<button
v-if="node.tag == 'button'"
type="default"
size="mini"
:class="node.classStr"
:style="node.styleStr"
>
<wx-parse-template :node="node" />
</button>
<!--a类型-->
<view
v-else-if="node.tag == 'a'"
@click="wxParseATap(node.attr, $event)"
:class="node.classStr"
:data-href="node.attr.href"
:style="node.styleStr"
>
<block v-for="(node, index) of node.nodes" :key="index">
<wx-parse-template :node="node" />
</block>
</view>
<!--li类型-->
<view
v-else-if="node.tag == 'li'"
:class="node.classStr"
:style="node.styleStr"
>
<block v-for="(node, index) of node.nodes" :key="index">
<wx-parse-template :node="node" />
</block>
</view>
<!--table类型-->
<wx-parse-table
v-else-if="node.tag == 'table'"
:class="node.classStr"
:style="node.styleStr"
:node="node"
/>
<!--br类型-->
<!-- #ifndef H5 -->
<text v-else-if="node.tag == 'br'">\n</text>
<!-- #endif -->
<!-- #ifdef H5 -->
<br v-else-if="node.tag == 'br'" />
<!-- #endif -->
<!--video类型-->
<wx-parse-video :node="node" v-else-if="node.tag == 'video'" />
<!--audio类型-->
<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'" />
<!--img类型-->
<wx-parse-img
:node="node"
v-else-if="node.tag == 'img'"
:style="node.styleStr"
/>
<!--其他标签-->
<view v-else :class="node.classStr" :style="node.styleStr">
<block v-for="(node, index) of node.nodes" :key="index">
<wx-parse-template :node="node" />
</block>
</view>
</block>
<!--判断是否是文本节点-->
<block v-else-if="node.node == 'text'">{{ node.text }}</block>
</template>
<script>
import wxParseTemplate from "./wxParseTemplate3";
import wxParseImg from "./wxParseImg";
import wxParseVideo from "./wxParseVideo";
import wxParseAudio from "./wxParseAudio";
import wxParseTable from "./wxParseTable";
export default {
name: "wxParseTemplate2",
props: {
node: {},
},
components: {
wxParseTemplate,
wxParseImg,
wxParseVideo,
wxParseAudio,
wxParseTable,
},
methods: {
wxParseATap(attr, e) {
const { href } = e.currentTarget.dataset;
if (!href) return;
let parent = this.$parent;
while (!parent.preview || typeof parent.preview !== "function") {
parent = parent.$parent;
}
parent.navigate(href, e, attr);
},
},
};
</script>