fix: handle empty org_id gracefully in course-package-store + index.vue

- CoursePackageStore: don't show error when no orgId and unauth,
  just show empty state
- index.vue: only render CoursePackageStore when org_id is available
  in URL, otherwise show original login prompt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-01 08:43:13 +08:00
parent b8dca18ea4
commit ddaa862582
2 changed files with 13 additions and 7 deletions
+6 -5
View File
@@ -87,14 +87,15 @@ export default defineComponent({
const loadPackages = async () => {
state.loading = true;
state.error = false;
let ok: boolean;
const orgId = resolvedOrgId.value;
if (orgId) {
ok = await queryPublicPackages(orgId);
} else {
ok = isLoggedIn() ? await queryOrgPackages() : false;
const ok = await queryPublicPackages(orgId);
state.error = !ok;
} else if (isLoggedIn()) {
const ok = await queryOrgPackages();
state.error = !ok;
}
state.error = !ok;
// No orgId and unauth: show empty state, not error
state.loading = false;
state.loaded = true;
};
+7 -2
View File
@@ -18,7 +18,8 @@
</template>
<van-empty v-else description="账号未启用或未通过注册审核" />
</template>
<course-package-store v-if="!has_login" />
<course-package-store v-if="!has_login && urlOrgId" />
<van-empty v-if="!has_login && !urlOrgId" description="请返回微信小程序完成登录" />
</div>
</template>
@@ -127,6 +128,10 @@ export default defineComponent({
{ value: HtyBaseRoles.TEACHER, label: "老师" },
];
const has_login = computed(() => !!store.current.hty_id);
const urlOrgId = computed(() => {
const params = new URLSearchParams(window.location.search);
return params.get('org_id') || '';
});
const is_registered = computed(() => store.current.is_registered);
const is_enabled = computed(() => store.current.enabled);
const authorized = computed(() => userStatus === UserStates.Authorized);
@@ -189,7 +194,7 @@ export default defineComponent({
return {
is_registered, is_enabled, is_student, has_teacher,
has_login, authorized, activeRoles, chooseRole, setRole, store,
initial_roles, scene
initial_roles, scene, urlOrgId
}
},
});