|  |  | 
 |  |  |       <!-- 登录信息 --> | 
 |  |  |       <view class="user-info"> | 
 |  |  |          <view class="user-info-item shadow-warp"> | 
 |  |  |             <view class="icons"><uni-icons type="person" size="20"></uni-icons></view> | 
 |  |  |             <view class="icons"> | 
 |  |  |                <uni-icons type="person" size="20"></uni-icons> | 
 |  |  |             </view> | 
 |  |  |             <text>账号:</text> | 
 |  |  |             <input type="text"> | 
 |  |  |             <input type="text" placeholder="请输入账号!" v-model="user.userName" | 
 |  |  |                placeholder-style="font-size:14px;color:#ccc;"> | 
 |  |  |          </view> | 
 |  |  |          <view class="user-info-item shadow-warp"> | 
 |  |  |             <view class="icons"><uni-icons type="locked" size="20"></uni-icons></view> | 
 |  |  |             <view class="icons"> | 
 |  |  |                <uni-icons type="locked" size="20"></uni-icons> | 
 |  |  |             </view> | 
 |  |  |             <text>密码:</text> | 
 |  |  |             <input :password="!showPassword" v-model="password"> | 
 |  |  |             <view class="showPassword" v-if="showPassword" @click="changePassword"><uni-icons type="eye" size="20"></uni-icons></view> | 
 |  |  |             <view class="showPassword" v-if="!showPassword" @click="changePassword"><uni-icons type="eye-slash" size="20"></uni-icons></view> | 
 |  |  |             <input :password="!showPassword" v-model="user.password" placeholder="请输入密码!" | 
 |  |  |                placeholder-style="font-size:14px;color:#ccc;"> | 
 |  |  |             <view class="showPassword" v-if="showPassword" @click="changePassword"> | 
 |  |  |                <uni-icons type="eye" size="20"></uni-icons> | 
 |  |  |             </view> | 
 |  |  |             <view class="showPassword" v-if="!showPassword" @click="changePassword"> | 
 |  |  |                <uni-icons type="eye-slash" size="20"></uni-icons> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |       </view> | 
 |  |  |       <!-- 登录按钮 --> | 
 |  |  |       <view class="loging"> | 
 |  |  |          <button class="button" >登录</button> | 
 |  |  |          <button class="button" @click="onLogin()" :loading="load.loading">{{load.btnText}}</button> | 
 |  |  |       </view> | 
 |  |  |       <!-- #ifdef APP-PLUS --> | 
 |  |  |       <view class="version"> | 
 |  |  | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |    import md5 from '../../common/md5.js' | 
 |  |  |    export default { | 
 |  |  |       data() { | 
 |  |  |          return { | 
 |  |  |             version:'', | 
 |  |  |             showPassword:false, | 
 |  |  |             password:'', | 
 |  |  |             version: '', | 
 |  |  |             showPassword: false, | 
 |  |  |             user: { | 
 |  |  |                userName: '', | 
 |  |  |                password: '', | 
 |  |  |             }, | 
 |  |  |             load: { | 
 |  |  |                loading: false, | 
 |  |  |                btnText: '登录' | 
 |  |  |             }, | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       onLoad:function(){ | 
 |  |  |       onLoad: function() { | 
 |  |  |          this.user.userName = uni.getStorageSync('userName') | 
 |  |  |          this.user.password = uni.getStorageSync('password') | 
 |  |  |          // #ifdef APP-PLUS | 
 |  |  |          var that=this | 
 |  |  |          plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) { | 
 |  |  |             that.version=wgtinfo.version | 
 |  |  |          var that = this | 
 |  |  |          plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) { | 
 |  |  |             that.version = wgtinfo.version | 
 |  |  |          }); | 
 |  |  |          // #endif | 
 |  |  | 			 | 
 |  |  |          this.getVersion() | 
 |  |  |  | 
 |  |  |       }, | 
 |  |  |       methods: { | 
 |  |  |          changePassword: function() { | 
 |  |  |              this.showPassword = !this.showPassword; | 
 |  |  |             this.showPassword = !this.showPassword; | 
 |  |  |          }, | 
 |  |  |          getVersion() { | 
 |  |  |             let that = this; | 
 |  |  |             uni.getSystemInfo({ | 
 |  |  |                success: (res) => { | 
 |  |  |                   console.log(res.platform); | 
 |  |  |                   //检测当前平台,如果是安卓则启动安卓更新   | 
 |  |  |                   if (res.platform == "android") { | 
 |  |  |                      that.AndroidCheckUpdate(); | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          AndroidCheckUpdate() { | 
 |  |  |             let that = this; | 
 |  |  |             plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => { | 
 |  |  |                that.version = wgtinfo.version //客户端版本号 | 
 |  |  |                console.log('当前app版本信息:' + that.version); | 
 |  |  |             }) | 
 |  |  |             that.getUpdateVersion() | 
 |  |  |          }, | 
 |  |  |          getUpdateVersion() { | 
 |  |  |             let that = this; | 
 |  |  |             // 获取当前app版本信息 | 
 |  |  |             return | 
 |  |  |             that.$req.get("/appUpdate/queryUpdate", {}, {}).then(function(res) { | 
 |  |  |                console.log('res.data:' + JSON.stringify(res.data)) | 
 |  |  |                console.log("现在的版本" + that.version + "数据库版本" + res.data.data.version + "进入查找app版本"); | 
 |  |  |                if (res.data.data.version > that.version) { | 
 |  |  |                   // 这里下载apkurl从/appUpdate/queryUpdate接口请求返回数据中获取 | 
 |  |  |                   that.downloadUrl = BaseUrl + '/' + res.data.data.androidUrl | 
 |  |  |                   // 是否强制更新(0 否;1 是) | 
 |  |  |                   that.isForceUpdate = res.data.data.isForceUpdate | 
 |  |  |                   uni.showModal({ | 
 |  |  |                  // 更新提醒 | 
 |  |  |                      title: '发现新版本,是否更新', | 
 |  |  |                      content: '此版本号:' + that.version + '\xa0\xa0\xa0' + '待更新版本号:' + res.data.data | 
 |  |  |                         .version, | 
 |  |  |                      success: res => { | 
 |  |  |                       if (res.confirm) { | 
 |  |  |                            that.downWgt(); //下载文件 | 
 |  |  |                            // that.showdownLine = true; | 
 |  |  |                            // plus.runtime.openURL(androidUrl) | 
 |  |  |                         } else if (res.cancel) { | 
 |  |  |                            console.log('that.isForceUpdate:' + that.isForceUpdate); | 
 |  |  |                            // 不更新强制退出app | 
 |  |  |                            if (that.isForceUpdate == 1) { | 
 |  |  |                               console.log('that.isForceUpdate1:' + that.isForceUpdate); | 
 |  |  |                               uni.showModal({ | 
 |  |  |                                  // 更新提醒 | 
 |  |  |                                  title: '发现新版本,是否更新', | 
 |  |  |                                  content: '此版本为强制更新版本如不升级将退出APP', | 
 |  |  |                                  success: res => { | 
 |  |  |                                     if (res.confirm) { | 
 |  |  |                                        console.log('不更新强制退出app'); | 
 |  |  |                                        plus.runtime.quit(); | 
 |  |  |                                     } else if (res.cancel) { | 
 |  |  |                                        that.AndroidCheckUpdate(); | 
 |  |  |                                     } | 
 |  |  |                                  } | 
 |  |  |                               }); | 
 |  |  |                            } | 
 |  |  |                         } | 
 |  |  |                      } | 
 |  |  |                   }); | 
 |  |  |                   //dtask.start();    | 
 |  |  |                } | 
 |  |  |             }).catch(error => { | 
 |  |  |                uni.showToast({ | 
 |  |  |                   title: '调用请求失败', | 
 |  |  |                   mask: false, | 
 |  |  |                   duration: 5000, | 
 |  |  |                   icon: "none" | 
 |  |  |                }); | 
 |  |  |             }); | 
 |  |  |             complete: () => {} | 
 |  |  |          }, | 
 |  |  |          onLogin() { | 
 |  |  |             let that = this | 
 |  |  |             uni.request({ | 
 |  |  |                url: that.baseUrl + '/login.action', | 
 |  |  |                fail(result) { | 
 |  |  |                   uni.showToast({ | 
 |  |  |                      icon: 'error', | 
 |  |  |                      title: '请求失败' | 
 |  |  |                   }) | 
 |  |  |                }, | 
 |  |  |                data: { | 
 |  |  |                   username: that.user.userName, | 
 |  |  |                   password: md5.hex_md5(that.user.password) | 
 |  |  |                }, | 
 |  |  |                header: { | 
 |  |  |                   "content-type": "application/json" | 
 |  |  |                }, | 
 |  |  |                success(result) { | 
 |  |  |                   if (result.statusCode === 404) { | 
 |  |  |                      uni.showToast({ | 
 |  |  |                         title: '登录失败', | 
 |  |  |                         icon: "error" | 
 |  |  |                      }) | 
 |  |  |                      return | 
 |  |  |                   } | 
 |  |  |                   let res = result.data | 
 |  |  |                   if (res.code === 200) { | 
 |  |  |                      that.load.loading = true; | 
 |  |  |                      that.load.btnText = '登录中'; | 
 |  |  |                      uni.setStorageSync('token', res.data.token); | 
 |  |  |                      uni.setStorageSync('userName', that.user.userName); | 
 |  |  |                      uni.setStorageSync('password', that.user.password); | 
 |  |  |                      setTimeout(() => { | 
 |  |  |                         uni.showToast({ | 
 |  |  |                            title: '登录成功' | 
 |  |  |                         }) | 
 |  |  |                         setTimeout(() => { | 
 |  |  |                            uni.reLaunch({ | 
 |  |  |                               url: '../index/index' | 
 |  |  |                            }); | 
 |  |  |                         }, 300) | 
 |  |  |                      }, 700) | 
 |  |  |                   } else { | 
 |  |  |                      uni.showToast({ | 
 |  |  |                         title: res.msg | 
 |  |  |                      }) | 
 |  |  |                   } | 
 |  |  |                }, | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | 
 |  |  |       width: 100%; | 
 |  |  |       min-height: 93.4vh; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .logo { | 
 |  |  |       width: 300px; | 
 |  |  |       height: 163px; | 
 |  |  | 
 |  |  |       margin-right: auto; | 
 |  |  |       margin-bottom: 50rpx; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .user-info { | 
 |  |  |       display: flex; | 
 |  |  |       align-items:center; | 
 |  |  |       align-items: center; | 
 |  |  |       flex-direction: column; | 
 |  |  |       width: 100%; | 
 |  |  |       height: 400rpx; | 
 |  |  |       font-size: 14px; | 
 |  |  |       letter-spacing:1px; | 
 |  |  |       letter-spacing: 1px; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .user-info-item { | 
 |  |  |       display: flex; | 
 |  |  |       width:650rpx; | 
 |  |  |       width: 650rpx; | 
 |  |  |       height: 100rpx; | 
 |  |  |       line-height: 100rpx; | 
 |  |  |       align-items:center; | 
 |  |  |       align-items: center; | 
 |  |  |       background-color: #fff; | 
 |  |  |       margin-bottom: 30rpx; | 
 |  |  |       font-size: 28rpx; | 
 |  |  |       font-weight: 500; | 
 |  |  |    } | 
 |  |  |    .user-info-item input{ | 
 |  |  |       width: 350rpx; | 
 |  |  |  | 
 |  |  |    .user-info-item>input { | 
 |  |  |       width: 400rpx; | 
 |  |  |       color: #606266; | 
 |  |  |       font-weight: 500; | 
 |  |  |       caret-color: #606266; // 光标颜色 | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .icons { | 
 |  |  |       margin-left: 20rpx; | 
 |  |  |       margin-right: 18rpx; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .showPassword { | 
 |  |  |       position: absolute; | 
 |  |  |       right: 10rpx; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .shadow-warp { | 
 |  |  |       position: relative; | 
 |  |  |       box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .shadow-warp:before, | 
 |  |  |    .shadow-warp:after { | 
 |  |  |       position: absolute; | 
 |  |  | 
 |  |  |       transform: rotate(-3deg); | 
 |  |  |       z-index: -1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .shadow-warp:after { | 
 |  |  |       right: 20upx; | 
 |  |  |       left: auto; | 
 |  |  |       transform: rotate(3deg); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .loging { | 
 |  |  |       position: fixed; | 
 |  |  |       bottom: 100rpx; | 
 |  |  |       left:0; | 
 |  |  |       right:0; | 
 |  |  |       margin-left:auto; | 
 |  |  |       margin-right:auto; | 
 |  |  |       left: 0; | 
 |  |  |       right: 0; | 
 |  |  |       margin-left: auto; | 
 |  |  |       margin-right: auto; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .button { | 
 |  |  |       color: #fff; | 
 |  |  |       background-color: #409EFF; | 
 |  |  | 
 |  |  |       height: 40px; | 
 |  |  |       line-height: 40px; | 
 |  |  |    } | 
 |  |  |    button::after{border: initial;} | 
 |  |  |    .button-hover { | 
 |  |  |       color:#fff; | 
 |  |  |       background-color:#6fc1ff; | 
 |  |  |  | 
 |  |  |    button::after { | 
 |  |  |       border: initial; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .button-hover { | 
 |  |  |       color: #fff; | 
 |  |  |       background-color: #6fc1ff; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .version { | 
 |  |  |       width: 100%; | 
 |  |  |       position: fixed; | 
 |  |  |       bottom: 30rpx; | 
 |  |  |       left:0; | 
 |  |  |       right:0; | 
 |  |  |       margin-left:auto; | 
 |  |  |       margin-right:auto; | 
 |  |  |       left: 0; | 
 |  |  |       right: 0; | 
 |  |  |       margin-left: auto; | 
 |  |  |       margin-right: auto; | 
 |  |  |       text-align: center; | 
 |  |  |       font-size: 10px; | 
 |  |  |       color: #C0C4CC; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .input { | 
 |  |  |       display: block; | 
 |  |  |       font-size: 14px; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .uni-input { | 
 |  |  |       height: 50rpx; | 
 |  |  |       padding: 15rpx 25rpx; | 
 |  |  |       line-height:50rpx; | 
 |  |  |       font-size:28rpx; | 
 |  |  |       background:#FFF; | 
 |  |  |       line-height: 50rpx; | 
 |  |  |       font-size: 28rpx; | 
 |  |  |       background: #FFF; | 
 |  |  |       flex: 1; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  | </style> | 
 |  |  | </style> |