提交 a215af9e authored 作者: 王鹏飞's avatar 王鹏飞

feat: AI一键评分

上级 70de0f02
差异被折叠。
......@@ -28,6 +28,7 @@ const listOptions = computed(() => {
],
columns: [
{ label: '序号', type: 'index', width: 60 },
{ label: 'ID', prop: 'id' },
{ label: '姓名', prop: 'student_name' },
{ label: '专业', prop: 'specialty_name' },
{ label: '班级', prop: 'class_name' },
......
......@@ -13,11 +13,15 @@ import {
import ScoreCard from '../components/ScoreCard.vue'
import ScoreCardLive from '../components/ScoreCardLive.vue'
import Preview from '@/components/Preview.vue'
import { ElMessageBox } from 'element-plus'
import { ElMessageBox, ElMessage } from 'element-plus'
import { useChat } from '@ezijing/ai-vue'
import { generatePrompt } from '../prompt'
const route = useRoute()
const id = route.query.id
const { isLoading, generateText } = useChat({ provider: 'volcano' })
const statusList = useMapStore().getMapValuesByKey('system_status')
const detail = ref(null)
......@@ -100,6 +104,10 @@ const productList = computed(() => {
return detail.value.live_data?.commodities?.map((item) => {
try {
item.info = JSON.parse(item.info)
item.info.delivery_mode_name = getNameByValue(item.info.delivery_mode, deliveryMode)
item.info.delivery_time_name = getNameByValue(item.info.delivery_time, deliveryTime)
item.info.shipping_template_name = getNameByValue(item.info.shipping_template, shippingTemplate)
item.info.after_sales_policy_name = getNameByValue(item.info.after_sales_policy, afterSalesPolicy)
item.live_commodity_attrs = JSON.parse(item.live_commodity_attrs)
item.picture_34_addreses = JSON.parse(item.picture_34_addreses)
item.picture_addreses = JSON.parse(item.picture_addreses)
......@@ -120,34 +128,10 @@ const productTableOptions = {
{ label: '商品标题', prop: 'title' },
{ label: '所属商品品类', prop: 'live_commodity_type_full_name' },
{ label: '参考价(¥)', prop: 'info.reference_price' },
{
label: '发货模式',
prop: 'delivery_mode',
computed({ row }) {
return getNameByValue(row.info.delivery_mode, deliveryMode)
},
},
{
label: '发货时效',
prop: 'delivery_time',
computed({ row }) {
return getNameByValue(row.info.delivery_time, deliveryTime)
},
},
{
label: '运费模板',
prop: 'shipping_template',
computed({ row }) {
return getNameByValue(row.info.shipping_template, shippingTemplate)
},
},
{
label: '售后政策',
prop: 'after_sales_policy',
computed({ row }) {
return getNameByValue(row.info.after_sales_policy, afterSalesPolicy)
},
},
{ label: '发货模式', prop: 'info.delivery_mode_name' },
{ label: '发货时效', prop: 'info.delivery_time_name' },
{ label: '运费模板', prop: 'info.shipping_template_name' },
{ label: '售后政策', prop: 'info.after_sales_policy_name' },
],
}
// 商品规格
......@@ -197,8 +181,24 @@ const talkTableOptions = {
}
const activeTab = ref(1)
const handleAIScore = () => {
const handleAIScore = async () => {
console.log('AI一键评分')
const result = await generateText({
prompt: generatePrompt(detail.value.live_data),
response_format: { type: 'json_object' },
})
try {
const parsed = JSON.parse(result.content)
Object.assign(scoreDetails, parsed)
commitScore(0).then(() => {
ElMessage.success('保存成功')
})
} catch (error) {
console.log(error)
ElMessage.error('评分失败')
return
}
console.log(result.content)
}
const handleSave = (key, params) => {
......@@ -207,6 +207,7 @@ const handleSave = (key, params) => {
ElMessage.success('保存成功')
})
}
const handleNext = () => {
activeTab.value++
}
......@@ -242,7 +243,9 @@ const handlePublishScore = () => {
<el-form-item label="状态">{{ detail.status_name }}</el-form-item>
<el-form-item label="提交时间">{{ detail.commit_time }}</el-form-item>
<el-form-item>
<el-button type="primary" :disabled="detail.status == '2'" @click="handleAIScore">AI一键评分</el-button>
<el-button type="primary" :disabled="detail.status == '2'" :loading="isLoading" @click="handleAIScore"
>AI一键评分</el-button
>
<el-button type="primary" :disabled="detail.status == '2'" @click="handlePublishScore">发布成绩</el-button>
</el-form-item>
</el-form>
......@@ -411,7 +414,7 @@ const handlePublishScore = () => {
@save="handleSave('report', $event)"
@next="handleNext">
<template v-if="detail.live_data.reports.length > 0">
<div v-for="item in detail.live_data.reports" :key="item.report_url">
<div v-for="item in detail.live_data.reports" :key="item.report_url" style="height: 600px">
<Preview :url="item.report_url" />
</div>
</template>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论