黑词分析前端组件设计:双面板交互与黑词进度监控

黑词分析前端组件设计:双面板交互与黑词进度监控

前言

在内容安全、情报分析等领域,黑词(敏感词汇)分析是核心工作之一。本文深入解析一个企业级的黑词分析组件前端实现,该系统采用双面板交互设计、黑词进度监控多维度分析,为安全分析人员提供高效、直观的操作界面。

一、组件概览

1.1 设计理念

并行分析:同时展示黑词列表与可疑对话组

进度反馈:进度条直观展示分析状态

智能筛选:支持关键词搜索与分页展示

任务管理:统一的任务操作与状态管理

1.2 技术栈

Vue2 + Element UI + Axios ┌────────────────────────────────────────────┐ │ 黑词分析结果对话框组件 │ ├────────────────────────────────────────────┤ │ 左侧:黑词管理面板 │ 右侧:对话分析面板 │ ├────────────────────────────────────────────┤ │ 搜索筛选组件 │ 进度监控组件 │ ├────────────────────────────────────────────┤ │ 分页管理组件 │ 批量操作控制组件 │ └────────────────────────────────────────────┘

二、组件核心结构

2.1 模态对话框设计

<template> <aby-dialog v-if="dialogVisible" @closed="dialogClose" :dialogData="dialogData"> <div slot="content"> <!-- 左侧:黑词列表 --> <div> <!-- 黑词管理界面 --> </div> <!-- 右侧:可疑对话组 --> <div> <!-- 对话分析界面 --> </div> </div> </aby-dialog> </template>
对话框配置
dialogData: { type: "confirm_book", // 弹框类型 title: "黑词结果", // 弹框标题 width: '90%', // 宽度占屏幕90% top: '5vh', // 距离顶部5% closeOnPressEscape: false // 禁用ESC关闭 }

三、左侧面板:黑词列表

3.1 搜索组件

<div> <!-- 搜索输入框 --> <div> <div>黑词:</div> <el-input v-model="searchKeyword" placeholder="请输入黑词" clearable @keyup.enter.native="handleSearch" > </el-input> </div> <!-- 操作按钮 --> <div> <el-button type="primary" size="small" @click="handleSearch">搜索</el-button> <el-button size="small" @click="handleReset">重置</el-button> </div> </div>

3.2 黑词表格设计

<el-table :data="privateWords" stripe v-loading="tableLoading"> <!-- 序号列 --> <el-table-column prop="index" label="序号"></el-table-column> <!-- 黑词列 --> <el-table-column prop="word" label="黑词"></el-table-column> <!-- 操作列 --> <el-table-column label="操作"> <template #default="scope"> <div> <!-- 白名单操作 --> <el-link type="primary" size="small" @click="handleTopicMining(scope.row)"> 白名单 </el-link> <!-- 私有词库操作 --> <el-link type="primary" size="small" @click="handleResultView(scope.row)"> 私有词库 </el-link> <!-- 公有词库操作 --> <el-link type="primary" size="small" @click="handleResultView(scope.row)"> 公有词库 </el-link> </div> </template> </el-table-column> </el-table>

3.3 分页管理

<div> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[15, 20, 30, 50]" :page-size="15" layout="total, sizes, prev, pager, next, jumper" :total="tableTotal"> </el-pagination> </div>

四、右侧面板:可疑对话组分析

4.1 聊天类型切换

<div> <!-- 私聊选项卡 --> <div :class="['btn_item', { activeBtn: activeChatType === 'private' }]" @click="selectBtn('private')"> 私聊(123) </div> <!-- 群聊选项卡 --> <div :class="['btn_item', 'btn_right', { activeBtn: activeChatType === 'group' }]" @click="selectBtn('group')"> 群聊(321) </div> </div>

4.2 可疑对话组卡片设计

<div :class="['table_item', item.checked ? 'table_item_active' : '']" v-for="(item, index) in privateWords" :key="index"> <!-- 顶部:账号信息 --> <div> <!-- 复选框 --> <el-checkbox v-model="item.checked"></el-checkbox> <!-- 账号信息展示 --> <div> <img src="../../../assets/black/微信图片.png"> <div>账号1(花花)</div> <div><i></i></div> <img src="../../../assets/black/微信图片.png"> <div>账号2(lilili)</div> </div> </div> <!-- 底部:进度与操作 --> <div> <!-- 左侧:进度信息 --> <div> <!-- 进度条 --> <div> <el-progress :percentage="item.progress" :status="getProgressStatus(item.status)" :show-text="false" /> <span :class="['progress-text', getProgressTextClass(item.status)]"> {{ item.progress }}% </span> </div> <!-- 状态标签 --> <div :class="['table_item_status', getStatusClass(item.status)]"> {{ item.status }} </div> <!-- 时间显示 --> <div>{{ item.time }}</div> </div> <!-- 右侧:操作按钮 --> <div> <el-link type="primary" size="small" :disabled="item.status !== '待挖掘'" @click="handleTopicMiningForDialog(group)"> 话题挖掘 </el-link> <div></div> <el-link type="primary" size="small" :disabled="item.status !== '已完成'" @click="handleResultViewForDialog(group)"> 结果查看 </el-link> </div> </div> </div>

4.3 进度状态管理组件

// 进度条状态映射 getProgressStatus(status) { const statusMap = { '已完成': 'success', '进行中': 'warning', '待挖掘': 'info' }; return statusMap[status] || 'info'; }, // 状态文本样式类 getStatusClass(status) { const classMap = { '已完成': 'status-success', '进行中': 'status-warning', '待挖掘': 'status-info' }; return classMap[status] || ''; }, // 进度文本样式类 getProgressTextClass(status) { const classMap = { '已完成': 'progress-text-success', '进行中': 'progress-text-warning', '待挖掘': 'progress-text-info' }; return classMap[status] || ''; }

五、数据模拟设计(后期根据后端返回接口数据调整)

data() { return { // 私聊黑词列表 privateWords: [ { index: 1, word: '捕捉鸟类', type: 'private', checked: true, progress: 20, status: '进行中', time: '2026-1-15 22:00:00' }, // ... 更多数据 ], // 群聊黑词列表 groupWords: [ { index: 1, word: '捕捉鸟类', type: 'group' }, // ... 更多数据 ], // 对话组数据 dialogGroups: [ { account1: { id: 1, name: '花花' }, account2: { id: 2, name: 'lilii' }, progress: 0, status: '待挖掘', time: '2026-1-15 22:00:00' }, // ... 更多数据 ] } }

5.2 分页与搜索逻辑

// 搜索处理 handleSearch() { console.log('搜索关键词:', this.searchKeyword); // 实际开发中可以调用API获取数据 // 前端过滤示例 if (this.searchKeyword) { this.filteredData = this.privateWords.filter(item => item.word.toLowerCase().includes(this.searchKeyword.toLowerCase()) ); } else { this.filteredData = [...this.privateWords]; } }, // 重置搜索 handleReset() { this.searchKeyword = ''; this.filteredData = [...this.privateWords]; }, // 分页处理 handleSizeChange(val) { console.log('每页显示条数:', val); this.pageSize = val; this.loadTableData(); }, handleCurrentChange(val) { console.log('当前页码:', val); this.currentPage = val; this.loadTableData(); }

六、交互功能实现

6.1 对话框管理

// 打开对话框 openDialog() { this.dialogVisible = true; // 可以在这里初始化数据 this.initDialogData(); }, // 关闭对话框 dialogClose() { this.dialogVisible = false; this.resetDialogState(); }, // 确认操作 confirm() { // 获取选中的黑词 const selectedWords = this.privateWords.filter(item => item.checked); console.log('选中的黑词:', selectedWords); // 执行确认逻辑 this.performConfirmAction(selectedWords); // 关闭对话框 this.dialogClose(); }

6.2 操作功能

// 话题挖掘 handleTopicMining(row) { console.log('进行话题挖掘:', row); // 实际开发中可以跳转到话题挖掘页面或打开模态框 this.$message.info(`对黑词"${row.word}"进行话题挖掘`); }, // 结果查看 handleResultView(row) { console.log('查看结果:', row); // 实际开发中可以跳转到结果页面 this.$message.info(`查看黑词"${row.word}"的分析结果`); }, // 对话组话题挖掘 handleTopicMiningForDialog(group) { console.log('对话组话题挖掘:', group); // 根据状态判断是否可操作 if (group.status !== '待挖掘') { this.$message.warning('当前状态无法进行话题挖掘'); return; } // 执行话题挖掘 this.startTopicMining(group); }, // 对话组结果查看 handleResultViewForDialog(group) { console.log('对话组结果查看:', group); // 根据状态判断是否可操作 if (group.status !== '已完成') { this.$message.warning('分析未完成,无法查看结果'); return; } // 打开结果查看页面 this.openResultView(group); }

七、样式设计

7.1 布局

.black-word-analysis { display: flex; gap: 20px; /* 左右面板间距 */ height: 100%; overflow: hidden; /* 左侧面板 */ .left-panel { width: 630px; /* 固定宽度 */ background: #ffffff; box-shadow: 0px 0px 22px 0px rgba(159, 159, 159, 0.16); border-radius: 8px; } /* 右侧面板 */ .right-panel { width: calc(100% - 630px); /* 自适应剩余宽度 */ background: #ffffff; box-shadow: 0px 0px 22px 0px rgba(159, 159, 159, 0.16); border-radius: 8px; } }

7.2 面板头部设计

.panel-header { display: flex; align-items: center; height: 44px; background: #edf1f9; border-radius: 8px; padding: 14px 20px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; .panel-title { font-family: Adobe Heiti Std; font-weight: 500; font-size: 16px; color: #333333; } .panel-icon { width: 4px; height: 18px; background: linear-gradient(-90deg, #387bfc 0%, #0155ff 100%); margin-right: 12px; } }

7.3 进度条样式

.progress-bar { width: 268px; height: 100%; display: flex; align-items: center; .el-progress { width: calc(100% - 82px); } .progress { width: 100%; height: 100%; /deep/ .el-progress-bar__outer { width: 100%; height: 20px !important; /* 调整进度条高度 */ border-radius: 0px !important; /* 直角样式 */ } /deep/ .el-progress-bar__inner { border-radius: 0px !important; /* 直角样式 */ } } .progress-text { width: 52px; font-family: Adobe Heiti Std; font-weight: normal; font-size: 14px; color: #333333; margin-left: 30px; text-align: end; &.progress-text-success { color: #00a510; /* 成功状态颜色 */ } &.progress-text-warning { color: #1c68fe; /* 进行中状态颜色 */ } &.progress-text-info { color: #f6a200; /* 待挖掘状态颜色 */ } } }

7.4 状态标签样式

.table_item_status { font-family: Adobe Heiti Std; font-weight: normal; font-size: 14px; margin-left: 54px; &.status-success { color: #00a510; /* 成功 */ } &.status-warning { color: #1c68fe; /* 进行中 */ } &.status-info { color: #f6a200; /* 待挖掘 */ } }

7.5 选中状态高亮

.table_item { display: flex; flex-direction: column; justify-content: space-between; width: 100%; border-radius: 10px; background: #fafafa; margin-bottom: 14px; padding: 20px 20px 15px; transition: background-color 0.3s ease; /* 选中状态 */ &.table_item_active { background: rgba(41, 133, 247, 0.06); /* 浅蓝色背景 */ border: 1px solid rgba(41, 133, 247, 0.2); /* 蓝色边框 */ } }

最后

这个黑词分析系统前端实现展示了如何设计一个高效、直观的数据分析界面。关键设计亮点包括:

双面板并行设计:同时管理黑词和对话组,提高分析效率

进度监控:直观展示分析状态,便于任务管理

智能交互:根据状态动态控制操作权限

高度可配置:支持多维度筛选和分页管理

优秀用户体验:清晰的视觉层次和即时反馈

Read more

AiOnly大模型深度测评:调用GPT-5 API+RAG知识库,快速构建智能客服机器人

AiOnly大模型深度测评:调用GPT-5 API+RAG知识库,快速构建智能客服机器人

声明:本测试报告系作者基于个人兴趣及使用场景开展的非专业测评,测试过程中所涉及的方法、数据及结论均为个人观点,不代表任何官方立场或行业标准。 引言 AI 技术加速渗透各行各业的今天,你是否也面临这样的困境:想调用 GPT-5、Claude4.5等顶尖模型却被海外注册、跨平台适配搞得焦头烂额?想快速搭建智能客服、内容生成工具,却因模型接口差异、成本不可控而望而却步?或是作为中小团队,既想享受 AI 红利,又受限于技术门槛和预算压力? AiOnly平台的出现,正是为了打破这些壁垒。 本文将从实战角度出发,带你全方位解锁这个「全球顶尖大模型 MaaS 平台」:从 5 分钟完成注册到 API 密钥创建,从单模型调用到融合 RAG 知识库的智能体开发,然后手把手教你在 Windows 环境部署一个日均成本不足 0.5 元的电商客服机器人。无论你是 AI 开发者、企业运营者,还是想低成本尝试 AI

VLA机器人革命:解析当下10篇最关键的视觉-语言-动作模型论文

VLA机器人革命:解析当下10篇最关键的视觉-语言-动作模型论文

VLA机器人革命:解析当下10篇最关键的视觉-语言-动作模型论文 概览 2024-2026年,机器人领域正经历一场范式转换:从传统的任务特定编程转向视觉-语言-动作(Vision-Language-Action, VLA)模型。这些模型将视觉感知、自然语言理解和动作执行统一在单一框架中,让机器人能够像人类一样理解指令、推理场景并执行复杂操作。 本文精选5篇最fundamental的基础性论文和5篇热度最高的前沿论文,深入剖析VLA领域的核心思想、技术演进和未来方向。这些论文代表了从Google DeepMind、NVIDIA、斯坦福、Physical Intelligence等顶尖机构的最新突破,涵盖了从单臂操作到双臂人形机器人、从模拟环境到真实家庭场景的全方位进展。 Part I: 五篇Fundamental基础性论文 这些论文奠定了VLA领域的理论基础和技术范式,是理解整个领域发展脉络的关键。 1. RT-2: New Model Translates Vision and Language into Action 发表机构:Google DeepMind 时间:

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

适用读者:机器人二次开发者、科研人员 开发环境:Ubuntu 20.04(推荐) 机器人型号:Unitree G1 EDU+ 前言 宇树 G1 是一款面向科研与商业应用的高性能人形机器人,支持丰富的二次开发接口。在正式进行算法调试与功能开发之前,首要任务是建立稳定的开发连接。本文将详细介绍两种主流连接方式:有线(网线直连) 与 无线(WiFi + SSH),并附上完整的配置流程,帮助开发者快速上手。 一、有线连接(推荐新手优先使用) 有线连接通过网线直接将开发电脑与 G1 机器人相连,具有延迟低、稳定性高、不依赖外部网络的优势,是新手入门和底层调试的首选方式。 1.1 前置条件 所需物品说明开发电脑推荐安装 Ubuntu 20.04,或在 Windows 上使用虚拟机宇树 G1 机器人确保已开机且处于正常状态网线(

基于 LangChain 实现数据库问答机器人

基于 LangChain 实现数据库问答机器人

基于 LangChain 实现数据库问答机器人 * 一、简介 * 二、应用场景 * 三、实战案例 * 1、需求说明 * 2、实现思路 * 3、对应源码 一、简介 在 Retrieval 或者 ReACT 的一些场景中,常常需要数据库与人工智能结合。而 LangChain 本身就封装了许多相关的内容,在其官方文档-SQL 能力中,也有非常好的示例。 二、应用场景 在未出现人工智能,如果想要完成数据查询与数据分析的工作,则需要相关人员有相应的数据库的功底,而在 LangChain 结合大语言模型的过程中,应对这些问题则相当轻松——写清晰的提示词即可。 * 生成将基于自然语言问题运行的查询。 在传统的工作流程中,如果想要在数据库中搜索一些信息,那么就必须要掌握相应的数据库技术,比如 SQL 语句查询等,但是其本身有很高的学习成本。如果能用自然语言代替这个过程,则任何人都无需学习 SQL