uniapp 小程序 实时拍照(仅拍照)限制上传5张 可预览 可删除

news2024/10/7 6:48:40

效果图:
在这里插入图片描述

common.js

/**
 * 预览图片
 */
const previewImage = (current,list)=>{
	// 预览图片
	uni.previewImage({
		current: current,
		urls: list
	});
}
/**
 * 删除图片
 */
const removeImage = (current,list)=>{
	var photoFilesList = list;
	photoFilesList.splice(current, 1);
	list = photoFilesList
}
	
module.exports = {
	previewImage,
	removeImage
};



		
<template>
	<view class="other-item">
		<view>装货照片</view>
		<view class="right-text" v-if="orderStatus == 1">
			//未拍照上传时显示拍照按钮
			<view class="take-picture" @click="getUploadImg">
				<image src="../../static/img/take-picture.png"></image>
			</view>
		</view>
		//从接口返回的已上传照片的回显
		<view class="right-info" v-if="orderStatus == 2 || orderStatus == 3">
			<view class="img-list">
				<block v-for="(imgItem, idx) in shipmentPhotos" :key="idx">
					<view class="img-item">
						<image :src="imgItem" @click="$common.previewImage(idx,shipmentPhotos)">
						</image>
					</view>
				</block>
			</view>
		</view>
	</view>
	//已拍照上传时显示拍照上传后的图片,可预览可删除
	<view class="other-item" v-if="orderStatus == 1">
		<view></view>
		<view class="right-info">
			<view class="img-list">
				<block v-for="(imgItem, idx) in shipmentPhotos" :key="idx">
					<view class="img-item upload-item">
						<image :src="imgItem" @click="$common.previewImage(idx,shipmentPhotos)">
						</image>
						<!-- 移除图片的按钮  -->
						<view class="q-image-remover" :data-idx="idx"
							@click="$common.removeImage(idx,shipmentPhotos)">
							<image src="../../static/img/close.png"></image>
						</view>
					</view>
				</block>
			</view>
		</view>
	</view>
</template>

data:

