// my-component.js // 引入全局 Vue 对象(因在 HTML 中通过 script 引入,Vue 已挂载到 window) const { defineComponent, ref, provide, onMounted } = Vue; import { report } from "../report/report.js"; // 定义组件(直接使用模板) export const itemHead = defineComponent({ name: "item-head", props: { itemdata: { type: Object, default: () => {}, }, }, setup(props) { let sectionn = ref([]); let tags = ref([]); let item = ref({ ...props.itemdata }); if (!item.value.hidden) item.value.hidden = 0; // item.value['best'] = 0 // item.value['recommend'] = 1 let timestamp = ref(strtimeago(item.value.release_at, 4)); if (item.value.type == "tenement") timestamp = timeago(item.value.updatetime, 2); sectionn.value = item.value.sectionn || []; const sectionSet = new Set(sectionn.value); tags.value = item.value.tags?.filter((tag) => !sectionSet.has(tag)); let show = ref(false); const cutShow = () => { show.value = !show.value; // 修改为切换显示状态 }; let reportState = ref(false); provide("reportState", reportState); let ismanager = ref(false); // 添加管理员状态变量 let permissions = ref([]); onMounted(() => { setTimeout(() => { permissions.value = window["permissions"] || []; // ismanager.value = permissions.value.indexOf("topic:manager") >= 0; ismanager.value = true; }, 1000); }); // 举报 const report = () => { cutShow(); reportState.value = true; }; // 隐藏 const hide = () => { const target = item.value; managerHide(target.token, target.hidden, target.type).then((value) => { target.hidden = value; item.value = target; cutShow(); }); }; // 推荐 const recommend = () => { const target = item.value; managerRecommend(target.token, target.recommend).then((value) => { target.recommend = value; item.value = target; cutShow(); }); }; // 精华 const essence = () => { const target = item.value; managerEssence(target.token, target.best).then((value) => { target.best = value; item.value = target; cutShow(); }); }; return { reportState, cutShow, show, item, timestamp, sectionn, tags, ismanager, report, hide, recommend, essence }; }, components: { report, }, template: `
{{ item?.user?.nickname || item.nickname || "匿名用户" }}
{{ timestamp }}
{{ item.views }}
举报
{{ item }} {{ item }}
`, });