Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-dml
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-dml
Commits
3a747802
提交
3a747802
authored
12月 01, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: 修改成绩管理
上级
54a2d56a
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
66 行增加
和
7 行删除
+66
-7
useScore.ts
src/modules/score/composables/useScore.ts
+56
-3
Index.vue
src/modules/score/views/Index.vue
+7
-2
View.vue
src/modules/score/views/View.vue
+2
-2
user.ts
src/stores/user.ts
+1
-0
没有找到文件。
src/modules/score/composables/useScore.ts
浏览文件 @
3a747802
...
@@ -3,6 +3,7 @@ import { useUserStore } from '@/stores/user'
...
@@ -3,6 +3,7 @@ import { useUserStore } from '@/stores/user'
import
{
useChat
}
from
'@ezijing/ai-vue'
import
{
useChat
}
from
'@ezijing/ai-vue'
import
{
generatePrompt
}
from
'../prompt'
import
{
generatePrompt
}
from
'../prompt'
import
{
generatePrompt
as
generatePrompt2
}
from
'../prompt2'
import
{
generatePrompt
as
generatePrompt2
}
from
'../prompt2'
import
{
ElMessage
}
from
'element-plus'
interface
ScoreDetail
{
interface
ScoreDetail
{
is_ai
?:
boolean
is_ai
?:
boolean
...
@@ -52,8 +53,55 @@ export function useScore() {
...
@@ -52,8 +53,55 @@ export function useScore() {
}
}
const
handleAIScore
=
async
(
detail
:
any
)
=>
{
const
handleAIScore
=
async
(
detail
:
any
)
=>
{
const
prompt
=
const
liveData
=
detail
.
live_data
detail
.
competition_rule
?.
questions
==
1
?
generatePrompt
(
detail
.
live_data
)
:
generatePrompt2
(
detail
.
live_data
)
const
competitionRule
=
detail
.
competition_rule
let
prompt
=
''
if
(
competitionRule
?.
competition
==
1
)
{
if
(
competitionRule
?.
questions
==
1
)
{
prompt
=
generatePrompt
(
detail
.
live_data
)
}
else
{
prompt
=
generatePrompt2
(
detail
.
live_data
)
}
}
else
{
const
rules
=
JSON
.
parse
(
competitionRule
?.
config
||
'{}'
)?.
rules
||
[]
rules
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
rule_mode
!=
2
)
return
if
(
item
.
type
==
1
)
{
prompt
+=
`请根据选手提交的商品品类信息进行评分(满分
${
item
.
percent
}
分):
选手提交内容:
${
JSON
.
stringify
(
liveData
.
commodity_types
)}
`
}
else
if
(
item
.
type
==
2
)
{
prompt
+=
`请根据选手提交的商品属性配置信息进行评分(满分
${
item
.
percent
}
分):
选手提交内容:
${
JSON
.
stringify
(
liveData
.
commodity_attrs
)}
`
}
else
if
(
item
.
type
==
3
)
{
prompt
+=
`请根据选手提交的商品信息维护内容进行评分(满分
${
item
.
percent
}
分):
选手提交内容:
${
JSON
.
stringify
(
liveData
.
commodities
)}
`
}
else
if
(
item
.
type
==
4
)
{
prompt
+=
`请根据选手提交的直播话术进行评分(满分
${
item
.
percent
}
分):
选手提交内容:
${
JSON
.
stringify
(
liveData
.
speeches
)}
`
}
})
prompt
+=
`EXAMPLE JSON OUTPUT:
{
"commodity_type": {
"score": 5,
"comment": "这是评语"
},
"commodity_attr": {
"score": 5,
"comment": "这是评语"
},
"commodity": {
"score": 5,
"comment": "这是评语"
}
}`
}
const
result
=
await
generateText
({
prompt
,
response_format
:
{
type
:
'json_object'
}
}
as
any
)
const
result
=
await
generateText
({
prompt
,
response_format
:
{
type
:
'json_object'
}
}
as
any
)
if
(
!
result
)
return
if
(
!
result
)
return
...
@@ -91,5 +139,10 @@ export function useScore() {
...
@@ -91,5 +139,10 @@ export function useScore() {
}
}
}
}
return
{
isLoading
,
fetchScoreList
,
fetchScoreDetail
,
handleAIScoreList
,
handleAIScore
}
const
handleResetScoreStatus
=
async
(
id
:
string
)
=>
{
await
updateScore
({
id
,
check_status
:
2
})
ElMessage
.
success
(
'重置成绩状态成功'
)
}
return
{
isLoading
,
fetchScoreList
,
fetchScoreDetail
,
handleAIScoreList
,
handleAIScore
,
handleResetScoreStatus
}
}
}
src/modules/score/views/Index.vue
浏览文件 @
3a747802
...
@@ -4,8 +4,10 @@ import { getScoreList, publishAll } from '../api'
...
@@ -4,8 +4,10 @@ import { getScoreList, publishAll } from '../api'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
useIntervalFn
}
from
'@vueuse/core'
import
{
useIntervalFn
}
from
'@vueuse/core'
import
{
useScore
}
from
'../composables/useScore'
import
{
useScore
}
from
'../composables/useScore'
import
{
useUserStore
}
from
'@/stores/user'
const
userStore
=
useUserStore
()
const
{
isLoading
,
handleAIScoreList
}
=
useScore
()
const
{
isLoading
,
handleAIScoreList
,
handleResetScoreStatus
}
=
useScore
()
const
route
=
useRoute
()
const
route
=
useRoute
()
const
appList
=
ref
(
null
)
const
appList
=
ref
(
null
)
...
@@ -36,7 +38,7 @@ const listOptions = computed(() => {
...
@@ -36,7 +38,7 @@ const listOptions = computed(() => {
],
],
columns
:
[
columns
:
[
{
label
:
'序号'
,
type
:
'index'
,
width
:
60
},
{
label
:
'序号'
,
type
:
'index'
,
width
:
60
},
{
label
:
'ID'
,
prop
:
'id'
},
{
label
:
'ID'
,
prop
:
'
student_
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' },
...
@@ -105,6 +107,9 @@ useIntervalFn(() => {
...
@@ -105,6 +107,9 @@ useIntervalFn(() => {
<el-button
text
type=
"primary"
v-if=
"row.check_status != '1'"
>
<el-button
text
type=
"primary"
v-if=
"row.check_status != '1'"
>
<router-link
:to=
"
{ path: '/live/score/view', query: { ...$route.query, id: row.id } }">评分
</router-link>
<router-link
:to=
"
{ path: '/live/score/view', query: { ...$route.query, id: row.id } }">评分
</router-link>
</el-button>
</el-button>
<el-button
text
type=
"primary"
@
click=
"() => handleResetScoreStatus(row.id)"
v-if=
"userStore.isAdmin"
>
重置
</el-button
>
</
template
>
</
template
>
</AppList>
</AppList>
</AppCard>
</AppCard>
...
...
src/modules/score/views/View.vue
浏览文件 @
3a747802
...
@@ -112,7 +112,7 @@ const commitScore = (status = 1, isAI = false) => {
...
@@ -112,7 +112,7 @@ const commitScore = (status = 1, isAI = false) => {
}
}
const
handlePublishScore
=
async
()
=>
{
const
handlePublishScore
=
async
()
=>
{
await
commitScore
(
2
)
await
commitScore
(
2
)
ElMessage
.
success
(
'
发布
成绩成功'
)
ElMessage
.
success
(
'
提交
成绩成功'
)
}
}
onMounted
(()
=>
{
onMounted
(()
=>
{
...
@@ -141,7 +141,7 @@ onBeforeUnmount(() => {
...
@@ -141,7 +141,7 @@ onBeforeUnmount(() => {
v-show=
"false"
v-show=
"false"
>
AI一键评分
</el-button
>
AI一键评分
</el-button
>
>
<el-button
type=
"primary"
@
click=
"handlePublishScore"
>
发布
成绩
</el-button>
<el-button
type=
"primary"
@
click=
"handlePublishScore"
>
提交
成绩
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
class=
"score-box"
>
<div
class=
"score-box"
>
...
...
src/stores/user.ts
浏览文件 @
3a747802
...
@@ -39,6 +39,7 @@ export const useUserStore = defineStore({
...
@@ -39,6 +39,7 @@ export const useUserStore = defineStore({
}),
}),
getters
:
{
getters
:
{
isLogin
:
(
state
)
=>
!!
state
.
user
,
isLogin
:
(
state
)
=>
!!
state
.
user
,
isAdmin
:
(
state
)
=>
state
.
user
?.
id
===
'6602032005293015040'
,
},
},
actions
:
{
actions
:
{
async
getUser
()
{
async
getUser
()
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论