"use strict"; const common_vendor = require("../../common/vendor.js"); const common_assets = require("../../common/assets.js"); const api_collection = require("../../api/collection.js"); const api_message = require("../../api/message.js"); const api_assessment = require("../../api/assessment.js"); const _sfc_main = { __name: "detail", setup(__props) { const statusBarHeight = common_vendor.ref(20); const isFavorited = common_vendor.ref(false); const collectionId = common_vendor.ref(null); const assessmentId = common_vendor.ref(null); const loading = common_vendor.ref(true); const assessmentData = common_vendor.ref({}); const bannerImages = common_vendor.ref([ "/static/images/assess_cover.svg", "/static/images/assess_cover.svg" ]); const tags = common_vendor.ref([]); const hasRecord = common_vendor.ref(false); const isAllCompleted = common_vendor.ref(false); const hasPaid = common_vendor.ref(false); const isPassed = common_vendor.ref(false); const decodeBase64Utf8 = (value) => { if (!value || typeof value !== "string") return ""; try { const binary = atob(value); const bytes = Array.from(binary, (char) => char.charCodeAt(0)); return decodeURIComponent(bytes.map((byte) => `%${byte.toString(16).padStart(2, "0")}`).join("")); } catch (e) { return value; } }; const displayDescription = common_vendor.computed(() => { const data = assessmentData.value || {}; if (data.remark || data.description) { return data.remark || data.description; } if (data.detail) { return /^[A-Za-z0-9+/=]+$/.test(data.detail) ? decodeBase64Utf8(data.detail) : data.detail; } return "暂无描述"; }); common_vendor.onMounted(() => { const sysInfo = common_vendor.index.getSystemInfoSync(); statusBarHeight.value = sysInfo.statusBarHeight || 20; }); common_vendor.onLoad((options) => { if (options.id) { assessmentId.value = options.id; loadAssessmentDetail(options.id); checkCollectionStatus(options.id); checkExamRecord(options.id); } }); const loadAssessmentDetail = async (id) => { try { loading.value = true; const res = await api_assessment.getAssessmentDetail(id); if (res.code === 200 && res.data) { assessmentData.value = res.data; if (res.data.tags) { tags.value = res.data.tags.split(",").filter((tag) => tag.trim()); } if (res.data.imageAlbumUrls) { const urls = res.data.imageAlbumUrls.split(","); bannerImages.value = urls.length > 0 ? urls : ["/static/images/assess_cover.svg"]; } else if (res.data.mainImageUrl) { bannerImages.value = [res.data.mainImageUrl]; } else { bannerImages.value = ["/static/images/assess_cover.svg"]; } } else { common_vendor.index.showToast({ title: "获取测评详情失败", icon: "none" }); } } catch (err) { common_vendor.index.__f__("error", "at pages/assessment/detail.vue:193", "获取测评详情失败:", err); common_vendor.index.showToast({ title: "网络错误,请重试", icon: "none" }); } finally { loading.value = false; } }; const checkCollectionStatus = async (id) => { const userInfo = common_vendor.index.getStorageSync("userInfo"); if (!userInfo || !userInfo.studentId) return; try { const res = await api_collection.checkCollection(userInfo.studentId, id, "assessment"); if (res.code === 200 && res.data) { isFavorited.value = true; collectionId.value = res.data.id; } else { isFavorited.value = false; collectionId.value = null; } } catch (err) { common_vendor.index.__f__("error", "at pages/assessment/detail.vue:215", "检查收藏状态失败", err); } }; const formatDateRange = (startTime, endTime) => { if (!startTime || !endTime) return ""; const formatDate = (dateStr) => { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); const hours = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getMinutes()).padStart(2, "0"); return `${year}.${month}.${day} ${hours}:${minutes}`; }; return `${formatDate(startTime)}—${formatDate(endTime)}`; }; const goBack = () => common_vendor.index.navigateBack(); const goToRemind = () => { if (!assessmentId.value) { common_vendor.index.showToast({ title: "测评信息加载中", icon: "none" }); return; } common_vendor.index.navigateTo({ url: `/pages/assessment/remind?id=${assessmentId.value}` }); }; const viewReport = () => { if (!assessmentId.value || !isAllCompleted.value) return; common_vendor.index.navigateTo({ url: `/pages/assessment/report?id=${assessmentId.value}` }); }; const checkExamRecord = async (id) => { const userInfo = common_vendor.index.getStorageSync("userInfo") || {}; const studentId = userInfo.studentId; if (!studentId) return; hasPaid.value = common_vendor.index.getStorageSync(`audit_paid_${id}`) === true; try { const res = await api_assessment.getAssessmentRecordList(studentId); if (res.code === 200 && res.data) { const records = res.data.filter((r) => String(r.evaluationId) === String(id)); if (records.length > 0) { hasRecord.value = true; const completedRecords = records.filter((r) => r.finalResult === "1" || r.finalResult === "2"); isAllCompleted.value = completedRecords.length > 0; const passedRecords = records.filter((r) => r.finalResult === "1"); isPassed.value = passedRecords.length > 0; } } } catch (err) { common_vendor.index.__f__("error", "at pages/assessment/detail.vue:282", "检查测评记录失败", err); } }; const handleConsult = async () => { var _a, _b; try { common_vendor.index.showLoading({ title: "正在连接客服..." }); const userInfo = common_vendor.index.getStorageSync("userInfo") || {}; const userId = userInfo.studentId || null; const userName = userInfo.name || "用户"; const userAvatar = userInfo.avatarUrl || "/static/images/user_avatar.svg"; common_vendor.index.__f__("log", "at pages/assessment/detail.vue:293", "创建会话参数:", { sessionType: 1, fromUserId: userId, fromUserName: userName, fromUserAvatar: userAvatar, sourceId: "assessment_" + (((_a = assessmentData.value) == null ? void 0 : _a.id) || assessmentId.value) }); const res = await api_message.createOrGetSession({ sessionType: 1, fromUserId: userId, fromUserName: userName, fromUserAvatar: userAvatar, sourceId: "assessment_" + (((_b = assessmentData.value) == null ? void 0 : _b.id) || assessmentId.value) }); common_vendor.index.hideLoading(); if (res.data) { const session = res.data; const title = encodeURIComponent(assessmentData.value.evaluationName || "测评详情"); const cover = encodeURIComponent(bannerImages.value[0] || ""); const price = assessmentData.value.price || "0.00"; common_vendor.index.navigateTo({ url: `/pages/chat/chat?sessionId=${session.sessionId}&sessionNo=${session.sessionNo || ""}&fromUserId=${userId || ""}&userName=${encodeURIComponent(userName)}&type=assessment&title=${title}&cover=${cover}&assessmentId=${assessmentId.value || ""}&price=${price}` }); } else { common_vendor.index.showToast({ title: "创建会话失败", icon: "none" }); } } catch (err) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/assessment/detail.vue:321", "创建会话失败:", err); common_vendor.index.showToast({ title: "连接失败,请重试", icon: "none" }); } }; const handleApply = async () => { const postId = assessmentData.value.positionId; if (!postId) { common_vendor.index.showToast({ title: "该测评未关联岗位,无法投递", icon: "none" }); return; } const userInfo = common_vendor.index.getStorageSync("userInfo") || {}; if (!userInfo.studentId) { common_vendor.index.showToast({ title: "请先登录", icon: "none" }); return; } try { common_vendor.index.showLoading({ title: "投递中..." }); const res = await api_assessment.applyPosition({ postId }); common_vendor.index.hideLoading(); if (res.code === 200) { common_vendor.index.showToast({ title: "投递成功", icon: "success" }); } else { common_vendor.index.showToast({ title: res.msg || "投递失败", icon: "none" }); } } catch (err) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/assessment/detail.vue:349", "投递失败:", err); common_vendor.index.showToast({ title: "网络错误,投递失败", icon: "none" }); } }; const toggleFavorite = async () => { const userInfo = common_vendor.index.getStorageSync("userInfo"); if (!userInfo || !userInfo.studentId) { common_vendor.index.showToast({ title: "请先登录", icon: "none" }); setTimeout(() => { common_vendor.index.navigateTo({ url: "/pages/login/login" }); }, 1e3); return; } if (!assessmentId.value) return; common_vendor.index.showLoading({ title: isFavorited.value ? "取消收藏中..." : "收藏中..." }); try { if (isFavorited.value) { if (collectionId.value) { const res = await api_collection.delCollection(collectionId.value); if (res.code === 200) { isFavorited.value = false; collectionId.value = null; common_vendor.index.showToast({ title: "已取消收藏", icon: "none" }); } } } else { const res = await api_collection.addCollection({ studentId: userInfo.studentId, targetId: assessmentId.value, type: "assessment" }); if (res.code === 200) { isFavorited.value = true; checkCollectionStatus(assessmentId.value); common_vendor.index.showToast({ title: "收藏成功", icon: "success" }); } } } catch (err) { common_vendor.index.__f__("error", "at pages/assessment/detail.vue:393", "操作收藏失败", err); common_vendor.index.showToast({ title: "操作失败", icon: "none" }); } finally { common_vendor.index.hideLoading(); } }; return (_ctx, _cache) => { return common_vendor.e({ a: common_assets._imports_0$7, b: common_vendor.o(goBack), c: statusBarHeight.value + "px", d: common_vendor.f(bannerImages.value, (img, index, i0) => { return { a: img, b: index }; }), e: !loading.value }, !loading.value ? common_vendor.e({ f: common_vendor.t(assessmentData.value.evaluationName || "测评详情"), g: assessmentData.value.startTime && assessmentData.value.endTime }, assessmentData.value.startTime && assessmentData.value.endTime ? { h: common_vendor.t(formatDateRange(assessmentData.value.startTime, assessmentData.value.endTime)) } : {}, { i: assessmentData.value.questionTypes }, assessmentData.value.questionTypes ? { j: common_vendor.t(assessmentData.value.questionTypes) } : {}, { k: assessmentData.value.questionCount }, assessmentData.value.questionCount ? { l: common_vendor.t(assessmentData.value.questionCount) } : {}, { m: assessmentData.value.duration }, assessmentData.value.duration ? { n: common_vendor.t(assessmentData.value.duration) } : {}) : {}, { o: loading.value }, loading.value ? {} : {}, { p: !loading.value }, !loading.value ? common_vendor.e({ q: tags.value.length > 0 }, tags.value.length > 0 ? { r: common_vendor.f(tags.value, (tag, k0, i0) => { return { a: common_vendor.t(tag), b: tag }; }) } : {}, { s: displayDescription.value }, displayDescription.value ? { t: common_vendor.t(displayDescription.value) } : {}) : {}, { v: assessmentData.value.detail && assessmentData.value.detail.includes("<") }, assessmentData.value.detail && assessmentData.value.detail.includes("<") ? { w: assessmentData.value.detail } : {}, { x: isFavorited.value ? "/static/icons/star_filled.svg" : "/static/icons/star_hollow.svg", y: common_vendor.t(isFavorited.value ? "已收藏" : "收藏"), z: common_vendor.n(isFavorited.value ? "active" : ""), A: common_vendor.o(toggleFavorite), B: !hasPaid.value && !hasRecord.value }, !hasPaid.value && !hasRecord.value ? { C: common_vendor.o(handleConsult) } : {}, { D: hasPaid.value && !hasRecord.value }, hasPaid.value && !hasRecord.value ? { E: common_vendor.o(goToRemind) } : {}, { F: hasRecord.value }, hasRecord.value ? { G: !isAllCompleted.value ? 1 : "", H: common_vendor.o(viewReport) } : {}, { I: hasRecord.value && !isPassed.value }, hasRecord.value && !isPassed.value ? { J: common_vendor.o(goToRemind) } : {}, { K: isPassed.value }, isPassed.value ? { L: common_vendor.o(handleApply) } : {}); }; } }; const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-db914789"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/assessment/detail.js.map