data() {
	return {
		shipmentPhotos: [], //装货照片列表
		//订单状态(0 待接单,1待装货,2待送达,3已完成,4已关闭)
		orderStatus: 0
	}

methods:

methods: {
	//拍摄装货照片
	getUploadImg: function(e) {
		if(this.shipmentPhotos.length > 4){
			uni.showModal({
				title: "至多上传5张",
				content: "",
				confirmText: "确定",
				showCancel: false,
				success: (res) => {
					
				}
			})
			return
		}
		
		var idx = e.target.dataset.idx;
		var ths = this;
		wx.chooseImage({
			count: 5,
			// 默认9
			sizeType: ['compressed'],
			sourceType: ['camera'], //指定拍照
			success: function(res) {
				// 图片的本地临时文件路径列表
				var tempFilePaths = res.tempFilePaths;
				uni.showLoading({
					mask: true
				});
				tempFilePaths.forEach(item => {
					var params = {
						url: "/*****/***",//图片上传接口
						filePath: item,
						name: 'file',
						callBack: function(res2) {
							var data = JSON.parse(res2);
							var path = config.picDomain + data.fileName
							var photoFiles = ths.shipmentPhotos;
							photoFiles.push(path);
							ths.shipmentPhotos = photoFiles
							uni.hideLoading()
						}
					};
					http.upload(params);
				})
			}
		});
	}
	
}
<style>
	.other-item {
		font-size: 30rpx;
		color: #666666;
		padding-top: 12rpx;
		display: flex;
		justify-content: space-between;
		align-items: center;
		margin-bottom: 17rpx;
	}
	.right-text {
	color: #222;
}
.take-picture {
	width: 253rpx;
	height: 66rpx;
	border-radius: 60rpx;
	/* background: linear-gradient(270deg, #96C776 0%, #62B56B 97%);
	box-shadow: 0px 4rpx 4rpx 0px rgba(141, 214, 135, 0.2); */
}

.take-picture image {
	width: 100%;
	height: 100%;
}
.right-info {
	font-size: 30rpx;
	color: #222;
	text-align: right;
}

.right-info.red {
	color: #F44848;
}

.right-info.time-text {
	font-size: 24rpx;
}
.img-list {
	display: flex;
}

.img-item {
	width: 90rpx;
	height: 89rpx;
	overflow: hidden;
	margin-left: 10rpx;
}

.img-item image {
	width: 100%;
	height: 100%;
}
.upload-item {
	position: relative;
	overflow: inherit;
}
/* 删除图片按钮 */
.q-image-remover {
	position: absolute;
	right: -6rpx;
	top: -6rpx;
	width: 30rpx;
	height: 30rpx;
	text-align: center;
	font-size: 23rpx;
	background-color: #ff0000;
	color: #fff;
	border-radius: 30rpx;
	overflow: hidden;
}

.q-image-remover image {
	width: 100%;
	height: 100%;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX:宏任务与微任务

异步任务划分为了 宏任务&#xff1a;由浏览器环境执行的异步代码 微任务&#xff1a;由 JS 引擎环境执行的异步代码 宏任务和微任务具体划分&#xff1a; 左边表格是宏任务&#xff0c;右边是微任务 事件循环模型 /*** 目标&#xff1a;阅读并回答打印的执行顺序 */ console…

国内软件外包公司开发流程

当企业发展到一定阶段后&#xff0c;现有市场上通用型的软件往往无法满足自身的业务需求&#xff0c;这就需要企业定制化开发软件系统来满足自身独特的需求。而传统企业往往没有自己的软件研发队伍&#xff0c;在开发软件系统时快速新建团队风险比较高&#xff0c;可以采用外包…

Docker 网络模型:多角度分析容器网络的原理与应用

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

FPGA adrv9002 4收4发板卡,支持NVME SATA EMMC 光口 FMC

板卡采用ADI 射频直采芯片ADRV9002 &#xff0c;支持4收4发支持外部本振 跳频 同时支持4X 10G光口对外传输&#xff0c;FMC扩展 。同时支持4X NVME接口&#xff0c;可以实时流盘&#xff0c;备份一路SAT A接口&#xff0c;板卡同时预留了EMMC&#xff0c;可以PS PL选通访问&…

【Java基础教程】Java学习路线攻略导图 · 上篇 ~

Java学习路线攻略导图 上篇 前言1、入门介绍篇2、程序基础概念篇3、包及访问权限篇4、异常处理篇5、特别篇6、面向对象篇 前言 &#x1f37a;&#x1f37a; 各位读者朋友大家好&#xff01;得益于各位朋友的支持和关注&#xff0c;我的专栏《Java基础教程》 至今已经更新近半&…

浅谈无人机遥感图像拼接与处理方法

遥感&#xff08;RS-Remote Sensing&#xff09;——不接触物体本身&#xff0c;用传感器收集目标物的电磁波信息&#xff0c;经处理、分析后&#xff0c;识别目标物&#xff0c;揭示其几何、物理性质和相互关系及其变化规律的现代科学技术。 换言之&#xff0c;即是“遥远的感…

mysal数据库的日志恢复

目录 一 物理冷备份 二 mysqldump 备份与恢复&#xff08;温备份&#xff09; 三 mgsql中的增量备份需要借助mysql日志的二进制来恢复 小结 一 物理冷备份 systemctl stop mysqld yum -y install xz 压缩备份 tar Jcvf /opt/mysql_all_$(date %F).tar.xz /usr/local/mysql/…

文件上传前前端通过魔数(magic number)去限制上传文件类型

问题 最近项目需求文件上传前判断文件类型&#xff0c;有的同学会说用文件后缀判断不就好啦。其一&#xff0c;文件后缀可以修改&#xff0c;正确性待考究&#xff1b;其二&#xff0c;有些文件并没有文件后缀。这就需要我们动动脑筋啦&#xff0c;其实我们可以根据文件的头信…

4个顶级WooCommerce商城多站点库存同步WordPress插件

经营几家网上商店是令人兴奋的。但是&#xff0c;这也是一项艰巨的工作&#xff0c;尤其是当您意识到需要同步这些商店的库存时。好消息是&#xff0c;有 WooCommerce 多站点库存同步插件和选项可以加快速度。 WooCommerce 多站点网络可让您将所有在线商店无缝地安置在一个屋檐…

回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于KELM-Adaboo…

三菱q以太网简单cpu通讯

产品概述 捷米特JM-ETH-QnA是一款经济型的以太网通讯处理器&#xff0c;是为满足日益增多的工厂设备信息化需求&#xff08;设备网络监控和生产管理&#xff09;而设计&#xff0c;用于三菱Q2A/Q2AS1/Q3A/Q4A等多个QnA系列PLC的以太网数据采集&#xff0c;非常方便构建生产管理…

Mysql+ETLCloud CDC+StarRocks实时数仓同步实战

一、业务需求及其痛点 大型企业需要对各种业务系统中的销售及营销数据进行实时同步分析&#xff0c;例如库存信息、对帐信号、会员信息、广告投放信息&#xff0c;生产进度信息等等&#xff0c;这些统计分析信息可以实时同步到StarRocks中进行分析和统计&#xff0c;StarRocks…

性能测试学习阶段性总结

目录 1.前言 2.概念部分 2.1不同角度看软件性能 2.2关键词 2.3测试的方法 2.4应用领域 3.性能测试过程模型&#xff08;PTGM&#xff09; 2.1测试前期准备 2.2测试工具引入 2.3测试计划 2.4测试设计与开发 2.5测试执行和管理 2.6测试分析 总结&#xff1a; 1.前言…

干货!3个技巧让你轻松增强客户实时聊天的体验感

在当今竞争激烈的商业环境中&#xff0c;提供出色的客户服务成为企业成功的关键要素之一。尤其是在实时聊天平台上&#xff0c;为客户提供优质的体验感&#xff0c;对于建立良好的客户关系和提高销售转化率至关重要。如果你还在苦恼如何增强用户体验感&#xff0c;苦恼如何增加…

zabbix-server监控mysql数据库及httpd服务、监控apache、监控ftp

目录 一、监控mysql数据库及httpd服务 1、为server.Zabbix.com添加服务模板 2、server.zabbix.com服务端 操作 3、编辑chk_mysql.sh脚本 4、server.zabbix.com测试 二、监控apache 1、获取键值 2、服务器操作 3、zabbix监控web端导入监控模板 4、server.zabbix.com添加…

B072-项目实战-用户模块--前台登录 三方登录

目录 前台登录-账号登录前端完成左上角显示用户信息配置前置拦截器、后置拦截器和不受限资源拦截器 三方登录-微信登录概述流程图用法代码实现步骤分析:实现准备代码前端login.htmlcallback.html 后端LoginController-微信登录LoginServiceImpl-微信登录解决回调域名不能跨域绑…

【教程】VSCode配置C++环境踩坑记录

时隔一年终于在VSCode配置好了C环境[MinGW] 基础部分踩坑坑0坑1坑2坑3 基础部分 就是安装VSCode&#xff0c;然后再安装C插件之类的&#xff0c;咱这就不罗嗦了&#xff0c;如果不清楚可以参考这篇文章&#xff1a;VSCode配置C/C环境 毕竟解决后面一些棘手的问题更重要。 踩坑…

算法竞赛字符串常用操作大全

算法竞赛字符串常用操作总结来啦~ &#x1f44a; 大家好 我是寸铁&#x1f4aa; 考前需要刷大量真题,大家一起相互监督&#xff0c;每日做N题&#xff0c;一起上岸吧✌️ ~ 冲刺蓝桥杯省一模板大全来啦 &#x1f4a5; ~ 蓝桥杯4月8号就要开始了 &#x1f64f; ~ 还没背熟模…

一文带你了解Spring中存入Bean和获取Bean的方式

0. Spring中的五大注解 上图中就是五大类注解对应的层&#xff0c;通过源码可以看到其他四个注解都基于Conponent 1. 存入 Bean Spring既然是一个包含众多工具方法的IoC容器&#xff0c;它是一个控制反转的容器&#xff0c;所以就需要将Bean对象存入到容器中&#xff0c;需要…

excel文件导入或导出Java代码示例

1、excel文件导入 controller层接口内容 service层代码 serviceImpl内代码内容 OverrideTransactional(rollbackFor Exception.class)public void importCheckItemExcel(MultipartFile file, Long checkPkgId) throws Exception {if (file.isEmpty()){throw new IOException(…