perf: 扫码逻辑优化

This commit is contained in:
rd
2025-07-08 18:11:41 +08:00
parent 0c7d9086c8
commit 9bd1bee0c8
4 changed files with 27 additions and 18 deletions

View File

@ -107,8 +107,8 @@
</div> </div>
</div> </div>
<PauseAccountPatchModal ref="pauseAccountPatchModalRef" @success="emits('update')" /> <PauseAccountPatchModal ref="pauseAccountPatchModalRef" @success="emits('update')" />
<ReauthorizeAccountModal ref="reauthorizeAccountModalRef" @success="emits('update')" /> <ReauthorizeAccountModal ref="reauthorizeAccountModalRef" @update="emits('update')" />
<AuthorizedAccountModal ref="authorizedAccountModalRef" @success="emits('update')" /> <AuthorizedAccountModal ref="authorizedAccountModalRef" @update="emits('update')" />
</div> </div>
</template> </template>
@ -166,11 +166,13 @@ const openDelete = (item) => {
}; };
const handleReauthorize = (item) => { const handleReauthorize = (item) => {
const isUnauthorized = isUnauthorizedStatus(item.status); console.log({ item });
const { id, platform, status } = item;
const isUnauthorized = isUnauthorizedStatus(status);
if (isUnauthorized) { if (isUnauthorized) {
authorizedAccountModalRef.value?.open(item.id); authorizedAccountModalRef.value?.open(id, platform);
} else { } else {
reauthorizeAccountModalRef.value?.open(item.id); reauthorizeAccountModalRef.value?.open(id, platform);
} }
}; };

View File

@ -124,7 +124,7 @@
</a-button> </a-button>
</template> </template>
<AuthorizedAccountModal ref="authorizedAccountModalRef" /> <AuthorizedAccountModal ref="authorizedAccountModalRef" @update="emits('update')" />
<ImportPromptModal ref="importPromptModalRef" /> <ImportPromptModal ref="importPromptModalRef" />
</a-modal> </a-modal>
</template> </template>
@ -322,15 +322,15 @@ async function onSubmit() {
if (isEdit.value) { if (isEdit.value) {
onClose(); onClose();
} else { } else {
startAuthorized(data?.id); startAuthorized(data?.id, data?.platform);
} }
} }
} }
}); });
} }
const startAuthorized = (id) => { const startAuthorized = (id, platform) => {
authorizedAccountModalRef.value.open(id); authorizedAccountModalRef.value.open(id, platform);
}; };
const handleDownloadTemplate = async () => { const handleDownloadTemplate = async () => {

View File

@ -34,7 +34,7 @@
<div class="img-box"> <div class="img-box">
<template v-if="qrCodeLoading || isFailLoadQrCode"> <template v-if="qrCodeLoading || isFailLoadQrCode">
<div class="relative w-160px h-160px"> <div class="relative w-160px h-160px">
<a-image :src="icon1" width="160" height="160" /> <a-image v-if="qrCodeLoading" :src="icon1" width="160" height="160" />
<div class="absolute top-0 left-0 z-2 w-full h-full flex flex-col items-center justify-center"> <div class="absolute top-0 left-0 z-2 w-full h-full flex flex-col items-center justify-center">
<img v-if="isFailLoadQrCode" :src="icon4" width="24" height="24" class="mb-13px" /> <img v-if="isFailLoadQrCode" :src="icon4" width="24" height="24" class="mb-13px" />
<icon-loading v-else size="24" class="color-#6D4CFE mb-13px" /> <icon-loading v-else size="24" class="color-#6D4CFE mb-13px" />
@ -55,7 +55,7 @@
<p class="s1">请点击刷新</p> <p class="s1">请点击刷新</p>
</div> </div>
</div> </div>
<span class="mt-16px"> 请使用抖音扫码将公司账号绑定至灵机平台 </span> <span class="mt-16px"> 请使用{{ platform }}扫码将公司账号绑定至灵机平台 </span>
</template> </template>
</template> </template>
</div> </div>
@ -88,7 +88,7 @@ const isSuccess = ref(false);
const failReason = ref(''); const failReason = ref('');
const progress = ref(0); const progress = ref(0);
const id = ref(''); const id = ref('');
const platform = ref('');
const isFailLoadQrCode = ref(false); const isFailLoadQrCode = ref(false);
const qrCodeUrl = ref(''); const qrCodeUrl = ref('');
const qrCodeLoading = ref(false); const qrCodeLoading = ref(false);
@ -103,8 +103,9 @@ const confirmBtnText = computed(() => {
return isSuccess.value ? '继续添加' : '重新扫码'; return isSuccess.value ? '继续添加' : '重新扫码';
}); });
const open = (accountId) => { const open = (accountId, platformCode) => {
id.value = accountId; id.value = accountId;
platform.value = platformCode === 0 ? '抖音' : '小红书';
getAuthorizedQrCode(); getAuthorizedQrCode();
visible.value = true; visible.value = true;
}; };
@ -114,6 +115,7 @@ const resetTaskFields = () => {
isCompleted.value = false; isCompleted.value = false;
isSuccess.value = false; isSuccess.value = false;
failReason.value = ''; failReason.value = '';
platform.value = '';
progress.value = 0; progress.value = 0;
qrCodeUrl.value = ''; qrCodeUrl.value = '';
qrCodeLoading.value = false; qrCodeLoading.value = false;
@ -168,6 +170,7 @@ const startStatusPolling = () => {
clearFakeProgressTimer(); clearFakeProgressTimer();
clearStatusPollingTimer(); clearStatusPollingTimer();
isLoading.value = false; isLoading.value = false;
emits('update');
} }
} }
}, 2000); }, 2000);

