瀏覽代碼

Merge branch 'master-steady' into master-uat

zhengkaixin 2 年之前
父節點
當前提交
ae57e79cf3
共有 2 個文件被更改,包括 61 次插入10 次删除
  1. 6 4
      pages/mine/issue.vue
  2. 55 6
      uni_modules/uview-ui/components/u-upload-file/u-upload-file.vue

+ 6 - 4
pages/mine/issue.vue

@@ -19,12 +19,14 @@
 	  <view class="upload">
 		
 	  	<u-upload-file  ref="uUpload" :action="action"
-		  :max-size="50 * 1024 * 1024" :maxCount="9"
+		  :max-size="2 * 1024 * 1024"
+		  :file-max-size="50 * 1024 * 1024"
+		   :maxCount="9"
 		  :form-data="formData" :header="header"
 		 :file-list="fileList" ></u-upload-file>
 	  </view>
 	  
-	  <view class="select">
+	  <view class="select" v-if="false">
 	  	<view class="join">
 	  		<text class="sign">#</text>
 			<text class="text">参与活动</text>
@@ -36,7 +38,7 @@
 	  </view>
 	  <view style="padding: 10px;">每周只能发布一次 ,每周一重置次数</view>
 	  <view style="padding: 10px;">上传备注:<br/>1.最多上传9张(含图片\视频)
-	  <br/>2.单个文件大小限制为50M
+	  <br/>2.视频文件大小限制为50M,图片文件大小限制为2M
 	  <br/> 3.图片一行显示3个,视频一行显示1个;
 	  <br/>4.发布后图片排列在视频前面,其余顺序按上传顺序排列</view>
 	  
@@ -103,7 +105,7 @@
 			if(op.nic){
 				this.nic=op.nic;
 			}
-			this.getShareList()
+			//this.getShareList()
 		},
 		methods:{
 			confirmshare(es){

+ 55 - 6
uni_modules/uview-ui/components/u-upload-file/u-upload-file.vue

@@ -183,6 +183,11 @@ export default {
 			type: [String, Number],
 			default: Number.MAX_VALUE
 		},
+		// 文件大小限制,单位为byte
+		fileMaxSize: {
+			type: [String, Number],
+			default: Number.MAX_VALUE
+		},
 		// 显示已上传的文件列表
 		fileList: {
 			type: Array,
@@ -198,7 +203,7 @@ export default {
 		// 是否自动上传
 		autoUpload: {
 			type: Boolean,
-			default: true
+			default: false
 		},
 		// 是否显示toast消息提示
 		showTips: {
@@ -259,6 +264,15 @@ export default {
 				return ['png', 'jpg', 'jpeg', 'webp', 'gif', 'image','mp4'];
 			}
 		},
+		// 放一起,免得忘记了, 用于 图片上传限制, 和文件上传限制区别
+		fileLimitType:{
+			type: Array,
+			default() {
+				// 支付宝小程序真机选择图片的后缀为"image"
+				// https://opendocs.alipay.com/mini/api/media-image
+				return ['mp4'];
+			}
+		},
 		// 在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件
 		index: {
 			type: [Number, String],
@@ -306,7 +320,7 @@ export default {
 		// 选择图片
 		selectFile() {
 			if (this.disabled) return;
-			const { name = '', maxCount, multiple, maxSize, sizeType, lists, camera, compressed, maxDuration, sourceType } = this;
+			const { name = '', maxCount, multiple, maxSize, fileMaxSize, sizeType, lists, camera, compressed, maxDuration, sourceType } = this;
 			let chooseFile = null;
 			const newMaxCount = maxCount - lists.length;
 			// 设置为只选择图片的时候使用 chooseImage 来实现
@@ -331,10 +345,26 @@ export default {
 						
 						// 如果是非多选,index大于等于1或者超出最大限制数量时,不处理
 						if (!multiple && index >= 1) return;
-						if (val.size > maxSize) {
-							this.$emit('on-oversize', val, this.lists, this.index);
-							this.showToast('超出允许的文件大小'+(maxSize/1024/1024)+"M");
-						} else {
+						console.log(this.getFileExt(val),this.fileLimitType,fileMaxSize)
+						var ckvalsize=true;
+						if (this.fileLimitType.indexOf(this.getFileExt(val))>-1) {
+							if(val.size > fileMaxSize){
+								this.$emit('on-oversize', val, this.lists, this.index);
+								this.showToast('超出允许的视频大小'+(fileMaxSize/1024/1024)+"M");
+								ckvalsize=false
+							}
+							
+						}else {
+							if(val.size > maxSize) {
+								this.$emit('on-oversize', val, this.lists, this.index);
+								this.showToast('超出允许的图片大小'+(maxSize/1024/1024)+"M");
+								ckvalsize=false
+							}
+						}
+						
+						if(!ckvalsize){
+							
+						}else {
 							if (maxCount <= lists.length) {
 								this.$emit('on-exceed', val, this.lists, this.index);
 								this.showToast('超出最大允许的文件个数');
@@ -560,6 +590,25 @@ export default {
 			});
 		},
 		// 判断文件后缀是否允许
+		getFileExt(file) {
+			// 检查是否在允许的后缀中
+			let noArrowExt = false;
+			// 获取后缀名
+			let fileExt = '';
+			const reg = /.+\./;
+			// 如果是H5,需要从name中判断
+			// #ifdef H5
+			fileExt = file.name.replace(reg, "").toLowerCase();
+			// #endif
+			// 非H5,需要从path中读取后缀
+			// #ifndef H5
+			fileExt = file.path.replace(reg, "").toLowerCase();
+			// #endif
+			// 使用数组的some方法,只要符合limitType中的一个,就返回true
+			 
+			return fileExt;
+		},
+		// 判断文件后缀是否允许
 		checkFileExt(file) {
 			// 检查是否在允许的后缀中
 			let noArrowExt = false;