Compare commits

3 Commits

Author SHA1 Message Date
francis_fh
40127060b8 Merge branch 'main' of http://124.243.245.42:3000/sdz/ks-app-employment-service 2025-12-08 21:20:34 +08:00
francis_fh
16d1e50c85 bug修复 2025-12-08 21:20:33 +08:00
hanguangpu01
6006f5cd28 feat(auth): 实现第三方登录集成
- 在 careerfair.vue 中新增 thirdLogin 方法处理单点登录逻辑
- 修改 goDetail 方法,在跳转前执行第三方登录验证
- 在 packageB/train/index.vue 中增加 onLoad 钩子调用 thirdLogin
- 修改 jumps 方法,确保页面跳转前完成登录验证
- 在 request.js 中注释掉全局错误提示,避免重复提示
- 优化 videoDetail.vue 中的 getHeart 方法,移除冗余跳转逻辑
- 在 videoList.vue 中新增 playVideo 前的登录校验
- 统一多个页面中的 thirdLogin 实现,确保登录态一致性
2025-12-08 21:17:05 +08:00
9 changed files with 210 additions and 40 deletions

View File

@@ -139,13 +139,15 @@ const validateRole = () => {
const getPhoneNumber = (e) => {
console.log('获取手机号:', e);
console.log('userType.value', userType.value)
// 验证角色是否已选择
if (!validateRole()) {
return;
}
if (e.detail.errMsg === 'getPhoneNumber:ok') {
if (userType.value === null) {
$api.msg('请先选择您的角色');
return true;
}
uni.login({
provider: 'weixin',
success: (loginRes) => {

View File

@@ -525,6 +525,11 @@ function previewImage(url, index) {
current: index
});
}
// 查看简历
function viewResume(userId) {
navTo(`/packageA/pages/myResume/myResume?userId=${userId}`);
}
</script>
<style lang="stylus" scoped>

View File

@@ -58,8 +58,57 @@ const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction
import useUserStore from '@/stores/useUserStore';
import useDictStore from '@/stores/useDictStore';
function jumps(url){
navTo(url);
onLoad(() => {
thirdLogin()
});
async function jumps(url){
if(await thirdLogin()){
navTo(url);
}
}
async function thirdLogin(){
let form={}
if (uni.getStorageSync('userInfo').isCompanyUser=='1') {
form={
usertype: '1',
idno: uni.getStorageSync('userInfo').idCard,
name: uni.getStorageSync('userInfo').name,
enterprisecode:"",
enterprisename: "",
contactperson: "",
contactphone: "",
}
}else if (uni.getStorageSync('userInfo').isCompanyUser=='0') {
form={
usertype: "2",
enterprisecode: uni.getStorageSync('userInfo').idCard,
enterprisename: uni.getStorageSync('userInfo').name,
contactperson: "",
contactphone: "",
idno: "",
name: ""
}
}else{
uni.showToast({
icon: 'none',
title: '请先登录'
})
return false;
}
var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100);
if (resLogin.code=='200') {
uni.setStorageSync('Padmin-Token', resLogin.data.access_token)
return true;
}else{
uni.showToast({
icon: 'none',
title: '单点异常'
})
return false;
}
}
</script>

View File

@@ -202,12 +202,10 @@ function getData() {
function getHeart() {
const raw = uni.getStorageSync("Padmin-Token");
const token = typeof raw === "string" ? raw.trim() : "";
const headers = token ? { Authorization: raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {}
const headers = token ? { Authorization: raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {};
$api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, headers).then((resData) => {
if (resData.code == 200) {
getUserInfo();
} else {
navTo('/packageB/login')
}
});
}
@@ -218,6 +216,7 @@ function getUserInfo(){
$api.myRequest('/system/user/login/user/info', {},'get',10100,header).then((resData) => {
userId.value=resData.info.userId
getData()
updateVideoInfo()
});
}
function getDictionary(){
@@ -277,15 +276,20 @@ function updateVideoInfo(){
'Authorization':uni.getStorageSync('Padmin-Token'),
'Content-Type': "application/x-www-form-urlencoded"
}
if(videoInfo.value.isCollect===null && videoInfo.value.process ===null){
$api.myRequest('/train/public/videoUser/add', paramsData,'post',9100,header).then((resData) => {
console.log("视频播放时长更新成功")
});
}else{
$api.myRequest('/train/public/videoUser/update', paramsData,'post',9100,header).then((resData) => {
console.log("视频播放时长更新成功")
});
}
$api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, header).then((resData) => {
if (resData.code == 200) {
if(videoInfo.value.isCollect===null && videoInfo.value.process ===null){
$api.myRequest('/train/public/videoUser/add', paramsData,'post',9100,header).then((resData) => {
console.log("视频播放时长更新成功")
});
}else{
$api.myRequest('/train/public/videoUser/update', paramsData,'post',9100,header).then((resData) => {
console.log("视频播放时长更新成功")
});
}
}
})
}
// 计算并上报停留时长
function reportPageDuration() {

View File

@@ -80,7 +80,8 @@ const getItemBackgroundStyle = (imageName) => ({
});
const trainVideoImgUrl=config.trainVideoImgUrl
onLoad(() => {
onLoad(async () => {
await thirdLogin()
getDataList('refresh');
});
@@ -135,8 +136,53 @@ function getDataList(type = 'add') {
// 播放视频
function playVideo(video) {
navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`);
async function playVideo(video) {
if(await thirdLogin()){
navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`);
}
}
async function thirdLogin(){
let form={}
if (uni.getStorageSync('userInfo').isCompanyUser=='1') {
form={
usertype: '1',
idno: uni.getStorageSync('userInfo').idCard,
name: uni.getStorageSync('userInfo').name,
enterprisecode:"",
enterprisename: "",
contactperson: "",
contactphone: "",
}
}else if (uni.getStorageSync('userInfo').isCompanyUser=='0') {
form={
usertype: "2",
enterprisecode: uni.getStorageSync('userInfo').idCard,
enterprisename: uni.getStorageSync('userInfo').name,
contactperson: "",
contactphone: "",
idno: "",
name: ""
}
}else{
uni.showToast({
icon: 'none',
title: '请先登录'
})
return false;
}
var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100);
if (resLogin.code=='200') {
uni.setStorageSync('Padmin-Token', resLogin.data.access_token)
return true;
}else{
uni.showToast({
icon: 'none',
title: '单点异常'
})
return false;
}
}
</script>

View File

@@ -143,13 +143,59 @@
// startDate: currentDate,
// });
// weekList.value = result;
getHeart();
if(thirdLogin()){
getHeart();
}
});
onShow(() => {
// 更新自定义tabbar选中状态
tabbarManager.updateSelected(1);
});
});//
async function thirdLogin(){
let form={}
if (uni.getStorageSync('userInfo').isCompanyUser=='1') {
form={
usertype: '1',
idno: uni.getStorageSync('userInfo').idCard,
name: uni.getStorageSync('userInfo').name,
enterprisecode:"",
enterprisename: "",
contactperson: "",
contactphone: "",
}
}else if (uni.getStorageSync('userInfo').isCompanyUser=='0') {
form={
usertype: "2",
enterprisecode: uni.getStorageSync('userInfo').idCard,
enterprisename: uni.getStorageSync('userInfo').name,
contactperson: "",
contactphone: "",
idno: "",
name: ""
}
}else{
uni.showToast({
icon: 'none',
title: '请先登录'
})
return false;
}
var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100);
if (resLogin.code=='200') {
uni.setStorageSync('Padmin-Token', resLogin.data.access_token)
return true;
}else{
uni.showToast({
icon: 'none',
title: '单点异常'
})
return false;
}
}
onMounted(() => {
// 监听退出登录事件,显示微信登录弹窗
@@ -168,19 +214,22 @@
// 可以在这里添加登录成功后的处理逻辑
};
function goDetail(jobFairId){
if(state.current != 3){
navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + jobFairId)
}else{
console.log(userInfo.value, 'userInfo');
if(userInfo.value){
if(userInfo.value.userType=='ent'){
navTo('/packageB/jobFair/detailCom?jobFairId=' + jobFairId)
}else{
navTo('/packageB/jobFair/detailPerson?jobFairId=' + jobFairId)
async function goDetail(jobFairId){
if(await thirdLogin()){
debugger
if(state.current != 3){
navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + jobFairId)
}else{
console.log(userInfo.value, 'userInfo');
if(userInfo.value){
if(userInfo.value.userType=='ent'){
navTo('/packageB/jobFair/detailCom?jobFairId=' + jobFairId)
}else{
navTo('/packageB/jobFair/detailPerson?jobFairId=' + jobFairId)
}
}
}
}
}
}
function toSelectDate() {

View File

@@ -216,6 +216,14 @@
v-model="contact.name"
/>
</view>
<view class="form-group">
<view class="label">职位</view>
<input
class="input"
placeholder="请输入职位"
v-model="contact.position"
/>
</view>
<view class="form-group">
<view class="label">联系电话</view>
<input
@@ -280,6 +288,7 @@ const formData = reactive({
contacts: [
{
name: '',
position: '',
phone: ''
}
]
@@ -504,6 +513,7 @@ const addContact = () => {
if (formData.contacts.length < 3) {
formData.contacts.push({
name: '',
position: '',
phone: ''
});
}
@@ -653,7 +663,11 @@ const publishJob = async () => {
jobCategory: formData.jobCategory,
companyId: formData.companyId,
companyName: formData.companyName,
jobContactList: formData.contacts.filter(contact => contact.name.trim() && contact.phone.trim()),
jobContactList: formData.contacts.filter(contact => contact.name.trim() && contact.phone.trim()).map(contact => ({
contactPerson: contact.name,
contactPersonPhone: contact.phone,
position: contact.position
})),
filesList: formData.images.map(image => ({ bussinessid: image.bussinessid })) // 新增岗位图片列表使用bussinessid
};

View File

@@ -193,7 +193,8 @@ const handleLogin = async () => {
title: '登录成功',
icon: 'success'
})
window.location.assign('http://222.80.110.161:11111/mechine-dual-vue/login')
// window.location.assign('http://222.80.110.161:11111/mechine-dual-vue/login')
window.location.assign('http://222.80.110.161:11111/mechine-single-vue/login')
// // 跳转到首页
// uni.reLaunch({
// url: '/pages/index/index'

View File

@@ -246,10 +246,10 @@ export function myRequest(url, data = {}, method = 'GET', port = 9100, headers =
}
// 显示具体的错误信息
const errorMsg = msg || '请求出现异常,请联系工作人员'
uni.showToast({
title: errorMsg,
icon: 'none'
})
// uni.showToast({
// title: errorMsg,
// icon: 'none'
// })
const err = new Error(errorMsg)
err.error = resData
reject(err)