|  |  | 
 |  |  |             </view> | 
 |  |  |             <view class="box-text">账号:</view> | 
 |  |  |             <view class="box-input"> | 
 |  |  |                <input type="text" placeholder="请输入账号" placeholder-style="font-size:14px;color:#ccc;"> | 
 |  |  |                <input type="text" placeholder="请输入账号" v-model="user.userName"  | 
 |  |  |                placeholder-style="font-size:14px;color:#ccc;"> | 
 |  |  |             </view> | 
 |  |  |             <view class="box-show"></view> | 
 |  |  |          </view> | 
 |  |  | 
 |  |  |             </view> | 
 |  |  |             <view class="box-text">密码:</view> | 
 |  |  |             <view class="box-input"> | 
 |  |  |                <input password placeholder="请输入密码" placeholder-style="font-size:14px;color:#ccc;" > | 
 |  |  |                <input :password="!showPassword" placeholder="请输入密码" v-model="user.password" | 
 |  |  |                placeholder-style="font-size:14px;color:#ccc;" > | 
 |  |  |             </view> | 
 |  |  |             <view class="box-show"> | 
 |  |  |                <uni-icons type="eye-filled" size="20" color="#707070"></uni-icons> | 
 |  |  |                <uni-icons type="eye-filled" size="20" color="#707070" v-if="!showPassword" @click="changePassword"></uni-icons> | 
 |  |  |                <uni-icons type="eye" size="20" color="#707070" v-if="showPassword" @click="changePassword"></uni-icons> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <!-- 记住密码 --> | 
 |  |  | 
 |  |  |                <view>记住密码</view> | 
 |  |  |             </view> | 
 |  |  |             <view class="check-right"> | 
 |  |  |                <switch checked color="#FFCC33" style="zoom:.5"/> | 
 |  |  |                <switch :checked='remberPassword' color="#FFCC33" style="zoom:.5" @change="remberChange"/> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |       </view> | 
 |  |  |       <!-- 登录按钮 --> | 
 |  |  |       <view class="submit"> | 
 |  |  |          <view class="" style="width: 400rpx;"> | 
 |  |  |             <button type="primary" size="default">登录</button> | 
 |  |  |             <button type="primary" @click="onLogin()" :loading="load.loading">{{load.btnText}}</button> | 
 |  |  |          </view> | 
 |  |  |        | 
 |  |  |       </view> | 
 |  |  | 
 |  |  |          <uni-popup ref="inputDialog" type="dialog"> | 
 |  |  |             <view class="popup"> | 
 |  |  |                <!-- 标题 --> | 
 |  |  |                <view class="title">配 置</view> | 
 |  |  |                <view class="input"> | 
 |  |  |                   <view class="input-left">IP:</view> | 
 |  |  |                   <view class="input-right"><input type="text"></view> | 
 |  |  |                <view class="title">配置</view> | 
 |  |  |                <view class="popup-item"> | 
 |  |  |                   <view class="popup-item-left">IP:</view> | 
 |  |  |                   <view class="popup-item-right"><input type="text" v-model="Lurl.ip"></view> | 
 |  |  |                </view> | 
 |  |  |                <view class="input"> | 
 |  |  |                   <view class="input-left">端口:</view> | 
 |  |  |                   <view class="input-right"><input type="text"></view> | 
 |  |  |                <view class="popup-item"> | 
 |  |  |                   <view class="popup-item-left">端口:</view> | 
 |  |  |                   <view class="popup-item-right"><input type="text" v-model="Lurl.port"></view> | 
 |  |  |                </view> | 
 |  |  |                <view class="input"> | 
 |  |  |                   <view class="input-left">项目:</view> | 
 |  |  |                   <view class="input-right"><input type="text"></view> | 
 |  |  |                <view class="popup-item"> | 
 |  |  |                   <view class="popup-item-left">项目:</view> | 
 |  |  |                   <view class="popup-item-right"><input type="text" v-model="Lurl.project"></view> | 
 |  |  |                </view> | 
 |  |  |                <view class="btn"> | 
 |  |  |                   <view class="btn-left" @click="close">取消</view> | 
 |  |  |                   <view class="btn-right">确认</view> | 
 |  |  |                   <view class="btn-right" @click="settingConfirm">确认</view> | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  | 		 | 
 |  |  |       <view> | 
 |  |  |          <!-- 提示窗示例 --> | 
 |  |  |          <uni-popup ref="upVersion" type="dialog"> | 
 |  |  |             <uni-popup-dialog :type="msgType" title="通知" :content="dialogContent" @confirm="dialogConfirm" | 
 |  |  |                @close="dialogClose"></uni-popup-dialog> | 
 |  |  |          </uni-popup> | 
 |  |  |       </view> | 
 |  |  |        | 
 |  |  | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |    import md5 from '../../static/js/md5.js' | 
 |  |  |    export default { | 
 |  |  |       data() { | 
 |  |  |          return { | 
 |  |  |             version: '', | 
 |  |  |             value: '' | 
 |  |  |             showPassword: false, | 
 |  |  |             value: '', | 
 |  |  |             remberPassword: true, | 
 |  |  |             Lurl: { | 
 |  |  |                ip: '', | 
 |  |  |                port: '', | 
 |  |  |                project: '' | 
 |  |  |             }, | 
 |  |  |             baseUrl: '', | 
 |  |  |             user: { | 
 |  |  |                userName: '', | 
 |  |  |                password: '', | 
 |  |  |             }, | 
 |  |  |             load: { | 
 |  |  |                loading: false, | 
 |  |  |                btnText: '登录' | 
 |  |  |             }, | 
 |  |  |             msgType: 'success', | 
 |  |  |             filename: '', | 
 |  |  |             dialogContent: '' | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       onLoad() { | 
 |  |  |          // 手机端版本号 | 
 |  |  |          // #ifdef APP-PLUS | 
 |  |  |          var that = this | 
 |  |  |          plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) { | 
 |  |  |             that.version = wgtinfo.version | 
 |  |  |          }); | 
 |  |  |          // #endif | 
 |  |  |          this.user = uni.getStorageSync('user') | 
 |  |  |          this.Lurl = uni.getStorageSync('Lurl') | 
 |  |  |          this.baseUrl = uni.getStorageSync('baseUrl') | 
 |  |  |          if (!this.user) { | 
 |  |  |             this.user = {userName: '',password: ''} | 
 |  |  |          } | 
 |  |  |          if (!this.Lurl) { | 
 |  |  |             this.Lurl = {ip: '',port: '',project: ''} | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       onShow () { | 
 |  |  |          this.getVersion() | 
 |  |  |       }, | 
 |  |  |       methods: { | 
 |  |  |          // 显示/隐藏密码 | 
 |  |  |          changePassword() { | 
 |  |  |             this.showPassword = !this.showPassword; | 
 |  |  |          }, | 
 |  |  |          remberChange(e) { | 
 |  |  |             this.remberPassword = !this.remberPassword | 
 |  |  |          }, | 
 |  |  |          // 设置窗口开启按钮 | 
 |  |  |          settings() { | 
 |  |  |             this.$refs.inputDialog.open() | 
 |  |  | 
 |  |  |          // 设置窗口关闭按钮 | 
 |  |  |          close() { | 
 |  |  |             this.$refs.inputDialog.close() | 
 |  |  |          } | 
 |  |  |          }, | 
 |  |  |          // 保存ip | 
 |  |  |          settingConfirm() { | 
 |  |  |             this.baseUrl = "http://" + this.Lurl.ip + ':' + this.Lurl.port + '/' + this.Lurl.project | 
 |  |  |             uni.setStorageSync('baseUrl', this.baseUrl); | 
 |  |  |             uni.setStorageSync('Lurl', this.Lurl); | 
 |  |  |             this.$refs.inputDialog.close() | 
 |  |  |          }, | 
 |  |  |          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); | 
 |  |  |                      if(that.remberPassword){ | 
 |  |  |                         uni.setStorageSync('user', that.user); | 
 |  |  |                      }else{ | 
 |  |  |                         uni.removeStorageSync('user'); | 
 |  |  |                      } | 
 |  |  |                      setTimeout(() => { | 
 |  |  |                         uni.showToast({ | 
 |  |  |                            title: '登录成功' | 
 |  |  |                         }) | 
 |  |  |                         setTimeout(() => { | 
 |  |  |                            uni.reLaunch({ | 
 |  |  |                               url: '../home/home' | 
 |  |  |                            }); | 
 |  |  |                         }, 300) | 
 |  |  |                      }, 700) | 
 |  |  |                   } else { | 
 |  |  |                      uni.showToast({ | 
 |  |  |                         title: res.msg | 
 |  |  |                      }) | 
 |  |  |                   } | 
 |  |  |                }, | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          //检测当前平台,如果是安卓则启动安卓更新 | 
 |  |  |          getVersion() { | 
 |  |  |             let that = this; | 
 |  |  |             uni.getSystemInfo({ | 
 |  |  |                success: (res) => { | 
 |  |  |                   if (res.platform == "android") { | 
 |  |  |                      that.AndroidCheckUpdate(); | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          // 获取当前版本号 | 
 |  |  |          AndroidCheckUpdate() { | 
 |  |  |             let that = this; | 
 |  |  |             plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => { | 
 |  |  |                that.version = wgtinfo.version //客户端版本号 | 
 |  |  |             }) | 
 |  |  |             setTimeout(()=>{ | 
 |  |  |                that.getUpdateVersion() | 
 |  |  |             },100) | 
 |  |  |          }, | 
 |  |  |          // 校验版本 | 
 |  |  |          getUpdateVersion() { | 
 |  |  |             let that = this | 
 |  |  |             let type = 0 | 
 |  |  |             if (that.baseUrl == 'http://undefined:undefined/undefined') { | 
 |  |  |                return | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  |             let Lurl = that.baseUrl + '/appVersion/checkUpdate/' + that.version + '/' + type | 
 |  |  |             uni.request({ | 
 |  |  |                url: Lurl, | 
 |  |  |                method: 'GET', | 
 |  |  |                success(res) { | 
 |  |  |                   console.log(res); | 
 |  |  |                   var res = res.data | 
 |  |  |                   if (res.data) { | 
 |  |  |                      that.filename = res.data.path | 
 |  |  |                      that.dialogContent = '发现新版本:' + res.data.version + ', 是否立即更新' | 
 |  |  |                      that.$refs.upVersion.open() | 
 |  |  |                   } else { | 
 |  |  |                      uni.showToast({ | 
 |  |  |                         title: res.msg, | 
 |  |  |                         icon: "none", | 
 |  |  |                         position: 'top' | 
 |  |  |                      }) | 
 |  |  |                   } | 
 |  |  | 						 | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          dialogConfirm() { | 
 |  |  |             this.$refs.upVersion.close() | 
 |  |  |             this.downWgt() | 
 |  |  |          }, | 
 |  |  |          dialogClose() { | 
 |  |  |             this.$refs.upVersion.close() | 
 |  |  |          }, | 
 |  |  |          downWgt() { | 
 |  |  |             let that = this; | 
 |  |  |             const downloadUrl = that.baseUrl + "/appVersion/downloadApp/" + that.filename | 
 |  |  |             uni.showLoading({ | 
 |  |  |                title: '更新中……' | 
 |  |  |             }) | 
 |  |  |             const downloadTask = uni.downloadFile({ //执行下载 | 
 |  |  |                url: downloadUrl, //下载地址 | 
 |  |  |                timeout: 1000 * 30, //30秒超时时间 | 
 |  |  |                success: downloadResult => { //下载成功 | 
 |  |  |                   console.log(downloadResult); | 
 |  |  |                   that.showdownLine = false | 
 |  |  |                   uni.hideLoading(); | 
 |  |  |                   if (downloadResult.statusCode == 200) { | 
 |  |  |                      uni.showModal({ | 
 |  |  |                         title: '', | 
 |  |  |                         content: '更新成功,确定现在重启吗?', | 
 |  |  |                         confirmText: '重启', | 
 |  |  |                         confirmColor: '#EE8F57', | 
 |  |  |                         success: function(res) { | 
 |  |  |                            if (res.confirm == true) { | 
 |  |  |                               plus.runtime.install( //安装 | 
 |  |  |                                  downloadResult.tempFilePath, { | 
 |  |  |                                     force: true | 
 |  |  |                                  }, | 
 |  |  |                                  function(res) { | 
 |  |  |                                     utils.showToast('更新成功,重启中'); | 
 |  |  |                                     plus.runtime.restart(); | 
 |  |  |                                  } | 
 |  |  |                               ); | 
 |  |  |                            } | 
 |  |  |                         } | 
 |  |  |                      }); | 
 |  |  |                   } else { | 
 |  |  |                      uni.hideLoading(); | 
 |  |  |                      that.showdownLine = false | 
 |  |  |                      uni.showToast({ | 
 |  |  |                         title:'请先上传安装包', | 
 |  |  |                         icon: 'error' | 
 |  |  |                      }) | 
 |  |  |                   } | 
 |  |  |                }, | 
 |  |  |                fail: err => { | 
 |  |  |                   uni.hideLoading(); | 
 |  |  |                   that.showdownLine = false | 
 |  |  |                   that.$u.toast(downloadResult.errMsg) | 
 |  |  |                }, | 
 |  |  |                complete: com => { | 
 |  |  | 						 | 
 |  |  |                   console.log(com) | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  | 			 | 
 |  |  |             // 下载进度 | 
 |  |  |             downloadTask.onProgressUpdate(res => { | 
 |  |  |                that.downloadNum = res.progress | 
 |  |  |                console.log('下载进度' + that.downloadNum); | 
 |  |  |             }); | 
 |  |  |          }, | 
 |  |  | 			 | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | </script> | 
 |  |  | <style> | 
 |  |  |    @import url('../../static/css/wms.css/wms.css'); | 
 |  |  |    /* 设置区域 */ | 
 |  |  |    .settings { | 
 |  |  |       min-height: 100rpx; | 
 |  |  | 
 |  |  |       color: #909399; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    .popup { | 
 |  |  |       width: 80vw; | 
 |  |  |       min-height: 400rpx; | 
 |  |  |       background-color: #FFF; | 
 |  |  |       border-radius: 25rpx; | 
 |  |  |    } | 
 |  |  |    .title { | 
 |  |  |       height: 100rpx; | 
 |  |  |       line-height: 100rpx; | 
 |  |  |       width: 100%; | 
 |  |  |       color: #606266; | 
 |  |  |       text-align: center; | 
 |  |  |       font-size: 18px; | 
 |  |  |    } | 
 |  |  |    .input { | 
 |  |  |       height: 80rpx; | 
 |  |  |       line-height: 80rpx; | 
 |  |  |       display: flex; | 
 |  |  |       align-items: center; | 
 |  |  |       font-size: 14px; | 
 |  |  |    } | 
 |  |  |    .input-left { | 
 |  |  |       width: 16vw; | 
 |  |  |       padding-right: 20rpx; | 
 |  |  |       text-align: right; | 
 |  |  |       color: #606266; | 
 |  |  |    } | 
 |  |  |    .input-right { | 
 |  |  |       display: flex; | 
 |  |  |       align-items: center; | 
 |  |  |       width: 50vw; | 
 |  |  |       height: 50rpx; | 
 |  |  |       padding: 2px 5px; | 
 |  |  |       border: 1px solid #E4E7ED; | 
 |  |  |       border-radius: 5rpx; | 
 |  |  |    } | 
 |  |  |    .input-right input{ | 
 |  |  |       color: #606266; | 
 |  |  |    } | 
 |  |  |    .btn { | 
 |  |  |       display: flex; | 
 |  |  |       height: 90rpx; | 
 |  |  |       margin-top: 20rpx; | 
 |  |  |       border-top: 1px solid #DCDFE6; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |    } | 
 |  |  |    .btn-left { | 
 |  |  |       display: flex; | 
 |  |  |       flex: 1; | 
 |  |  |       height: 100%; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |       color: #606266; | 
 |  |  |       border-right: 1px solid #DCDFE6; | 
 |  |  |    } | 
 |  |  |    .btn-right { | 
 |  |  |       display: flex; | 
 |  |  |       flex: 1; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |       color: #409EFF; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  | 	 | 
 |  |  |  | 
 |  |  | 	 | 
 |  |  |     | 
 |  |  |     | 
 |  |  |     |