PromotionItem.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { css, cx } from "@linaria/core";
  2. import { IconMore } from "@queenjs/icons";
  3. import { Image, View } from "@queenjs/ui";
  4. import { Divider, Dropdown, Menu, Tag } from "ant-design-vue";
  5. import { defineComponent } from "vue";
  6. import { any } from "vue-types";
  7. export default defineComponent({
  8. props: {
  9. record: any(),
  10. },
  11. emits: [],
  12. setup(props) {
  13. return () => {
  14. const { record } = props;
  15. return (
  16. <div class={cx(itemStyles, "relative")}>
  17. <View ratio={1.4} class="overflow-hidden relative">
  18. <Image class="h-1/1 w-1/1" src={record?.thumbnail?.url} />
  19. <Tag
  20. color="#E88B00"
  21. // color="rgba(0, 0, 0, 0.4)"
  22. class="absolute top-0 left-0 z-1 !rounded-none"
  23. >
  24. 未发布
  25. </Tag>
  26. <div class="absolute inset-0 flex items-center justify-center opacity-0 hover:opacity-100 transition-opacity">
  27. <div class="text-white icon_action w-60px leading-60px orange cursor-pointer rounded-1/2 text-center">
  28. 编辑
  29. </div>
  30. <div class="text-white icon_action w-60px leading-60px ml-10px cursor-pointer rounded-1/2 text-center">
  31. 预览
  32. </div>
  33. </div>
  34. </View>
  35. <div class="item_footer rounded-b-4px flex items-center justify-between p-15px">
  36. <div>
  37. <div class="text-white text-bold">皮革2</div>
  38. <div class="flex items-center text-opacity-60 text-white text-12px mt-5px">
  39. 2021.09.09发布 <Divider type="vertical"></Divider> 23次浏览
  40. </div>
  41. </div>
  42. <Dropdown
  43. placement="bottom"
  44. overlay={
  45. <Menu class="w-90px">
  46. <Menu.Item>复制</Menu.Item>
  47. <Menu.Item>分享</Menu.Item>
  48. <Menu.Item>重命名</Menu.Item>
  49. <Menu.Item>删除</Menu.Item>
  50. </Menu>
  51. }
  52. >
  53. <IconMore class="text-26px cursor-pointer" />
  54. </Dropdown>
  55. </div>
  56. </div>
  57. );
  58. };
  59. },
  60. });
  61. const itemStyles = css`
  62. .item_footer {
  63. background: #414141;
  64. }
  65. .icon_action {
  66. background-color: rgba(0, 0, 0, 0.5);
  67. &.orange {
  68. background-color: rgba(232, 139, 0, 0.5);
  69. }
  70. }
  71. `;