|
|
|
@ -1,11 +1,19 @@ |
|
|
|
|
<template> |
|
|
|
|
<view class="container"> |
|
|
|
|
<uni-nav-bar :fontSizes="17" dark left-icon="left" @clickLeft="back" :fixed="true" :border="false" background-color="#3E73F5" |
|
|
|
|
:scroll-into-view="scrollIntoViewId" status-bar title="智能安全检查" /> |
|
|
|
|
<uni-nav-bar :fontSizes="17" dark left-icon="left" @clickLeft="back" :fixed="true" :border="false" |
|
|
|
|
background-color="#3E73F5" :scroll-into-view="scrollIntoViewId" status-bar title="智能安全检查" /> |
|
|
|
|
<!-- <image class="bg-img" src="https://mp-df79fe8b-b924-41b0-bcb1-960be6b4a619.cdn.bspapp.com/images/ask/content-bg@2x.png" /> --> |
|
|
|
|
<image class="bg-img" src="https://i.postimg.cc/PxcQrX3C/content-bg-2x.png" /> |
|
|
|
|
<scroll-view class="main-scroll" scroll-y scroll-with-animation lower-threshold="150" ref="chatArea" |
|
|
|
|
@scroll="handleScroll" @scrolltolower="lower"> |
|
|
|
|
<!-- 猜你想问 --> |
|
|
|
|
<view class="guess-section"> |
|
|
|
|
<view class="guess-title">常见问题</view> |
|
|
|
|
<view class="guess-item" v-for="(item, index) in guessList" :key="index" @click="handleGuessClick(item)"> |
|
|
|
|
<text class="question">{{ item.question }}</text> |
|
|
|
|
<!-- <uni-icons type="right" size="18" color="#999"></uni-icons> --> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<!-- 聊天内容区 --> |
|
|
|
|
<view class="chat-area"> |
|
|
|
|
<view v-for="(msg, idx) in messages" :key="idx" :class="['msg', msg.role]"> |
|
|
|
@ -22,9 +30,8 @@ |
|
|
|
|
|
|
|
|
|
<!-- 底部输入框 --> |
|
|
|
|
<view class="input-area"> |
|
|
|
|
<input class="chat-input" type="text" v-model="inputValue" |
|
|
|
|
:placeholder="activeTab === 'suggest' ? '请输入检查内容..' : '请输入你的问题或需求...'" @confirm="sendMessage" |
|
|
|
|
disabled /> |
|
|
|
|
<input class="chat-input" type="text" v-model="inputValue" |
|
|
|
|
:placeholder="activeTab === 'suggest' ? '请输入检查内容..' : '请输入你的问题或需求...'" @confirm="sendMessage" disabled /> |
|
|
|
|
<button class="send-btn" @click="sendMessage" :disabled="!inputValue || streaming"> |
|
|
|
|
<!-- <image src="https://mp-df79fe8b-b924-41b0-bcb1-960be6b4a619.cdn.bspapp.com/images/ask/btn@2x.png" /> --> |
|
|
|
|
<image src="https://i.postimg.cc/RqxF0KQW/btn-2x.png" /> |
|
|
|
@ -39,8 +46,9 @@ export default { |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
activeTab: 'suggest', |
|
|
|
|
questId: 0, |
|
|
|
|
messages: [], |
|
|
|
|
inputValue: '灭火器放在地上', |
|
|
|
|
inputValue: '', |
|
|
|
|
streaming: false, |
|
|
|
|
streamingContent: '', |
|
|
|
|
scrollIntoViewId: '', |
|
|
|
@ -52,13 +60,20 @@ export default { |
|
|
|
|
guessList: [ |
|
|
|
|
{ |
|
|
|
|
type: 'suggest', |
|
|
|
|
question: '直隶总督署博物馆现在人多吗?' |
|
|
|
|
questId: 0, |
|
|
|
|
question: '游客休息区附近的灭火器随意摆放在地面,多个灭火器铭牌面朝墙壁,其中1具灭火器顶部高于1.6米。' |
|
|
|
|
}, { |
|
|
|
|
type: 'assistant', |
|
|
|
|
question: '请帮我规划保定市2天游玩行程。' |
|
|
|
|
type: 'suggest', |
|
|
|
|
questId: 1, |
|
|
|
|
question: '电脑桌下插座超负荷使用,存在多个插排串联现象,电缆未做穿管保护,线路裸露。' |
|
|
|
|
}, { |
|
|
|
|
type: 'suggest', |
|
|
|
|
questId: 2, |
|
|
|
|
question: '安全出口被杂物堵塞,部分疏散指示灯不亮,房间内无疏散图,未张贴疏散方向指示。' |
|
|
|
|
}, { |
|
|
|
|
type: 'suggest', |
|
|
|
|
question: '古莲花池景区实时客流情况。' |
|
|
|
|
questId: 3, |
|
|
|
|
question: '场馆未设置专职消防安全管理人员,无消防巡查记录,消火栓箱内设备锈蚀,疏散通道部分设有铁门限制通行。' |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
}; |
|
|
|
@ -168,44 +183,144 @@ export default { |
|
|
|
|
this.scrollToBottom() |
|
|
|
|
// this.$nextTick(this.scrollToBottom); |
|
|
|
|
}, |
|
|
|
|
reBack(questId) { |
|
|
|
|
console.log(questId, 'questId') |
|
|
|
|
switch (questId) { |
|
|
|
|
case 0: |
|
|
|
|
return ` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**问题描述**: |
|
|
|
|
游客休息区附近的灭火器随意摆放在地面,多个灭火器铭牌面朝墙壁,其中1具灭火器顶部高于1.6米。 |
|
|
|
|
|
|
|
|
|
**风险判定**: |
|
|
|
|
存在中度消防安全隐患。 |
|
|
|
|
|
|
|
|
|
**整改依据**: |
|
|
|
|
|
|
|
|
|
1. 《建筑灭火器配置设计规范》GB50140-2005 第5.1.3条: |
|
|
|
|
> 灭火器的摆放应稳固,其铭牌应朝外。手提式灭火器宜设置在灭火器箱内或挂钩、托架上,其顶部离地面高度不应大于1.50m;底部离地面高度不宜小于0.08m。灭火器箱不得上锁。 |
|
|
|
|
|
|
|
|
|
2. 《中华人民共和国消防法》(2021年修订)第二十八条: |
|
|
|
|
> 任何单位、个人不得损坏、挪用或者擅自拆除、停用消防设施、器材;不得埋压、圈占、遮挡消火栓或者占用防火间距;不得占用、堵塞、封闭疏散通道、安全出口、消防车通道。 |
|
|
|
|
|
|
|
|
|
**整改建议**: |
|
|
|
|
|
|
|
|
|
- 所有灭火器应重新安装在灭火器箱或墙壁挂钩/托架上; |
|
|
|
|
- 调整高度符合规范要求(顶部不高于1.50m); |
|
|
|
|
- 保证铭牌朝外,方便检查与识别。 |
|
|
|
|
|
|
|
|
|
**风险评级**: |
|
|
|
|
中度风险。 |
|
|
|
|
|
|
|
|
|
`; |
|
|
|
|
case 1: |
|
|
|
|
return ` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**问题描述**: |
|
|
|
|
电脑桌下插座超负荷使用,存在多个插排串联现象,电缆未做穿管保护,线路裸露。 |
|
|
|
|
|
|
|
|
|
**风险判定**: |
|
|
|
|
重大用电安全隐患。 |
|
|
|
|
|
|
|
|
|
**整改依据**: |
|
|
|
|
|
|
|
|
|
1. 《用电安全导则》GB/T 13869-2017 第5.1.1条: |
|
|
|
|
> 应禁止电气设备使用中串接插座(插排)进行多台设备连接,防止过载引发火灾。 |
|
|
|
|
|
|
|
|
|
2. 《建筑电气工程施工质量验收规范》GB50303-2015 第5.1.1: |
|
|
|
|
> 导线敷设应平整,无扭结、无机械损伤,穿越楼板、墙体等处应加套管保护。 |
|
|
|
|
|
|
|
|
|
3. 《中华人民共和国安全生产法》第三十五条: |
|
|
|
|
> 生产经营单位应当在有较大危险因素的生产经营场所和有关设施、设备上,设置明显的安全警示标志。 |
|
|
|
|
|
|
|
|
|
**整改建议**: |
|
|
|
|
|
|
|
|
|
- 拆除串联插排,使用定制排插或分路供电; |
|
|
|
|
- 所有电缆线路穿线管加装防护,避免裸露; |
|
|
|
|
- 在高风险位置张贴电气警示标志。 |
|
|
|
|
|
|
|
|
|
**风险评级**: |
|
|
|
|
重大风险。 |
|
|
|
|
|
|
|
|
|
`; |
|
|
|
|
case 2: |
|
|
|
|
return ` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**问题描述**: |
|
|
|
|
安全出口被杂物堵塞,部分疏散指示灯不亮,房间内无疏散图,未张贴疏散方向指示。 |
|
|
|
|
|
|
|
|
|
**风险判定**: |
|
|
|
|
重大人员疏散安全隐患。 |
|
|
|
|
|
|
|
|
|
**整改依据**: |
|
|
|
|
|
|
|
|
|
1. 《消防应急照明和疏散指示系统技术标准》GB51309-2018 第4.5.10条: |
|
|
|
|
> 疏散指示标志应设置在通道明显位置,指明疏散方向,应能在火灾断电时自动点亮。 |
|
|
|
|
|
|
|
|
|
2. 《人员密集场所消防安全管理》GB/T 40248-2021 第7.5.2.j条: |
|
|
|
|
> 宾馆、商场、医院、公共娱乐场所等场所各楼层的明显位置应设置安全疏散指示图,标明疏散路线、安全出口、人员所在位置等。 |
|
|
|
|
|
|
|
|
|
3. 《中华人民共和国消防法》(2021年修订)第二十八条: |
|
|
|
|
> 不得占用、堵塞、封闭疏散通道、安全出口。 |
|
|
|
|
|
|
|
|
|
**整改建议**: |
|
|
|
|
|
|
|
|
|
- 清除安全出口周边杂物,保持通畅; |
|
|
|
|
- 检查疏散照明电源,维修损坏灯具,确保断电可自动亮起; |
|
|
|
|
- 制作疏散图并张贴在包间门背面及走道显著位置。 |
|
|
|
|
|
|
|
|
|
**风险评级**: |
|
|
|
|
重大风险。 |
|
|
|
|
|
|
|
|
|
`; |
|
|
|
|
case 3: |
|
|
|
|
return ` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**问题描述**: |
|
|
|
|
场馆未设置专职消防安全管理人员,无消防巡查记录,消火栓箱内设备锈蚀,疏散通道部分设有铁门限制通行。 |
|
|
|
|
|
|
|
|
|
**风险判定**: |
|
|
|
|
制度缺失 + 消防设施老化 + 疏散障碍,构成重大管理风险。 |
|
|
|
|
|
|
|
|
|
**整改依据**: |
|
|
|
|
|
|
|
|
|
1. 《中华人民共和国消防法》第十六条第二款: |
|
|
|
|
> 机关、团体、企业、事业等单位应当按照国家标准、行业标准配置消防设施、器材,设置消防安全标志,并定期组织检验、维修,确保完好有效。 |
|
|
|
|
|
|
|
|
|
2. 《河北省安全生产风险管控与隐患治理规定》(省政府2号令)第十五条: |
|
|
|
|
> 在有较大及以上等级风险的生产经营场所显著位置、关键部位和有关设施设备上应当设置明显警示标志、标识。 |
|
|
|
|
|
|
|
|
|
3. 《消防设施的维护管理》GB25201-2010 第5.2条: |
|
|
|
|
> 消防设施应每月检查1次,每季度维护保养1次,发现损坏应及时修复。 |
|
|
|
|
|
|
|
|
|
4. 《建筑设计防火规范》GB50016-2014 第6.4.1条: |
|
|
|
|
> 建筑的疏散通道、安全出口不得设置影响人员疏散的障碍物。 |
|
|
|
|
|
|
|
|
|
**整改建议**: |
|
|
|
|
|
|
|
|
|
- 指定专人负责消防巡查,建立消防巡检制度并执行记录; |
|
|
|
|
- 更换损坏消防器材,清理锈蚀水带; |
|
|
|
|
- 疏散通道去除铁门等障碍物,保持畅通; |
|
|
|
|
- 在关键部位张贴明显警示标志。 |
|
|
|
|
|
|
|
|
|
**风险评级**: |
|
|
|
|
重大风险。 |
|
|
|
|
|
|
|
|
|
`; |
|
|
|
|
default: |
|
|
|
|
return ''; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
mockStreamAnswer(question) { |
|
|
|
|
this.streaming = true; |
|
|
|
|
this.streamingContent = ''; |
|
|
|
|
const answer = this.activeTab === 'suggest' |
|
|
|
|
? |
|
|
|
|
`## 安全检查报告:灭火器摆放位置不合规 |
|
|
|
|
|
|
|
|
|
### 🚨 问题描述 |
|
|
|
|
检查发现部分区域灭火器摆放存在以下不合规情况: |
|
|
|
|
1. 灭火器被杂物遮挡(如货架、绿植等) |
|
|
|
|
2. 放置高度超过1.5米或低于0.8米 |
|
|
|
|
3. 未固定在墙面/支架上(直接放置地面) |
|
|
|
|
4. 单个保护半径超过15米(GB50140-2005规定) |
|
|
|
|
|
|
|
|
|
### 📍 具体位置 |
|
|
|
|
| 区域 | 问题类型 |
|
|
|
|
|-------------|-------------------------| |
|
|
|
|
| 二楼东侧走廊 | 被清洁工具遮挡 | |
|
|
|
|
| 仓库入口 | 放置在地面无固定支架 | |
|
|
|
|
| 配电室 | 保护半径超标(18米) | |
|
|
|
|
|
|
|
|
|
### ⚠️ 风险等级 |
|
|
|
|
**橙色风险**(需7日内整改) |
|
|
|
|
|
|
|
|
|
### 📜 法规依据 |
|
|
|
|
- 《建筑灭火器配置设计规范》GB50140-2005 |
|
|
|
|
- 第5.1.3条:灭火器应设置在明显和便于取用的地点 |
|
|
|
|
- 第5.1.4条:不得影响安全疏散 |
|
|
|
|
|
|
|
|
|
### 🛠️ 整改建议 |
|
|
|
|
1. 立即清除遮挡物,确保100cm×100cm操作空间 |
|
|
|
|
2. 加装壁挂支架(中心距地面1.2m±0.2m) |
|
|
|
|
3. 按"保护半径15m"标准增配2具灭火器(配电室) |
|
|
|
|
|
|
|
|
|
### 📅 复查要求 |
|
|
|
|
需在2023-11-30前提交整改对比照片 |
|
|
|
|
|
|
|
|
|
> **注:** 本检查结果已同步抄送安全部、物业部负责人 ` |
|
|
|
|
this.reBack(this.questId) |
|
|
|
|
: '这是针对“游玩助手”的流式回复内容,模拟逐字输出效果。'; |
|
|
|
|
let i = 0; |
|
|
|
|
const stream = () => { |
|
|
|
@ -213,7 +328,7 @@ export default { |
|
|
|
|
this.streamingContent += answer[i++]; |
|
|
|
|
// this.scrollToBottom() |
|
|
|
|
this.$nextTick(this.scrollToBottom()); |
|
|
|
|
setTimeout(stream, 10); |
|
|
|
|
setTimeout(stream, 50); |
|
|
|
|
} else { |
|
|
|
|
this.messages.push({ role: 'assistant', content: this.streamingContent }); |
|
|
|
|
this.streaming = false; |
|
|
|
@ -226,12 +341,14 @@ export default { |
|
|
|
|
}, |
|
|
|
|
handleGuessClick(question) { |
|
|
|
|
this.activeTab = question.type; |
|
|
|
|
this.questId = question.questId; |
|
|
|
|
if (this.streaming) return; |
|
|
|
|
this.inputValue = ''; |
|
|
|
|
this.messages.push({ role: 'user', content: question.question }); |
|
|
|
|
this.scrollToBottom() |
|
|
|
|
// this.$nextTick(this.scrollToBottom); |
|
|
|
|
this.streamAnswer(question.question); |
|
|
|
|
this.mockStreamAnswer(question.question); |
|
|
|
|
// this.streamAnswer(question.question); |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -322,6 +439,73 @@ page { |
|
|
|
|
color: #9DA9C2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 猜你想问 */ |
|
|
|
|
.guess-section { |
|
|
|
|
background: #fff; |
|
|
|
|
border-radius: 20rpx; |
|
|
|
|
margin: 20rpx; |
|
|
|
|
padding: 0 20rpx 20rpx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.guess-title { |
|
|
|
|
font-size: 32rpx; |
|
|
|
|
color: #007aff; |
|
|
|
|
width: 200rpx; |
|
|
|
|
height: 68rpx; |
|
|
|
|
display: flex; |
|
|
|
|
align-items: center; |
|
|
|
|
justify-content: start; |
|
|
|
|
padding-left: 5rpx; |
|
|
|
|
// background: url('/static/gues.png'); |
|
|
|
|
background-position: center; |
|
|
|
|
background-size: contain; |
|
|
|
|
background-repeat: no-repeat; |
|
|
|
|
padding-top: 20rpx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.guess-item { |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-between; |
|
|
|
|
align-items: center; |
|
|
|
|
padding: 16rpx 0; |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
color: #333; |
|
|
|
|
// padding-left: 40rpx; |
|
|
|
|
position: relative; |
|
|
|
|
border-bottom: 1rpx solid #eee; |
|
|
|
|
margin-top: 10rpx; |
|
|
|
|
|
|
|
|
|
.question { |
|
|
|
|
width: 100%; |
|
|
|
|
overflow: hidden; |
|
|
|
|
white-space: nowrap; |
|
|
|
|
text-overflow: ellipsis; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.guess-item::before { |
|
|
|
|
content: ''; |
|
|
|
|
width: 24rpx; |
|
|
|
|
height: 24rpx; |
|
|
|
|
// background-color: #eee; |
|
|
|
|
position: absolute; |
|
|
|
|
left: 10rpx; |
|
|
|
|
top: 50%; |
|
|
|
|
transform: translateY(-50%); |
|
|
|
|
// background-image: url('/static/start@2x.png'); |
|
|
|
|
background-repeat: no-repeat; |
|
|
|
|
background-position: center; |
|
|
|
|
background-size: contain; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.guess-item:last-child { |
|
|
|
|
border-bottom: none; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.arrow { |
|
|
|
|
color: #ccc; |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 聊天气泡 */ |
|
|
|
|
.chat-area { |
|
|
|
|