在uniapp中实现长按聊天对话框可以弹出对话框然后可以删除该条对话,单击可以进入该条对话框的对话页面

news/2024/10/15 18:14:42/

效果展示

效果描述

长按【大于1s】某一条对话框会弹出一个对话框,点击确定按钮就可以将当前对话框从列表中进行删除,如果点击取消则不做额外操作。

如果只是点击了一下,时间【小于1s】的情况下会直接引入到与该用户的对话框详情页面。

代码实现

渲染层代码

      <view v-for="(item,index) in dialogList" :key="index" class="m-item" @touchstart="touchstart(item)"@touchend="touchend(item)"><view class="mi-left"><image :src="userId==item.msgSendId? item.msgRevHeadImg:item.msgSendHeadImg" mode="aspectFill"></image><view class="mil-num" v-if="item.readNum!=0">{{item.readNum>99?'99+':item.readNum}}</view></view><view class="mi-right"><view class="mir-top"><text class="mirt-name danhang">{{item.msgSendName}}</text><text style="color: rgba(16,16,16,0.7);">{{formatTime(item.createTime)}}</text></view><text class="danhang">{{formatType(item.textType,item)}}</text></view></view>

逻辑层代码

  let seconds = ref(0); // 用于跟踪经过的秒数let timeoutId = null; // 存储 setTimeout 的 IDlet hasShownDeleteDialog = false; // 标记是否已弹出删除对话框const touchstart = (item) => {seconds.value = 0; // 重置秒数hasShownDeleteDialog = false; // 重置标记timeoutId = setTimeout(() => {showDeleteDialog(item);}, 1000);};const touchend = (item) => {clearTimeout(timeoutId); // 清除 setTimeoutif (!hasShownDeleteDialog) {handleDetail(item);}seconds.value = 0; // 重置秒数};const showDeleteDialog = (item) => {hasShownDeleteDialog = true; // 设置标记为已弹出删除对话框clearInterval(timeoutId); // 清除 setTimeoutuni.showModal({title: `删除对话框`,content: `你确定要删除与【${item.msgSendName}】的对话框吗,删除后将无法恢复!!!`,success: function(res) {if (res.confirm) {console.log('用户点击确定', item);http.post(api.removeChatRecord, { revUserId: item.msgRevId, sendUserId: item.msgSendId }).then(res => {getDialogList();uni.showToast({icon: "none",title: "删除成功"})});} else if (res.cancel) {console.log('用户点击取消');}}});};


http://www.ppmy.cn/news/1539543.html

相关文章

Canmv k230 C++案例1——image classify学习笔记 初版

00 简介 用C编写代码的比mircopython要慢很多&#xff0c;需要编译开发环境&#xff0c;同时使用C更接近底层&#xff0c;效率利用率应该也是更高的&#xff0c;就是需要学习更多的内容&#xff0c;因为从零开始因此比较比较耗时。 注&#xff1a;以下为个人角度的理解&#x…

springboot3导出数据库数据到excel

一、导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.3.0</version></dependency><d…

鸿蒙OS 开机动画流程

开机动画的启动与结束 foundation\graphic\graphic_2d\graphic.cfg "services" : [{"name" : "render_service","path" : ["/system/bin/render_service"],"critical" : [0, 5, 60],"importance" : -…

现货黄金价格走势图策略分析 先看“势”

在现货黄金投资市场&#xff0c;对金价走势图的趋势进行分析&#xff0c;是投资者做出明智决策的关键步骤。通过有效的趋势分析&#xff0c;投资者可以更好地预测市场的走向&#xff0c;从而制定相应的交易策略。本文将详细介绍如何分析金价的趋势&#xff0c;并探讨这种分析方…

麒麟(Kylin)系统下安装MySQL 5.7.44(离线版)

目录 1、下载MySQL安装包2、卸载系统自带的mariadb和已安装过的MySQL包3、解压bundle.tar4、安装MySQL5、修改配置文件&#xff1a;vi /etc/my.cnf6、启动MySQL7、查看临时密码&#xff0c;并修改密码&#xff0c;授权远程访问。8、常见问题8.1 启动mysql内存溢出8.2 安装mysql…

服务器与内存市场|2025预测动态早知道

根据TrendForce的数据分析报告&#xff0c;三大DRAM供应商在2023年服务器总bit增长率经历了不同程度下滑后&#xff0c;2024年市场迎来了反弹&#xff0c;增长率分别达到了9.9%/12.3%/24.1%。这一转变表明服务器DRAM在三大供应商中的比例预计将会增加。与此同时&#xff0c;由于…

vite 配置开发环境和测试环境,接口 API 自动切换

在Vite项目中配置开发环境和测试环境&#xff0c;并实现接口API的自动切换&#xff0c;可以通过配置环境变量和相应的代理设置来完成。以下是一个详细的步骤指南&#xff1a; 一、创建环境文件 在项目根目录下创建.env、.env.development和.env.test文件&#xff0c;用于存储…

【Linux】命令行下的增删查改之“查看”

致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 头部内容获取(head) head命令的功能是显示文件开头的内容&#xff0c;默认值为前10行。 指令参数&#xff1a; -n 定义显示行数 -c 指定显示头部内容的字符数 -v 总是显示文件名的头信…