两段文本比对,高亮出差异部分
<div class="card" v-if="showFlag"><div class="info">*红色背景为已删除内容,绿色背景为新增内容</div><el-form-item label="与上季度比对:"><div class="compareCss" v-html="highlightedLastQuarteDiff"></div></el-form-item>
</div>
安装插件:diff
npm install diff
import diff from 'diff';
// 与上季度比对
const highlightedLastQuarteDiff = computed(() => {const oldText = state.jsonContent ?? ''; // 旧值(原内容)const newText = state.content ?? ''; // 新值(修改后内容)const differences = diff.diffChars(oldText, newText); // 字符级差异对比let result = '';differences.forEach(part => {// 被删除的内容(旧值有,新值无)if (part.removed) {result += `<span style="text-decoration: line-through; background:#fbe9eb;color: red; text-decoration-color: #777;">${part.value}</span>`;}// 新增的内容(旧值无,新值有)else if (part.added) {result += `<span style="background-color: #a6f3a6; color: #777;">${part.value}</span>`;}// 未改动的内容else {result += part.value;}});return result;
});