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

chore: update

上级 cdf9c380
...@@ -25,7 +25,13 @@ const listOptions = { ...@@ -25,7 +25,13 @@ const listOptions = {
filters: [{ label: '商品品类名称', prop: 'name', type: 'input', placeholder: '请输入类别名称' }], filters: [{ label: '商品品类名称', prop: 'name', type: 'input', placeholder: '请输入类别名称' }],
columns: [ columns: [
{ label: '商品品类名称', prop: 'name', align: 'left' }, { label: '商品品类名称', prop: 'name', align: 'left' },
{ label: '层级', prop: 'level' }, {
label: '层级',
prop: 'level',
computed({ row }) {
return parseInt(row.level) + 1
},
},
{ {
label: '状态', label: '状态',
prop: 'status', prop: 'status',
......
...@@ -269,7 +269,13 @@ function batchSetReferencePrice() { ...@@ -269,7 +269,13 @@ function batchSetReferencePrice() {
</el-button> </el-button>
</div> </div>
</div> </div>
<el-button type="primary" plain :icon="Plus" @click="addSpec" :disabled="specCount >= maxSpecCount"> <el-button
type="primary"
plain
:icon="Plus"
@click="addSpec"
:disabled="specCount >= maxSpecCount"
v-if="specCount < 1">
添加规格({{ specCount }}/{{ maxSpecCount }} 添加规格({{ specCount }}/{{ maxSpecCount }}
</el-button> </el-button>
</div> </div>
...@@ -285,7 +291,7 @@ function batchSetReferencePrice() { ...@@ -285,7 +291,7 @@ function batchSetReferencePrice() {
<el-form-item label="价格与库存" required> <el-form-item label="价格与库存" required>
<div class="form-tips" v-if="hasSpecs">根据规格自动生成,请为每个SKU填写价格和库存</div> <div class="form-tips" v-if="hasSpecs">根据规格自动生成,请为每个SKU填写价格和库存</div>
<div class="form-tips" v-else>请填写商品价格和库存</div> <div class="form-tips" v-else>请填写商品价格和库存</div>
<div class="batch-set-container" v-if="form.info.sku && form.info.sku.length > 0"> <div class="batch-set-container" v-if="form.info.sku && form.info.sku.length > 0" v-show="false">
<div class="batch-set-item"> <div class="batch-set-item">
<el-input v-model="batchPrice" placeholder="批量设置价格" type="number" style="width: 200px"> <el-input v-model="batchPrice" placeholder="批量设置价格" type="number" style="width: 200px">
<template #prefix>¥</template> <template #prefix>¥</template>
......
...@@ -84,7 +84,7 @@ const handleChatSave = (url) => { ...@@ -84,7 +84,7 @@ const handleChatSave = (url) => {
<div v-for="(item, i) in props.limit" :key="i"> <div v-for="(item, i) in props.limit" :key="i">
<el-popover placement="top" width="220px" trigger="hover"> <el-popover placement="top" width="220px" trigger="hover">
<ul class="upload-popover"> <ul class="upload-popover">
<li @click="handleOpen(i)"> <li @click="handleOpen(i)" v-if="false">
<i class="el-icon"><UploadFilled /></i>本地上传 <i class="el-icon"><UploadFilled /></i>本地上传
</li> </li>
<li @click="handleOpenDesign(i)" v-if="!isVideo"> <li @click="handleOpenDesign(i)" v-if="!isVideo">
...@@ -117,7 +117,7 @@ const handleChatSave = (url) => { ...@@ -117,7 +117,7 @@ const handleChatSave = (url) => {
<template v-else> <template v-else>
<el-popover placement="top" width="160px" trigger="hover"> <el-popover placement="top" width="160px" trigger="hover">
<ul class="upload-popover"> <ul class="upload-popover">
<li @click="handleOpen"> <li @click="handleOpen" v-if="false">
<i class="el-icon"><UploadFilled /></i>本地上传 <i class="el-icon"><UploadFilled /></i>本地上传
</li> </li>
<li @click="handleOpenDesign" v-if="!isVideo"> <li @click="handleOpenDesign" v-if="!isVideo">
......
<script setup>
defineProps({
timelines: { type: Array, default: () => [] },
})
const dialogVisible = ref(false)
const handleClick = () => {
dialogVisible.value = true
}
// 毫秒转分钟 00:00,需要补0
const formatTime = (time) => {
const minutes = Math.floor(time / 1000 / 60)
const seconds = Math.floor((time / 1000) % 60)
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
}
</script>
<template>
<el-button type="primary" @click="handleClick">查看口播文字</el-button>
<el-dialog v-model="dialogVisible" title="口播文字" width="600px">
<el-timeline>
<el-timeline-item
placement="top"
v-for="(item, index) in timelines"
:key="index"
:timestamp="formatTime(item.BeginTime)">
{{ item.Text }}
</el-timeline-item>
</el-timeline>
</el-dialog>
</template>
...@@ -83,7 +83,7 @@ const handleDelete = (url) => { ...@@ -83,7 +83,7 @@ const handleDelete = (url) => {
<p>图片格式为png/jpg/jpeg,图片大小不能超过2M</p> <p>图片格式为png/jpg/jpeg,图片大小不能超过2M</p>
</div> </div>
<div v-if="item.isVideo" class="upload-tips"> <div v-if="item.isVideo" class="upload-tips">
<p>视频分辨率不能超过1080p,视频文件大小不能超过200M</p> <p>视频分辨率不能超过1080p,视频文件大小不能超过500M</p>
<p>视频帧率25fps,视频文件格式为mp4</p> <p>视频帧率25fps,视频文件格式为mp4</p>
</div> </div>
</template> </template>
......
...@@ -70,7 +70,13 @@ const secondLivePracticeRecord = computed(() => { ...@@ -70,7 +70,13 @@ const secondLivePracticeRecord = computed(() => {
const categoryTableOptions = { const categoryTableOptions = {
columns: [ columns: [
{ label: '商品品类名称', prop: 'name', align: 'left' }, { label: '商品品类名称', prop: 'name', align: 'left' },
{ label: '层级', prop: 'level' }, {
label: '层级',
prop: 'level',
computed({ row }) {
return parseInt(row.level) + 1
},
},
{ {
label: '状态', label: '状态',
prop: 'status', prop: 'status',
......
...@@ -71,7 +71,13 @@ const secondLivePracticeRecord = computed(() => { ...@@ -71,7 +71,13 @@ const secondLivePracticeRecord = computed(() => {
const categoryTableOptions = { const categoryTableOptions = {
columns: [ columns: [
{ label: '商品品类名称', prop: 'name', align: 'left' }, { label: '商品品类名称', prop: 'name', align: 'left' },
{ label: '层级', prop: 'level' }, {
label: '层级',
prop: 'level',
computed({ row }) {
return parseInt(row.level) + 1
},
},
{ {
label: '状态', label: '状态',
prop: 'status', prop: 'status',
......
...@@ -531,13 +531,6 @@ export const generatePracticeRecord2Prompt = (data: any) => { ...@@ -531,13 +531,6 @@ export const generatePracticeRecord2Prompt = (data: any) => {
` `
} }
export const generateReportPrompt = (data: any) => {
return `请根据选手提交的直播总结报告进行评分(满分15分)
选手提交内容:
${JSON.stringify(data.reports)}
`
}
export const generatePrompt = (data: any) => { export const generatePrompt = (data: any) => {
return ` return `
${generateCommodityTypePrompt(data)} ${generateCommodityTypePrompt(data)}
...@@ -546,7 +539,6 @@ export const generatePrompt = (data: any) => { ...@@ -546,7 +539,6 @@ export const generatePrompt = (data: any) => {
${generateSpeechPrompt(data)} ${generateSpeechPrompt(data)}
${generatePracticeRecordPrompt(data)} ${generatePracticeRecordPrompt(data)}
${generateImprovementPlanPrompt(data)} ${generateImprovementPlanPrompt(data)}
${generateReportPrompt(data)}
EXAMPLE JSON OUTPUT: EXAMPLE JSON OUTPUT:
{ {
"commodity_type": { "commodity_type": {
...@@ -577,10 +569,6 @@ EXAMPLE JSON OUTPUT: ...@@ -577,10 +569,6 @@ EXAMPLE JSON OUTPUT:
"score": 5, "score": 5,
"comment": "这是评语" "comment": "这是评语"
}, },
"report": {
"score": 5,
"comment": "这是评语"
},
} }
` `
} }
...@@ -39,8 +39,8 @@ const listOptions = computed(() => { ...@@ -39,8 +39,8 @@ const listOptions = computed(() => {
{ label: '序号', type: 'index', width: 60 }, { label: '序号', type: 'index', width: 60 },
{ label: 'ID', prop: 'id' }, { label: 'ID', prop: 'id' },
{ label: '姓名', prop: 'student_name' }, { label: '姓名', prop: 'student_name' },
{ label: '专业', prop: 'specialty_name' }, // { label: '专业', prop: 'specialty_name' },
{ label: '班级', prop: 'class_name' }, // { label: '班级', prop: 'class_name' },
{ label: '成绩', prop: 'score_display' }, { label: '成绩', prop: 'score_display' },
{ label: '状态', prop: 'check_status_name' }, { label: '状态', prop: 'check_status_name' },
{ label: '评分人', prop: 'checker_name' }, { label: '评分人', prop: 'checker_name' },
...@@ -55,7 +55,7 @@ const handleExport = () => { ...@@ -55,7 +55,7 @@ const handleExport = () => {
window.open(`/api/lab/v1/experiment/live-student-record/export?experiment_id=${route.query.experiment_id}`) window.open(`/api/lab/v1/experiment/live-student-record/export?experiment_id=${route.query.experiment_id}`)
} }
const { isLoading, generateText } = useChat({ provider: 'siliconflow' }) const { isLoading, generateText } = useChat({ provider: 'volcano' })
const handleAIScore = async () => { const handleAIScore = async () => {
console.log('AI一键评分') console.log('AI一键评分')
......
...@@ -11,7 +11,7 @@ const CompetitionOperations = defineAsyncComponent(() => import('../components/C ...@@ -11,7 +11,7 @@ const CompetitionOperations = defineAsyncComponent(() => import('../components/C
const route = useRoute() const route = useRoute()
const id = route.query.id const id = route.query.id
const { isLoading, generateText } = useChat({ provider: 'siliconflow' }) const { isLoading, generateText } = useChat({ provider: 'volcano' })
const detail = ref(null) const detail = ref(null)
...@@ -41,7 +41,7 @@ const handleAIScore = async () => { ...@@ -41,7 +41,7 @@ const handleAIScore = async () => {
try { try {
const parsed = JSON.parse(result.content) const parsed = JSON.parse(result.content)
Object.assign(scoreDetails, parsed) Object.assign(scoreDetails, parsed)
commitScore(1).then(() => { commitScore().then(() => {
ElMessage.success('保存成功') ElMessage.success('保存成功')
}) })
} catch (error) { } catch (error) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论