View File

@ -34,7 +34,7 @@
<div class="img-box"> <div class="img-box">
<template v-if="qrCodeLoading || isFailLoadQrCode"> <template v-if="qrCodeLoading || isFailLoadQrCode">
<div class="relative w-160px h-160px"> <div class="relative w-160px h-160px">
<a-image :src="icon1" width="160" height="160" /> <a-image v-if="qrCodeLoading" :src="icon1" width="160" height="160" />
<div class="absolute top-0 left-0 z-2 w-full h-full flex flex-col items-center justify-center"> <div class="absolute top-0 left-0 z-2 w-full h-full flex flex-col items-center justify-center">
<img v-if="isFailLoadQrCode" :src="icon4" width="24" height="24" class="mb-13px" /> <img v-if="isFailLoadQrCode" :src="icon4" width="24" height="24" class="mb-13px" />
<icon-loading v-else size="24" class="color-#6D4CFE mb-13px" /> <icon-loading v-else size="24" class="color-#6D4CFE mb-13px" />
@ -55,7 +55,7 @@
<p class="s1">请点击刷新</p> <p class="s1">请点击刷新</p>
</div> </div>
</div> </div>
<span class="mt-16px"> 请使用抖音扫码将公司账号绑定至灵机平台 </span> <span class="mt-16px"> 请使用{{ platform }}扫码将公司账号绑定至灵机平台 </span>
</template> </template>
<!-- </template> --> <!-- </template> -->
<template v-else-if="taskStep === TASK_STEP.loading"> <template v-else-if="taskStep === TASK_STEP.loading">
@ -106,24 +106,25 @@
import { defineExpose, ref, onUnmounted } from 'vue'; import { defineExpose, ref, onUnmounted } from 'vue';
import { getMediaAccountsAuthorizedStatus, getAuthorizedImage } from '@/api/all/propertyMarketing'; import { getMediaAccountsAuthorizedStatus, getAuthorizedImage } from '@/api/all/propertyMarketing';
import icon1 from '@/assets/img/media-account/icon-warn.png'; import icon1 from '@/assets/img/media-account/icon-default-qrcode.png';
import icon2 from '@/assets/img/media-account/icon-feedback-success.png'; import icon2 from '@/assets/img/media-account/icon-feedback-success.png';
import icon3 from '@/assets/img/media-account/icon-feedback-fail.png'; import icon3 from '@/assets/img/media-account/icon-feedback-fail.png';
import icon4 from '@/assets/img/media-account/icon-warn-1.png'; import icon4 from '@/assets/img/media-account/icon-warn-1.png';
const emits = defineEmits(['update']);
const OVERDUE_TIME = 30000; // 失效时间 const OVERDUE_TIME = 30000; // 失效时间
const TASK_STEP = { const TASK_STEP = {
default: 1, default: 1,
loading: 2, loading: 2,
end: 3, end: 3,
}; };
const visible = ref(false); const visible = ref(false);
const isOverdue = ref(false); // 二维码失效 const isOverdue = ref(false); // 二维码失效
const isSuccess = ref(false); const isSuccess = ref(false);
const failReason = ref(''); const failReason = ref('');
const progress = ref(0); const progress = ref(0);
const id = ref(''); const id = ref('');
const platform = ref('');
const isFailLoadQrCode = ref(false); const isFailLoadQrCode = ref(false);
const qrCodeUrl = ref(''); const qrCodeUrl = ref('');
@ -153,8 +154,9 @@ const confirmBtnText = computed(() => {
return ''; return '';
}); });
const open = (accountId) => { const open = (accountId, platformCode) => {
id.value = accountId; id.value = accountId;
platform.value = platformCode === 0 ? '抖音' : '小红书';
getAuthorizedQrCode(); getAuthorizedQrCode();
visible.value = true; visible.value = true;
}; };
@ -162,6 +164,7 @@ const resetTaskFields = () => {
isOverdue.value = false; isOverdue.value = false;
isSuccess.value = false; isSuccess.value = false;
failReason.value = ''; failReason.value = '';
platform.value = '';
progress.value = 0; progress.value = 0;
qrCodeUrl.value = ''; qrCodeUrl.value = '';
qrCodeLoading.value = false; qrCodeLoading.value = false;
@ -200,6 +203,7 @@ const startStatusPolling = () => {
progress.value = 1; progress.value = 1;
clearFakeProgressTimer(); clearFakeProgressTimer();
clearStatusPollingTimer(); clearStatusPollingTimer();
emits('update');
} }
} }
}, 2000); }, 2000);