// my-component.js // 引入全局 Vue 对象(因在 HTML 中通过 script 引入,Vue 已挂载到 window) const { defineComponent, ref } = Vue; const { itemBottom } = await import(withVer("../item-bottom/item-bottom.js")); const { itemHead } = await import(withVer("../item-head/item-head.js")); // 定义组件(直接使用模板) export const itemVote = defineComponent({ name: "item-vote", props: { itemdata: { type: Object, default: () => {}, }, page: { type: String, default: "", }, }, setup(props) { // 处理 截止时间 const handleDeadline = (dateTimeStamp = "") => { if (typeof dateTimeStamp == "number") dateTimeStamp = dateTimeStamp ? dateTimeStamp * 1000 : null; if (typeof dateTimeStamp == "string" && dateTimeStamp.match(/^\d{4}-\d{2}-\d{2}$/)) dateTimeStamp += " 23:59:59"; const timestamp = new Date(dateTimeStamp.replace(/-/g, "/")).getTime(); const now = Date.now(); const diffValue = timestamp - now; if (diffValue < 0) return null; const units = [ { value: 24 * 60 * 60 * 1000, unit: "天", }, { value: 60 * 60 * 1000, unit: "小时", }, { value: 60 * 1000, unit: "分钟", }, { value: 1000, unit: "秒", }, ]; for (const { value, unit } of units) { if (diffValue >= value) { return { num: Math.round(diffValue / value), unit, }; } } return { num: 0, unit: "秒", }; }; let item = ref({ ...props.itemdata }); item.value["time"] = handleDeadline(item.value.data.deadline); item.value["url"] = "/details/" + item.value.uniqid; const option = item.value.data.option || []; item.value["isvote"] = option.some((item) => item.selected == 1); return { item }; }, components: { itemBottom, itemHead, }, template: `
`, });