联调接口

This commit is contained in:
xuli3099
2025-08-12 13:43:21 +08:00
parent 74596473ab
commit f5717959ae
15 changed files with 293 additions and 114 deletions

View File

@@ -1,2 +1,4 @@
VITE_APP_BASE_URL = "http://192.168.20.191:3000"
#调用后台地址
VITE_APP_BASE_URL = "http://192.168.236.71:31302"
# VITE_APP_BASE_URL = "http://123.57.20.168:3000" # VITE_APP_BASE_URL = "http://123.57.20.168:3000"

View File

@@ -1 +1,4 @@
VITE_APP_BASE_URL = "http://192.168.20.191:5173"
#调用后台地址
VITE_APP_BASE_URL = "http://192.168.236.71:31302"
# VITE_APP_BASE_URL = "http://123.57.20.168:3000"

6
package-lock.json generated
View File

@@ -25,6 +25,7 @@
"@dcloudio/uni-mp-xhs": "3.0.0-4070520250711001", "@dcloudio/uni-mp-xhs": "3.0.0-4070520250711001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4070520250711001", "@dcloudio/uni-quickapp-webview": "3.0.0-4070520250711001",
"@dcloudio/uni-ui": "^1.5.7", "@dcloudio/uni-ui": "^1.5.7",
"crypto-js": "^4.2.0",
"mescroll-uni": "^1.3.7", "mescroll-uni": "^1.3.7",
"pinia": "2.0.20", "pinia": "2.0.20",
"uuid": "^11.1.0", "uuid": "^11.1.0",
@@ -8971,6 +8972,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
},
"node_modules/css-font-size-keywords": { "node_modules/css-font-size-keywords": {
"version": "1.0.0", "version": "1.0.0",
"license": "MIT" "license": "MIT"

View File

@@ -57,6 +57,7 @@
"@dcloudio/uni-mp-xhs": "3.0.0-4070520250711001", "@dcloudio/uni-mp-xhs": "3.0.0-4070520250711001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4070520250711001", "@dcloudio/uni-quickapp-webview": "3.0.0-4070520250711001",
"@dcloudio/uni-ui": "^1.5.7", "@dcloudio/uni-ui": "^1.5.7",
"crypto-js": "^4.2.0",
"mescroll-uni": "^1.3.7", "mescroll-uni": "^1.3.7",
"pinia": "2.0.20", "pinia": "2.0.20",
"uuid": "^11.1.0", "uuid": "^11.1.0",

View File

@@ -3,7 +3,7 @@ import request from "@/utils/request"
// 获取客户端版本 // 获取客户端版本
export function versionCheck(data) { export function versionCheck(data) {
return request.post({ return request.post({
url: '/api/versionCheck', url: '/acc/auth/version',
data data
}) })
} }
@@ -11,18 +11,28 @@ export function versionCheck(data) {
// 获取设备绑定状态 // 获取设备绑定状态
export function getBindStatus(data) { export function getBindStatus(data) {
return request.post({ return request.post({
url: '/api/getBindStatus', url: '/acc/auth/status',
data data
}) })
} }
// 获取图片 // 申请设备授权
export function getCaptchaImage() { export function authDeviceApply(data) {
return request.get({ return request.post({
url: '/api/captchaImage', url: '/acc/auth/apply',
data
}) })
} }
// App绑定设备授权码
export function authInputCode(data) {
return request.post({
url: '/acc/auth/inputCode',
data
})
}
// 获取验证码 // 获取验证码
export function getVerifyCode(data) { export function getVerifyCode(data) {
return request.post({ return request.post({
@@ -34,11 +44,18 @@ export function getVerifyCode(data) {
// 登录 // 登录
export function login(data) { export function login(data) {
return request.post({ return request.post({
url: '/api/user/login', url: '/acc/auth/login',
data data
}) })
} }
// 登出
export function logout(data) {
return request.post({
url: '/acc/auth/logout',
data
})
}
// 获取用户信息 // 获取用户信息
export function getUserInfo(data) { export function getUserInfo(data) {

View File

@@ -1,2 +1,8 @@
export const TOKEN_KEY = 'token'; export const TOKEN_KEY = 'token';
export const AGREEWELCOME_KEY="agreewelcome" export const AGREEWELCOME_KEY="agreewelcome";
// clientId 默认写2
export const CLIENT_ID=2;
// #区分内外网 //1-内网2-外网
export const NETWORK_ENV=1;

View File

@@ -10,9 +10,9 @@ export const RequestMethodsEnum = {
}; };
export const RequestCodeEnum = { export const RequestCodeEnum = {
SUCCESS: 0, //成功 SUCCESS: 0 || 200, //成功
FAILED: -1, // 失败 FAILED: -1, // 失败
TOKEN_INVALID: 10003 // TOKEN失效未登录 TOKEN_INVALID: 401 // TOKEN失效未登录
}; };
export const RequestErrMsgEnum = { export const RequestErrMsgEnum = {

View File

@@ -71,7 +71,6 @@
</view> </view>
</view> </view>
<view class="bottom-pic"> <view class="bottom-pic">
<image src="@/static/images/PicLogo@2x.png" class="pic-logo" /> <image src="@/static/images/PicLogo@2x.png" class="pic-logo" />
<view class="bottom-bg"></view> <view class="bottom-bg"></view>
@@ -85,8 +84,10 @@ import { ref,nextTick,onMounted,onUnmounted,getCurrentInstance } from 'vue';
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import { getNavBarPaddingTop} from '@/utils/system.js'; import { getNavBarPaddingTop} from '@/utils/system.js';
import { getBindStatus } from '@/api/auth.js'; import { getBindStatus,authDeviceApply,authInputCode } from '@/api/auth.js';
import {showToast} from '@/utils/message.js' import {showToast} from '@/utils/message.js'
import { CLIENT_ID,NETWORK_ENV } from '@/enums/cacheEnums';
import encryptObj from '@/utils/encrypt.js'
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
import { useUserStore } from '@/stores/user'; import { useUserStore } from '@/stores/user';
@@ -112,7 +113,9 @@ onMounted(async () => {
console.log("333bindStatus=>",bindStatus.value) console.log("333bindStatus=>",bindStatus.value)
if(bindStatus.value==2){ if(bindStatus.value==2){
// bindStatus=2-----到等待页面(定时任务查询 10秒查询一次 // bindStatus=2-----到等待页面(定时任务查询 10秒查询一次
timer = setInterval(()=>{ refreshBindStatus() },1000*10)//10秒刷新一次 timer = setInterval(()=>{
refreshBindStatus()
},1000*10)//10秒刷新一次
} }
}) })
@@ -124,7 +127,7 @@ onUnmounted(() => {
// 根据设备ID查询设备状态 // 根据设备ID查询设备状态
let selectBindStatus = async ()=>{ let selectBindStatus = async ()=>{
if(deviceId.value){ if(deviceId.value){
let res = await getBindStatus({deviceId:deviceId.value}) let res = await getBindStatus({uniqCode:deviceId.value})
bindStatus.value = res.bindStatus; bindStatus.value = res.bindStatus;
console.log("111bindStatus=>",bindStatus.value) console.log("111bindStatus=>",bindStatus.value)
@@ -145,10 +148,12 @@ let selectBindStatus = async ()=>{
// 刷新定时任务 // 刷新定时任务
let refreshBindStatus = async ()=>{ let refreshBindStatus = async ()=>{
let res = await getBindStatus({deviceId:deviceId.value}) let res = await getBindStatus({uniqCode:deviceId.value})
bindStatus.value = res.bindStatus; bindStatus.value = res.bindStatus;
console.log("222bindStatus=>",bindStatus.value) console.log("222bindStatus=>",bindStatus.value)
if(bindStatus.value==2){}else{ if(bindStatus.value==2){
}else{
if(bindStatus.value==4){ if(bindStatus.value==4){
if (userStore.isLogin) { if (userStore.isLogin) {
uni.reLaunch({ uni.reLaunch({
@@ -167,50 +172,84 @@ let refreshBindStatus = async ()=>{
// 账号登录 // 账号登录
const form2 = ref(null); const form2 = ref(null);
const formData2 = ref({ const formData2 = ref({
username: 'admin', username: '',
password: '123456' password: ''
}); });
const rules2 = { const rules2 = {
username: { username: {
rules: [ rules: [
{ required: true, errorMessage: '请输入用户名' }, { required: true, errorMessage: '请输入用户名' },
{ minLength: 3, maxLength: 10, errorMessage: '用户名长度在3到10个字符之间' } // { minLength: 3, maxLength: 10, errorMessage: '用户名长度在3到10个字符之间' }
] ]
}, },
password: { password: {
rules: [ rules: [
{ required: true, errorMessage: '请输入密码' }, { required: true, errorMessage: '请输入密码' },
{ pattern: /^[a-zA-Z0-9]{6,12}$/, errorMessage: '密码必须是6-12位字母或数字' } // { pattern: /^[a-zA-Z0-9]{6,12}$/, errorMessage: '密码必须是6-12位字母或数字' }
] ]
} }
}; };
const btnLoading=ref(false) const btnLoading=ref(false)
// 登录提交 // 登录提交
const submitForm = () => { const submitForm = async() => {
// 用户名和密码登录 // 用户名和密码登录
form2.value.validate().then(async param => { form2.value.validate().then(async param => {
btnLoading.value = true; btnLoading.value = true;
setTimeout(()=>{ deviceId.value = uuidv4();
console.log('表单数据11:', formData2.value); let cilentId = `${CLIENT_ID || 2}`;
// let res = await login(param); let password = encryptObj.Encrypt(param.username + cilentId + "," + param.password);
console.log("password=>",password)
let systemInfo = uni.getSystemInfoSync()
let params = {
username:param.username,
password,
networkEnv:NETWORK_ENV,//1-内网2-外网
uniqCode:deviceId.value,//生成的设备唯一标识
...systemInfo,//设备信息
// #ifdef APP-PLUS
verId:systemInfo.appWgtVersion,//当前版本号
// #endif
// #ifdef H5
verId : systemInfo.appVersion,
// #endif
osAndroidApiLevel:systemInfo.osAndroidAPILevel
}
console.log("params=>",params)
let res = await authDeviceApply(params);
console.log("authDeviceApply=>",res)
btnLoading.value = false; btnLoading.value = false;
deviceId.value = uuidv4();console.log("新生成=>",deviceId.value);
uni.setStorageSync('app_device_id', deviceId.value) uni.setStorageSync('app_device_id', deviceId.value)
bindStatus.value = res.bindStatus;//默认为 2-等待审核
bindStatus.value = 2;//默认为 等待审核 // 刷新状态
refreshBindStatus();
timer = setInterval(()=>{ refreshBindStatus() },1000*10)//10秒刷新一次 timer = setInterval(()=>{
},500) refreshBindStatus()
},1000*10)//10秒刷新一次
}).catch(err => { }).catch(err => {
console.log('表单错误11:', err); console.log('表单错误11:', err);
btnLoading.value = false; 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);
}
console.log(1111,ips)
resolve(ips.length ? ips : ['无法获取本地IP']);
});
});
}
// 刷新 // 刷新
const handleRefresh = ()=>{ const handleRefresh = ()=>{
selectBindStatus(); selectBindStatus();
@@ -276,7 +315,6 @@ const handleInput=(e,type)=>{
num6.value = obj6.num; num6.value = obj6.num;
break; break;
} }
} }
let authCode = ref('') let authCode = ref('')
@@ -290,6 +328,7 @@ const handleBlur = ()=>{
authCode.value = pass1+pass2+pass3+pass4+pass5+pass6; authCode.value = pass1+pass2+pass3+pass4+pass5+pass6;
} }
// 执行设备绑定
let subLoading = ref(false) let subLoading = ref(false)
const handleSubmit=()=>{ const handleSubmit=()=>{
console.log("authCode=>",authCode.value) console.log("authCode=>",authCode.value)
@@ -297,10 +336,22 @@ const handleSubmit=()=>{
showToast("请输入验证码") showToast("请输入验证码")
return; return;
} }
subLoading.value=true; if(authCode.value.length!=6){
showToast("请正确输入验证码")
return;
}
let uniqCode = uni.getStorageSync('app_device_id');
let param={
uniqCode,
authCode:authCode.value
}
subLoading.value=true;
authInputCode(param).then(res=>{
uni.reLaunch({ url: '/pages/login/login' }) uni.reLaunch({ url: '/pages/login/login' })
}).finally(()=>{
subLoading.value = false; subLoading.value = false;
})
} }
</script> </script>

View File

@@ -23,6 +23,7 @@
import { ref } from 'vue'; import { ref } from 'vue';
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { versionCheck,getBindStatus } from '@/api/auth.js'; import { versionCheck,getBindStatus } from '@/api/auth.js';
import { formatIOS } from '@/utils/status.js'
import { useUserStore } from '@/stores/user'; import { useUserStore } from '@/stores/user';
const userStore = useUserStore(); const userStore = useUserStore();
@@ -43,51 +44,82 @@ onLoad(async(opt) => {
// #ifdef APP-PLUS // #ifdef APP-PLUS
// 查询版本接口 // 查询版本接口
await getOSVesion(); await getOSVesion();
// #endif
// 不更新版本 执行设备ID查询和绑定操作 // 不更新版本 执行设备ID查询和绑定操作
if(!versionVisible.value){ if(!versionVisible.value){
selectDeviceId() selectDeviceId()
} }
// #endif
// #ifdef H5
setTimeout(()=>{
if(userStore.isLogin){
uni.reLaunch({
url: '/pages/home/home',
});
}else{
uni.reLaunch({
url: '/pages/login/login',
});
}
},2000)
// #endif
}); });
// 检查版本是否是最新的 // 检查版本是否是最新的
let getOSVesion = async()=>{ let getOSVesion = async()=>{
let systemInfo = uni.getSystemInfoSync(); let systemInfo = uni.getSystemInfoSync(); console.log(systemInfo.osName)
let param = { let param = {
// #ifdef APP-PLUS // #ifdef APP-PLUS
appVersion:systemInfo.appWgtVersion,//当前版本号 verNumber:systemInfo.appWgtVersion,//当前版本号
// #endif // #endif
// #ifdef H5 // #ifdef H5
appVersion : systemInfo.appVersion, verNumber : systemInfo.appVersion,
// #endif // #endif
deviceType:systemInfo.model,//型号 // deviceType:systemInfo.model,//型号
os: systemInfo.osName,//操作系统 Android IOS os: formatIOS(systemInfo.osName),//操作系统 Android IOS
osVersion:systemInfo.osVersion,//操作系统版本 // osVersion:systemInfo.osVersion,//操作系统版本
resolution:systemInfo.windowWidth+"*"+systemInfo.windowHeight,//分辨率 // resolution:systemInfo.windowWidth+"*"+systemInfo.windowHeight,//分辨率
trademark:systemInfo.deviceBrand,//设备品牌 // trademark:systemInfo.deviceBrand,//设备品牌
uniqueCode:systemInfo.deviceId//设备ID // uniqueCode:systemInfo.deviceId//设备ID
} }
// 当前手机版本 // 当前手机版本
appVersion.value = param.appVersion; appVersion.value = param.verNumber;
// console.log("appVersion=>",appVersion) // console.log("appVersion=>",appVersion)
versionData.value = param; versionData.value = param;
let data = await versionCheck(param); let data = await versionCheck(param);
newVersion.value = data.latestVersion; newVersion.value = data.verNumber;
// 版本状态 0-最新版本 1-有新版本,但现有版本可用 2-现有版本不可用,需要下载新版本
if(data.status == 1 || data.status == 2){ // isForceUpdate 是否强制更新 1-是 2-否
versionVisible.value = true; let isForceUpdate = data.isForceUpdate;
downloadURL.value = data.downloadURL; if(isForceUpdate==1){
// 可用版本列表
let availableVersionsList = data.availableVersionsList;
// let versionList = availableVersionsList.split(",");
if(availableVersionsList.indexOf(appVersion.value)>-1){
btnVisible.value = true;
}else{
btnVisible.value = false; btnVisible.value = false;
}else{
btnVisible.value = true;
} }
// 是否为当前最新版本(是=1否=2)
let isCurrent = data.isCurrent;
if(isCurrent == 1){
versionVisible.value=false;
}else{
versionVisible.value=true;
}
// 版本状态 0-最新版本 1-有新版本,但现有版本可用 2-现有版本不可用,需要下载新版本
// if(data.status == 1 || data.status == 2){
// versionVisible.value = true;
// downloadURL.value = data.downloadURL;
// // 可用版本列表
// let availableVersionsList = data.availableVersionsList;
// // let versionList = availableVersionsList.split(",");
// if(availableVersionsList.indexOf(appVersion.value)>-1){
// }else{ // }else{
// btnVisible.value = false;
// }
// // }else{
// if(userStore.isLogin){ // if(userStore.isLogin){
// // _this.getUserInfo(); // // _this.getUserInfo();
// }else{ // }else{
@@ -95,38 +127,26 @@ let getOSVesion = async()=>{
// url: '/pages/home/home', // url: '/pages/home/home',
// }); // });
// } // }
}
}
// 下载最新版本
const handleDown = ()=>{
// 跳转到应用商店或下载最新版本的页面
plus.runtime.openURL(downloadURL.value);
// if (versionData.value.os == 'ios'){
// plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
// } else if (versionData.value.os == 'android'){
plus.runtime.quit();
// } // }
} }
//版本更新关闭
const handleClose=()=>{
versionVisible.value = false;
// 不更新版本 执行设备ID查询和绑定操作
if(!versionVisible.value){
selectDeviceId()
}
}
// 查询设备ID // 查询设备ID
const selectDeviceId = async()=>{ const selectDeviceId = async()=>{
// 查询本地缓存的设备状态是否绑定过 // 查询本地缓存的设备状态是否绑定过
let deviceId = ref(undefined); let deviceId = uni.getStorageSync('app_device_id');// 本地设备ID
deviceId.value = uni.getStorageSync('app_device_id');// 本地设备ID console.log("uniqCode=>",deviceId)
let res = await getBindStatus({deviceId:deviceId.value}); if(!deviceId){
setTimeout(()=>{
uni.reLaunch({
url: '/pages/deviceAuth/deviceAuth',
});
},2000)
}else{
let res = await getBindStatus({uniqCode:deviceId});
console.log("getBindStatus=>",res)
setTimeout(()=>{ setTimeout(()=>{
// 检查是否已登录 并 获取用户信息 // 检查是否已登录 并 获取用户信息
if (userStore.isLogin) { // if (userStore.isLogin) {
// 绑定状态1=已提交、2=等待审核、3=审核通过、4=绑定成功、5=审核拒绝) // 绑定状态1=已提交、2=等待审核、3=审核通过、4=绑定成功、5=审核拒绝)
if(res.bindStatus == 4){ if(res.bindStatus == 4){
uni.reLaunch({ uni.reLaunch({
@@ -137,14 +157,33 @@ const selectDeviceId = async()=>{
url: '/pages/deviceAuth/deviceAuth', url: '/pages/deviceAuth/deviceAuth',
}); });
} }
}else{ // }else{
uni.reLaunch({ // uni.reLaunch({
url: '/pages/login/login', // url: '/pages/login/login',
}); // });
} // }
},2000) },2000)
}
}
// 下载最新版本
const handleDown = ()=>{
// 跳转到应用商店或下载最新版本的页面
plus.runtime.openURL(downloadURL.value);
if (versionData.value.os == 'ios'){
plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
} else if (versionData.value.os == 'android'){
plus.runtime.quit();
}
} }
//版本更新关闭
const handleClose=()=>{
versionVisible.value = false;
// 不更新版本 执行设备ID查询和绑定操作
if(!versionVisible.value){
selectDeviceId()
}
}
</script> </script>
<style> <style>

View File

@@ -81,10 +81,11 @@ import {showAlert} from '@/utils/message';
import { getVerifyCode,login } from '@/api/auth'; import { getVerifyCode,login } from '@/api/auth';
import cache from '@/utils/cache'; import cache from '@/utils/cache';
import { AGREEWELCOME_KEY } from '@/enums/cacheEnums'; import { AGREEWELCOME_KEY } from '@/enums/cacheEnums';
import { getNavBarPaddingTop} from '@/utils/system.js' import { getNavBarPaddingTop} from '@/utils/system.js'
import { useUserStore } from '@/stores/user'; import { useUserStore } from '@/stores/user';
import encryptObj from '@/utils/encrypt.js'
import { CLIENT_ID } from '@/enums/cacheEnums';
const userStore = useUserStore() const userStore = useUserStore()
onLoad(async(opt) => { onLoad(async(opt) => {
uni.setStorageSync('page_cache',true); uni.setStorageSync('page_cache',true);
@@ -187,7 +188,7 @@ let resetCountdown =()=>{
// 账号登录 // 账号登录
const form2 = ref(null); const form2 = ref(null);
const formData2 = ref({ const formData2 = ref({
username: 'admin', username: '445',
password: '123456', password: '123456',
loginType:1 loginType:1
}); });
@@ -196,13 +197,13 @@ const rules2 = {
username: { username: {
rules: [ rules: [
{ required: true, errorMessage: '请输入用户名' }, { required: true, errorMessage: '请输入用户名' },
{ minLength: 3, maxLength: 10, errorMessage: '用户名长度在3到10个字符之间' } // { minLength: 3, maxLength: 10, errorMessage: '用户名长度在3到10个字符之间' }
] ]
}, },
password: { password: {
rules: [ rules: [
{ required: true, errorMessage: '请输入密码' }, { required: true, errorMessage: '请输入密码' },
{ pattern: /^[a-zA-Z0-9]{6,12}$/, errorMessage: '密码必须是6-12位字母或数字' } // { pattern: /^[a-zA-Z0-9]{6,12}$/, errorMessage: '密码必须是6-12位字母或数字' }
] ]
} }
}; };
@@ -242,7 +243,13 @@ const submitForm = () => {
}else if(activeTab.value===1){ }else if(activeTab.value===1){
// 用户名和密码登录 // 用户名和密码登录
form2.value.validate().then(async param => { form2.value.validate().then(async param => {
param.loginType = activeTab.value; console.log('表单数据11:', formData2.value); param.loginType = activeTab.value;
let cilentId = `${CLIENT_ID || 2}`;
let password = encryptObj.Encrypt(param.username + cilentId + "," + param.password);
param.password = password;
param.uniqCode = uni.getStorageSync('app_device_id');//先从缓存取之后处理
console.log("login->param->",param)
let res = await login(param); let res = await login(param);
userStore.login(res); userStore.login(res);
uni.switchTab({ url: '/pages/home/home' }) uni.switchTab({ url: '/pages/home/home' })

30
src/utils/encrypt.js Normal file
View File

@@ -0,0 +1,30 @@
import CryptoJS from 'crypto-js'
const key = "DOkldC48$@#(&siI";
const iv = "4dad87133de5f2de"
// 加密
function Encrypt(text) {
// 解密模式为CBC补码方式为PKCS5Padding也就是PKCS7
return CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(key), {
iv: CryptoJS.enc.Utf8.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()
}
// 解密
function Decrypt(text) {
// 解密模式为CBC补码方式为PKCS5Padding也就是PKCS7
let decrypted = CryptoJS.AES.decrypt(text, CryptoJS.enc.Utf8.parse(key), {
iv: CryptoJS.enc.Utf8.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return decrypted.toString(CryptoJS.enc.Utf8)
}
export default {
Encrypt,
Decrypt
}

View File

@@ -20,7 +20,7 @@ export const showToast = (msg, icon = 'none', mask = false) => {
* @param title * @param title
* @returns * @returns
*/ */
export const showAlert = (content, title = '提示',showCancel=true,succFun) => { export const showAlert = (content, title = '提示',showCancel=false,succFun) => {
return uni.showModal({ return uni.showModal({
title: title, title: title,
content: content, content: content,

View File

@@ -1,6 +1,7 @@
import HttpRequest from './http'; import HttpRequest from './http';
import { merge } from 'lodash-es'; import { merge } from 'lodash-es';
import { getToken } from '../auth'; import { getToken } from '../auth';
import { CLIENT_ID } from '@/enums/cacheEnums';
import { RequestCodeEnum, RequestMethodsEnum } from '@/enums/requestEnums'; import { RequestCodeEnum, RequestMethodsEnum } from '@/enums/requestEnums';
import { useUserStore } from '@/stores/user' import { useUserStore } from '@/stores/user'
import { useMessage } from '../message'; import { useMessage } from '../message';
@@ -54,7 +55,7 @@ const requestHooks = {
return Promise.reject(); return Promise.reject();
default: default:
message.toast(msg) message.alert(msg)
// return data; // return data;
return Promise.reject(msg); return Promise.reject(msg);
} }
@@ -72,7 +73,10 @@ const requestHooks = {
const defaultOptions = { const defaultOptions = {
requestOptions: {// 请求配置 requestOptions: {// 请求配置
timeout: 10 * 1000, timeout: 10 * 1000,
header: { version: '1.0.0' } header: {
version: '1.0.0',
clientId:`${CLIENT_ID || 2}`, // clientId传2
}
}, },
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}`,// 基础 URL baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}`,// 基础 URL
isReturnDefaultResponse: false,// 是否返回默认响应 isReturnDefaultResponse: false,// 是否返回默认响应

11
src/utils/status.js Normal file
View File

@@ -0,0 +1,11 @@
// 1=Android、2=IOS
export function formatIOS(type){
const result = {
'android':1,
'ios':2,
}
return result[type];
}

View File

@@ -17,13 +17,15 @@ export default defineConfig({
}, },
}, },
server: { server: {
host: '0.0.0.0', // 监听所有本地 IP
// port:9995,
https: false,//是否启动https https: false,//是否启动https
proxy: { // proxy: {
// 简单代理配置 // // 简单代理配置
'/api': { // '/api': {
target: 'http://localhost:3000', // 目标服务器地址 // target: 'http://localhost:3000', // 目标服务器地址
} // }
} // }
}, },