index.tsx 1.2 KB

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