uniapp--微信小程序无网络提示组件页面

uniapp–微信小程序无网络提示组件页面

1.组件页面fu-notwork.vue代码

<template>
	<view class="fu-notwork" v-if="!isConnected">
		<view class="fu-count-df" v-if="mode == 'full'" :style="{ zIndex: zIndex }">
			<image class="icon" :src="image" mode="aspectFit"></image>
			<view class="tips">{{ tips }}</view>
			<view class="text-gray text-sm margin-bottom-sm">
				{{ i18n['请检查网络,或者前往'] }}
				<text class="text-blue">{{ i18n['设置'] }}</text>
			</view>
			<view @click="getNetworkStattus">{{ i18n['点击刷新'] }}</view>
		</view>
		<view class="fu-count-tips" v-if="mode == 'tips'">
			<text></text>
			<text>{{ tips }}</text>
		</view>
	</view>
</template>

<script>
	/**
	 * fu-notwork 无网络提示
	 * @description 该组件无需任何配置,引入即可,内部自动处理所有功能和事件。
	 * @property {String} mode full 全屏模式 | tips 占位模式 | toast 提示框模式 | modal 弹框模式
	 * @property {String} tips 没有网络时的提示语(默认哎呀,网络信号丢失)
	 * @property {String Number} zIndex 组件的z-index值(默认1080)
	 * @property {String} image 无网络的图片提示,可用的src地址或base64图片
	 * @event {Function} retry 用户点击页面的"重试"按钮时触发
	 * @example <fu-notwork></fu-notwork>
	 */
	export default {
		name: 'fu-notwork',
		props: {
			// 组件模式 默认全屏模式 、tips 占位模式 、toast 提示框模式
			mode: {
				type: String,
				default () {
					return 'full';
				}
			},
			tips: {
				type: String,
				default () {
					return global.i18n['哎呀,网络信号丢失'];
				}
			},

			zIndex: {
				type: [String, Number],
				default () {
					return 100;
				}
			},

			image: {
				type: String,
				default () {
					return 'data:image/png;base64,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';
				}
			}
		},
		data() {
			return {
				isConnected: true
			};
		},
		created() {
			let _this = this;
			uni.getSystemInfo({
				success: (res) => {
					console.log(res.platform, 'platformplatform')
					_this.platform = res.platform;
				}
			})
			// 监听网络状态的变化
			uni.onNetworkStatusChange(res => {
				// console.log(res)
				this.isConnected = res.isConnected;
				if (this.isConnected) {
					if (!uni.getStorageSync('CommonNetConnected') && _this.platform == 'ios') {
						uni.setStorageSync('CommonNetConnected', true)
						setTimeout(() => {
							plus.runtime.restart()
						}, 1000)
					} else {
						uni.setStorageSync('CommonNetConnected', true)
					}
					this.$emit('retry', {
						msg: this.i18n['网络链接成功'],
						networkType: res.networkType
					});
				} else {
					if (this.mode == 'toast') {
						this.$message.info(this.tips);
					}
				}
			});
			this.getNetworkStattus();
		},
		methods: {
			// 功能:获取当前网络状态
			getNetworkStattus() {
				uni.getNetworkType({
					success: res => {
						// console.log(res.networkType);
						if (res.networkType == 'none') {
							this.isConnected = false;

							switch (this.mode) {
			 				case 'modal':
									this.$util.showModal({
										title: '提示',
										content: this.tips
			  				});
									break;
								case 'toast':
									this.$message.info(this.tips);
									break;
								default:
									this.$message.info({
										content: this.i18n['无网络链接'],
										position: 'top'
									});
									break;
							}
						} else {
							this.isConnected = true;
							if (!uni.getStorageSync('CommonNetConnected')) {
								uni.setStorageSync('CommonNetConnected', true)
								setTimeout(() => {
									plus.runtime.restart()
								}, 1000)
							}
							this.$emit('retry', {
								msg: this.i18n['网络链接成功'],
								networkType: res.networkType
							});
						}
					}
				});
			}
		}
	};
</script>

<style lang="scss">
//在uni.scss中定义 $fu-prefix: fu;
	.#{$fu-prefix} {
		&-notwork {
			color: #666;

			.#{$fu-prefix}-count-df {
				position: fixed;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				background-color: white;
				text-align: center;
				padding-top: 380rpx;
				z-index: 9999;

				.icon {
					width: 200rpx;
					height: 200rpx;
					margin-bottom: 20rpx;
				}

				.tips {
					margin-bottom: 20rpx;
				}
			}

			.#{$fu-prefix}-count-tips {
				font-size: 24rpx;
				line-height: 80rpx;
				background-color: #ffdfdf;
				color: #666;
				text-align: center;
			}
		}
	}
</style>

2.全局引用

  <!-- 断网检测 start -->
    <fu-notwork></fu-notwork>
  <!-- 断网检测 end -->
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值