mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	
		
			
	
	
		
			115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  | 	<view class="mix-loading center"> | |||
|  | 		<view v-if="!isTimeout" class="center"> | |||
|  | 			<view v-if="mask" class="mask" @click.stop.prevent="stopPrevent" @touchmove.stop.prevent="stopPrevent"></view> | |||
|  | 			<!-- 黑底菊花 --> | |||
|  | 			<view v-if="type === 1" class="chry column center"> | |||
|  | 				<view class="icon"></view> | |||
|  | 				<text class="tit">{{ title }}</text> | |||
|  | 			</view> | |||
|  | 			<!-- 仓鼠 --> | |||
|  | 			<image v-else-if="type === 2" class="hamster" src="/static/loading/hamster.gif"></image> | |||
|  | 		</view> | |||
|  | 	</view> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  | 	/** | |||
|  | 	 * loading | |||
|  | 	 * @prop type 1 黑底菊花 2 小胖仓鼠 | |||
|  | 	 * @prop mask 遮罩层 | |||
|  | 	 * @prop timeout 超时时间(秒) 默认10s | |||
|  | 	 */ | |||
|  | 	export default { | |||
|  | 		name: 'MixIconLoading', | |||
|  | 		data(){ | |||
|  | 			return { | |||
|  | 				isTimeout: false | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		props: { | |||
|  | 			type: { | |||
|  | 				type: Number, | |||
|  | 				default: 1 | |||
|  | 			}, | |||
|  | 			mask: { | |||
|  | 				type: Boolean, | |||
|  | 				default: false | |||
|  | 			}, | |||
|  | 			timeout: { | |||
|  | 				type: Number, | |||
|  | 				default: 10 | |||
|  | 			}, | |||
|  | 			title: { | |||
|  | 				type: String, | |||
|  | 				default: '请稍候' | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		created() { | |||
|  | 			this._timer = setTimeout(()=>{ | |||
|  | 				if(!this.isLoading){ | |||
|  | 					return; | |||
|  | 				} | |||
|  | 				this.isTimeout = true; | |||
|  | 				uni.showToast({ | |||
|  | 					title: '加载超时,请重试', | |||
|  | 					icon: 'none' | |||
|  | 				}) | |||
|  | 			}, this.timeout * 1000) | |||
|  | 		}, | |||
|  | 		destroyed() { | |||
|  | 			this._timer && clearTimeout(this._timer); | |||
|  | 		} | |||
|  | 	} | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped lang='scss'> | |||
|  | 	.mix-loading{ | |||
|  | 		position: fixed; | |||
|  | 		left: 50vw; | |||
|  | 		top: 46vh; | |||
|  | 		width: 0; | |||
|  | 		height: 0; | |||
|  | 		z-index: 999; | |||
|  | 	} | |||
|  | 	.mask{ | |||
|  | 		position: fixed; | |||
|  | 		left: 0; | |||
|  | 		top: 0; | |||
|  | 		right: 0; | |||
|  | 		bottom: 0; | |||
|  | 	} | |||
|  | 	.chry{ | |||
|  | 		min-width: 120rpx; | |||
|  | 		min-height: 116rpx; | |||
|  | 		border-radius: 10rpx; | |||
|  | 		background-color: rgba(17,17,17,.7); | |||
|  | 		 | |||
|  | 		.icon{ | |||
|  | 			width: 64rpx; | |||
|  | 			height: 64rpx; | |||
|  | 			background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=); | |||
|  | 			background-repeat: no-repeat; | |||
|  | 			background-size: 100% 100%; | |||
|  | 			animation: mix-loading 1s steps(12) infinite; | |||
|  | 		} | |||
|  | 		.tit{ | |||
|  | 			margin: 10rpx 0 6rpx; | |||
|  | 			font-size: 20rpx; | |||
|  | 			color: #e9e9e9; | |||
|  | 		} | |||
|  | 	} | |||
|  | 	@keyframes mix-loading{ | |||
|  | 		from { | |||
|  | 			transform:rotate(0deg) | |||
|  | 		} | |||
|  | 		to { | |||
|  | 			transform: rotate(1turn) | |||
|  | 		} | |||
|  | 	} | |||
|  | 	.hamster{ | |||
|  | 		width: 106rpx; | |||
|  | 		height: 120rpx; | |||
|  | 	} | |||
|  | </style> |