#
whycq
2024-07-29 3d5efbc419d3ddff189d8d0c36cf743887d28eaa
pages/login/login.vue
@@ -9,7 +9,7 @@
      <!-- logo -->
      <view class="logo">
         <view class="logo-box">
            <image src="../../static/img/logo.png" mode="aspectFit"></image>
            <image src="../../static/img/logo1.png" mode="aspectFit"></image>
         </view>
      </view>
      <view class="content">
@@ -18,7 +18,7 @@
            <view class="box-icon">
               <uni-icons type="person" size="20" color="#707070"></uni-icons>
            </view>
            <view class="box-text">账号:</view>
            <view class="box-text">賬號:</view>
            <view class="box-input">
               <input type="text" placeholder="请输入账号" v-model="user.userName" 
               placeholder-style="font-size:14px;color:#ccc;">
@@ -30,7 +30,7 @@
            <view class="box-icon">
               <uni-icons type="locked" size="20" color="#707070"></uni-icons>
            </view>
            <view class="box-text">密码:</view>
            <view class="box-text">密碼:</view>
            <view class="box-input">
               <input :password="!showPassword" placeholder="请输入密码" v-model="user.password"
               placeholder-style="font-size:14px;color:#ccc;" >
@@ -43,10 +43,10 @@
         <!-- 记住密码 -->
         <view class="check">
            <view class="check-left">
               <view>记住密码</view>
               <view>記住密碼</view>
            </view>
            <view class="check-right">
               <switch checked color="#FFCC33" style="zoom:.5" @change="remberChange"/>
               <switch :checked='remberPassword' color="#FFCC33" style="zoom:.5" @change="remberChange"/>
            </view>
         </view>
      </view>
@@ -73,14 +73,22 @@
                  <view class="popup-item-right"><input type="text" v-model="url.port"></view>
               </view>
               <view class="popup-item">
                  <view class="popup-item-left">项目:</view>
                  <view class="popup-item-left">URL:</view>
                  <view class="popup-item-right"><input type="text" v-model="url.project"></view>
               </view>
               <view class="btn">
                  <view class="btn-left" @click="close">取消</view>
                  <view class="btn-right" @click="settingConfirm">确认</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>
      
@@ -101,6 +109,7 @@
            version: '',
            showPassword: false,
            value: '',
            remberPassword: true,
            url: {
               ip: '',
               port: '',
@@ -113,8 +122,11 @@
            },
            load: {
               loading: false,
               btnText: '登录'
               btnText: '登錄'
            },
            msgType: 'success',
            filename: '',
            dialogContent: ''
         }
      },
      onLoad() {
@@ -122,16 +134,14 @@
         this.url = uni.getStorageSync('url')
         this.baseUrl = uni.getStorageSync('baseUrl')
         if (!this.user) {
            this.user = {userName: '',password: '',}
            this.user = {userName: '',password: ''}
         }
         // 手机端版本号
         // #ifdef APP-PLUS
         var that = this
         plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
            that.version = wgtinfo.version
         });
         // #endif
         if (!this.url) {
            this.url = {ip: '',port: '',project: ''}
         }
      },
      onShow () {
         this.getVersion()
      },
      methods: {
         // 显示/隐藏密码
@@ -139,7 +149,7 @@
            this.showPassword = !this.showPassword;
         },
         remberChange(e) {
            console.log(e.detail);
            this.remberPassword = !this.remberPassword
         },
         // 设置窗口开启按钮
         settings() {
@@ -167,7 +177,7 @@
               fail(result) {
                  uni.showToast({
                     icon: 'error',
                     title: '请求失败'
                     title: '請求失敗'
                  })
               },
               data: {
@@ -180,7 +190,7 @@
               success(result) {
                  if (result.statusCode === 404) {
                     uni.showToast({
                        title: '登录失败',
                        title: '登錄失敗',
                        icon: "error"
                     })
                     return
@@ -188,12 +198,16 @@
                  let res = result.data
                  if (res.code === 200) {
                     that.load.loading = true;
                     that.load.btnText = '登录中';
                     that.load.btnText = '登錄中';
                     uni.setStorageSync('token', res.data.token);
                     uni.setStorageSync('user', that.user);
                     if(that.remberPassword){
                        uni.setStorageSync('user', that.user);
                     }else{
                        uni.removeStorageSync('user');
                     }
                     setTimeout(() => {
                        uni.showToast({
                           title: '登录成功'
                           title: '登錄成功'
                        })
                        setTimeout(() => {
                           uni.reLaunch({
@@ -208,7 +222,125 @@
                  }
               },
            })
         }
         },
         //检测当前平台,如果是安卓则启动安卓更新
         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 url = that.baseUrl + '/appVersion/checkUpdate/' + that.version + '/' + type
            uni.request({
               url: url,
               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>