2 changed files with 204 additions and 81 deletions
@ -0,0 +1,123 @@ |
|||
<template> |
|||
<div v-if="showMarkdown"> |
|||
<div v-html="markdownContent"></div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { marked } from "marked"; |
|||
export default { |
|||
data() { |
|||
return { |
|||
text: '', |
|||
displayedText: '', |
|||
showMarkdown: false, |
|||
typingQueue: [], //队列存储 |
|||
isTyping: false, |
|||
markdownContent: '', |
|||
typingSpeed: 50, //每个字出现的间隔时间(毫秒) |
|||
|
|||
}; |
|||
}, |
|||
created() { }, |
|||
methods: { |
|||
getLastWeekDateRange() { |
|||
const today = new Date(); |
|||
const dayOfWeek = today.getDay(); |
|||
const startOfLastWeek = new Date(today); |
|||
const endOfLastWeek = new Date(today); |
|||
startOfLastWeek.setDate(today.getDate() - dayOfWeek - 6); |
|||
endOfLastWeek.setDate(today.getDate() - dayOfWeek); |
|||
const formatDate = (date) => { |
|||
const year = date.getFullYear(); |
|||
const month = String(date.getMonth() + 1).padStart(2, '0'); |
|||
const day = String(date.getDate()).padStart(2, '0'); |
|||
return `${year}-${month}-${day}`; |
|||
}; |
|||
return { |
|||
queryDateStart: formatDate(startOfLastWeek), |
|||
queryDateEnd: formatDate(endOfLastWeek), |
|||
}; |
|||
}, |
|||
regexChat(str) { |
|||
const regex = /"content":"(.*?)"/g; |
|||
const matches = []; |
|||
let match; |
|||
while ((match = regex.exec(str)) !== null) { |
|||
// let formattedContent = match[1].replace(/\\n/g, '\\\\n'); |
|||
matches.push(match[1]); |
|||
} |
|||
const mergedContent = matches.join(''); |
|||
console.log(mergedContent,'mergedContent'); |
|||
return mergedContent; |
|||
}, |
|||
startNextTypingEffect() { |
|||
// 如果正在打字或队列为空,则直接返回 |
|||
if (this.isTyping || this.typingQueue.length === 0) { |
|||
return |
|||
}; |
|||
const nextText = this.typingQueue.shift(); |
|||
console.log(nextText,typeof(nextText),'seeeee1'); |
|||
|
|||
this.displayedText += nextText |
|||
}, |
|||
async loadMarkdownTohtml() { |
|||
const { queryDateStart, queryDateEnd } = this.getLastWeekDateRange(); |
|||
const that = this; |
|||
try { |
|||
const res = await fetch(`${process.env.VUE_APP_API_SERVER}/governance/event/assistant/report?queryDateStart=${queryDateStart}&queryDateEnd=${queryDateEnd}`, { |
|||
method: "GET", |
|||
headers: { |
|||
"Authorization": localStorage.getItem('token'), |
|||
"Content-Type": "application/json" |
|||
} |
|||
}) |
|||
const reader = res.body.getReader(); |
|||
const decoder = new TextDecoder("utf-8"); |
|||
|
|||
reader.read().then(function process({ done, value }) { |
|||
if (done) { |
|||
console.log('加载完了', that.displayedText); |
|||
that.showMarkdown = true; |
|||
that.markdownContent = marked(that.displayedText); // 将markdown内容解析 |
|||
console.log(that.markdownContent); |
|||
console.log(that.displayedText === |
|||
'\n\n**市北区2025-03-03至2025-03-09事件分析报告**\n\n---\n\n### 一、主要事件类型分析\n1. **事件类别统计** \n - 基础设施类:1起(电表异常问题) \n - 其他类别(如治安、环保等):0起 \n2. **突出类别说明** \n 本月所有上报事件均集中于**基础设施类**(电表问题),占比100%。该问题直接涉及居民日常生活与公共资源管理,需重点关注。\n\n---\n\n### 二、重点集中区域分析\n1. **高频事件区域** \n - **华山镇花园小区54号楼**:发生1起电表问题投诉。 \n2. **潜在原因推测** \n - **设备老化可能性**:电表更换后出现异常,可能与新设备调试不当或旧电路系统适配性有关。 \n - **居民需求敏感度**:电力供应直接影响生活成本,居民对电表准确性关注度高,易引发投诉。 \n - **区域特殊性**:该小区为较老社区,基础设施维护需求可能长期存在。\n\n---\n\n### 三、事件趋势分析\n1. **数量对比** \n - 本月事件总量:1起(仅基础设施类) \n - 上月事件总量(假设数据):无提供历史数据,需补充信息以分析趋势。 \n2. **初步推断** \n - 若上月无同类问题,本次电表投诉可能为偶发个案;若持续出现类似事件,则需排查系统性风险(如批量设备故障)。\n\n---\n\n### 四、工作改进建议\n1. **基础设施优化** \n - 联合电力部门对华山镇花园小区开展电表专项检查,排查设备异常原因,公开检测结果以消除居民疑虑。 \n - 对老旧社区实施电路系统升级计划,减少因设备老化引发的后续问题。 \n2. **居民沟通与宣传** \n - 通过社区公告、线上通知等形式,普及电表使用常识及问题反馈渠道,降低信息不对称。 \n3. **服务流程完善** \n - 建立公共设施报修快速响应机制,确保问题在24小时内初步响应并反馈处理进度。 \n4. **数据监测扩展** \n - 补充完善环保、治安等事件的数据采集,以支持更全面的社区管理分析。\n\n---\n\n**结论**:本月社区管理需重点关注基础设施维护与居民沟通效率,建议通过专项排查和透明化服务提升居民满意度,同时加强多维度数据收集以支持长期决策。'); |
|||
return; |
|||
'\n\n**市北区2025-03-03至2025-03-09事件分析报告**\n\n---\n\n### 一、主要事件类型分析\n1. **事件类别统计** \n - 基础设施类:1起(电表异常问题) \n - 其他类别(如治安、环保等):0起 \n2. **突出类别说明** \n 本月所有上报事件均集中于**基础设施类**(电表问题),占比100%。该问题直接涉及居民日常生活与公共资源管理,需重点关注。\n\n---\n\n### 二、重点集中区域分析\n1. **高频事件区域** \n - **华山镇花园小区54号楼**:发生1起电表问题投诉。 \n2. **潜在原因推测** \n - **设备老化可能性**:电表更换后出现异常,可能与新设备调试不当或旧电路系统适配性有关。 \n - **居民需求敏感度**:电力供应直接影响生活成本,居民对电表准确性关注度高,易引发投诉。 \n - **区域特殊性**:该小区为较老社区,基础设施维护需求可能长期存在。\n\n---\n\n### 三、事件趋势分析\n1. **数量对比** \n - 本月事件总量:1起(类) \n - 上月事件总量(假设数据):无提供历史数据,需补充信息以分析趋势。 \n2. **初步推断** \n - 若上月无同类问题,本次电表投诉可能为偶发个案;若持续出现类似事件,则需排查系统性风险(如批量设备故障)。\n\n---\n\n### 四、工作改进建议\n1. **基础设施优化** \n - 联合电力部门对华山镇花园小区开展电表专项检查,排查设备异常原因,公开检测结果以消除居民疑虑。 \n - 对老旧社区实施电路系统升级计划,减少因设备老化引发的后续问题。 \n2. **居民沟通与宣传** \n - 通过社区公告、线上通知等形式,普及电表使用常识及问题反馈渠道,降低信息不对称。 \n3. **服务流程完善** \n - 建立公共设施报修快速响应机制,确保问题在24小时内初步响应并反馈处理进度。 \n4. **数据监测扩展** \n - 补充完善环保、治安等事件的数据采集,以支持更全面的社区管理分析。\n\n---\n\n**结论**:本月社区管理需重点关注基础设施维护与居民沟通效率,建议通过专项排查和透明化服务提升居民满意度,同时加强多维度数据收集以支持长期决策。' |
|||
} |
|||
|
|||
const chunk = decoder.decode(value, { stream: true }); |
|||
console.log("流数据块:", chunk, typeof (chunk)); |
|||
// console.log(JSON.parse(`"${chunk}"`),'json'); |
|||
const text = that.regexChat(chunk); |
|||
console.log("转换后:", text, typeof (text)); |
|||
|
|||
// 将数据推入队列 |
|||
that.typingQueue.push(text); |
|||
that.startNextTypingEffect(); // 尝试开始下一个 |
|||
|
|||
// 继续读取 |
|||
return reader.read().then(process); |
|||
}); |
|||
|
|||
} catch { |
|||
|
|||
} |
|||
} |
|||
}, |
|||
components: {}, |
|||
computed: { |
|||
}, |
|||
watch: {}, |
|||
props: { |
|||
html: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.loadMarkdownTohtml() |
|||
} |
|||
} |
|||
</script> |
|||
Loading…
Reference in new issue