| | |
| | | <template> |
| | | <view> |
| | | <!-- 设置 --> |
| | | <label class="settings"> |
| | | <uni-icons type="gear" size="30" color="#707070" @click="settings"></uni-icons> |
| | | </label> |
| | | <view class="settings"> |
| | | <view class="settings-btn"> |
| | | <uni-icons type="gear" size="30" color="#707070" @click="settings"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <!-- logo --> |
| | | <view class="head"> |
| | | <view class="logo"> |
| | | <view class="logo"> |
| | | <view class="logo-box"> |
| | | <image src="../../static/img/logo.png" mode="aspectFit"></image> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="box-text">账号:</view> |
| | | <view class="box-input"> |
| | | <input type="text"> |
| | | <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 type="text"> |
| | | <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 title-font">配置</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="url.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="url.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="url.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> |
| | | |
| | | <!-- 版本号 --> |
| | | <!-- #ifdef APP-PLUS --> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import md5 from '../../static/js/md5.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | version: '', |
| | | value: '' |
| | | showPassword: false, |
| | | value: '', |
| | | remberPassword: true, |
| | | url: { |
| | | 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.url = uni.getStorageSync('url') |
| | | this.baseUrl = uni.getStorageSync('baseUrl') |
| | | if (!this.user) { |
| | | this.user = {userName: '',password: ''} |
| | | } |
| | | if (!this.url) { |
| | | this.url = {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.url.ip + ':' + this.url.port + '/' + this.url.project |
| | | uni.setStorageSync('baseUrl', this.baseUrl); |
| | | uni.setStorageSync('url', this.url); |
| | | uni.setStorageSync('project','tzsk') |
| | | 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) { |
| | | uni.reLaunch({ |
| | | url: '../home/home' |
| | | }); |
| | | 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 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> |
| | | |
| | | <style> |
| | | @import url('../../static/css/wms.css/wms.css'); |
| | | /* 设置区域 */ |
| | | .settings { |
| | | min-height: 100rpx; |
| | | } |
| | | .settings-btn { |
| | | float: right; |
| | | margin-right: 10rpx; |
| | | } |
| | | .logo { |
| | | height: 25%; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | .logo-box { |
| | | margin: auto 0; |
| | | } |
| | | image { |
| | | height: 300rpx; |
| | | } |
| | | /* 输入框区域 */ |
| | | .content { |
| | | min-height: 250rpx; |
| | | /* background-color: coral; */ |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | color: #606266; |
| | | } |
| | | .box { |
| | | width: 80%; |
| | | height: 100rpx; |
| | | margin-top: 30rpx; |
| | | background-color: white; |
| | | display: flex; |
| | | font-size: 14px; |
| | | align-items: center; |
| | | |
| | | } |
| | | .box-icon { |
| | | width: 80rpx; |
| | | text-align: center; |
| | | } |
| | | .box-text { |
| | | width: 100rpx; |
| | | text-align: center; |
| | | } |
| | | .box-show { |
| | | margin-left: auto; |
| | | /* margin-right: 10rpx; */ |
| | | width: 60rpx; |
| | | text-align: center; |
| | | } |
| | | input { |
| | | padding-left: 10rpx; |
| | | font-size: 14px; |
| | | color: #303133; |
| | | } |
| | | |
| | | .check { |
| | | width: 78%; |
| | | display: flex; |
| | | font-size: 12px; |
| | | color: #606266; |
| | | margin-top: 10rpx; |
| | | } |
| | | .check-right { |
| | | margin-left: auto; |
| | | } |
| | | .submit { |
| | | display: flex; |
| | | justify-content: center; |
| | | position: fixed; |
| | | width: 100%; |
| | | bottom: 100rpx; |
| | | } |
| | | .version { |
| | | position: fixed; |
| | | width: 100%; |
| | | bottom: 0; |
| | | text-align: center; |
| | | font-size: 12px; |
| | | color: #909399; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /* ------ */ |
| | | |
| | | .shadow-warp { |
| | | position: relative; |
| | | box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .shadow-warp:before, |
| | | .shadow-warp:after { |
| | | position: absolute; |
| | | content: ""; |
| | | top: 20upx; |
| | | bottom: 30upx; |
| | | left: 20upx; |
| | | width: 50%; |
| | | box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); |
| | | transform: rotate(-3deg); |
| | | z-index: -1; |
| | | } |
| | | |
| | | .shadow-warp:after { |
| | | right: 20upx; |
| | | left: auto; |
| | | transform: rotate(3deg); |
| | | } |
| | | </style> |