modal.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { defineComponent } from "vue";
  2. import Material from "./components/Material";
  3. import createController from "./controller";
  4. import { useResource } from "@/modules/resource";
  5. import { queenApi, useModal } from "queenjs";
  6. import { string } from "vue-types";
  7. const SelectMaterialDialog = defineComponent({
  8. props: {
  9. type: string<"image"|"video">()
  10. },
  11. setup(props) {
  12. const resource = useResource();
  13. const ctrl = createController(resource, true, props.type as string);
  14. const model = useModal();
  15. return () => (
  16. <Material
  17. Controller={ctrl}
  18. slots={{
  19. MaterialItem: ({record})=>{
  20. return <div onClick={()=>{
  21. model.submit(record);
  22. }}>item</div>
  23. }
  24. }}
  25. ></Material>
  26. );
  27. },
  28. });
  29. export async function SelectOneImage() {
  30. return await queenApi.dialog(<SelectMaterialDialog type="image"/>, {title:"选择单张图片", width: "900px"})
  31. }
  32. export async function SelectOneVideo() {
  33. return await queenApi.dialog(<SelectMaterialDialog type="image" />, {title:"选择单个视频", width: "900px"})
  34. }