Compare commits
34 Commits
huipay-h5
...
huipay-app
Author | SHA1 | Date |
---|---|---|
杨杰 | aaef8d1d84 | 1 year ago |
杨杰 | 6363074843 | 1 year ago |
杨杰 | cdb172b43f | 1 year ago |
杨杰 | 26f4dda7a6 | 1 year ago |
杨杰 | 4d0e241c6e | 1 year ago |
杨杰 | b897ddd4a4 | 1 year ago |
杨杰 | 49b4e65571 | 1 year ago |
杨杰 | db0a865e91 | 1 year ago |
杨杰 | 91f4822df1 | 1 year ago |
杨杰 | 55730706ac | 1 year ago |
杨杰 | 96c32f7a9a | 1 year ago |
杨杰 | 133ca52824 | 1 year ago |
杨杰 | 225630e702 | 1 year ago |
杨杰 | d74611e838 | 1 year ago |
杨杰 | 257b1b3391 | 1 year ago |
杨杰 | dcd52a8e8e | 1 year ago |
杨杰 | 66f16fc263 | 1 year ago |
杨杰 | d3db054e49 | 1 year ago |
杨杰 | 23004934fc | 1 year ago |
杨杰 | ee7ab73ab2 | 1 year ago |
杨杰 | ac91f2ed39 | 1 year ago |
杨杰 | c203f7c668 | 1 year ago |
杨杰 | 0c5f15dbd1 | 1 year ago |
杨杰 | ee2c91d794 | 1 year ago |
杨杰 | e188920664 | 1 year ago |
杨杰 | 8f25b05713 | 1 year ago |
杨杰 | 0b7da8dfcf | 1 year ago |
杨杰 | 704f9ec888 | 1 year ago |
杨杰 | d415f3b8ff | 1 year ago |
杨杰 | aeae307634 | 1 year ago |
杨杰 | 9b8ae23c76 | 1 year ago |
杨杰 | 9438c69d75 | 1 year ago |
杨杰 | c5f7eaccc6 | 1 year ago |
杨杰 | 70b15e145f | 1 year ago |
@ -0,0 +1,323 @@ |
|||||||
|
<template> |
||||||
|
<view class="content" v-if="bannerShow"> |
||||||
|
<!-- 弹出层 --> |
||||||
|
<view class="uni-banner"> |
||||||
|
<!-- <image src="../static/logo.png" class="startUpHeaderLogo" /> --> |
||||||
|
<view class="banner_box"> |
||||||
|
<view class="startUpHeaderBox h6">发现新版本</view> |
||||||
|
<view class="conter">{{ msg }}</view> |
||||||
|
<view class="banner_foot"><button @click="goUpdate()" class="banner_foot_button">前往升级</button></view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
<view class="uni-mask"></view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
<script> |
||||||
|
// import { |
||||||
|
// getUpgrade |
||||||
|
// } from '@/common/js/apis'; |
||||||
|
import { |
||||||
|
queryVersion |
||||||
|
} from '../Utils/Api.js' |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
bannerShow: false, // 是否需要強制更新app |
||||||
|
msg: '', // 更新描述 |
||||||
|
type: '', // 设备类型 android:2, ios:1 |
||||||
|
updateApkObj: null // 后台数据 |
||||||
|
}; |
||||||
|
}, |
||||||
|
created() { |
||||||
|
const appUpdate = uni.getStorageSync('platform'); |
||||||
|
// #ifdef APP-PLUS |
||||||
|
this.checkUpdate(); |
||||||
|
// #endif |
||||||
|
|
||||||
|
}, |
||||||
|
methods: { |
||||||
|
checkUpdate() { |
||||||
|
let that = this; |
||||||
|
let localAppVersonName = uni.getStorageSync('version'); |
||||||
|
// #ifdef APP-PLUS |
||||||
|
let datas = { |
||||||
|
termType: "APP" |
||||||
|
} |
||||||
|
queryVersion(datas).then(res => { |
||||||
|
if (res.return_code == '000000') { |
||||||
|
that.msg = res.return_data.content; |
||||||
|
if (res.return_data.versionType == 1 && that.comparisonVersionHandler(localAppVersonName, |
||||||
|
res.return_data.version)) { |
||||||
|
that.downloadWgt(res.return_data.fileUrl); |
||||||
|
return; |
||||||
|
} |
||||||
|
if (res.return_data.versionType == 2 && that.comparisonVersionHandler(localAppVersonName, |
||||||
|
res.return_data.version)) { |
||||||
|
that.updateApkObj = res.return_data; |
||||||
|
that.bannerShow = true; // 显示弹窗 |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
}) |
||||||
|
// #endif |
||||||
|
}, |
||||||
|
|
||||||
|
downloadWgt(updateWgtUrl) { |
||||||
|
// 热更新 |
||||||
|
// 下载wgt方法 |
||||||
|
const that = this; |
||||||
|
// 更新文件 wgt 文件地址 |
||||||
|
plus.nativeUI.showWaiting('正在更新...'); |
||||||
|
plus.downloader.createDownload( |
||||||
|
updateWgtUrl, { |
||||||
|
filename: '_doc/update/' |
||||||
|
}, |
||||||
|
function(d, status) { |
||||||
|
if (status == 200) { |
||||||
|
that.installWgt(d.filename); // 安装wgt方法 |
||||||
|
} |
||||||
|
plus.nativeUI.closeWaiting(); |
||||||
|
} |
||||||
|
).start(); |
||||||
|
}, |
||||||
|
installWgt(path) { |
||||||
|
// 安装wgt方法 |
||||||
|
plus.nativeUI.showWaiting('安装文件...'); |
||||||
|
plus.runtime.install( |
||||||
|
path, { |
||||||
|
force: true |
||||||
|
}, |
||||||
|
function() { |
||||||
|
plus.nativeUI.closeWaiting(); |
||||||
|
plus.nativeUI.alert('应用资源更新完成!', function() { |
||||||
|
plus.runtime.restart(); |
||||||
|
}); |
||||||
|
}, |
||||||
|
function(e) { |
||||||
|
plus.nativeUI.closeWaiting(); |
||||||
|
} |
||||||
|
); |
||||||
|
}, |
||||||
|
goUpdate() { |
||||||
|
// if (this.type == 2) { |
||||||
|
// 弹出系统等待对话框 |
||||||
|
var dtask = plus.downloader.createDownload( |
||||||
|
this.updateApkObj.fileUrl, {}, |
||||||
|
function(d, status) { |
||||||
|
this.bannerShow = false; |
||||||
|
// 下载完成 |
||||||
|
if (status == 200) { |
||||||
|
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function( |
||||||
|
error) { |
||||||
|
uni.showToast({ |
||||||
|
title: '安装失败', |
||||||
|
mask: false, |
||||||
|
duration: 1500 |
||||||
|
}); |
||||||
|
}); |
||||||
|
} else { |
||||||
|
uni.showToast({ |
||||||
|
title: '更新失败', |
||||||
|
mask: false, |
||||||
|
duration: 1500 |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
try { |
||||||
|
dtask.start(); // 开启下载的任务 |
||||||
|
let prg = 0; |
||||||
|
const showLoading = plus.nativeUI.showWaiting('正在下载'); //创建一个showWaiting对象 |
||||||
|
dtask.addEventListener('statechanged', function(task, status) { |
||||||
|
// 给下载任务设置一个监听 并根据状态 做操作 |
||||||
|
switch (task.state) { |
||||||
|
case 1: |
||||||
|
showLoading.setTitle('正在下载'); |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
showLoading.setTitle('已连接到服务器'); |
||||||
|
break; |
||||||
|
case 3: |
||||||
|
prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * |
||||||
|
100); |
||||||
|
showLoading.setTitle(' 正在下载' + prg + '% '); |
||||||
|
break; |
||||||
|
case 4: |
||||||
|
plus.nativeUI.closeWaiting(); |
||||||
|
//下载完成 |
||||||
|
break; |
||||||
|
} |
||||||
|
}); |
||||||
|
} catch (err) { |
||||||
|
plus.nativeUI.closeWaiting(); |
||||||
|
uni.showToast({ |
||||||
|
title: '更新失败-03', |
||||||
|
mask: false, |
||||||
|
duration: 1500 |
||||||
|
}); |
||||||
|
} |
||||||
|
// } else if (this.type == 1) { // ios跳转到app store |
||||||
|
// plus.runtime.openURL(updateApkObj.downloadUrl); |
||||||
|
// } |
||||||
|
}, |
||||||
|
//判断是否升级 |
||||||
|
comparisonVersionHandler(reqV, curV) { |
||||||
|
/* 版本号名比较是否需要升级 |
||||||
|
curV string :当前最新 |
||||||
|
reqV string :之前 |
||||||
|
|
||||||
|
返回 true 表示需要升级 |
||||||
|
*/ |
||||||
|
if (curV && reqV) { |
||||||
|
curV = String(curV); |
||||||
|
reqV = String(reqV); |
||||||
|
//将两个版本号拆成数字 |
||||||
|
let arr1 = curV.split('.'), //當前 |
||||||
|
arr2 = reqV.split('.'); |
||||||
|
let minLength = Math.min(arr1.length, arr2.length), |
||||||
|
position = 0, |
||||||
|
diff = 0; |
||||||
|
//依次比较版本号每一位大小,当对比得出结果后跳出循环 |
||||||
|
while (position < minLength && ((diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0)) { |
||||||
|
position++; |
||||||
|
} |
||||||
|
diff = (diff != 0) ? diff : (arr1.length - arr2.length); |
||||||
|
//若curV大于reqV,则返回true |
||||||
|
return diff > 0; |
||||||
|
} else { |
||||||
|
//输入为空 |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.content, |
||||||
|
#img { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
.content .con { |
||||||
|
font-size: 0; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
#info { |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
width: 72rpx; |
||||||
|
height: 72rpx; |
||||||
|
line-height: 72rpx; |
||||||
|
border-radius: 50%; |
||||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||||
|
text-align: center; |
||||||
|
color: #fff; |
||||||
|
font-size: 24rpx; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.wrapper { |
||||||
|
width: 36rpx; |
||||||
|
height: 72rpx; |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.right { |
||||||
|
right: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.left { |
||||||
|
left: 0; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 弹出层形式的广告 */ |
||||||
|
.uni-banner { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
flex-direction: column; |
||||||
|
position: fixed; |
||||||
|
left: 50%; |
||||||
|
top: 50%; |
||||||
|
z-index: 1000; |
||||||
|
transform: translate(-50%, -50%); |
||||||
|
width: 80%; |
||||||
|
|
||||||
|
.startUpHeaderLogo { |
||||||
|
width: 200rpx; |
||||||
|
height: 200rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.banner_box { |
||||||
|
width: 100%; |
||||||
|
background: #fff; |
||||||
|
border-radius: 20rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.startUpHeaderBox { |
||||||
|
width: 100%; |
||||||
|
height: 96rpx; |
||||||
|
background-image: url('/static/logo.png'); |
||||||
|
background-position: left top; |
||||||
|
background-repeat: no-repeat; |
||||||
|
background-size: cover; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.banner_box .h6 { |
||||||
|
text-align: center; |
||||||
|
line-height: 96rpx; |
||||||
|
font-size: 36rpx; |
||||||
|
color: #fff; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
|
||||||
|
.banner_box .conter { |
||||||
|
font-size: 28rpx; |
||||||
|
color: #333; |
||||||
|
margin: 48rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.banner_foot { |
||||||
|
width: 238rpx; |
||||||
|
margin: 48rpx auto; |
||||||
|
} |
||||||
|
|
||||||
|
.banner_foot_button { |
||||||
|
background-image: linear-gradient(to right, #3aaf7a, #41bf7f); |
||||||
|
line-height: 72rpx; |
||||||
|
height: 72rpx; |
||||||
|
font-size: 30rpx; |
||||||
|
color: #fff; |
||||||
|
font-weight: bold; |
||||||
|
border-radius: 40rpx; |
||||||
|
border: none; |
||||||
|
box-shadow: 0 8rpx 20rpx 0 rgba(46, 189, 88, 0.36); |
||||||
|
} |
||||||
|
|
||||||
|
.banner_foot_button:active { |
||||||
|
background-image: linear-gradient(to right, #41bf7f, #3aaf7a); |
||||||
|
} |
||||||
|
|
||||||
|
.uni-mask { |
||||||
|
background: rgba(0, 0, 0, 0.6); |
||||||
|
position: fixed; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
z-index: 2; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,105 @@ |
|||||||
|
<template> |
||||||
|
<view> |
||||||
|
|
||||||
|
<view class="username"> |
||||||
|
<view class="namecont">绑定门店</view> |
||||||
|
<view class="font14 fcor333 text2 width75 fotrt">{{storeName}}</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
<view class="username"> |
||||||
|
<view class="namecont">绑定编号</view> |
||||||
|
<view class="font14 fcor333 text2 width75 fotrt">{{scanNo}}</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
<view class="btn" @tap="bindStore">提交绑定</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { |
||||||
|
bindStore |
||||||
|
} from '../../../Utils/Api.js'; |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
scanNo: '', //扫码编号, |
||||||
|
storeName: '', //门店名称 |
||||||
|
storeId: '' //订单编号 |
||||||
|
} |
||||||
|
}, |
||||||
|
onLoad(options) { |
||||||
|
this.scanNo = options.scanno; |
||||||
|
this.storeName = options.storename; |
||||||
|
this.storeId = options.storeId; |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
//分配设备 |
||||||
|
bindStore() { |
||||||
|
uni.showModal({ |
||||||
|
title: '温馨提示', |
||||||
|
content: '是否分配当前设备', |
||||||
|
success: (res) => { |
||||||
|
if (res.confirm) { |
||||||
|
uni.showLoading({ |
||||||
|
title: '加载中' |
||||||
|
}) |
||||||
|
let datas = { |
||||||
|
"serialNumber": this.scanNo, |
||||||
|
"storeId": this.storeId |
||||||
|
} |
||||||
|
bindStore(datas).then(res => { |
||||||
|
uni.hideLoading(); |
||||||
|
if (res.return_code == '000000') { |
||||||
|
uni.showToast({ |
||||||
|
title: '分配成功', |
||||||
|
duration: 2000, |
||||||
|
icon: 'none' |
||||||
|
}) |
||||||
|
uni.navigateBack({}) |
||||||
|
} else { |
||||||
|
uni.showToast({ |
||||||
|
title: res.return_msg, |
||||||
|
duration: 2000, |
||||||
|
icon: 'none' |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
} else if (res.cancel) {} |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss"> |
||||||
|
.username { |
||||||
|
width: calc(100% - 90upx); |
||||||
|
height: 100upx; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
background-color: rgba($color: #ffffff, $alpha: 0.1); |
||||||
|
border-bottom: 1px solid #f6f6f6; |
||||||
|
padding: 8upx 45upx; |
||||||
|
|
||||||
|
.namecont { |
||||||
|
color: #666666; |
||||||
|
width: 28%; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.btn { |
||||||
|
color: #FFFFFF; |
||||||
|
background-color: #0083f5; |
||||||
|
width: 90%; |
||||||
|
margin-left: 5%; |
||||||
|
margin-top: 80rpx; |
||||||
|
margin-bottom: 50rpx; |
||||||
|
height: 90rpx; |
||||||
|
display: flex; |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
border-radius: 10rpx; |
||||||
|
font-size: 40rpx; |
||||||
|
} |
||||||
|
</style> |
After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 8.0 KiB |
Loading…
Reference in new issue