feat(aiAsk): 添加常见问题模块并优化聊天界面

- 新增常见问题模块,展示预设的安全检查问题
- 点击常见问题可触发模拟回复,包含详细的安全检查报告
- 优化聊天界面布局,增加输入框和发送按钮
- 调整消息列表样式,区分用户和助手的消息
master
Tuzki 3 months ago
parent 29a73acb70
commit f018f6e66c
  1. 274
      pageIndex/aiAsk/aiAsk.vue

@ -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 {

Loading…
Cancel
Save