增加 存储设备插件

This commit is contained in:
xuli3099
2025-08-14 20:26:26 +08:00
parent a9141dfb6b
commit aede40ff2a
5 changed files with 385 additions and 142 deletions

View File

@@ -79,33 +79,73 @@ import { onLoad } from '@dcloudio/uni-app';
import { v4 as uuidv4 } from 'uuid'
import { getNavBarPaddingTop} from '@/utils/system.js';
import { getBindStatus,authDeviceApply,authInputCode } from '@/api/auth.js';
import {showToast} from '@/utils/message.js'
import {showToast,showAlert} from '@/utils/message.js'
import { CLIENT_ID,NETWORK_ENV } from '@/enums/cacheEnums';
import encryptObj from '@/utils/encrypt.js'
const { proxy } = getCurrentInstance();
import { requestAndroidPermissionAsync } from '@/utils/common.js'
const { proxy } = getCurrentInstance();
import { useUserStore } from '@/stores/user';
const userStore = useUserStore();
// #ifdef APP-PLUS
// 获取 存储手机的module
const safeSave = uni.requireNativePlugin("Tm-TmSafeSaveFileModule");
// #endif
let systemInfo = {};
let deviceId = ref(undefined);
onLoad(async(opt) => {
console.log("deviceAuth=>onLoad");
uni.setStorageSync('page_cache',true);
// uni.preloadPage({url: "/pages/login/login"});
// uni.preloadPage({url: "/pages/home/home"});
deviceId.value = uni.getStorageSync('app_device_id');// 本地设备ID
await selectBindStatus();
if(bindStatus.value==2){
// bindStatus=2-----到等待页面(定时任务查询 10秒查询一次
timer = setInterval(()=>{
refreshBindStatus()
},1000*10)//10秒刷新一次
systemInfo = uni.getSystemInfoSync()
// #ifdef APP-PLUS
try {
// // 授权设备存储
// let res = {granted:false}
// if(systemInfo.osAndroidAPILevel >=30){
// let permissions = ['android.permission.READ_MEDIA_IMAGES', 'android.permission.READ_MEDIA_VIDEO', 'android.permission.READ_MEDIA_AUDIO'];
// res = await requestAndroidPermissionAsync(permissions);
// }else{
// let permissions = ['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE'];
// res = await requestAndroidPermissionAsync(permissions);
// }
// // 读取设备id
// if (result.granted) {
// console.log('所有权限已授予')
safeSave.getSafeFile({ "key": "app_device_id" }, res2 => {
if (res2.code == 1) {
let deviceId = res2.data;
console.log("读取成功=>",deviceId)
deviceId.value = deviceId; // 本地设备ID
selectBindStatus(deviceId);
if(bindStatus.value==2){
// bindStatus=2-----到等待页面(定时任务查询 10秒查询一次
timer = setInterval(()=>{
refreshBindStatus()
},1000*10)//10秒刷新一次
}
} else {
showAlert('读取失败:'+res2.msg)
}
})
// } else {
// showAlert("您还没对设备授权,请授权!")
// }
} catch (error) {
console.error('权限请求出错:', error);
showAlert('权限请求出错:', error)
}
// #endif
})
// 绑定状态1=已提交、2=等待审核、3=审核通过、4=绑定成功、5=审核拒绝)
let bindStatus = ref(undefined);
let deviceId = ref(undefined);
let timer = null;
// 获取导航栏高度用于内容区域padding
const navBarPaddingTop = ref(0);
@@ -119,9 +159,9 @@ onUnmounted(() => {
})
// 根据设备ID查询设备状态
let selectBindStatus = async ()=>{
if(deviceId.value){
let res = await getBindStatus({uniqCode:deviceId.value})
let selectBindStatus = async (uniqCode)=>{
if(uniqCode){
let res = await getBindStatus({uniqCode})
bindStatus.value = res.bindStatus;
//bindStatus=4-----已绑定成功,跳转用户登录页面
if(bindStatus.value==4){
@@ -190,8 +230,6 @@ const submitForm = async() => {
deviceId.value = uuidv4();
let clientId = `${CLIENT_ID || 2}`;
let password = encryptObj.Encrypt(param.username + clientId + "," + param.password);
let systemInfo = uni.getSystemInfoSync()
let params = {
username:param.username,
password,
@@ -208,38 +246,53 @@ const submitForm = async() => {
}
let res = await authDeviceApply(params);
btnLoading.value = false;
uni.setStorageSync('app_device_id', deviceId.value)
bindStatus.value = res.bindStatus;//默认为 2-等待审核
// 刷新状态
refreshBindStatus();
timer = setInterval(()=>{
refreshBindStatus()
},1000*10)//10秒刷新一次
try {
// 授权设备存储
// let result = {granted:false}
// if(systemInfo.osAndroidAPILevel >=30){
// let permissions = ['android.permission.READ_MEDIA_IMAGES', 'android.permission.READ_MEDIA_VIDEO', 'android.permission.READ_MEDIA_AUDIO'];
// result = await requestAndroidPermissionAsync(permissions);
// }else{
// let permissions = ['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE'];
// result = await requestAndroidPermissionAsync(permissions);
// }
// if (result.granted) {
// 存储设备id
safeSave.saveSafeFile({ "key": "app_device_id","value": deviceId.value}, res3 => {
showAlert("保存成功=>"+JSON.stringify(res3));
if (res3.code == 1) {
console.log('保存成功:'+res3.msg)
showAlert("保存成功=>"+res3.msg);
// uni.setStorageSync('app_device_id', deviceId.value)
bindStatus.value = res.bindStatus;//默认为 2-等待审核
// 刷新状态
refreshBindStatus();
timer = setInterval(()=>{
refreshBindStatus()
},1000*10)//10秒刷新一次
} else {
showAlert('保存失败:'+res3.msg)
}
})
// } else {
// showAlert("您还没对设备授权,请授权!")
// }
} catch (error) {
showAlert('设备处理异常:'+error)
}
}).catch(err => {
console.log('表单错误11:', err);
btnLoading.value = false;
});
};
// 在UniApp的APP端使用plus.netinfo
let getLocalIPInUniApp=()=>{
return new Promise((resolve) => {
plus.netinfo.getCurrentInfo((info) => {
const ips = [];
if (info.wifi && info.wifi.ipAddress) {
ips.push(info.wifi.ipAddress);
}
if (info.cellular && info.cellular.ipAddress) {
ips.push(info.cellular.ipAddress);
}
resolve(ips.length ? ips : ['无法获取本地IP']);
});
});
}
// 刷新
const handleRefresh = ()=>{
selectBindStatus();
selectBindStatus(deviceId.value);
}
const codes = ref(Array(6).fill(''))
@@ -295,7 +348,7 @@ const handleSubmit=()=>{
return;
}
let uniqCode = uni.getStorageSync('app_device_id');
let uniqCode = deviceId.value;
let param={
uniqCode,
authCode:authCode.value