友盟跟踪记录
This commit is contained in:
+10
@@ -7,6 +7,16 @@
|
||||
<title>Offer派 - 大学生AI求职平台 | 智能岗位匹配·一键自动网申·AI简历优化</title>
|
||||
<meta name="description" content="Offer派是专为大学生打造的AI求职平台,提供智能岗位匹配、一键自动网申、岗位定制简历、内推人脉直通等功能,让校招求职效率提升80%。" />
|
||||
<meta name="keywords" content="大学生求职,校招,AI求职,智能匹配,自动网申,简历优化,内推,Offer派" />
|
||||
<!-- 友盟统计 -->
|
||||
<script>
|
||||
var _czc = _czc || [];
|
||||
(function () {
|
||||
var um = document.createElement("script");
|
||||
um.src = "https://v1.cnzz.com/z.js?id=1281490571&async=1";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(um, s);
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -172,4 +172,10 @@ router.beforeEach(async (to, _from, next) => {
|
||||
next()
|
||||
})
|
||||
|
||||
// 友盟统计 - SPA 路由切换上报页面浏览(PV)
|
||||
router.afterEach((to) => {
|
||||
const _czc = (window as any)._czc || []
|
||||
_czc.push(['_trackPageview', to.fullPath, document.referrer])
|
||||
})
|
||||
|
||||
export default router
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
* ------------------------------------------------------------
|
||||
* | 数据名(name) | 中文名称 | 说明 |
|
||||
* | ----------------------------- | -------------- | --------------------------------- |
|
||||
* | offerpieBrowserPlugUsage | 插件使用状态 | 标识插件正在运行 { usage: string } |
|
||||
* * | offerpieBrowserPlugUsage | 插件使用状态 | 标识插件正在运行 { usage: string, version: string } |
|
||||
* * | offerpaiDeliveryLinkList | 投递链接列表 | 记录要投递职位的来源链接,目前用于解决投递网站的重定向 { linkList: string[] },useCsl:true |
|
||||
* ============================================================
|
||||
*/
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ export function exportResumeWord(element: HTMLElement, fileName: string) {
|
||||
const blob = new Blob([fullHtml], { type: 'application/msword' })
|
||||
const link = document.createElement('a')
|
||||
link.href = URL.createObjectURL(blob)
|
||||
link.download = `${fileName}.doc`
|
||||
link.download = `${fileName}.docx`
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
|
||||
@@ -262,10 +262,17 @@ import { fetchResumeList } from '@/api/resume'
|
||||
import { fetchMemberStatus } from '@/api/member'
|
||||
import JobGoalDialog from '@/components/JobGoalDialog.vue'
|
||||
|
||||
|
||||
// ==================== 路由 & Store ====================
|
||||
const router = useRouter()
|
||||
const store = useStore()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== sessionStorage 缓存 key ====================
|
||||
const STORAGE_KEY = 'agent_apply_progress_list'
|
||||
const COMPLETED_STORAGE_KEY = 'agent_completed_apply_list'
|
||||
|
||||
@@ -506,6 +506,12 @@ const router = useRouter()
|
||||
/** Vuex 状态管理实例 */
|
||||
const store = useStore()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
/** 页面是否已向下滚动超过 20px — 用于导航栏背景切换 */
|
||||
const isScrolled = ref(false)
|
||||
|
||||
|
||||
@@ -173,6 +173,12 @@
|
||||
import { ref } from 'vue'
|
||||
import { getDailyJobCount } from '@/utils/dailyJobCount'
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
/** 今日更新岗位数量 */
|
||||
const dailyJobCount = getDailyJobCount()
|
||||
|
||||
|
||||
+23
-10
@@ -200,15 +200,24 @@ import FullscreenLoading from '@/components/FullscreenLoading.vue'
|
||||
import MemberDialog from '@/components/MemberDialog.vue'
|
||||
import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
|
||||
import { fetchJobDetail, toggleJobFavorite, removeJobFavorite, fetchSkillGap } from '@/api/jobs'
|
||||
import { fetchMemberStatus } from '@/api/member'
|
||||
|
||||
import type { JobDetailData, SkillGapData } from '@/api/jobs'
|
||||
|
||||
|
||||
|
||||
// ==================== 路由相关 ====================
|
||||
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const store = useStore()
|
||||
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== 全屏加载状态 ====================
|
||||
/** 全屏加载是否显示 */
|
||||
const fullLoading = ref(false)
|
||||
@@ -482,16 +491,20 @@ const resumeCustomJobInfo = computed(() => ({
|
||||
|
||||
/** 生成岗位专属简历 — 先检查会员状态,非会员弹权限拦截弹窗 */
|
||||
async function handleGenerateResume() {
|
||||
// 先检查会员状态
|
||||
try {
|
||||
const statusRes = await fetchMemberStatus()
|
||||
if (statusRes.code === '0' && statusRes.data && !statusRes.data.isMember) {
|
||||
// 非会员 — 弹出会员权限拦截弹窗
|
||||
showMemberAccessDialog.value = true
|
||||
return
|
||||
// 优先从 vuex store 读取会员状态,没有则请求接口
|
||||
let isMember = store.state.memberStatus?.isMember
|
||||
if (isMember === undefined || isMember === null) {
|
||||
try {
|
||||
await store.dispatch('loadMemberStatus')
|
||||
isMember = store.state.memberStatus?.isMember
|
||||
} catch {
|
||||
// 接口异常时不阻断,继续执行
|
||||
}
|
||||
} catch {
|
||||
// 接口异常时不阻断,继续执行
|
||||
}
|
||||
if (!isMember) {
|
||||
// 非会员 — 弹出会员权限拦截弹窗
|
||||
showMemberAccessDialog.value = true
|
||||
return
|
||||
}
|
||||
|
||||
// 显示步骤进度遮罩
|
||||
|
||||
@@ -390,6 +390,7 @@ import JobResumeTemplate from '@/components/JobResumeTemplate.vue'
|
||||
import type { ResumeTemplateData } from '@/components/JobResumeTemplate.vue'
|
||||
|
||||
|
||||
|
||||
// 2. 注意:这里的字符串不需要再手动转义双引号了
|
||||
const paymentFormHtml = ref(`
|
||||
<form name="punchout_form" method="post" action="https://openapi-sandbox.dl.alipaydev.com/gateway.do?charset=UTF-8&method=alipay.trade.page.pay&sign=o8MQ7cEAh4yrf6ri5iT9gXbtR%2BTncX36p9JNZf8nmXxEp1WKO6dF1HDC6DPF8nxJbus6OG9E5UPSoiHgqrEiu3aeOs4LMcYzXXZP0UQzG%2F6pXyZrvlL70G8uwpnV6MgQojzhKheG0vYIJgSPaGsHKjwcp%2BT8yOZg3eEDIgFYEBf2a3c7kANc7%2FuOOGCSD9Ip9zqwX9LQ3b433NPH3AbGQkFSLsdGOTY62I7yI8hEF7EM7nNm%2BYryieqju21yN76JrV4k%2BgIGHn83I5oT3y7zurzdTqHLD4UawpPWdJ5B7p6wnJ4cN4uzO8JgRpNqogYqqKBPcHIlB9o4uax3bcRqhg%3D%3D¬ify_url=http%3A%2F%2F39.108.134.218%3A10106%2Fapi%2F%2Fpublic%2FalipayNotify%2Fpay&version=1.0&app_id=2018062160374941&sign_type=RSA2×tamp=2026-05-20+15%3A29%3A21&alipay_sdk=alipay-sdk-java-4.40.791.ALL&format=json">
|
||||
@@ -405,6 +406,13 @@ const router = useRouter()
|
||||
const route = useRoute()
|
||||
const store = useStore()
|
||||
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
/** 招聘分类标签背景色:校招=#3AC6E5,社招=#B95DDD,实习=#50D3B5 */
|
||||
function recruitCategoryColor(category: number | undefined | null): string {
|
||||
if (category === 1) return '#3AC6E5' // 校招
|
||||
|
||||
@@ -291,6 +291,13 @@ const store = useStore()
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== 左侧动画面板 ====================
|
||||
/** 舞台引用 */
|
||||
const stageRef = ref<HTMLDivElement | null>(null)
|
||||
|
||||
@@ -164,6 +164,12 @@ import { toOssUrl } from '@/utils/image'
|
||||
const router = useRouter()
|
||||
const store = useStore()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
/** 行业 Tab 标签列表 */
|
||||
const industryTabs = ['推荐', '互联网', '金融', '快消', '咨询', '央国企', '硬科技', '生涯规划', '名校导师', '心理咨询', '其他']
|
||||
|
||||
|
||||
@@ -125,6 +125,12 @@ import MentorQrCodeDialog from '@/components/MentorQrCodeDialog.vue'
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
/** 导师 ID,从路由参数获取(字符串,避免大数精度丢失) */
|
||||
const mentorId = route.params.id as string
|
||||
|
||||
|
||||
@@ -55,6 +55,12 @@ import type { SaveEducationItem, SaveWorkItem, SaveProjectItem, SaveCompetitionI
|
||||
const router = useRouter()
|
||||
const store = useStore()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== 全屏加载状态 ====================
|
||||
/** 全屏加载是否显示 */
|
||||
const fullLoading = ref(false)
|
||||
|
||||
@@ -142,6 +142,12 @@ import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== 全屏加载状态 ====================
|
||||
/** 全屏加载是否显示 */
|
||||
const fullLoading = ref(false)
|
||||
|
||||
@@ -639,6 +639,12 @@ import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
|
||||
// ==================== Store 实例 ====================
|
||||
const store = useStore()
|
||||
|
||||
// 声明友盟统计 _czc 对象
|
||||
const _czc: any[] = (window as any)._czc || [];
|
||||
(window as any)._czc = _czc;
|
||||
// 绑定 siteid,请用您的 siteid 替换下方 "XXXXXXXX" 部分
|
||||
_czc.push(["_setAccount", "1281490571"]);
|
||||
|
||||
// ==================== Tab 导航栏相关 ====================
|
||||
|
||||
/** 简历详情 Tab 导航列表 */
|
||||
|
||||
Reference in New Issue
Block a user