<template>
|
<div :id="msgId" class="ragBox">
|
<div v-for="(item, index) in msgText" :key="index">
|
<div v-show="item.msg">
|
{{ item.msg }}
|
</div>
|
<div v-show="item.source">
|
{{ item.source }}
|
</div>
|
<div style="float:right" v-show="item.isMore">
|
<el-link :underline="false" @click="setShowMore">更多</el-link>
|
</div>
|
</div>
|
|
</div>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
msgId: null,
|
msgText: [],
|
showMore: false,
|
editData: [],
|
showRagflag: 0,
|
}
|
},
|
props: {
|
childObject: {
|
type: Object,
|
required: true
|
}
|
},
|
watch: {
|
childObject: {
|
handler(newVal, oldVal) {
|
if (newVal) {
|
this.setTextMsg(newVal)
|
}
|
},
|
deep: true,
|
immediate: true
|
}
|
},
|
methods: {
|
setTextMsg(res) {
|
if (res.msg.length <= 0) return
|
this.id = res.id;
|
this.editData = res.msg;
|
this.showRagflag = 0;
|
this.setShowRagChange();
|
|
},
|
setShowRagChange() {
|
const flag = this.showRagflag
|
if (flag >= this.editData.length) return
|
const msg = this.editData[flag];
|
const content = msg.content;
|
this.msgText.push({
|
msg: '',
|
source: '',
|
isMore: false,
|
});
|
var length = 0;
|
const interVal = setInterval(() => {
|
if (length >= content.length) {
|
this.setRagSourceChange()
|
clearInterval(interVal)
|
return
|
}
|
var msg = this.msgText[flag].msg;
|
var item = content[length]
|
this.msgText[flag].msg = msg + item
|
length++
|
}, 200);
|
|
},
|
setRagSourceChange() {
|
const flag = this.showRagflag
|
const msg = this.editData[flag];
|
const content = " --- 数据来源 : " + msg.metadata.source;
|
var length = 0;
|
const interVal = setInterval(() => {
|
if (length >= content.length) {
|
this.setShowMoreChange();
|
clearInterval(interVal)
|
return
|
}
|
var msg = this.msgText[flag].source;
|
var item = content[length]
|
this.msgText[flag].source = msg + item
|
length++
|
}, 200);
|
},
|
setShowMoreChange() {
|
const flag = this.showRagflag
|
if (this.showRagflag == 0 && this.editData.length > 0) {
|
return this.msgText[flag].isMore = true;
|
}
|
this.setShowMore();
|
},
|
setShowMore() {
|
const flag = this.showRagflag
|
this.msgText[flag].isMore = false;
|
this.showRagflag += 1;
|
this.$nextTick(()=>{
|
this.setShowRagChange();
|
})
|
|
|
}
|
|
}
|
}
|
</script>
|
|
<style></style>
|