optimize jimeng power config

This commit is contained in:
GeekMaster
2025-09-16 20:35:53 +08:00
parent 6e6a496f1b
commit 48203e0d31
7 changed files with 123 additions and 126 deletions

View File

@@ -82,59 +82,44 @@
<el-divider />
<!-- 算力配置分组 -->
<div class="mb-3">
<h3 class="heading-3 mb-3">算力配置</h3>
<el-form-item>
<template #label>
<div class="text-gray-500 text-sm">
生成图片消耗的积分包括文生图图生图图片编辑图片特效<el-tag type="primary"
>单位积分/</el-tag
>
<h3 class="heading-3 mb-3">任务积分配置</h3>
<Alert type="info" class="mb-3">
<div class="text-gray-500">
图片类模型统一都是 0.2 元一张假如你100积分售价1元建议设置20积分/
</div>
<div class="text-gray-500">
视频/数字人/动作迁移单位积分/但是不同的模型的价格不一样建议去火山方舟控制台查看根据价格设置积分
</div>
</Alert>
<div v-for="func in functions" :key="func.key" class="mb-4">
<h4 class="mb-2 text-base font-bold flex items-center gap-2">
<i class="iconfont" :class="func.icon"></i>
{{ func.name }}
<el-tag size="small" type="info">{{ getUnit(func.key) }}</el-tag>
</h4>
<div class="grid grid-cols-1 md:grid-cols-2 gap-3">
<div
v-for="model in params[func.key]"
:key="model.key"
class="p-3 rounded-md border border-gray-100"
>
<div class="text-sm mb-2">
<div class="font-bold">{{ model.name }}</div>
<div class="text-gray-500 line-clamp-2" :title="model.label">
{{ model.label }}
</div>
</div>
<el-input-number
v-model="jimengConfig.powers[model.key]"
:min="1"
:placeholder="`对应模型:${model.key}${getUnit(func.key)}`"
class="w-full"
/>
<div class="text-xs text-gray-400 mt-1">对应模型{{ model.key }}</div>
</div>
</template>
<el-input-number
v-model="jimengConfig.power.image"
:min="1"
placeholder="请输入图片生成算力消耗"
/>
</el-form-item>
<el-form-item>
<template #label>
<div class="text-gray-500 text-sm">
生成视频消耗的积分包括文生视频图生视频<el-tag type="primary"
>单位积分/</el-tag
>
</div>
</template>
<el-input-number
v-model="jimengConfig.power.video"
:min="1"
placeholder="请输入视频生成算力消耗"
/>
</el-form-item>
<el-form-item>
<template #label>
<div class="text-gray-500 text-sm">
生成数字人视频消耗的积分<el-tag type="primary">单位积分/</el-tag>
</div>
</template>
<el-input-number
v-model="jimengConfig.power.virtual_human"
:min="1"
placeholder="请输入数字人视频生成算力消耗"
/>
</el-form-item>
<el-form-item>
<template #label>
<div class="text-gray-500 text-sm">
生成视频动作迁移消耗的积分<el-tag type="primary">单位积分/</el-tag>
</div>
</template>
<el-input-number
v-model="jimengConfig.power.action_transfer"
:min="1"
placeholder="请输入视频动作迁移算力消耗"
/>
</el-form-item>
</div>
</div>
</div>
<div style="padding: 10px">
<el-form-item>
@@ -149,6 +134,7 @@
<script setup>
import Alert from '@/components/ui/Alert.vue'
import { JimengFunctions, JimengParams } from '@/store/data/jimeng_params'
import { httpGet, httpPost } from '@/utils/http'
import { ElMessage } from 'element-plus'
import { onMounted, ref } from 'vue'
@@ -156,20 +142,15 @@ import { onMounted, ref } from 'vue'
const jimengConfig = ref({
access_key: '',
secret_key: '',
power: {
text_to_image: 10,
image_to_image: 15,
image_edit: 20,
image_effects: 25,
text_to_video: 30,
image_to_video: 35,
},
api_key: '',
powers: {},
})
const loading = ref(true)
const saving = ref(false)
const testing = ref(false)
const configFormRef = ref()
const functions = JimengFunctions
const params = JimengParams
// 表单验证规则
const rules = {
@@ -177,6 +158,8 @@ const rules = {
secret_key: [{ required: true, message: '请输入SecretKey', trigger: 'blur' }],
}
const getUnit = (funcKey) => (funcKey === 'image' ? '积分/张' : '积分/秒')
onMounted(() => {
loadConfig()
})
@@ -185,7 +168,9 @@ onMounted(() => {
const loadConfig = async () => {
try {
const res = await httpGet('/api/admin/config/get?key=jimeng')
jimengConfig.value = res.data
const cfg = res.data || {}
cfg.powers = cfg.powers || {}
jimengConfig.value = cfg
} catch (e) {
ElMessage.error('加载配置失败: ' + e.message)
} finally {
@@ -214,14 +199,8 @@ const resetConfig = () => {
jimengConfig.value = {
access_key: '',
secret_key: '',
power: {
text_to_image: 10,
image_to_image: 15,
image_edit: 20,
image_effects: 25,
text_to_video: 30,
image_to_video: 35,
},
api_key: '',
powers: {},
}
ElMessage.info('配置已重置')
}
@@ -237,7 +216,7 @@ const resetConfig = () => {
.container {
width: 100%;
max-width: 800px;
max-width: 1000px;
}
.heading-3 {