Skip to content

Commit d5d783a

Browse files
committed
【代码优化】AI:image 作品中心的代码
1 parent 1fe40b6 commit d5d783a

File tree

4 files changed

+76
-48
lines changed

4 files changed

+76
-48
lines changed

src/api/ai/image/index.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,9 @@ export interface ImageMidjourneyButtonsVO {
5353
// AI 图片 API
5454
export const ImageApi = {
5555
// 获取【我的】绘图分页
56-
getImagePageMy: async (params: PageParam) => {
56+
getImagePageMy: async (params: any) => {
5757
return await request.get({ url: `/ai/image/my-page`, params })
5858
},
59-
// 获取公开的绘图记录
60-
getImagePagePublic: async (params) => {
61-
return await request.get({ url: `/ai/image/public-page`, params })
62-
},
6359
// 获取【我的】绘图记录
6460
getImageMy: async (id: number) => {
6561
return await request.get({ url: `/ai/image/get-my?id=${id}` })
@@ -97,7 +93,7 @@ export const ImageApi = {
9793

9894
// 更新绘画发布状态
9995
updateImage: async (data: any) => {
100-
return await request.put({ url: '/ai/image/update-public-status', data })
96+
return await request.put({ url: '/ai/image/update', data })
10197
},
10298

10399
// 删除绘画

src/router/modules/remaining.ts

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,26 +70,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
7070
}
7171
]
7272
},
73-
// {
74-
// path: '/ai/music',
75-
// component: Layout,
76-
// redirect: '/index',
77-
// name: 'AIMusic',
78-
// meta: {},
79-
// children: [
80-
// {
81-
// path: 'index',
82-
// component: () => import('@/views/ai/music/components/index.vue'),
83-
// name: 'AIMusicIndex',
84-
// meta: {
85-
// title: 'AI 音乐',
86-
// icon: 'ep:home-filled',
87-
// noCache: false,
88-
// affix: true
89-
// }
90-
// }
91-
// ]
92-
// },
9373
{
9474
path: '/user',
9575
component: Layout,
@@ -593,6 +573,27 @@ const remainingRouter: AppRouteRecordRaw[] = [
593573
component: () => import('@/views/crm/product/detail/index.vue')
594574
}
595575
]
576+
},
577+
{
578+
path: '/ai',
579+
component: Layout,
580+
name: 'Ai',
581+
meta: {
582+
hidden: true
583+
},
584+
children: [
585+
{
586+
path: 'image/square',
587+
component: () => import('@/views/ai/image/square/index.vue'),
588+
name: 'AiImageSquare',
589+
meta: {
590+
title: '绘图作品',
591+
icon: 'ep:home-filled',
592+
noCache: false,
593+
affix: true
594+
}
595+
}
596+
]
596597
}
597598
]
598599

src/views/ai/image/index/components/ImageList.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<template>
22
<el-card class="dr-task" body-class="task-card" shadow="never">
3-
<template #header>绘画任务</template>
3+
<template #header>
4+
绘画任务
5+
<!-- TODO @fan:看看,怎么优化下这个样子哈。 -->
6+
<el-button @click="handleViewPublic">绘画作品</el-button>
7+
</template>
48
<!-- 图片列表 -->
59
<div class="task-image-list" ref="imageListRef">
610
<ImageCard
@@ -42,6 +46,7 @@ import { AiImageStatusEnum } from '@/views/ai/utils/constants'
4246
import download from '@/utils/download'
4347
4448
const message = useMessage() // 消息弹窗
49+
const router = useRouter() // 路由
4550
4651
// 图片分页相关的参数
4752
const queryParams = reactive({
@@ -59,6 +64,13 @@ const inProgressTimer = ref<any>() // 生成中的 image 定时器,轮询生
5964
const isShowImageDetail = ref<boolean>(false) // 图片详情是否展示
6065
const showImageDetailId = ref<number>(0) // 图片详情的图片编号
6166
67+
/** 处理查看绘图作品 */
68+
const handleViewPublic = () => {
69+
router.push({
70+
name: 'AiImageSquare'
71+
})
72+
}
73+
6274
/** 查看图片的详情 */
6375
const handleDetailOpen = async () => {
6476
isShowImageDetail.value = true

src/views/ai/image/square/index.vue

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,67 @@
11
<template>
22
<div class="square-container">
3+
<!-- TODO @fan:style 建议换成 unocss -->
4+
<!-- TODO @fan:Search 可以换成 Icon 组件么? -->
35
<el-input
4-
v-model="searchText"
6+
v-model="queryParams.prompt"
57
style="width: 100%; margin-bottom: 20px"
68
size="large"
79
placeholder="请输入要搜索的内容"
810
:suffix-icon="Search"
9-
@keyup.enter="handleSearch"
11+
@keyup.enter="handleQuery"
1012
/>
1113
<div class="gallery">
12-
<div v-for="item in publicList" :key="item.id" class="gallery-item">
14+
<!-- TODO @fan:这个图片的风格,要不和 ImageCard.vue 界面一致?(只有卡片,没有操作);因为看着更有相框的感觉~~~ -->
15+
<div v-for="item in list" :key="item.id" class="gallery-item">
1316
<img :src="item.picUrl" class="img" />
1417
</div>
1518
</div>
19+
<!-- TODO @fan:缺少翻页 -->
20+
<!-- 分页 -->
21+
<Pagination
22+
:total="total"
23+
v-model:page="queryParams.pageNo"
24+
v-model:limit="queryParams.pageSize"
25+
@pagination="getList"
26+
/>
1627
</div>
1728
</template>
1829
<script setup lang="ts">
1930
import { ImageApi, ImageVO } from '@/api/ai/image'
2031
import { Search } from '@element-plus/icons-vue'
2132
22-
/** 属性 */
23-
// TODO @fan:queryParams 里面搞分页哈。
24-
const pageNo = ref<number>(1)
25-
const pageSize = ref<number>(20)
26-
const publicList = ref<ImageVO[]>([])
27-
const searchText = ref<string>('')
33+
// TODO @fan:加个 loading 加载中的状态
34+
const loading = ref(true) // 列表的加载中
35+
const list = ref<ImageVO[]>([]) // 列表的数据
36+
const total = ref(0) // 列表的总页数
37+
const queryParams = reactive({
38+
pageNo: 1,
39+
pageSize: 10,
40+
publicStatus: true,
41+
prompt: undefined
42+
})
2843
29-
/** 获取数据 */
30-
const getListData = async () => {
31-
const res = await ImageApi.getImagePagePublic({
32-
pageNo: pageNo.value,
33-
pageSize: pageSize.value,
34-
prompt: searchText.value
35-
})
36-
publicList.value = res.list as ImageVO[]
44+
/** 查询列表 */
45+
const getList = async () => {
46+
loading.value = true
47+
try {
48+
const data = await ImageApi.getImagePageMy(queryParams)
49+
list.value = data.list
50+
total.value = data.total
51+
} finally {
52+
loading.value = false
53+
}
3754
}
3855
39-
/** 搜索 */
40-
const handleSearch = async () => {
41-
await getListData()
56+
/** 搜索按钮操作 */
57+
const handleQuery = () => {
58+
queryParams.pageNo = 1
59+
getList()
4260
}
4361
62+
/** 初始化 */
4463
onMounted(async () => {
45-
await getListData()
64+
await getList()
4665
})
4766
</script>
4867
<style scoped lang="scss">

0 commit comments

Comments
 (0)