fix:新增文生图列表

This commit is contained in:
ouyangxiu
2025-06-18 16:43:48 +07:00
parent e7aa52abfb
commit dceacbc3b1
7 changed files with 437 additions and 54 deletions
@@ -0,0 +1,88 @@
<template>
<el-dialog :title="title" :visible.sync="Visible" width="800px" center class="ac-dialog" :close-on-click-modal="false" @close="close">
<el-form :inline="true" :model="form" ref="ruleForm" class="demo-form-inline" label-width="120px" label-position="right">
<el-row :gutter="24">
<el-col :xs="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入名称" />
</el-form-item>
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<el-form-item label="任务状态">
<el-select placeholder="请选择任务状态" clearable v-model="form.status">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in aiImgToVideoStatusList" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="Visible = false"> </el-button>
<el-button type="primary" @click="submit('ruleForm')"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { aiTextToImageUpdate } from '@/api/aiManagement/aiTxtToImg.js'
export default {
name: 'AddOrEdit',
props: ['data', 'aiImgToVideoStatusList'],
components: {
},
data() {
return {
Visible: true,
title: '',
// 表单数据
form: {
remark: undefined, // 备注
status: undefined // 状态
}
}
},
mounted() {
this.title = this.data.title
if (this.title === '编辑') {
this.form = { ...this.data.data }
}
},
methods: {
// TODO:编辑金币管理数据
update(data) {
aiTextToImageUpdate(data).then(res => {
if (res.code === 200) {
this.$message.success('更新成功')
this.Visible = false
} else {
this.$message.error('更新失败')
}
})
},
// 提交按钮
submit(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
const data = JSON.parse(JSON.stringify(this.form))
if (this.title === '编辑') {
this.update(data)
}
} else {
return false
}
})
},
// 上传图片返回地址
changeCoverImgUrl(data) {
this.form.image = data
},
// 关闭编辑
close() {
this.$emit('close')
}
}
}
</script>
+254
View File
@@ -0,0 +1,254 @@
<template>
<div class="pf-warpper avlist">
<el-row class="table-form">
<el-form :inline="true" :model="searchData" class="form-inline" size="mini">
<el-form-item>
<el-input clearable placeholder="ID" v-model="searchData.id" @clear="onClear('id')" />
</el-form-item>
<el-form-item>
<el-input clearable placeholder="用户ID" v-model.number="searchData.userId" @clear="onClear('userId')" />
</el-form-item>
<el-form-item>
<el-select placeholder="请选择任务进度" clearable v-model="searchData.status" @clear="onClear('status')">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in aiImgToVideoStatusList" />
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="refreshView" icon="el-icon-refresh" plain type="info">刷新</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-col>
<el-table :data="resData" element-loading-text="拼命加载中" border height="750" highlight-current-row style="width: 100%" v-loading="loading">
<el-table-column align="center" label="Id">
<template slot-scope="scope">{{ scope.row.id }}</template>
</el-table-column>
<el-table-column align="center" label="用户ID">
<template slot-scope="scope">{{ scope.row.userId }}</template>
</el-table-column>
<el-table-column align="center" label="文生图金币个数">
<template slot-scope="scope">{{ scope.row.coin/100 }}</template>
</el-table-column>
<el-table-column align="center" label="任务进度">
<template slot-scope="scope">{{ scope.row.status | aiImgToVideoType }}</template>
</el-table-column>
<el-table-column width="100" align="center" label="是否删除">
<template slot-scope="scope">
<el-button :type="scope.row.isDelete ? 'danger' : 'success'" plain size="mini">{{ scope.row.isDelete ? '已删除' : '未删除' }}</el-button>
</template>
</el-table-column>
<el-table-column width="100" align="center" label="是否使用免费次数">
<template slot-scope="scope">
<el-button :type="scope.row.isFreeTimes ? 'danger' : 'success'" plain size="mini">{{ scope.row.isFreeTimes ? '是' : '否' }}</el-button>
</template>
</el-table-column>
<el-table-column width="100" align="center" label="是否被用户隐藏">
<template slot-scope="scope">
<el-button :type="scope.row.isHide ? 'danger' : 'success'" plain size="mini">{{ scope.row.isHide ? '是' : '否' }}</el-button>
</template>
</el-table-column>
<el-table-column align="center" width="100" label="未处理的图片地址">
<template slot-scope="scope">
<ShowImg style="width: 70px; height: 70px; margin: 0 auto" :urls="scope.row.imgUrl"> </ShowImg>
</template>
</el-table-column>
<el-table-column align="center" width="100" label="处理后的图片地址">
<template slot-scope="scope">
<ShowImg style="width: 70px; height: 70px; margin: 0 auto" :urls="scope.row.newImgUrl"> </ShowImg>
</template>
</el-table-column>
<el-table-column align="center" label="图片描述">
<template slot-scope="scope">{{ scope.row.text }}</template>
</el-table-column>
<el-table-column align="center" label="创建时间" width="180">
<template slot-scope="scope">{{ scope.row.createdAt | BeiJingTime }} </template>
</el-table-column>
<el-table-column align="center" label="更新时间" width="180">
<template slot-scope="scope">{{ scope.row.updatedAt | BeiJingTime }} </template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="200">
<template slot-scope="scope">
<el-button @click="handleEdit(scope.$index, scope.row)" size="mini" type="primary">编辑</el-button>
<el-button @click="changeStatus(scope.$index, scope.row)" size="mini" type="danger">退款</el-button>
<el-button @click="handleDelete(scope.$index, scope.row)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<div class="table-pagination">
<el-pagination
:current-page="searchData.pageNum"
:page-size="searchData.pageSize"
:page-sizes="[10, 20, 30, 50, 100]"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"/>
</div>
<!-- 新增及编辑 -->
<Edit :data="editData" :aiImgToVideoStatusList="aiImgToVideoStatusList" v-if="editVisible" @close="closeEdit" />
</div>
</template>
<script>
// 引入模块
import Edit from './components/AddOrEdit'
import ShowImg from '@/components/ShowImg/index.vue'
import { aiTextToImageList, aiTextToImageeDel, aiTextToImageeUpdate } from '@/api/aiManagement/aiTxtToImg.js'
export default {
name: 'Gold',
components: {
Edit,
ShowImg
},
data() {
return {
aiImgToVideoStatusList: [
{ id: 1, name: '下单成功' },
{ id: 2, name: '已提交' },
{ id: 3, name: '生成成功' },
{ id: 4, name: '生成失败' },
{ id: 5, name: '退款' }
],
// 请求列表参数
searchData: {
userId: undefined,
status: undefined,
id: undefined,
pageNum: 1,
pageSize: 10
},
resData: [], // el-table表格数据
editVisible: false, // 新增或编辑弹出框
total: 0, // 数据总条数
loading: true, // 列表加载状态
// 编辑数据
editData: {
title: '新增',
data: {}
}
}
},
mounted() {
this.getGoldList()
},
filters: {
aiImgToVideoType(id) {
switch (id) {
case 1:
return '下单成功'
case 2:
return '已提交'
case 3:
return '生成成功'
case 4:
return '生成失败'
case 5:
return '退款'
}
}
},
methods: {
// TODO:请求金币管理数据列表
getGoldList() {
this.loading = true
aiTextToImageList(this.searchData).then(res => {
if (res.code === 200) {
this.resData = res.data.list
this.total = res.data.total
} else {
this.resData = []
this.total = 0
this.$message.error('请求列表失败!')
}
this.loading = false
})
},
// TODO:删除金币管理列表数据
handleDelete(index, row) {
this.$confirm('确定删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
aiTextToImageeDel({ id: row.id }).then(res => {
if (res.code === 200) {
this.getGoldList()
this.$message.success('成功删除!')
} else {
this.$message.error('操作失败')
}
})
})
},
changeStatus(index, row) {
this.$confirm('确定退款?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
aiTextToImageeUpdate({ id: row.id, status: 5 }).then(res => {
if (res.code === 200) {
this.getGoldList()
this.$message.success('已退款!')
} else {
this.$message.error('操作失败')
}
})
})
},
onSearch() {
this.searchData.pageNum = 1
this.searchData.pageSize = 10
this.getGoldList()
},
// 刷新数据
refreshView() {
this.searchData = {
pageNum: 1,
pageSize: 10
}
this.getGoldList()
},
// 切换每页数据量
handleSizeChange(val) {
this.searchData.pageSize = val
this.getGoldList()
},
// 切换页数
handleCurrentChange(val) {
this.searchData.pageNum = val
this.getGoldList()
},
// 编辑按钮
handleEdit(index, row) {
this.editVisible = true
this.editData = {
title: '编辑',
data: row
}
},
// 关闭编辑弹窗
closeEdit() {
this.editData = {
title: '新增',
data: {}
}
this.editVisible = false
this.refreshView()
}
}
}
</script>
+49 -52
View File
@@ -27,7 +27,8 @@
<el-input placeholder="请输入用户最低折扣" v-model.number="form.minimumDiscount"></el-input>
</el-form-item>
<el-form-item label="首页活动图片">
<UploadImg @changeImgUrl="changeCoverImgUrl" @onRemove="onRemoveImage('firstImg', $event)" :img="form.firstImg"></UploadImg>
<UploadImg @changeImgUrl="changeCoverImgUrl" @onRemove="onRemoveImage('firstImg', $event)"
:img="form.firstImg"></UploadImg>
</el-form-item>
<el-form-item label="首页活动图片跳转url">
<el-input placeholder="请输入首页活动图片跳转url" v-model="form.firstImgUrl"></el-input>
@@ -70,30 +71,38 @@
<el-row>
<el-col :span="12">
<el-form-item label="我的广告模式">
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.newMineAdsType" @clear="onClear('mine')">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in videoNewTypeMode" />
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.newMineAdsType"
@clear="onClear('mine')">
<el-option :key="item.value" :label="item.label" :value="item.value"
v-for="item in videoNewTypeMode" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="播放页广告模式">
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.newMediaPlayAdsType" @clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in videoNewTypeMode" />
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.newMediaPlayAdsType"
@clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value"
v-for="item in videoNewTypeMode" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="搜索页广告模式">
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.searchPageAdsType" @clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in videoNewTypeMode" />
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.searchPageAdsType"
@clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value"
v-for="item in videoNewTypeMode" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主题详情广告模式">
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.topicDetailAdsType" @clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in videoNewTypeMode" />
<el-select placeholder="请选择广告模式" clearable v-model="form.adsType.topicDetailAdsType"
@clear="onClear('mediaPlay')">
<el-option :key="item.value" :label="item.label" :value="item.value"
v-for="item in videoNewTypeMode" />
</el-select>
</el-form-item>
</el-col>
@@ -114,56 +123,25 @@
<el-col :span="12">
<el-form-item label="浮窗开关" prop="status">
<el-switch v-model="form.floatingWindow.enable" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
<el-switch v-model="form.floatingWindow.enable" active-color="#13ce66"
inactive-color="#ff4949"></el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否开启折扣券" prop="status">
<el-switch v-model="form.userShowDiscountCardEnable" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
<el-switch v-model="form.userShowDiscountCardEnable" active-color="#13ce66"
inactive-color="#ff4949"></el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否展示导航板块" prop="status">
<el-switch v-model="form.navigationShow" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
<el-switch v-model="form.navigationShow" active-color="#13ce66"
inactive-color="#ff4949"></el-switch>
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<!-- <el-tab-pane label="热度值规则管理" name="third">
<el-row>
<el-col :span="12">
<el-form-item label="上架时间权重">
<el-input placeholder="上架时间权重" v-model.number="form.hotScoreConf.addTimeWeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="控制播放量很大时,点赞率对于推荐的相对影响力系数">
<el-input placeholder="控制播放量很大时,点赞率对于推荐的相对影响力系数" v-model.number="form.hotScoreConf.afInfluenceWeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="控制影响的转折点系数">
<el-input placeholder="控制影响的转折点系数" v-model.number="form.hotScoreConf.afTransitionWeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="点赞量权重系数">
<el-input placeholder="点赞量权重系数" v-model.number="form.hotScoreConf.likeCountWeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="点赞率权重系数">
<el-input placeholder="点赞率权重系数" v-model.number="form.hotScoreConf.likeRateWeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="播放量权重系数">
<el-input placeholder="播放量权重系数" v-model.number="form.hotScoreConf.playCountWeight"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-tab-pane> -->
<el-tab-pane label="禁区管理" name="fourth">
<el-row>
<el-col :span="12">
@@ -182,23 +160,26 @@
</el-form-item>
<el-form-item label="赠送金额">
<el-input placeholder="请输入赠送金额" v-model.number="form.payGiftCoinCount" style="width: 200px">
<template
slot="append">金币</template>
<template slot="append">金币</template>
</el-input>
</el-form-item>
</el-tab-pane>
<el-tab-pane label="用户福利配置" name="sixth">
<el-form-item label="VIP内容免费观看次数">
<el-input placeholder="VIP内容免费观看次数" v-model.number="form.vipMediaFreeCount" style="width: 200px"></el-input>
<el-input placeholder="VIP内容免费观看次数" v-model.number="form.vipMediaFreeCount"
style="width: 200px"></el-input>
</el-form-item>
<el-form-item label="免费内容免费观看次数">
<el-input placeholder="免费内容免费观看次数" v-model.number="form.freeMediaFreeCount" style="width: 200px"></el-input>
<el-input placeholder="免费内容免费观看次数" v-model.number="form.freeMediaFreeCount"
style="width: 200px"></el-input>
</el-form-item>
<el-form-item label="up主简介模板">
<el-input placeholder="up主简介模板" type="textarea" v-model="form.introductionTemp" style="width: 600px"></el-input>
<el-input placeholder="up主简介模板" type="textarea" v-model="form.introductionTemp"
style="width: 600px"></el-input>
</el-form-item>
<el-form-item label="每日免费抽奖次数">
<el-input placeholder="每日免费抽奖次数" v-model.number="form.lotteryDailyFreeCount" style="width: 200px"></el-input>
<el-input placeholder="每日免费抽奖次数" v-model.number="form.lotteryDailyFreeCount"
style="width: 200px"></el-input>
</el-form-item>
</el-tab-pane>
<el-tab-pane label="其他配置" name="seven">
@@ -211,6 +192,18 @@ slot="append">金币</template>
<el-option label="我的" :value="5" />
</el-select>
</el-form-item>
<el-form-item label="" style="margin-bottom:10px;">
<el-input placeholder="请输入Ai图片生成视频所需金币" v-model.number="form.aiImageToVideoPrice">
<template slot="append">金币</template>
</el-input>
<p style="margin:0;color:red">*Ai图片生成视频所需金币</p>
</el-form-item>
<el-form-item label="" style="margin-bottom:10px;">
<el-input placeholder="请输入Ai文生视频所需金币" v-model.number="form.aiTextToImagePrice">
<template slot="append">金币</template>
</el-input>
<p style="margin:0;color:red">*Ai图片生成视频所需金币</p>
</el-form-item>
</el-tab-pane>
</el-tabs>
@@ -302,6 +295,8 @@ export default {
this.$store.dispatch('system/setConfig', res.data)
this.form.rewardNumList = arryToString(this.form.rewardNumList)
this.form.payGiftCoinCount = changeMoneyYuan(this.form.payGiftCoinCount)
this.form.aiImageToVideoPrice = changeMoneyYuan(this.form.aiImageToVideoPrice)
this.form.aiTextToImagePrice = changeMoneyYuan(this.form.aiTextToImagePrice)
} else {
this.$message.error('请求系统配置失败')
}
@@ -319,6 +314,8 @@ export default {
data.rewardNumList = rewardNumList
data.taxRate = Number(data.taxRate)
data.payGiftCoinCount = changeMoneyFen(this.form.payGiftCoinCount)
data.aiImageToVideoPrice = changeMoneyFen(data.aiImageToVideoPrice)
data.aiTextToImagePrice = changeMoneyFen(data.aiTextToImagePrice)
updateSyscfg(data).then(res => {
if (res.code === 200) {
this.$message.success('配置成功')