1
This commit is contained in:
@@ -1,39 +1,13 @@
|
||||
<template>
|
||||
<div class="xianyu-wenan-container">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div slot="header">
|
||||
<span class="card-title">
|
||||
<i class="el-icon-edit-outline"></i>
|
||||
闲鱼文案(手动)
|
||||
</span>
|
||||
<el-button
|
||||
style="float: right; padding: 3px 0"
|
||||
type="text"
|
||||
@click="showHelp = !showHelp">
|
||||
{{ showHelp ? '隐藏帮助' : '显示帮助' }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-collapse-transition>
|
||||
<div v-show="showHelp" class="help-section">
|
||||
<el-alert
|
||||
title="使用说明"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon>
|
||||
<div slot="default">
|
||||
<p><strong>功能说明:</strong></p>
|
||||
<ul>
|
||||
<li>不依赖 JD 接口,手动输入标题即可生成闲鱼文案,用于接口限流时的应急</li>
|
||||
<li>一键生成「代下单」和「教你下单」两种文案</li>
|
||||
<li>标题和型号会自动清洗敏感词(以旧、政府、换新等)</li>
|
||||
<li>支持可选备注(型号),会拼在标题后参与生成</li>
|
||||
</ul>
|
||||
</div>
|
||||
</el-alert>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
|
||||
<div class="input-section">
|
||||
<el-form
|
||||
:model="form"
|
||||
@@ -51,9 +25,19 @@
|
||||
<el-form-item label="型号/备注">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
placeholder="选填,如型号、规格等,会拼在标题后"
|
||||
placeholder="选填,如型号、规格等,会拼在标题后(生成种草时必填)"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-checkbox v-model="form.generateSeedNote">同时生成种草文案(AI)</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.generateSeedNote" label="商品类型" required>
|
||||
<el-input
|
||||
v-model="form.goodsType"
|
||||
placeholder="种草必填,如:冰箱、空调、洗衣机"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
@@ -72,7 +56,33 @@
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<div v-if="result.daixiadan || result.jiaonixiadan" class="result-section">
|
||||
<el-alert
|
||||
v-if="result.seedNoteError"
|
||||
:title="result.seedNoteError"
|
||||
type="warning"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="seed-error-alert"
|
||||
/>
|
||||
|
||||
<div v-if="result.daixiadan || result.jiaonixiadan || result.seedNote" class="result-section">
|
||||
<el-row v-if="result.seedNote" :gutter="gutter" class="seed-row">
|
||||
<el-col :span="24">
|
||||
<el-card shadow="hover" class="result-card">
|
||||
<div slot="header" class="result-card-header">
|
||||
<span class="result-card-title">种草文案(AI)</span>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
class="btn-copy"
|
||||
@click="copyResult('seedNote')">
|
||||
<i class="el-icon-document-copy"></i> 复制
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="result-content">{{ result.seedNote }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="gutter">
|
||||
<el-col :xs="24" :sm="24" :md="12">
|
||||
<el-card shadow="hover" class="result-card">
|
||||
@@ -117,14 +127,17 @@ export default {
|
||||
name: 'XianyuWenan',
|
||||
data() {
|
||||
return {
|
||||
showHelp: false,
|
||||
form: {
|
||||
title: '',
|
||||
remark: ''
|
||||
remark: '',
|
||||
generateSeedNote: false,
|
||||
goodsType: ''
|
||||
},
|
||||
result: {
|
||||
daixiadan: '',
|
||||
jiaonixiadan: ''
|
||||
jiaonixiadan: '',
|
||||
seedNote: '',
|
||||
seedNoteError: ''
|
||||
},
|
||||
generating: false,
|
||||
mobile: false,
|
||||
@@ -161,6 +174,8 @@ export default {
|
||||
handleClearInput() {
|
||||
this.form.title = ''
|
||||
this.form.remark = ''
|
||||
this.form.generateSeedNote = false
|
||||
this.form.goodsType = ''
|
||||
this.$message.success('已清空输入')
|
||||
},
|
||||
async handleGenerate() {
|
||||
@@ -169,18 +184,47 @@ export default {
|
||||
this.$message.warning('请输入商品标题')
|
||||
return
|
||||
}
|
||||
if (this.form.generateSeedNote) {
|
||||
const remark = (this.form.remark || '').trim()
|
||||
const goodsType = (this.form.goodsType || '').trim()
|
||||
if (!remark) {
|
||||
this.$message.warning('生成种草时需要填写型号/备注')
|
||||
return
|
||||
}
|
||||
if (!goodsType) {
|
||||
this.$message.warning('请填写商品类型')
|
||||
return
|
||||
}
|
||||
}
|
||||
this.generating = true
|
||||
this.result.seedNote = ''
|
||||
this.result.seedNoteError = ''
|
||||
try {
|
||||
const res = await generateXianyuWenan({
|
||||
const payload = {
|
||||
title: title,
|
||||
remark: (this.form.remark || '').trim() || undefined
|
||||
})
|
||||
}
|
||||
if (this.form.generateSeedNote) {
|
||||
payload.goods_title = title
|
||||
payload.goods_model = (this.form.remark || '').trim()
|
||||
payload.goods_type = (this.form.goodsType || '').trim()
|
||||
payload.generateSeedNote = true
|
||||
}
|
||||
const res = await generateXianyuWenan(payload)
|
||||
if (res.code === 200 && res.data) {
|
||||
const data = res.data
|
||||
if (data.success) {
|
||||
this.result.daixiadan = data.daixiadan || ''
|
||||
this.result.jiaonixiadan = data.jiaonixiadan || ''
|
||||
this.$message.success('生成成功')
|
||||
this.result.seedNote = (data.seedNote || '').trim()
|
||||
this.result.seedNoteError = data.seedNoteError || ''
|
||||
if (this.result.seedNote) {
|
||||
this.$message.success('生成成功')
|
||||
} else if (this.result.seedNoteError) {
|
||||
this.$message.warning('种草未生成:' + this.result.seedNoteError)
|
||||
} else {
|
||||
this.$message.success('生成成功')
|
||||
}
|
||||
} else {
|
||||
this.$message.error(data.error || '生成失败')
|
||||
}
|
||||
@@ -242,9 +286,6 @@ export default {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.help-section {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.input-section {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
@@ -281,6 +322,12 @@ export default {
|
||||
.btn-clear {
|
||||
margin-left: 12px;
|
||||
}
|
||||
.seed-error-alert {
|
||||
margin: 0 0 16px;
|
||||
}
|
||||
.seed-row {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
/* 移动端适配 */
|
||||
@media (max-width: 767px) {
|
||||
@@ -301,12 +348,6 @@ export default {
|
||||
.card-title {
|
||||
font-size: 15px;
|
||||
}
|
||||
.help-section {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.help-section ::v-deep .el-alert__content {
|
||||
font-size: 13px;
|
||||
}
|
||||
.input-section {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user