main #113

Merged
charles merged 3 commits from main into prod 2026-05-25 18:06:01 +08:00
5 changed files with 53 additions and 24 deletions

View File

@ -8,7 +8,7 @@ _CUSTOMER_MODEL_COLUMNS = """
id, llmid, provider, model_name, display_name, model_type, id, llmid, provider, model_name, display_name, model_type,
context_length, input_token_price, output_token_price, context_length, input_token_price, output_token_price,
cache_hit_input_price, billing_method, billing_unit, cache_hit_input_price, billing_method, billing_unit,
capabilities, limitations, highlights, description, sort_order capabilities, limitations, highlights, description, sort_order,is_active, experience
""" """

View File

@ -181,14 +181,6 @@ print(response.json())`
return match ? match[0] : '' return match ? match[0] : ''
}, },
goBack() { goBack() {
if (this.$route.query.from === 'tokenMarket') {
if (this.$route.query.single === '1') {
this.$router.push({ path: '/tokenMarket', query: { category: 'TOKEN市集', single: '1' } })
return
}
this.$router.push({ path: '/product', query: { category: 'TOKEN市集' } })
return
}
this.$router.back() this.$router.back()
} }
} }
@ -224,7 +216,8 @@ print(response.json())`
} }
.doc-container { .doc-container {
width: 920px; width: 1180px;
max-width: calc(100vw - 48px);
margin: 28px auto 0; margin: 28px auto 0;
} }

View File

@ -192,12 +192,8 @@ export default {
this.clearStreamFlushTimer() this.clearStreamFlushTimer()
}, },
methods: { methods: {
// TOKEN TOKEN //
goBack() { goBack() {
if (this.$route.query.from === 'tokenMarket') {
this.$router.push({ path: '/product', query: { category: 'TOKEN市集' } })
return
}
this.$router.back() this.$router.back()
}, },

View File

@ -41,7 +41,14 @@
</div> </div>
<div class="version-actions"> <div class="version-actions">
<el-button size="small" @click="goApiDocument">API文档</el-button> <el-button size="small" @click="goApiDocument">API文档</el-button>
<el-button size="small" type="primary" @click="goExperience">体验</el-button> <el-button
size="small"
:type="canExperience ? 'primary' : 'info'"
:disabled="!canExperience"
@click="goExperience"
>
体验
</el-button>
</div> </div>
</section> </section>
@ -124,7 +131,8 @@ export default {
inputPrice: '0.0021', inputPrice: '0.0021',
outputPrice: '0.0084', outputPrice: '0.0084',
cacheHitInputPrice: '', cacheHitInputPrice: '',
priceUnit: '元/千Tokens' priceUnit: '元/千Tokens',
experience: 1
}, },
capabilityList: [ capabilityList: [
{ label: '接口类型', value: '/v2/chat/completions' }, { label: '接口类型', value: '/v2/chat/completions' },
@ -147,6 +155,11 @@ export default {
] ]
} }
}, },
computed: {
canExperience() {
return Number(this.modelInfo.experience) === 1
}
},
created() { created() {
this.loadModelDetail() this.loadModelDetail()
}, },
@ -180,7 +193,8 @@ export default {
inputPrice: this.formatPrice(model.input_token_price), inputPrice: this.formatPrice(model.input_token_price),
outputPrice: this.formatPrice(model.output_token_price), outputPrice: this.formatPrice(model.output_token_price),
cacheHitInputPrice: this.formatPrice(model.cache_hit_input_price), cacheHitInputPrice: this.formatPrice(model.cache_hit_input_price),
priceUnit: this.getPriceUnit(model.billing_unit) priceUnit: this.getPriceUnit(model.billing_unit),
experience: this.normalizeExperience(model.experience)
} }
this.capabilityList = this.parseInfoList(model.capabilities, [ this.capabilityList = this.parseInfoList(model.capabilities, [
{ label: '接口类型', value: '-' }, { label: '接口类型', value: '-' },
@ -271,6 +285,9 @@ export default {
hasValue(value) { hasValue(value) {
return value !== undefined && value !== null && value !== '' && value !== '-' return value !== undefined && value !== null && value !== '' && value !== '-'
}, },
normalizeExperience(value) {
return Number(value) === 1 ? 1 : 0
},
goTokenMarket() { goTokenMarket() {
if (this.$route.query.single === '1') { if (this.$route.query.single === '1') {
this.$router.push({ path: '/tokenMarket', query: { category: 'TOKEN市集', single: '1' } }) this.$router.push({ path: '/tokenMarket', query: { category: 'TOKEN市集', single: '1' } })
@ -279,10 +296,6 @@ export default {
this.$router.push({ path: '/product', query: { category: 'TOKEN市集' } }) this.$router.push({ path: '/product', query: { category: 'TOKEN市集' } })
}, },
goBack() { goBack() {
if (this.$route.query.from === 'tokenMarket') {
this.goTokenMarket()
return
}
this.$router.back() this.$router.back()
}, },
buildModelQuery() { buildModelQuery() {
@ -298,6 +311,7 @@ export default {
this.$router.push({ name: 'modelApiDocument', query: this.buildModelQuery() }) this.$router.push({ name: 'modelApiDocument', query: this.buildModelQuery() })
}, },
goExperience() { goExperience() {
if (!this.canExperience) return
this.$router.push({ name: 'modelExperience', query: this.buildModelQuery() }) this.$router.push({ name: 'modelExperience', query: this.buildModelQuery() })
} }
} }
@ -354,7 +368,8 @@ export default {
} }
.detail-container { .detail-container {
width: 920px; width: 1180px;
max-width: calc(100vw - 48px);
margin: 28px auto 0; margin: 28px auto 0;
} }

View File

@ -139,7 +139,12 @@
<i class="el-icon-document"></i> <i class="el-icon-document"></i>
API文档 API文档
</button> </button>
<button v-if="index === 0" class="experience" @click.stop="goModelExperience(product)"> <button
class="experience"
:class="{ disabled: !isModelExperienceEnabled(product) }"
:disabled="!isModelExperienceEnabled(product)"
@click.stop="goModelExperience(product)"
>
<i class="el-icon-video-play"></i> <i class="el-icon-video-play"></i>
体验 体验
</button> </button>
@ -354,6 +359,11 @@ export default {
return provider ? provider.slice(0, 1) : 'M'; return provider ? provider.slice(0, 1) : 'M';
}, },
// experience 1 0
isModelExperienceEnabled(model) {
return Number(model && model.experience) === 1;
},
// TOKEN // TOKEN
goModelDetail(model) { goModelDetail(model) {
this.cacheTokenMarketModel(model); this.cacheTokenMarketModel(model);
@ -387,6 +397,7 @@ export default {
// TOKEN // TOKEN
goModelExperience(model) { goModelExperience(model) {
if (!this.isModelExperienceEnabled(model)) return;
if (!this.loginState) { if (!this.loginState) {
this.$message.warning('请先登录再进行体验哦') this.$message.warning('请先登录再进行体验哦')
return; return;
@ -1418,6 +1429,20 @@ export default {
border-color: #a5b4fc; border-color: #a5b4fc;
background: #eef2ff; background: #eef2ff;
} }
&.disabled,
&:disabled {
color: #98a2b3;
cursor: not-allowed;
background: #f3f4f6;
border-color: #e5e7eb;
&:hover {
color: #98a2b3;
background: #f3f4f6;
border-color: #e5e7eb;
}
}
} }
} }