index.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!-- image -->
  2. <template>
  3. <div class="ai-image">
  4. <div class="left">
  5. <div class="segmented">
  6. <el-segmented v-model="selectModel" :options="modelOptions" />
  7. </div>
  8. <div class="modal-switch-container">
  9. <Dall3 v-if="selectModel === 'DALL3绘画'" @on-draw-start="handlerDrawStart" @on-draw-complete="handlerDrawComplete" />
  10. <Midjourney v-if="selectModel === 'MJ绘画'" />
  11. </div>
  12. </div>
  13. <div class="main">
  14. <ImageTask ref="imageTaskRef" />
  15. </div>
  16. </div>
  17. </template>
  18. <script setup lang="ts">
  19. import Dall3 from './dall3/index.vue'
  20. import Midjourney from './midjourney/index.vue'
  21. import ImageTask from './ImageTask.vue'
  22. // ref
  23. const imageTaskRef = ref<any>() // image task ref
  24. // 定义属性
  25. const selectModel = ref('DALL3绘画')
  26. const modelOptions = ['DALL3绘画', 'MJ绘画']
  27. const drawIn = ref<boolean>(false) // 生成中
  28. /**
  29. * 绘画 - start
  30. */
  31. const handlerDrawStart = async (type) => {
  32. // todo
  33. drawIn.value = true
  34. }
  35. /**
  36. * 绘画 - complete
  37. */
  38. const handlerDrawComplete = async (type) => {
  39. drawIn.value = false
  40. // todo
  41. await imageTaskRef.value.getImageList()
  42. }
  43. //
  44. onMounted( async () => {
  45. })
  46. </script>
  47. <style scoped lang="scss">
  48. .ai-image {
  49. position: absolute;
  50. left: 0;
  51. right: 0;
  52. bottom: 0;
  53. top: 0;
  54. display: flex;
  55. flex-direction: row;
  56. height: 100%;
  57. width: 100%;
  58. .left {
  59. display: flex;
  60. flex-direction: column;
  61. padding: 20px;
  62. width: 350px;
  63. .segmented {
  64. }
  65. .segmented .el-segmented {
  66. --el-border-radius-base: 16px;
  67. --el-segmented-item-selected-color: #fff;
  68. background-color: #ececec;
  69. width: 350px;
  70. }
  71. .modal-switch-container {
  72. height: 100%;
  73. overflow-y: auto;
  74. margin-top: 30px;
  75. }
  76. }
  77. .main {
  78. flex: 1;
  79. background-color: #fff;
  80. }
  81. .right {
  82. width: 350px;
  83. background-color: #f7f8fa;
  84. }
  85. }
  86. </style>