| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | 
							- <template>
 
-   <u-overlay
 
-       :show="!isConnected"
 
-       @touchmove.stop.prevent="noop"
 
-       :customStyle="{
 
- 			backgroundColor: '#fff',
 
- 			display: 'flex',
 
- 			justifyContent: 'center',
 
- 		}"
 
-   >
 
-     <view
 
-         class="u-no-network"
 
-     >
 
-       <u-icon
 
-           :name="image"
 
-           size="150"
 
-           imgMode="widthFit"
 
-           class="u-no-network__error-icon"
 
-       ></u-icon>
 
-       <text class="u-no-network__tips">{{ tips }}</text>
 
-       <!-- 只有APP平台,才能跳转设置页,因为需要调用plus环境 -->
 
-       <!-- #ifdef APP-PLUS -->
 
-       <view class="u-no-network__app">
 
-         <text class="u-no-network__app__setting">请检查网络,或前往</text>
 
-         <text
 
-             class="u-no-network__app__to-setting"
 
-             @tap="openSettings"
 
-         >设置
 
-         </text>
 
-       </view>
 
-       <!-- #endif -->
 
-       <view class="u-no-network__retry">
 
-         <u-button
 
-             size="mini"
 
-             text="重试"
 
-             type="primary"
 
-             plain
 
-             @click="retry"
 
-         ></u-button>
 
-       </view>
 
-     </view>
 
-   </u-overlay>
 
- </template>
 
- <script>
 
- import props from './props.js';
 
- /**
 
-  * noNetwork 无网络提示
 
-  * @description 该组件无需任何配置,引入即可,内部自动处理所有功能和事件。
 
-  * @tutorial https://www.uviewui.com/components/noNetwork.html
 
-  * @property {String}      tips  没有网络时的提示语 (默认:'哎呀,网络信号丢失' )
 
-  * @property {String | Number}  zIndex  组件的z-index值
 
-  * @property {String}      image  无网络的图片提示,可用的src地址或base64图片
 
-  * @event {Function}      retry  用户点击页面的"重试"按钮时触发
 
-  * @example <u-no-network></u-no-network>
 
-  */
 
