AssetsList.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { css } from "@linaria/core";
  2. import { List } from "@queenjs/ui";
  3. import { Empty, Pagination } from "ant-design-vue";
  4. import { defineUI } from "queenjs";
  5. import { any, number, string } from "vue-types";
  6. export default defineUI({
  7. props: {
  8. columns: number().def(5),
  9. gap: string().def("15px"),
  10. item: any().isRequired,
  11. control: any().isRequired,
  12. },
  13. setup(props) {
  14. return () => {
  15. const { control, columns, gap } = props;
  16. return (
  17. <div class={styles}>
  18. <List data={control.state.list} columns={columns} gap={gap}>
  19. {{
  20. item: (record: any) => props.item?.(record),
  21. empty: () => <Empty class="py-50px" description="暂无数据" />,
  22. }}
  23. </List>
  24. <div class="text-center my-30px">
  25. <Pagination
  26. size="default"
  27. hideOnSinglePage
  28. pageSize={control.state.size}
  29. total={control.state.total}
  30. onChange={(p) => control.loadPage(p)}
  31. />
  32. </div>
  33. </div>
  34. );
  35. };
  36. },
  37. });
  38. const styles = css`
  39. /* */
  40. `;