微信授权登录功能开发联调

This commit is contained in:
冯辉
2025-10-20 11:43:44 +08:00
parent ae91ded327
commit d9c1f83693
5 changed files with 784 additions and 41 deletions

View File

@@ -14,7 +14,7 @@
<!-- <view class="chart button-click">职业图谱</view> -->
</view>
<view class="cards" v-if="userInfo.userType !== 0">
<view class="card press-button" @click="navTo('/pages/nearby/nearby')">
<view class="card press-button" @click="handleNearbyClick">
<view class="card-title">附近工作</view>
<view class="card-text">好岗职等你来</view>
</view>
@@ -27,55 +27,55 @@
<!-- 服务功能网格 -->
<view class="service-grid" v-if="userInfo.userType !== 0">
<view class="service-item press-button" @click="navToService('service-guidance')">
<view class="service-item press-button" @click="handleServiceClick('service-guidance')">
<view class="service-icon service-icon-1">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">服务指导</view>
</view>
<view class="service-item press-button" @click="navToService('public-recruitment')">
<view class="service-item press-button" @click="handleServiceClick('public-recruitment')">
<view class="service-icon service-icon-2">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">事业单位招录</view>
</view>
<view class="service-item press-button" @click="navToService('resume-creation')">
<view class="service-item press-button" @click="handleServiceClick('resume-creation')">
<view class="service-icon service-icon-3">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">简历制作</view>
</view>
<view class="service-item press-button" @click="navToService('labor-policy')">
<view class="service-item press-button" @click="handleServiceClick('labor-policy')">
<view class="service-icon service-icon-4">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">劳动政策指引</view>
</view>
<view class="service-item press-button" @click="navToService('skill-training')">
<view class="service-item press-button" @click="handleServiceClick('skill-training')">
<view class="service-icon service-icon-5">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">技能培训信息</view>
</view>
<view class="service-item press-button" @click="navToService('skill-evaluation')">
<view class="service-item press-button" @click="handleServiceClick('skill-evaluation')">
<view class="service-icon service-icon-6">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">技能评价指引</view>
</view>
<view class="service-item press-button" @click="navToService('question-bank')">
<view class="service-item press-button" @click="handleServiceClick('question-bank')">
<view class="service-icon service-icon-7">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">题库和考试</view>
</view>
<view class="service-item press-button" @click="navToService('quality-assessment')">
<view class="service-item press-button" @click="handleServiceClick('quality-assessment')">
<view class="service-icon service-icon-8">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">素质测评</view>
</view>
<view class="service-item press-button" @click="navToService('ai-interview')">
<view class="service-item press-button" @click="handleServiceClick('ai-interview')">
<view class="service-icon service-icon-9">
<uni-icons type="auth-filled" size="32" color="#FFFFFF"></uni-icons>
</view>
@@ -304,6 +304,9 @@
<!-- 筛选 -->
<select-filter ref="selectFilterModel"></select-filter>
<!-- 微信授权登录弹窗 -->
<WxAuthLogin ref="wxAuthLoginRef" @success="handleLoginSuccess"></WxAuthLogin>
<!-- <view class="maskFristEntry" v-if="maskFristEntry">
<view class="entry-content">
<text class="text1">左滑查看视频</text>
@@ -323,7 +326,7 @@ const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction
import { onLoad, onShow } from '@dcloudio/uni-app';
import { storeToRefs } from 'pinia';
import useUserStore from '@/stores/useUserStore';
const { userInfo } = storeToRefs(useUserStore());
const { userInfo, hasLogin, token } = storeToRefs(useUserStore());
import useDictStore from '@/stores/useDictStore';
const { getTransformChildren, oneDictData } = useDictStore();
import useLocationStore from '@/stores/useLocationStore';
@@ -331,6 +334,7 @@ import selectFilter from '@/components/selectFilter/selectFilter.vue';
import { useRecommedIndexedDBStore, jobRecommender } from '@/stores/useRecommedIndexedDBStore.js';
import { useScrollDirection } from '@/hook/useScrollDirection';
import { useColumnCount } from '@/hook/useColumnCount';
import WxAuthLogin from '@/components/WxAuthLogin/WxAuthLogin.vue';
// 滚动状态管理
const shouldHideTop = ref(false);
const shouldStickyFilter = ref(false);
@@ -378,6 +382,7 @@ const loadmoreRef = ref(null);
const conditionSearch = ref({});
const waterfallcolumn = ref(2);
const maskFristEntry = ref(false);
const wxAuthLoginRef = ref(null);
const state = reactive({
tabIndex: 'all',
});
@@ -417,6 +422,37 @@ onMounted(() => {
getJobRecommend('refresh');
});
// 登录检查函数
const checkLogin = () => {
const tokenValue = uni.getStorageSync('token') || '';
if (!tokenValue || !hasLogin.value) {
// 未登录,打开授权弹窗
wxAuthLoginRef.value?.open();
return false;
}
return true;
};
// 登录成功回调
const handleLoginSuccess = () => {
// 登录成功后刷新数据
getJobRecommend('refresh');
};
// 处理附近工作点击
const handleNearbyClick = () => {
if (checkLogin()) {
navTo('/pages/nearby/nearby');
}
};
// 处理服务功能点击
const handleServiceClick = (serviceType) => {
if (checkLogin()) {
navToService(serviceType);
}
};
async function loadData() {
try {
if (isLoaded.value) return;
@@ -487,21 +523,15 @@ function clearfindJob(job) {
}
function nextDetail(job) {
// 登录
let token = uni.getStorageSync('token') || ''; // 同步获取 缓存信息
if (token) {
// 登录检查
if (checkLogin()) {
// 记录岗位类型,用作数据分析
if (job.jobCategory) {
const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData);
}
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`);
} else {
uni.redirectTo({
url: '/pages/login/login',
});
}
}
function navToService(serviceType) {