- export default {
 
-   name: "u-no-network",
 
-   mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
 
-   data() {
 
-     return {
 
-       isConnected: true, // 是否有网络连接
 
-       networkType: "none", // 网络类型
 
-     }
 
-   },
 
-   mounted() {
 
-     this.isIOS = (uni.getSystemInfoSync().platform === 'ios')
 
-     uni.onNetworkStatusChange((res) => {
 
-       this.isConnected = res.isConnected
 
-       this.networkType = res.networkType
 
-       this.emitEvent(this.networkType)
 
-     })
 
-     uni.getNetworkType({
 
-       success: (res) => {
 
-         this.networkType = res.networkType
 
-         this.emitEvent(this.networkType)
 
-         if (res.networkType == 'none') {
 
-           this.isConnected = false
 
-         } else {
 
-           this.isConnected = true
 
-         }
 
-       }
 
-     })
 
-   },
 
-   methods: {
 
-     retry() {
 
-       // 重新检查网络
 
-       uni.getNetworkType({
 
-         success: (res) => {
 
-           this.networkType = res.networkType
 
-           this.emitEvent(this.networkType)
 
-           if (res.networkType == 'none') {
 
-             uni.$u.toast('无网络连接')
 
-             this.isConnected = false
 
-           } else {
 
-             uni.$u.toast('网络已连接')
 
-             this.isConnected = true
 
-           }
 
-         }
 
-       })
 
-       this.$emit('retry')
 
-     },
 
-     // 发出事件给父组件
 
-     emitEvent(networkType) {
 
-       this.$emit(networkType === 'none' ? 'disconnected' : 'connected')
 
-     },
 
-     async openSettings() {
 
-       if (this.networkType == "none") {
 
-         this.openSystemSettings()
 
-         return
 
-       }
 
-     },
 
-     openAppSettings() {
 
-       this.gotoAppSetting()
 
-     },
 
-     openSystemSettings() {
 
-       // 以下方法来自5+范畴,如需深究,请自行查阅相关文档
 
-       // https://ask.dcloud.net.cn/docs/
 
-       if (this.isIOS) {
 
-         this.gotoiOSSetting()
 
-       } else {
 
-         this.gotoAndroidSetting()
 
-       }
 
-     },
 
-     network() {
 
-       var result = null
 
-       var cellularData = plus.ios.newObject("CTCellularData")
 
-       var state = cellularData.plusGetAttribute("restrictedState")
 
-       if (state == 0) {
 
-         result = null
 
-       } else if (state == 2) {
 
-         result = 1
 
-       } else if (state == 1) {
 
-         result = 2
 
-       }
 
-       plus.ios.deleteObject(cellularData)
 
-       return result
 
-     },
 
-     gotoAppSetting() {
 
-       if (this.isIOS) {
 
-         var UIApplication = plus.ios.import("UIApplication")
 
-         var application2 = UIApplication.sharedApplication()
 
-         var NSURL2 = plus.ios.import("NSURL")
 
-         var setting2 = NSURL2.URLWithString("app-settings:")
 
-         application2.openURL(setting2)
 
-         plus.ios.deleteObject(setting2)
 
-         plus.ios.deleteObject(NSURL2)
 
-         plus.ios.deleteObject(application2)
 
-       } else {
 
-         var Intent = plus.android.importClass("android.content.Intent")
 
-         var Settings = plus.android.importClass("android.provider.Settings")
 
-         var Uri = plus.android.importClass("android.net.Uri")
 
-         var mainActivity = plus.android.runtimeMainActivity()
 
-         var intent = new Intent()
 
-         intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
 
-         var uri = Uri.fromParts("package", mainActivity.getPackageName(), null)
 
-         intent.setData(uri)
 
-         mainActivity.startActivity(intent)
 
-       }
 
-     },
 
-     gotoiOSSetting() {
 
-       var UIApplication = plus.ios.import("UIApplication")
 
-       var application2 = UIApplication.sharedApplication()
 
-       var NSURL2 = plus.ios.import("NSURL")
 
-       var setting2 = NSURL2.URLWithString("App-prefs:root=General")
 
-       application2.openURL(setting2)
 
-       plus.ios.deleteObject(setting2)
 
-       plus.ios.deleteObject(NSURL2)
 
-       plus.ios.deleteObject(application2)
 
-     },
 
-     gotoAndroidSetting() {
 
-       var Intent = plus.android.importClass("android.content.Intent")
 
-       var Settings = plus.android.importClass("android.provider.Settings")
 
-       var mainActivity = plus.android.runtimeMainActivity()
 
-       var intent = new Intent(Settings.ACTION_SETTINGS)
 
-       mainActivity.startActivity(intent)
 
-     }
 
-   }
 
- }
 
- </script>
 
- <style lang="scss" scoped>
 
- @import "../../libs/css/components.scss";
 
- .u-no-network {
 
-   @include flex(column);
 
-   justify-content: center;
 
-   align-items: center;
 
-   margin-top: -100px;
 
-   &__tips {
 
-     color: $u-tips-color;
 
-     font-size: 14px;
 
-     margin-top: 15px;
 
-   }
 
-   &__app {
 
-     @include flex(row);
 
-     margin-top: 6px;
 
-     &__setting {
 
-       color: $u-light-color;
 
-       font-size: 13px;
 
-     }
 
-     &__to-setting {
 
-       font-size: 13px;
 
-       color: $u-primary;
 
-       margin-left: 3px;
 
-     }
 
-   }
 
-   &__retry {
 
-     @include flex(row);
 
-     justify-content: center;
 
-     margin-top: 15px;
 
-   }
 
- }
 
- </style>
 
 
  |