提交代码
This commit is contained in:
@@ -1,238 +1,245 @@
|
||||
import request from '../js/request'
|
||||
|
||||
/**
|
||||
* 发送验证码
|
||||
* @param {*} params.type 0:登录 1:注册 2:修改密码 6:忘记密码 4:更换手机号第二步获取验证码 5:更换手机号第一步获取验证码
|
||||
* @returns
|
||||
*/
|
||||
export function apiGetYms(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/authCode',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
type: params.type,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
* @param {*} params.type 0:ysm 1:pwd
|
||||
* @returns
|
||||
*/
|
||||
export function apiLogin(params) {
|
||||
console.log(uni.getStorageSync('devCode'))
|
||||
return request({
|
||||
url: '/shiningCloud/user/login',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
key: params.key.trim(),
|
||||
type: params.type,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码登录
|
||||
* @param {*} params.type 0:ysm 1:pwd
|
||||
* @returns
|
||||
*/
|
||||
export function apiYsmLogin(params) {
|
||||
uni.setStorageSync('access_token', 'Basic bmpjbmFwcDpuamNucHFz')
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/token',
|
||||
data: {
|
||||
grant_type: 'sms_code',
|
||||
phone: params.phone,
|
||||
smsCode: params.smsCode.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
export function apiRegister(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/register',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* app用户注册完自动登录
|
||||
* @param params
|
||||
* @returns {*}
|
||||
*/
|
||||
export function autoLogin(phone) {
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/autoLogin',
|
||||
data: {
|
||||
phone: phone,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 第一次登录设置密码
|
||||
export function apiSetPsd(params) {
|
||||
return request({
|
||||
url: '/shiningCloud/user/setPsd',
|
||||
data: {
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
password: params.password.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 重置密码
|
||||
export function apiReSetPsd(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/resetPsd',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
code: params.code.trim(),
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
password: params.password.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 更换手机号第一步
|
||||
export function apiComfirmCode(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/confirmCode',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
phone: params.phone,
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 重新绑定手机号
|
||||
export function apiRebindPhone(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/rebindPhone',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
phoneNew: params.phone,
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 角色升级
|
||||
export function roleUpdate({ userId, referralCode }) {
|
||||
return request({
|
||||
url: '/user-boot/appRole/roleUpdate',
|
||||
method: 'post',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
referralCode,
|
||||
userId,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 密码登录
|
||||
export function apiPwdLogin(params) {
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/token',
|
||||
header: {
|
||||
Authorization: 'Basic bmpjbnRlc3Q6bmpjbnBxcw==', // 客户端信息加密摘要认证
|
||||
},
|
||||
params,
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
//登录获取公钥
|
||||
export function gongkey(data) {
|
||||
console.log(data)
|
||||
return request({
|
||||
url: '/user-boot/user/generateSm2Key',
|
||||
method: 'get',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 修改手机号
|
||||
export function apiModifyPsd(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/modifyPsd',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
phone: params.phone,
|
||||
password: params.password.trim(),
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 更改用户信息
|
||||
export function apiUpdateUser(params) {
|
||||
return request({
|
||||
url: '/user-boot/user/updateAppUser',
|
||||
data: {
|
||||
...params,
|
||||
},
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
method: 'PUT',
|
||||
})
|
||||
}
|
||||
// 更改用户信息
|
||||
export function apiDeleteUser(params) {
|
||||
return request({
|
||||
url: '/user-boot/user/delete',
|
||||
data: {
|
||||
id: uni.getStorageSync('userInfo').userIndex,
|
||||
},
|
||||
method: 'DELETE',
|
||||
})
|
||||
}
|
||||
|
||||
// 更新用户推送标识
|
||||
|
||||
export function apiUpdatePush(params) {
|
||||
uni.getPushClientId({
|
||||
success: (res) => {
|
||||
console.log('🚀 ~ apiUpdatePush111 ~ res:', res)
|
||||
let push_clientid = res.cid
|
||||
console.log(push_clientid, 'push_clientid')
|
||||
request({
|
||||
url: '/user-boot/appUser/updateDevCode',
|
||||
data: {
|
||||
devCode: push_clientid,
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
},
|
||||
fail(err) {
|
||||
console.log('🚀 ~ apiUpdatePush222 ~ res:', err)
|
||||
},
|
||||
})
|
||||
}
|
||||
import request from '../js/request'
|
||||
|
||||
/**
|
||||
* 发送验证码
|
||||
* @param {*} params.type 0:登录 1:注册 2:修改密码 6:忘记密码 4:更换手机号第二步获取验证码 5:更换手机号第一步获取验证码
|
||||
* @returns
|
||||
*/
|
||||
export function apiGetYms(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/authCode',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
type: params.type,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
* @param {*} params.type 0:ysm 1:pwd
|
||||
* @returns
|
||||
*/
|
||||
export function apiLogin(params) {
|
||||
console.log(uni.getStorageSync('devCode'))
|
||||
return request({
|
||||
url: '/shiningCloud/user/login',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
key: params.key.trim(),
|
||||
type: params.type,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码登录
|
||||
* @param {*} params.type 0:ysm 1:pwd
|
||||
* @returns
|
||||
*/
|
||||
export function apiYsmLogin(params) {
|
||||
uni.setStorageSync('access_token', 'Basic bmpjbmFwcDpuamNucHFz')
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/token',
|
||||
data: {
|
||||
grant_type: 'sms_code',
|
||||
phone: params.phone,
|
||||
smsCode: params.smsCode.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
export function apiRegister(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/register',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* app用户注册完自动登录
|
||||
* @param params
|
||||
* @returns {*}
|
||||
*/
|
||||
export function autoLogin(phone) {
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/autoLogin',
|
||||
data: {
|
||||
phone: phone,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 第一次登录设置密码
|
||||
export function apiSetPsd(params) {
|
||||
return request({
|
||||
url: '/shiningCloud/user/setPsd',
|
||||
data: {
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
password: params.password.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 重置密码
|
||||
export function apiReSetPsd(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/resetPsd',
|
||||
data: {
|
||||
phone: params.phone,
|
||||
code: params.code.trim(),
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
password: params.password.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 更换手机号第一步
|
||||
export function apiComfirmCode(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/confirmCode',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
phone: params.phone,
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 重新绑定手机号
|
||||
export function apiRebindPhone(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/rebindPhone',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
phoneNew: params.phone,
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 角色升级
|
||||
export function roleUpdate({ userId, referralCode }) {
|
||||
return request({
|
||||
url: '/user-boot/appRole/roleUpdate',
|
||||
method: 'post',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
referralCode,
|
||||
userId,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 密码登录
|
||||
export function apiPwdLogin(params) {
|
||||
return request({
|
||||
url: '/pqs-auth/oauth/token',
|
||||
header: {
|
||||
Authorization: 'Basic bmpjbnRlc3Q6bmpjbnBxcw==', // 客户端信息加密摘要认证
|
||||
},
|
||||
params,
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
//登录获取公钥
|
||||
export function gongkey(data) {
|
||||
console.log(data)
|
||||
return request({
|
||||
url: '/user-boot/user/generateSm2Key',
|
||||
method: 'get',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 修改手机号
|
||||
export function apiModifyPsd(params) {
|
||||
return request({
|
||||
url: '/user-boot/appUser/modifyPsd',
|
||||
data: {
|
||||
devCode: uni.getStorageSync('devCode'),
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
phone: params.phone,
|
||||
password: params.password.trim(),
|
||||
code: params.code.trim(),
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
|
||||
// 更改用户信息
|
||||
export function apiUpdateUser(params) {
|
||||
return request({
|
||||
url: '/user-boot/user/updateAppUser',
|
||||
data: {
|
||||
...params,
|
||||
},
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
method: 'PUT',
|
||||
})
|
||||
}
|
||||
// 更改用户信息
|
||||
export function apiDeleteUser(params) {
|
||||
return request({
|
||||
url: '/user-boot/user/delete',
|
||||
data: {
|
||||
id: uni.getStorageSync('userInfo').userIndex,
|
||||
},
|
||||
method: 'DELETE',
|
||||
})
|
||||
}
|
||||
|
||||
// 更新用户推送标识
|
||||
|
||||
export function apiUpdatePush(params) {
|
||||
uni.getPushClientId({
|
||||
success: (res) => {
|
||||
console.log('🚀 ~ apiUpdatePush111 ~ res:', res)
|
||||
let push_clientid = res.cid
|
||||
console.log(push_clientid, 'push_clientid')
|
||||
request({
|
||||
url: '/user-boot/appUser/updateDevCode',
|
||||
data: {
|
||||
devCode: push_clientid,
|
||||
userId: uni.getStorageSync('userInfo').userIndex,
|
||||
},
|
||||
method: 'POST',
|
||||
})
|
||||
},
|
||||
fail(err) {
|
||||
console.log('🚀 ~ apiUpdatePush222 ~ res:', err)
|
||||
},
|
||||
})
|
||||
}
|
||||
// 获取当前版本号
|
||||
export function getLastData() {
|
||||
return request({
|
||||
url: '/cs-system-boot/appVersion/getLastData?versionType=APP',
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
@@ -292,6 +292,20 @@ image {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
.boxClick:active {
|
||||
transform: scale(0.94);
|
||||
opacity: 0.8;
|
||||
// transform: scale(0.94);
|
||||
// opacity: 0.8;
|
||||
animation: elastic-bounce 0.5s;
|
||||
}
|
||||
@keyframes elastic-bounce {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ export default (options = {}) => {
|
||||
}
|
||||
uni.request({
|
||||
url,
|
||||
timeout: 1000 *30,
|
||||
timeout: 1000 * 60,
|
||||
data: {
|
||||
...options.data,
|
||||
},
|
||||
|
||||
227
common/js/update.js
Normal file
227
common/js/update.js
Normal file
@@ -0,0 +1,227 @@
|
||||
import { getLastData } from '../api/user.js'
|
||||
|
||||
export const checkAppUpdate = () => {
|
||||
// 开发环境跳过检查
|
||||
const isDev = process.env.NODE_ENV === 'development'
|
||||
// if (isDev) {
|
||||
console.log('开发环境,不执行更新检查')
|
||||
return
|
||||
// }
|
||||
|
||||
// 获取当前应用信息
|
||||
plus.runtime.getProperty(plus.runtime.appid, (info) => {
|
||||
const currentVersion = info.version
|
||||
|
||||
getLastData()
|
||||
.then((res) => {
|
||||
|
||||
// let res = {
|
||||
// data: {
|
||||
// versionName: 'v1.6.83',
|
||||
// forceUpdate: '1',
|
||||
// androidPath: 'https://app.liuyingyong.cn/build/download/3c26e400-3a33-11f1-8997-a16e76fa35b3',
|
||||
// // androidPath: 'http://112.4.144.18:8040/shiningCloud/file/canneng_wulian.apk',
|
||||
// iosPath: 'xxxx',
|
||||
// },
|
||||
// }
|
||||
if (!res?.data) {
|
||||
console.log('未获取到版本信息')
|
||||
return
|
||||
}
|
||||
|
||||
// 适配新的接口返回格式
|
||||
const { versionName, androidPath, iosPath, forceUpdate = '1' } = res.data
|
||||
|
||||
// 版本相同则不需要更新
|
||||
if (versionName.includes(currentVersion)) {
|
||||
console.log('已是最新版本')
|
||||
return
|
||||
}
|
||||
|
||||
const isForce = forceUpdate === '1' // 字符串 '1' 表示强制更新
|
||||
|
||||
const iosUrl = iosPath
|
||||
|
||||
handleUpdate({ version: versionName, androidPath, iosUrl, isForce })
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('获取版本接口失败', err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理更新逻辑
|
||||
*/
|
||||
const handleUpdate = ({ version, androidPath, iosUrl, isForce }) => {
|
||||
const isAndroid = plus.os.name === 'Android'
|
||||
const isIOS = plus.os.name === 'iOS'
|
||||
|
||||
if (isAndroid) {
|
||||
handleAndroidUpdate({ androidPath, isForce })
|
||||
} else if (isIOS) {
|
||||
handleIOSUpdate({ iosUrl, isForce })
|
||||
} else {
|
||||
console.warn('未知操作系统')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理安卓更新
|
||||
*/
|
||||
const handleAndroidUpdate = ({ androidPath, isForce }) => {
|
||||
if (!androidPath?.length) {
|
||||
console.error('未找到安卓安装包')
|
||||
uni.showToast({
|
||||
title: '更新包不存在',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
const downloadUrl = androidPath
|
||||
|
||||
uni.showModal({
|
||||
title: '更新提示',
|
||||
content: '发现新版本,是否立即更新?',
|
||||
showCancel: !isForce, // 强制更新隐藏取消按钮
|
||||
confirmText: '去更新',
|
||||
cancelText: '暂不更新',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
downloadAndInstallApk(downloadUrl)
|
||||
} else if (isForce) {
|
||||
// 强制更新且用户取消,退出应用
|
||||
plus.runtime.quit()
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理iOS更新
|
||||
*/
|
||||
const handleIOSUpdate = ({ iosUrl, isForce }) => {
|
||||
if (!iosUrl) {
|
||||
console.error('未找到iOS下载链接')
|
||||
uni.showToast({
|
||||
title: '更新链接不存在',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
uni.showModal({
|
||||
title: '更新提示',
|
||||
content: '发现新版本,请前往 App Store 更新',
|
||||
showCancel: !isForce,
|
||||
confirmText: '去更新',
|
||||
cancelText: '暂不更新',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
plus.runtime.openURL(iosUrl)
|
||||
}
|
||||
|
||||
// 强制更新时,无论确认还是取消都退出应用
|
||||
if (isForce) {
|
||||
setTimeout(() => {
|
||||
plus.runtime.quit()
|
||||
}, 300) // 给跳转留一点时间
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载并安装APK(安卓专用)
|
||||
*/
|
||||
const downloadAndInstallApk = (url) => {
|
||||
// 显示原生进度条
|
||||
let progressWaiting = plus.nativeUI.showWaiting('正在下载中,请稍等...', {
|
||||
modal: true,
|
||||
round: true,
|
||||
close: false, // 不允许用户关闭
|
||||
padlock: true, // 锁定屏幕
|
||||
})
|
||||
|
||||
const options = {
|
||||
filename: '_doc/update/canneng_wulian.apk',
|
||||
timeout: 120,
|
||||
}
|
||||
|
||||
const downloadTask = plus.downloader.createDownload(url, options, (downloadedFile, status) => {
|
||||
progressWaiting.close()
|
||||
|
||||
if (status === 200) {
|
||||
installApk(downloadedFile.filename, url)
|
||||
} else {
|
||||
handleDownloadError(url)
|
||||
}
|
||||
})
|
||||
|
||||
// // 更新进度
|
||||
downloadTask.addEventListener('statechanged', (task) => {
|
||||
if (task.state === 3 && task.totalSize > 0) {
|
||||
const percent = ((task.downloadedSize / task.totalSize) * 100).toFixed(0)
|
||||
console.log("🚀 ~ downloadAndInstallApk ~ percent:", percent)
|
||||
// 直接更新 waiting 的标题,不会闪烁
|
||||
progressWaiting.setTitle(`正在下载更新 ${percent}%`)
|
||||
}
|
||||
})
|
||||
|
||||
downloadTask.start()
|
||||
}
|
||||
|
||||
/**
|
||||
* 安装APK
|
||||
*/
|
||||
const installApk = (filePath, downloadUrl) => {
|
||||
console.log('🚀 ~ installApk ~ filePath:', filePath)
|
||||
plus.runtime.install(
|
||||
filePath,
|
||||
{ force: true },
|
||||
() => {
|
||||
// 安装成功
|
||||
uni.showModal({
|
||||
title: '安装成功',
|
||||
content: '是否立即重启应用?',
|
||||
showCancel: false,
|
||||
confirmText: '立即重启',
|
||||
success: () => {
|
||||
plus.runtime.restart()
|
||||
},
|
||||
})
|
||||
},
|
||||
(error) => {
|
||||
console.error('安装失败', error)
|
||||
uni.showModal({
|
||||
title: '安装失败',
|
||||
content: `安装失败:${error.message}\n请检查是否已开启安装权限`,
|
||||
confirmText: '重试',
|
||||
cancelText: '取消',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
downloadAndInstallApk(downloadUrl)
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理下载错误
|
||||
*/
|
||||
const handleDownloadError = (downloadUrl) => {
|
||||
uni.showModal({
|
||||
title: '下载失败',
|
||||
content: '网络异常或下载链接失效,是否重试?',
|
||||
confirmText: '重试',
|
||||
cancelText: '取消',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
downloadAndInstallApk(downloadUrl)
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user