85 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								let mpMixins = {}
							 | 
						||
| 
								 | 
							
								let is_pc = null
							 | 
						||
| 
								 | 
							
								// #ifdef H5
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
									isPC
							 | 
						||
| 
								 | 
							
								} from "./isPC"
							 | 
						||
| 
								 | 
							
								is_pc = isPC()
							 | 
						||
| 
								 | 
							
								// #endif
							 | 
						||
| 
								 | 
							
								// #ifdef APP-VUE || APP-HARMONY || MP-WEIXIN || H5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mpMixins = {
							 | 
						||
| 
								 | 
							
									data() {
							 | 
						||
| 
								 | 
							
										return {
							 | 
						||
| 
								 | 
							
											is_show: 'none'
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									watch: {
							 | 
						||
| 
								 | 
							
										show(newVal) {
							 | 
						||
| 
								 | 
							
											this.is_show = this.show
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									created() {
							 | 
						||
| 
								 | 
							
										this.swipeaction = this.getSwipeAction()
							 | 
						||
| 
								 | 
							
										if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
							 | 
						||
| 
								 | 
							
											this.swipeaction.children.push(this)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									mounted() {
							 | 
						||
| 
								 | 
							
										this.is_show = this.show
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									methods: {
							 | 
						||
| 
								 | 
							
										// wxs 中调用
							 | 
						||
| 
								 | 
							
										closeSwipe(e) {
							 | 
						||
| 
								 | 
							
											if (this.autoClose && this.swipeaction) {
							 | 
						||
| 
								 | 
							
												this.swipeaction.closeOther(this)
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										change(e) {
							 | 
						||
| 
								 | 
							
											this.$emit('change', e.open)
							 | 
						||
| 
								 | 
							
											if (this.is_show !== e.open) {
							 | 
						||
| 
								 | 
							
												this.is_show = e.open
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										appTouchStart(e) {
							 | 
						||
| 
								 | 
							
											if (is_pc) return
							 | 
						||
| 
								 | 
							
											const {
							 | 
						||
| 
								 | 
							
												clientX
							 | 
						||
| 
								 | 
							
											} = e.changedTouches[0]
							 | 
						||
| 
								 | 
							
											this.clientX = clientX
							 | 
						||
| 
								 | 
							
											this.timestamp = new Date().getTime()
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										appTouchEnd(e, index, item, position) {
							 | 
						||
| 
								 | 
							
											if (is_pc) return
							 | 
						||
| 
								 | 
							
											const {
							 | 
						||
| 
								 | 
							
												clientX
							 | 
						||
| 
								 | 
							
											} = e.changedTouches[0]
							 | 
						||
| 
								 | 
							
											// fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
							 | 
						||
| 
								 | 
							
											let diff = Math.abs(this.clientX - clientX)
							 | 
						||
| 
								 | 
							
											let time = (new Date().getTime()) - this.timestamp
							 | 
						||
| 
								 | 
							
											if (diff < 40 && time < 300) {
							 | 
						||
| 
								 | 
							
												this.$emit('click', {
							 | 
						||
| 
								 | 
							
													content: item,
							 | 
						||
| 
								 | 
							
													index,
							 | 
						||
| 
								 | 
							
													position
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										onClickForPC(index, item, position) {
							 | 
						||
| 
								 | 
							
											if (!is_pc) return
							 | 
						||
| 
								 | 
							
											// #ifdef H5
							 | 
						||
| 
								 | 
							
											this.$emit('click', {
							 | 
						||
| 
								 | 
							
												content: item,
							 | 
						||
| 
								 | 
							
												index,
							 | 
						||
| 
								 | 
							
												position
							 | 
						||
| 
								 | 
							
											})
							 | 
						||
| 
								 | 
							
											// #endif
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// #endif
							 | 
						||
| 
								 | 
							
								export default mpMixins
							 |