1
1
<template >
2
- <div class =" gallery" >
3
- <div v-for =" item in publicList" :key =" item" class =" gallery-item" >
4
- <img :src =" item.picUrl" class =" img" />
2
+ <div class =" square-container" >
3
+ <el-input
4
+ v-model =" searchText"
5
+ style =" width : 100% ;margin-bottom : 20px ;"
6
+ size =" large"
7
+ placeholder =" 请输入要搜索的内容"
8
+ :suffix-icon =" Search"
9
+ @keyup.enter =" handleSearch"
10
+ />
11
+ <div class =" gallery" >
12
+ <div v-for =" item in publicList" :key =" item" class =" gallery-item" >
13
+ <img :src =" item.picUrl" class =" img" />
14
+ </div >
5
15
</div >
6
16
</div >
7
17
</template >
8
18
<script setup lang="ts">
9
19
import { ImageApi , ImageVO , ImageMidjourneyButtonsVO } from ' @/api/ai/image'
20
+ import {Search } from " @element-plus/icons-vue" ;
10
21
11
22
/** 属性 */
12
23
const pageNo = ref <number >(1 )
13
24
const pageSize = ref <number >(20 )
14
25
const publicList = ref <ImageVO []>([])
26
+ const searchText = ref <string >(' ' )
15
27
16
28
/** 获取数据 */
17
29
const getListData = async () => {
18
- const res = await ImageApi .getImagePagePublic ({pageNo: pageNo .value , pageSize: pageSize .value });
30
+ const res = await ImageApi .getImagePagePublic ({pageNo: pageNo .value , pageSize: pageSize .value , prompt: searchText . value });
19
31
publicList .value = res .list as ImageVO [];
20
- console .log (' publicList.value' , publicList .value )
32
+ }
33
+
34
+ /** 搜索 */
35
+ const handleSearch = async () => {
36
+ await getListData ();
21
37
}
22
38
23
39
onMounted (async () => {
@@ -26,37 +42,43 @@ onMounted(async () => {
26
42
</script >
27
43
<style scoped lang="scss">
28
44
29
- .gallery {
30
- display : grid ;
31
- grid-template-columns : repeat (auto-fill , minmax (200px , 1fr ));
32
- gap : 10px ;
33
- // max-width: 1000px;
34
- padding : 20px ;
45
+ .square-container {
35
46
background-color : #fff ;
36
- box-shadow : 0 0 10px rgba (0 ,0 ,0 ,0.1 );
37
- }
47
+ padding : 20px ;
38
48
39
- .gallery-item {
40
- position : relative ;
41
- overflow : hidden ;
42
- background : #f0f0f0 ;
43
- cursor : pointer ;
44
- transition : transform 0.3s ;
45
- }
46
49
47
- .gallery-item img {
48
- width : 100% ;
49
- height : auto ;
50
- display : block ;
51
- transition : transform 0.3s ;
52
- }
50
+ .gallery {
51
+ display : grid ;
52
+ grid-template-columns : repeat (auto-fill , minmax (200px , 1fr ));
53
+ gap : 10px ;
54
+ // max-width: 1000px;
55
+ background-color : #fff ;
56
+ box-shadow : 0 0 10px rgba (0 ,0 ,0 ,0.1 );
57
+ }
53
58
54
- .gallery-item :hover img {
55
- transform : scale (1.1 );
56
- }
59
+ .gallery-item {
60
+ position : relative ;
61
+ overflow : hidden ;
62
+ background : #f0f0f0 ;
63
+ cursor : pointer ;
64
+ transition : transform 0.3s ;
65
+ }
66
+
67
+ .gallery-item img {
68
+ width : 100% ;
69
+ height : auto ;
70
+ display : block ;
71
+ transition : transform 0.3s ;
72
+ }
73
+
74
+ .gallery-item :hover img {
75
+ transform : scale (1.1 );
76
+ }
77
+
78
+ .gallery-item :hover {
79
+ transform : scale (1.05 );
80
+ }
57
81
58
- .gallery-item :hover {
59
- transform : scale (1.05 );
60
82
}
61
83
62
84
</style >
0 commit comments