关闭职位页空个人资料时强制上传一份经历,和添加时间处理工具
This commit is contained in:
@@ -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()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -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}`
|
||||
})
|
||||
|
||||
/** 复制链接到剪贴板 */
|
||||
|
||||
Reference in New Issue
Block a user