<template>
  <view class="wh-full">
    <BasicLoading
      :isShow="isShow"
      bgColor="#fff"
      isShowTitle
      textColor="#000"
      title="启动中..."
      :type="1"
    />
  </view>
</template>

<script lang="ts" setup>
import { onLoad } from "@dcloudio/uni-app";
import { useDataStore } from "@/store/modules/data";
import { useUserStore } from "@/store/modules/user";
import { checkOpenId, findJsByPhoneApi } from "@/api/system/login";
import { PermissionCacheManager } from "@/utils/permission";

const { setGlobal, getGlobal } = useDataStore();
const { afterLoginAction } = useUserStore();
const { setFile, getFile } = useDataStore();
const isShow = ref(true);

/**
 * 强制刷新权限
 */
async function forceRefreshPermission(changeTime?: string): Promise<void> {
  try {
    
    // 重新获取用户权限
    const userStore = useUserStore();
    const currentUser = userStore.getUser;
    
    if (currentUser && currentUser.id) {
      // 重新调用权限获取接口
      const { authenticationApi } = await import('@/api/system/login');
      const result = await authenticationApi({ userId: currentUser.id });
      
      if (result && result.result) {
        
        // 直接设置权限并刷新缓存，不调用setAuth避免重复操作
        userStore.auth = result.result;
        
        // 手动刷新缓存，传递权限变更时间
        const { refreshPermissionCache } = await import('@/utils/permission');
        refreshPermissionCache(result.result, changeTime);
        
      }
    }
  } catch (error) {
    console.error('强制刷新权限失败:', error);
  }
}

function goByJs(js: any) {
  // 检查是否有签到相关参数
  const globalData = getGlobal;
  console.log('goByJs - globalData:', globalData);
  console.log('goByJs - js:', js);
  
  if (globalData && globalData.qdId) {
    // 有签到参数，重定向到签到确认页面
    let confirmUrl = `/pages/view/routine/qd/confirm?qdId=${globalData.qdId}`;
    if (globalData.rqgqtime) {
      confirmUrl += `&rqgqtime=${globalData.rqgqtime}`;
    }
    if (globalData.timestamp) {
      confirmUrl += `&timestamp=${globalData.timestamp}`;
    }
    
    console.log('重定向到签到确认页面:', confirmUrl);
    uni.reLaunch({
      url: confirmUrl
    });
    return;
  }
  
  if (getGlobal && getGlobal.type === '1') { 
    uni.reLaunch({
      url: "/pages/view/routine/xk/qd?from=login"
    });
  }
  if (js.confirmStatus == "A") {
    // 跳转到自助服务首页
    uni.reLaunch({
      url: "/pages/base/service/index",
    });
  } else {
    setFile({
      ...js,
      ...getFile,
    });
    setTimeout(() => {
      uni.reLaunch({
        url: "/pages/view/hr/teacherProfile/index",
      });
    }, 1500);
  }
}

onLoad(async (data: any) => {
  console.log('launchPage onLoad - 接收到的参数:', data);
  
  if (data && data.openId) {
    setGlobal(data);
    console.log('launchPage onLoad - 设置global数据后:', getGlobal);
    
    try {
      const res = await checkOpenId({
        openId: data.openId,
        appCode: "JS",
      });
      
      console.log('launchPage onLoad - checkOpenId结果:', res);
      
      if (res.resultCode == 1 && res.result) {
        // 执行登录操作
        afterLoginAction(res.result);
        
        // 如果有changeTime参数，更新权限缓存
        if (data.changeTime) {
          const { refreshPermissionCache } = await import('@/utils/permission');
          const userStore = useUserStore();
          const currentPermissions = userStore.getAuth;
          
          if (currentPermissions && currentPermissions.length > 0) {
            refreshPermissionCache(currentPermissions, data.changeTime);
          }
        }
        
        // 跳转页面
        console.log('launchPage onLoad - 准备调用goByJs');
        goByJs(res.result.js);
      } else {
        uni.reLaunch({
          url: "/pages/system/login/login",
        });
      }
    } catch (err) {
      console.error('launchPage onLoad - checkOpenId失败:', err);
      uni.reLaunch({
        url: "/pages/system/login/login"
      });
    }
  } else {
    console.log('launchPage onLoad - 没有openId参数，跳转到登录页面');
    uni.reLaunch({
      url: "/pages/system/login/login"
    });
  }
});
</script>
