mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2026-03-26 23:33:13 +00:00
94 lines
2.7 KiB
Vue
94 lines
2.7 KiB
Vue
<!--手动录入text-->
|
|
<template>
|
|
<BasicModal title="段落详情" destroyOnClose @register="registerModal" :canFullscreen="false" width="600px" :footer="null">
|
|
<div class="p-2">
|
|
<div class="header">
|
|
<a-tag color="#a9c8ff">
|
|
<span>{{hitTextDescData.source}}</span>
|
|
</a-tag>
|
|
</div>
|
|
<div class="content">
|
|
<MarkdownViewer :value="hitTextDescData.content" />
|
|
</div>
|
|
</div>
|
|
|
|
</BasicModal>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { ref } from 'vue';
|
|
import BasicModal from '@/components/Modal/src/BasicModal.vue';
|
|
import { useModalInner } from '@/components/Modal';
|
|
|
|
import BasicForm from '@/components/Form/src/BasicForm.vue';
|
|
import { MarkdownViewer } from '@/components/Markdown';
|
|
import { useGlobSetting } from "@/hooks/setting";
|
|
|
|
export default {
|
|
name: 'AiTextDescModal',
|
|
components: {
|
|
MarkdownViewer,
|
|
BasicForm,
|
|
BasicModal,
|
|
},
|
|
emits: ['success', 'register'],
|
|
setup(props, { emit }) {
|
|
let hitTextDescData = ref<any>({})
|
|
|
|
//注册modal
|
|
const [registerModal, { closeModal, setModalProps }] = useModalInner(async (data) => {
|
|
hitTextDescData.value.source = 'score' + ' ' + data.score.toFixed(2);
|
|
//替换图片宽度
|
|
data.content = replaceImageWith(data.content);
|
|
//替换图片domainUrl
|
|
data.content = replaceDomainUrl(data.content);
|
|
hitTextDescData.value.content = data.content;
|
|
setModalProps({ header: '300px' })
|
|
});
|
|
const { domainUrl } = useGlobSetting();
|
|
const replaceImageWith = markdownContent => {
|
|
// 支持图片设置width的写法 
|
|
const regex = /!\[([^\]]*)\]\(([^)]+)=([0-9]+)\)/g;
|
|
return markdownContent.replace(regex, (match, alt, src, width) => {
|
|
let reg = /#\s*{\s*domainURL\s*}/g;
|
|
src = src.replace(reg,domainUrl);
|
|
return `<img src='${src}' alt='${alt}' width='${width}' />`;
|
|
});
|
|
};
|
|
|
|
//替换domainURL
|
|
const replaceDomainUrl = markdownContent => {
|
|
const regex = /!\[([^\]]*)\]\(.*?#\s*{\s*domainURL\s*}.*?\)/g;
|
|
return markdownContent.replace(regex, (match) => {
|
|
let reg = /#\s*{\s*domainURL\s*}/g;
|
|
return match.replace(reg,domainUrl);
|
|
})
|
|
}
|
|
return {
|
|
registerModal,
|
|
hitTextDescData
|
|
};
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="less">
|
|
.pointer {
|
|
cursor: pointer;
|
|
}
|
|
.header {
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
margin-top: 10px;
|
|
}
|
|
.content {
|
|
margin-top: 20px;
|
|
max-height: 600px;
|
|
overflow-y: auto;
|
|
overflow-x: auto;
|
|
}
|
|
.title-tag {
|
|
color: #477dee;
|
|
}
|
|
</style>
|