From 71d0836e1ff2f0dd0eab61a506022b24706a35bd Mon Sep 17 00:00:00 2001 From: FengHui Date: Sat, 23 May 2026 19:29:22 +0800 Subject: [PATCH] =?UTF-8?q?ai=E9=A1=B5=E9=9D=A2=E5=B2=97=E4=BD=8D=E8=B7=B3?= =?UTF-8?q?=E8=BD=ACbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/md-render/md-render.vue | 70 ++++++++----------- .../Intendedposition/Intendedposition.vue | 2 +- packageA/pages/UnitDetails/UnitDetails.vue | 2 +- packageA/pages/browseJob/browseJob.vue | 2 +- .../cancelApplication/cancelApplication.vue | 2 +- packageA/pages/nearby/components/three.vue | 2 +- packageA/pages/personalInfo/personalInfo.vue | 4 +- packageA/pages/post/post.vue | 14 +--- packageA/pages/tiktok/tiktok.vue | 2 +- pages/index/components/index-one.vue | 2 +- pages/index/components/index-two.vue | 2 +- pages/msglog/messageDetail.vue | 2 +- pages/search/search.vue | 2 +- utils/markdownParser.js | 43 ++++++------ 14 files changed, 67 insertions(+), 84 deletions(-) diff --git a/components/md-render/md-render.vue b/components/md-render/md-render.vue index 7568564..62cb33c 100644 --- a/components/md-render/md-render.vue +++ b/components/md-render/md-render.vue @@ -13,7 +13,7 @@ v-for="(card, index) in localJobCardsList" :key="index" class="custom-card" - @tap="navigateToJobDetail(card.jobId)" + @tap="navigateToJobDetail(card.encryptJobId)" > {{ card.jobTitle }} @@ -76,26 +76,24 @@ watch(() => renderedHtml.value, (newVal) => { }); // 微信小程序端导航到岗位详情页面 -const navigateToJobDetail = (jobId) => { - console.log('navigateToJobDetail called with jobId:', jobId); - if (jobId && jobId !== 'undefined' && jobId !== 'null') { - // 跳转到岗位详情页面 +const navigateToJobDetail = (encryptJobId) => { + console.log('navigateToJobDetail called with encryptJobId:', encryptJobId); + if (encryptJobId && encryptJobId !== 'undefined' && encryptJobId !== 'null') { + let url = `/packageA/pages/post/post?encryptJobId=${encryptJobId}` uni.navigateTo({ - url: `/packageA/pages/post/post?jobId=${jobId}`, + url: url, success: (res) => { console.log('navigateTo success:', res); }, fail: (err) => { console.error('navigateTo failed:', err); - // 如果navigateTo失败,尝试redirectTo uni.redirectTo({ - url: `/packageA/pages/post/post?jobId=${jobId}`, + url: url, success: (res2) => { console.log('redirectTo success:', res2); }, fail: (err2) => { console.error('redirectTo also failed:', err2); - // 如果还是失败,显示错误提示 uni.showToast({ title: '跳转失败,请稍后重试', icon: 'none' @@ -105,7 +103,7 @@ const navigateToJobDetail = (jobId) => { } }); } else { - console.error('Invalid jobId:', jobId); + console.error('Invalid encryptJobId:', encryptJobId); uni.showToast({ title: '岗位信息不完整', icon: 'none' @@ -134,36 +132,33 @@ const handleH5Click = (e) => { console.log('Found elements:', { cardElement, moreElement }); if (cardElement) { - // 尝试多种方式获取jobId - let jobId = cardElement.getAttribute('data-job-id'); - console.log('Found custom-card, data-job-id attribute:', jobId); + let encryptJobId = cardElement.getAttribute('data-encrypt-job-id'); + console.log('Found custom-card, data-encrypt-job-id attribute:', encryptJobId); - // 如果data-job-id为空,尝试从onclick事件中提取jobId - if (!jobId) { + if (!encryptJobId) { const onclick = cardElement.getAttribute('onclick'); if (onclick) { - const match = onclick.match(/jobId=(\w+)/); + const match = onclick.match(/encryptJobId=([^'"]+)/); if (match && match[1]) { - jobId = match[1]; - console.log('Extracted jobId from onclick:', jobId); + encryptJobId = match[1]; + console.log('Extracted encryptJobId from onclick:', encryptJobId); } } } - if (jobId) { - console.log('Final jobId for navigation:', jobId); + if (encryptJobId) { + console.log('Final encryptJobId for navigation:', encryptJobId); try { - // 直接使用uni.navigateTo,避免navTo函数的潜在问题 + let url = `/packageA/pages/post/post?encryptJobId=${encryptJobId}` uni.navigateTo({ - url: `/packageA/pages/post/post?jobId=${jobId}`, + url: url, success: (res) => { console.log('navigateTo success:', res); }, fail: (err) => { console.error('navigateTo failed:', err); - // 如果navigateTo失败,尝试redirectTo uni.redirectTo({ - url: `/packageA/pages/post/post?jobId=${jobId}`, + url: url, success: (res2) => { console.log('redirectTo success:', res2); }, @@ -178,39 +173,36 @@ const handleH5Click = (e) => { } return; } else { - console.error('No jobId found for custom-card'); + console.error('No encryptJobId found for custom-card'); } } else if (moreElement) { - // 尝试多种方式获取jobId - let jobId = moreElement.getAttribute('data-job-id'); - console.log('Found custom-more, data-job-id attribute:', jobId); + let encryptJobId = moreElement.getAttribute('data-encrypt-job-id'); + console.log('Found custom-more, data-encrypt-job-id attribute:', encryptJobId); - // 如果data-job-id为空,尝试从onclick事件中提取jobId - if (!jobId) { + if (!encryptJobId) { const onclick = moreElement.getAttribute('onclick'); if (onclick) { - const match = onclick.match(/jobId=(\w+)/); + const match = onclick.match(/encryptJobId=([^'"]+)/); if (match && match[1]) { - jobId = match[1]; - console.log('Extracted jobId from onclick:', jobId); + encryptJobId = match[1]; + console.log('Extracted encryptJobId from onclick:', encryptJobId); } } } - if (jobId) { - console.log('Final jobId for more jobs:', jobId); + if (encryptJobId) { + console.log('Final encryptJobId for more jobs:', encryptJobId); try { - // 直接使用uni.navigateTo,避免navTo函数的潜在问题 + let url = `/packageA/pages/moreJobs/moreJobs?encryptJobId=${encryptJobId}` uni.navigateTo({ - url: `/packageA/pages/moreJobs/moreJobs?jobId=${jobId}`, + url: url, success: (res) => { console.log('navigateTo success:', res); }, fail: (err) => { console.error('navigateTo failed:', err); - // 如果navigateTo失败,尝试redirectTo uni.redirectTo({ - url: `/packageA/pages/moreJobs/moreJobs?jobId=${jobId}`, + url: url, success: (res2) => { console.log('redirectTo success:', res2); }, diff --git a/packageA/pages/Intendedposition/Intendedposition.vue b/packageA/pages/Intendedposition/Intendedposition.vue index a1dedbb..e814651 100644 --- a/packageA/pages/Intendedposition/Intendedposition.vue +++ b/packageA/pages/Intendedposition/Intendedposition.vue @@ -42,7 +42,7 @@ onReachBottom(() => { }); function navToPost(job) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&encryptJobId=${encodeURIComponent(job.encryptJobId)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(job.encryptJobId)}`); } function getJobList(type = 'add') { diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index e4db336..dcb6c9f 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -368,7 +368,7 @@ function navToJobDetail(jobId) { return if (jobId) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(jobId)}`); + navTo(`/packageA/pages/post/post`); } } diff --git a/packageA/pages/browseJob/browseJob.vue b/packageA/pages/browseJob/browseJob.vue index 744f31d..41069e9 100644 --- a/packageA/pages/browseJob/browseJob.vue +++ b/packageA/pages/browseJob/browseJob.vue @@ -84,7 +84,7 @@ function toSelectDate() { } function navToPost(job) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&encryptJobId=${encodeURIComponent(job.encryptJobId)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(job.encryptJobId)}`); } function searchCollection(e) { diff --git a/packageA/pages/cancelApplication/cancelApplication.vue b/packageA/pages/cancelApplication/cancelApplication.vue index b590770..d6be693 100644 --- a/packageA/pages/cancelApplication/cancelApplication.vue +++ b/packageA/pages/cancelApplication/cancelApplication.vue @@ -48,7 +48,7 @@ onReachBottom(() => { }); function navToPost(job) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&encryptJobId=${encodeURIComponent(job.encryptJobId)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(job.encryptJobId)}`); } function getJobList(type = 'add') { diff --git a/packageA/pages/nearby/components/three.vue b/packageA/pages/nearby/components/three.vue index 58ff43d..e5edff3 100644 --- a/packageA/pages/nearby/components/three.vue +++ b/packageA/pages/nearby/components/three.vue @@ -197,7 +197,7 @@ onLoad(() => { }); function navToPost(jobId) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(jobId)}`); + navTo(`/packageA/pages/post/post`); } async function loadData() { diff --git a/packageA/pages/personalInfo/personalInfo.vue b/packageA/pages/personalInfo/personalInfo.vue index f8e778f..ae7c305 100644 --- a/packageA/pages/personalInfo/personalInfo.vue +++ b/packageA/pages/personalInfo/personalInfo.vue @@ -375,9 +375,7 @@ const confirm = () => { if (!fromValue.politicalAffiliation) { return $api.msg('请选择政治面貌'); } - if (!fromValue.userTag) { - return $api.msg('请选择人员类型'); - } + if (!checkingPhoneRegExp(fromValue.phone)) { return $api.msg('请输入正确手机号'); } diff --git a/packageA/pages/post/post.vue b/packageA/pages/post/post.vue index ad5eb9d..42b0dca 100644 --- a/packageA/pages/post/post.vue +++ b/packageA/pages/post/post.vue @@ -272,7 +272,6 @@ const jobInfo = ref({}); const state = reactive({}); const mapCovers = ref([]); const jobIdRef = ref(); -const jobId = ref(); // 竞争力分析数据,初始化为包含默认值的完整结构,确保雷达图能正常渲染 const raderData = ref({ matchScore: 0, @@ -316,9 +315,6 @@ onShow(() => { }); function initLoad(option) { const encryptJobId = decodeURIComponent(option.encryptJobId); - if (option.jobId) { - jobId.value = decodeURIComponent(option.jobId); - } if (encryptJobId !== jobIdRef.value) { jobIdRef.value = encryptJobId; getDetail(encryptJobId); @@ -468,12 +464,9 @@ function confirmAction() { const encryptJobId = jobIdRef.value; if (jobInfo.value.isApply === 1) { // 取消投递 - const cancelJobId = jobId.value || jobInfo.value.jobId; - - console.log(jobInfo.value.jobId, 'jobInfo.value.jobId'); - $api.createRequest(`/app/job/applyJobCencal`, { jobId: jobInfo.value.jobId }, 'DELETE').then((resData) => { + $api.createRequest(`/app/job/applyJobCencal/${encryptJobId}`, {}, 'DELETE').then((resData) => { $api.msg('取消投递成功'); - getDetail(encryptJobId); // 刷新职位信息 + getDetail(encryptJobId); showConfirmDialog.value = false; }); } else { @@ -501,8 +494,7 @@ function confirmApply() { // 取消投递 function cancelApply() { - const cancelJobId = jobId.value || jobInfo.value.jobId; - $api.createRequest(`/app/job/applyJobCencal`, { jobId: cancelJobId }, 'DELETE').then((resData) => { + $api.createRequest(`/app/job/applyJobCencal`, { jobId: jobIdRef.value }, 'DELETE').then((resData) => { $api.msg('取消投递成功'); showConfirmDialog.value = false; }); diff --git a/packageA/pages/tiktok/tiktok.vue b/packageA/pages/tiktok/tiktok.vue index 45e115a..a98e9f7 100644 --- a/packageA/pages/tiktok/tiktok.vue +++ b/packageA/pages/tiktok/tiktok.vue @@ -53,7 +53,7 @@ function nextDetail() { recommedIndexDb.addRecord(recordData); } console.log(job.jobId); - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`); + navTo(`/packageA/pages/post/post`); } function getNextVideoSrc(num) { diff --git a/pages/index/components/index-one.vue b/pages/index/components/index-one.vue index ee55cc1..78229ba 100644 --- a/pages/index/components/index-one.vue +++ b/pages/index/components/index-one.vue @@ -1102,7 +1102,7 @@ function clearfindJob(job) { } function nextDetail(job) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&encryptJobId=${encodeURIComponent(job.encryptJobId)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(job.encryptJobId)}`); } function navToService(serviceType) { diff --git a/pages/index/components/index-two.vue b/pages/index/components/index-two.vue index 68a0782..f79af2d 100644 --- a/pages/index/components/index-two.vue +++ b/pages/index/components/index-two.vue @@ -151,7 +151,7 @@ function nextDetail(job) { const recordData = recommedIndexDb.JobParameter(job); recommedIndexDb.addRecord(recordData); } - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`); + navTo(`/packageA/pages/post/post`); } function nextVideo(job) { diff --git a/pages/msglog/messageDetail.vue b/pages/msglog/messageDetail.vue index e299701..fa7ecf9 100644 --- a/pages/msglog/messageDetail.vue +++ b/pages/msglog/messageDetail.vue @@ -113,7 +113,7 @@ function handleMsgClick() { if (item.noticeType === '4') { if (item.bussinessIdEncrypt) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(item.bussinessId)}&encryptJobId=${encodeURIComponent(item.bussinessIdEncrypt)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(item.bussinessIdEncrypt)}`); } return; } diff --git a/pages/search/search.vue b/pages/search/search.vue index f7a26bc..4ac70d7 100644 --- a/pages/search/search.vue +++ b/pages/search/search.vue @@ -134,7 +134,7 @@ function nextDetail(job) { const recordData = recommedIndexDb.JobParameter(job); recommedIndexDb.addRecord(recordData); } - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&encryptJobId=${encodeURIComponent(job.encryptJobId)}`); + navTo(`/packageA/pages/post/post?encryptJobId=${encodeURIComponent(job.encryptJobId)}`); } function nextVideo(job) { diff --git a/utils/markdownParser.js b/utils/markdownParser.js index 59e91b0..fec651d 100644 --- a/utils/markdownParser.js +++ b/utils/markdownParser.js @@ -19,30 +19,31 @@ const md = new MarkdownIt({ if (lang === 'job-json') { const result = safeExtractJson(str); if (result) { // json解析成功 - let jobId = result.appJobUrl; + let encryptJobId = result.appJobUrl; // If appJobUrl contains 'jobId=', extract the value after it, otherwise use it directly - if (jobId && jobId.includes('jobId=')) { - jobId = jobId.split('jobId=')[1]; - // 如果还有额外的参数,只取jobId部分 - if (jobId.includes('&')) { - jobId = jobId.split('&')[0]; + if (encryptJobId && encryptJobId.includes('jobId=')) { + encryptJobId = encryptJobId.split('jobId=')[1]; + // 如果还有额外的参数,只取encryptJobId部分 + if (encryptJobId.includes('&')) { + encryptJobId = encryptJobId.split('&')[0]; } } - console.log('Job JSON result:', result, 'Extracted jobId:', jobId); - - // 确保jobId有效 - if (!jobId || jobId === 'undefined' || jobId === 'null') { - console.error('Invalid jobId extracted:', jobId, 'from appJobUrl:', result.appJobUrl); - // 尝试从其他字段获取jobId + console.log('Job JSON result:', result, 'Extracted encryptJobId:', encryptJobId); + + // 确保encryptJobId有效 + if (!encryptJobId || encryptJobId === 'undefined' || encryptJobId === 'null') { + console.error('Invalid encryptJobId extracted:', encryptJobId, 'from appJobUrl:', result.appJobUrl); + // 尝试从其他字段获取encryptJobId if (result.jobId) { - jobId = result.jobId; - console.log('Using jobId from result.jobId:', jobId); + encryptJobId = result.jobId; + console.log('Using jobId from result.jobId as encryptJobId:', encryptJobId); } } - + // 添加到岗位卡片列表,供小程序端单独渲染 jobCardsList.push({ - jobId, + jobId: encryptJobId, + encryptJobId, jobTitle: result.jobTitle, salary: result.salary, location: result.location, @@ -50,16 +51,16 @@ const md = new MarkdownIt({ education: result.education, experience: result.experience }); - + // 生成岗位卡片HTML,注意:微信小程序rich-text组件只支持部分HTML属性 // 使用普通的href属性,微信小程序rich-text会将其转换为可点击链接 - // 添加data-job-id属性,方便获取jobId + // 添加data-encrypt-job-id属性,方便获取encryptJobId // 为所有平台添加onclick事件,微信小程序可能会忽略,但H5端会生效 // 内联基础样式确保在所有平台上正确显示(使用px单位以确保H5兼容性) - let domContext = `
${result.jobTitle}
${result.salary}
${result.location}·${result.companyName}
${result.education}
${result.experience}
查看详情
` + let domContext = `
${result.jobTitle}
${result.salary}
${result.location}·${result.companyName}
${result.education}
${result.experience}
查看详情
` if (result.data) { - jobMoreMap.set(jobId, result.data) - domContext += `查看更多岗位
` + jobMoreMap.set(encryptJobId, result.data) + domContext += `查看更多岗位
` } return domContext }