import Thumbnail from "@/components/Thumbnail"; import { css, cx } from "@linaria/core"; import { useAuth } from "@queenjs-modules/auth"; import { IconMore } from "@queenjs/icons"; import { Dropdown, Menu, Tag } from "ant-design-vue"; import dayjs from "dayjs"; import { defineUI } from "queenjs"; import { defineComponent, reactive } from "vue"; import { any, bool, object } from "vue-types"; const VideoItem = defineComponent({ props: { record: object(), }, emits: ["click"], setup(props, { emit }) { const state = reactive({ play: false, }); return () => { const { record } = props; const { play } = state; return (
(state.play = true)} onMouseleave={() => (state.play = false)} onClick={() => emit("click", record.file.url)} > {!play ? ( ) : (
); }; }, }); const ImageItem = defineComponent({ props: { record: object(), }, emits: ["click"], setup(props, { emit }) { return () => { const { record } = props; return ( emit("click", record.file.url)} objectContain={true} src={record.file.url} /> ); }; }, }); export default defineUI({ props: { record: any(), tagable: bool().def(false), isVideo: bool().def(false), }, emits: ["edit", "preview", "menu", "click"], setup(props, { emit }) { const auth = useAuth(); const state = reactive({ play: false, }); return () => { const { record } = props; //@ts-ignore const isSys = (auth.store.userInfo.roles || []).indexOf("system") > -1; return (
{props.isVideo ? ( emit("click", data)} record={props.record} /> ) : ( emit("click", data)} record={props.record} /> )} {isSys && props.tagable && ( {record.published ? "已发布" : "未发布"} )} {props.tagable && ( )}
); }; }, }); const itemStyles = css` .item_footer { background: #414141; } .icon_action { background-color: rgba(0, 0, 0, 0.8); &.orange { background-color: rgba(232, 139, 0, 0.8); } } `;