60 lines
1.1 KiB
Vue
60 lines
1.1 KiB
Vue
<template>
|
|
<div class="tablebox">
|
|
<rich-text
|
|
:nodes="nodes"
|
|
:class="node.classStr"
|
|
:style="'user-select:' + parseSelect"
|
|
></rich-text>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
export default {
|
|
name: "wxParseTable",
|
|
props: {
|
|
node: {
|
|
type: Object,
|
|
default() {
|
|
return {};
|
|
},
|
|
},
|
|
},
|
|
inject: ["parseSelect"],
|
|
data() {
|
|
return {
|
|
nodes: [],
|
|
};
|
|
},
|
|
mounted() {
|
|
this.nodes = this.loadNode([this.node]);
|
|
},
|
|
methods: {
|
|
loadNode(node) {
|
|
let obj = [];
|
|
for (let children of node) {
|
|
if (children.node == "element") {
|
|
let t = {
|
|
name: children.tag,
|
|
attrs: {
|
|
class: children.classStr,
|
|
// style: children.styleStr,
|
|
},
|
|
children: children.nodes ? this.loadNode(children.nodes) : [],
|
|
};
|
|
|
|
obj.push(t);
|
|
} else if (children.node == "text") {
|
|
obj.push({
|
|
type: "text",
|
|
text: children.text,
|
|
});
|
|
}
|
|
}
|
|
return obj;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style>
|
|
@import url("../parse.css");
|
|
</style>
|