xsx 7 месяцев назад
Родитель
Сommit
28ba0c2c13

+ 4 - 2
im-platform/src/main/java/com/bx/implatform/service/impl/FileServiceImpl.java

@@ -106,8 +106,10 @@ public class FileServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> imple
             UploadImageVO vo = new UploadImageVO();
             // 获取图片长度和宽度
             BufferedImage bufferedImage =  ImageIO.read(file.getInputStream());
-            vo.setWidth(bufferedImage.getWidth());
-            vo.setHeight(bufferedImage.getHeight());
+            if(!Objects.isNull(bufferedImage)){
+                vo.setWidth(bufferedImage.getWidth());
+                vo.setHeight(bufferedImage.getHeight());
+            }
             // 如果文件已存在,直接复用
             String md5 = DigestUtils.md5DigestAsHex(file.getInputStream());
             FileInfo fileInfo = findByMd5(md5, FileType.IMAGE.code());

+ 10 - 4
im-uniapp/components/long-press-menu/long-press-menu.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="long-press-menu none-pointer-events">
-		<view @longpress.stop="onLongPress($event)" @touchmove="onTouchMove" @touchend="onTouchEnd">
+		<view @longpress.prevent.stop="onLongPress($event)" @touchmove="onTouchMove" @touchend="onTouchEnd">
 			<slot></slot>
 		</view>
 		<view v-if="isShowMenu" class="menu-mask" @touchstart="onClose()" @contextmenu.prevent=""></view>
@@ -39,9 +39,9 @@ export default {
 					let style = "";
 					/* 因 非H5端不兼容 style 属性绑定 Object ,所以拼接字符 */
 					if (touches.clientY > (res.windowHeight / 2)) {
-						style = `bottom:${res.windowHeight - touches.clientY}px;`;
+						style = `bottom:${res.windowHeight - touches.clientY + 20}px;`;
 					} else {
-						style = `top:${touches.clientY}px;`;
+						style = `top:${touches.clientY + 20}px;`;
 					}
 					if (touches.clientX > (res.windowWidth / 2)) {
 						style += `right:${res.windowWidth - touches.clientX}px;`;
@@ -53,12 +53,18 @@ export default {
 					this.$nextTick(() => {
 						this.isShowMenu = true;
 					});
+					this.menuTouch = touches
 				}
 			})
 		},
 		onTouchMove() {
-			this.onClose();
 			this.isTouchMove = true;
+			let touches = e.touches[0];
+			// 屏幕拖动大于50px时,取消菜单
+			if (Math.abs(touches.clientX - this.menuTouch.clientX) > 50 ||
+				Math.abs(touches.clientY - this.menuTouch.clientY) > 50) {
+				this.onClose();
+			}
 		},
 		onTouchEnd() {
 			this.isTouchMove = false;