123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import { css, cx } from "@linaria/core";
- import { IconMore } from "@queenjs/icons";
- import { Image, View } from "@queenjs/ui";
- import { Divider, Dropdown, Menu } from "ant-design-vue";
- import dayjs from "dayjs";
- import { defineUI } from "queenjs";
- import { any } from "vue-types";
- // const ShareBox = defineComponent({
- // props: {
- // id: string(),
- // },
- // setup(props) {
- // let shareLink = location.origin + "/share.html?id=" + props.id;
- // if (location.host == "www.infish.cn") {
- // shareLink =
- // location.origin + "/projects/queenshowv1/share.html?id=" + props.id;
- // }
- // const qrUrl = useQRCode(shareLink);
- // const { copy, copied } = useClipboard();
- // return () => (
- // <div class="p-20px bg-dark-500 text-center">
- // <img src={qrUrl.value} />
- // <div class="mb-20px"></div>
- // <Button onClick={() => copy(shareLink)} disabled={copied.value}>
- // {copied.value ? "已复制" : "复制链接"}
- // </Button>
- // </div>
- // );
- // },
- // });
- export default defineUI({
- props: {
- record: any(),
- },
- emits: ["edit", "preview", "menu"],
- setup(props, { emit }) {
- return () => {
- const { record } = props;
- return (
- <div class={cx(itemStyles, "relative")}>
- <View ratio={1} class="overflow-hidden relative">
- <Image
- class="h-1/1 w-1/1 !object-contain bg-[#ebebeb]"
- src={record?.thumbnail}
- />
- {/* <Tag
- color="#E88B00"
- // color="rgba(0, 0, 0, 0.4)"
- class="absolute top-0 left-0 z-1 !rounded-none"
- >
- 未发布
- </Tag> */}
- <div class="absolute inset-0 flex items-center justify-center opacity-0 hover:opacity-100 transition-opacity">
- <div
- class="text-white icon_action w-60px leading-60px orange cursor-pointer rounded-1/2 text-center transition-opacity hover:opacity-90 active:opacity-80"
- onClick={() => emit("edit", props.record)}
- >
- 编辑
- </div>
- <div
- class="text-white icon_action w-60px leading-60px ml-10px cursor-pointer rounded-1/2 text-center transition-opacity hover:opacity-90 active:opacity-80"
- onClick={() => emit("menu", "share")}
- >
- {/* 预览 */}
- 分享
- </div>
- </div>
- </View>
- <div class="item_footer rounded-b-4px flex items-center justify-between p-15px">
- <div class="flex-1 w-0">
- <div class="text-white text-bold truncate">{record.title}</div>
- <div class="flex items-center text-opacity-60 text-white text-12px mt-5px">
- {dayjs(record.updateTime).format("YYYY.MM.DD")}
- {/* 发布 */}
- <Divider type="vertical"></Divider>
- {record.views || 0 } 次浏览
- </div>
- </div>
- <Dropdown
- placement="bottom"
- overlay={
- <Menu class="w-90px">
- {/* <Menu.Item>复制</Menu.Item> */}
- {/* <Menu.Item>分享</Menu.Item> */}
- <Menu.Item>
- <div onClick={() => emit("menu", "rename")}>重命名</div>
- </Menu.Item>
- <Menu.Item>
- <div onClick={() => emit("menu", "delete")}>删除</div>
- </Menu.Item>
- </Menu>
- }
- >
- <IconMore class="ml-10px text-22px cursor-pointer" />
- </Dropdown>
- </div>
- </div>
- );
- };
- },
- });
- 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);
- }
- }
- `;
|