关闭职位页空个人资料时强制上传一份经历,和添加时间处理工具

This commit is contained in:
2026-05-22 09:59:34 +08:00
parent 1637ee5bbc
commit dd103f0794
6 changed files with 269 additions and 17 deletions
+51 -6
View File
@@ -66,17 +66,26 @@
<div class="settings-dialog__member-card">
<div class="settings-dialog__member-header">
<div class="settings-dialog__member-title-row">
<span class="settings-dialog__member-name">会员</span>
<span class="settings-dialog__member-badge">查看详情</span>
<span class="settings-dialog__member-name">正式会员</span>
<span
class="settings-dialog__member-badge"
:class="{ 'settings-dialog__member-badge--inactive': !memberStatus.isMember }"
>
{{ memberStatus.isMember ? '已开通' : '未开通' }}
</span>
</div>
<span class="settings-dialog__member-terms" @click="handleMemberTerms">会员条款</span>
</div>
<div class="settings-dialog__member-info-row">
<span class="settings-dialog__member-price">
<!-- 已开通显示到期时间和剩余天数 -->
<span v-if="memberStatus.isMember" class="settings-dialog__member-price">
<span class="settings-dialog__member-expire-line">到期时间{{ memberExpireDateTime }}</span>
<span class="settings-dialog__member-remain-line">剩余 {{ memberRemainDays }} </span>
</span>
<!-- 未开通显示价格 -->
<span v-else class="settings-dialog__member-price">
¥19.99/
<!-- <span>将于2026年3月27日续费</span>-->
</span>
<!-- <button class="settings-dialog__member-manage-btn" @click="handleManageSubscription">管理我的订阅</button>-->
</div>
</div>
<div class="settings-dialog__member-issue">
@@ -243,6 +252,8 @@ import { ref, reactive, watch, computed } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { logout } from '@/api/auth'
import { fetchMemberStatus, type MemberStatus } from '@/api/member'
import { timestampToLocalDateTime, timestampDiffDays } from '@/utils/time'
import JobGoalDialog from './JobGoalDialog.vue'
import { resolveRegionName } from '@/utils/region'
import { resolveIndustryName } from '@/utils/industry'
@@ -299,6 +310,39 @@ const showDeleteAccount = ref(false)
/** 邀请注册弹窗显示状态 */
const showInviteDialog = ref(false)
/** 会员状态数据 */
const memberStatus = reactive<MemberStatus>({
isMember: false,
expireTime: undefined,
createTime: undefined,
updateTime: undefined,
})
/** 会员到期时间(格式化显示) */
const memberExpireDateTime = computed(() => {
return timestampToLocalDateTime(memberStatus.expireTime, 'returnMinute')
})
/** 会员剩余天数 */
const memberRemainDays = computed(() => {
return timestampDiffDays(memberStatus.expireTime)
})
/** 查询会员状态 */
const loadMemberStatus = async () => {
try {
const res = await fetchMemberStatus()
if (res.data) {
memberStatus.isMember = res.data.isMember ?? false
memberStatus.expireTime = res.data.expireTime
memberStatus.createTime = res.data.createTime
memberStatus.updateTime = res.data.updateTime
}
} catch {
// 查询失败保持默认未开通状态
}
}
/** 岗位名称列表 */
const intentionCategoryNames = computed(() => {
const ids = store.state.jobIntention.categoryIds || []
@@ -327,11 +371,12 @@ const handleEditTarget = () => {
showGoalDialog.value = true
}
/** 弹窗打开时加载求职意向数据 */
/** 弹窗打开时加载求职意向数据和会员状态 */
watch(() => props.modelValue, (val) => {
if (val && store.state.isAuthenticated) {
store.dispatch('loadCommonData')
store.dispatch('loadJobIntention')
loadMemberStatus()
}
})
+2 -2
View File
@@ -11,7 +11,7 @@
<!-- 邀请链接区域 -->
<div class="settings-invite-dialog__link-box">
<p class="settings-invite-dialog__link-text">来一起领取AI求职助手会员{{ inviteText }}</p>
<p class="settings-invite-dialog__link-text">来一起领取AI求职助手会员{{ inviteText }}点击链接进入活动</p>
</div>
<!-- 复制链接按钮 -->
@@ -92,7 +92,7 @@ const inviteCode = computed(() => store.state.userInfo?.inviteCode || '')
/** 邀请链接文案 */
const inviteText = computed(() => {
const code = inviteCode.value
return `https://www.qiuzhizhushou.com/invite_code=${code},点击链接进入活动!`
return `https://www.offerpai.com.cn/invite_code=${code}`
})
/** 复制链接到剪贴板 */