flat: 扫码登录

This commit is contained in:
Apcallover
2025-12-24 18:39:44 +08:00
parent 640231a223
commit d5890936c3
3 changed files with 239 additions and 18 deletions

View File

@@ -193,16 +193,18 @@ import { storeToRefs } from 'pinia';
import tabcontrolVue from './components/tabcontrol.vue';
import SelectJobs from '@/components/selectJobs/selectJobs.vue';
import { reactive, inject, watch, ref, onMounted, onUnmounted } from 'vue';
import { onLoad, onShow } from '@dcloudio/uni-app';
import { onLoad, onShow, onHide } from '@dcloudio/uni-app';
import useUserStore from '@/stores/useUserStore';
import useDictStore from '@/stores/useDictStore';
import { playTextDirectly } from '@/hook/useTTSPlayer-all-in-one';
import { IncreaseRevie, FaceLoginService } from '@/common/all-in-one-listen.js';
const { $api, navTo } = inject('globalFunction');
const { loginSetToken, getUserResume } = useUserStore();
const { isMachineEnv, hasLogin } = storeToRefs(useUserStore());
const { getDictSelectOption, oneDictData } = useDictStore();
const openSelectPopup = inject('openSelectPopup');
const qrHandler = new IncreaseRevie();
const faceService = new FaceLoginService();
// status
const selectJobsModel = ref();
const tabCurrent = ref(1);
@@ -233,18 +235,33 @@ const scanLineTop = ref(0);
let scanInterval = null;
const countdown = ref(60);
let countdownTimer = null;
const loginMethod = ref('face'); // 'qrcode' / 'face'
const loginMethod = ref('qrcode'); // 'qrcode' / 'face'
onLoad((parmas) => {
getTreeselect();
if (!isMachineEnv.value) $api.msg('请完善微简历');
if (!isMachineEnv.value) {
$api.msg('请完善微简历');
}
});
onMounted(() => {
if (isMachineEnv) {
startCountdown();
startScanAnimation();
playTextDirectly('请进行用户登录');
faceService.start(); // 自动开始初始化流程
if (loginMethod.value === 'face') {
playTextDirectly('开始刷脸登录');
} else {
playTextDirectly('请进行登录');
}
setTimeout(() => {
if (loginMethod.value === 'face') {
handleFaceLogin();
}
if (loginMethod.value === 'qrcode') {
qrHandler.start();
}
}, 1000);
}
});
onUnmounted(() => {
@@ -289,12 +306,45 @@ const cancelLogin = () => {
// 切换登录方式
const switchLoginMethod = (method) => {
if (!isMachineEnv) {
return;
}
if (loginMethod.value !== method) {
loginMethod.value = method;
switch (method) {
case 'qrcode':
faceService.close();
qrHandler.start();
playTextDirectly('扫码登录');
break;
case 'face':
qrHandler.close();
handleFaceLogin();
playTextDirectly('扫脸登录');
break;
}
resetCountdown();
}
};
async function handleFaceLogin() {
try {
const authCode = await faceService.startFaceLogin();
console.log('拿到 AuthCode:', authCode);
// 调用后端登录接口...
} catch (err) {
this.$api.msg(err.message);
}
}
onUnmounted(() => {
qrHandler.close();
});
onHide(() => {
qrHandler.close();
});
// 开始动画
const startScanAnimation = () => {
clearInterval(scanInterval);