index.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import List from "@/components/AssetsList";
  2. import { CollectionController } from "@/modules/resource/controllers/CollectionController";
  3. import { defineUI } from "queenjs";
  4. import { onMounted } from "vue";
  5. import { any } from "vue-types";
  6. import CollectionItem from "./CollectionItem";
  7. import Header from "./Header";
  8. export default defineUI({
  9. props: {
  10. Controller: any<CollectionController>().isRequired,
  11. },
  12. slots: {
  13. Header,
  14. List,
  15. },
  16. setup(props, { slots }) {
  17. onMounted(() => {
  18. props.Controller.ListCtrl.loadPage(1);
  19. });
  20. return () => {
  21. return (
  22. <div>
  23. <slots.Header
  24. onAdd={() => {
  25. props.Controller.createCollection();
  26. }}
  27. />
  28. <slots.List
  29. gap="25px"
  30. class="my-30px"
  31. columns={5}
  32. control={props.Controller.ListCtrl}
  33. item={(record: any) => (
  34. <CollectionItem
  35. record={record}
  36. onMenu={(name) => {
  37. props.Controller.onMenuClick(name, record);
  38. }}
  39. onEdit={(record) => {
  40. props.Controller.onEdit(record);
  41. }}
  42. onPreview={(record) => props.Controller.onPreview(record)}
  43. />
  44. )}
  45. />
  46. </div>
  47. );
  48. };
  49. },
  50. });