Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-dml
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-dml
Commits
cdf9c380
提交
cdf9c380
authored
11月 19, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
eb0b4cc7
全部展开
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
145 行增加
和
61 行删除
+145
-61
FormGraphicInfo.vue
...es/live/product/management/components/FormGraphicInfo.vue
+1
-1
ImageDesign.vue
...odules/live/product/management/components/ImageDesign.vue
+12
-4
api.ts
src/modules/live/score/api.ts
+0
-0
api.ts
src/modules/score/api.ts
+26
-0
CompetitionLive.vue
src/modules/score/components/CompetitionLive.vue
+10
-10
CompetitionLiveProd.vue
src/modules/score/components/CompetitionLiveProd.vue
+10
-10
CompetitionOperations.vue
src/modules/score/components/CompetitionOperations.vue
+3
-3
ModuleCard.vue
src/modules/score/components/ModuleCard.vue
+0
-0
ScoreCard.vue
src/modules/score/components/ScoreCard.vue
+0
-0
ScoreCardLive.vue
src/modules/score/components/ScoreCardLive.vue
+2
-2
ScoreCardSub.vue
src/modules/score/components/ScoreCardSub.vue
+0
-0
index.ts
src/modules/score/index.ts
+8
-0
prompt.ts
src/modules/score/prompt.ts
+3
-9
prompt2.ts
src/modules/score/prompt2.ts
+3
-9
Index.vue
src/modules/score/views/Index.vue
+61
-9
View.vue
src/modules/score/views/View.vue
+5
-3
menu.ts
src/stores/menu.ts
+1
-1
没有找到文件。
src/modules/live/product/management/components/FormGraphicInfo.vue
浏览文件 @
cdf9c380
...
@@ -51,7 +51,7 @@ const handleCopy = () => {
...
@@ -51,7 +51,7 @@ const handleCopy = () => {
</div>
</div>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"主图视频"
>
<el-form-item
label=
"主图视频"
v-if=
"false"
>
<div
class=
"form-tips"
>
有机会在搜索、推荐等场景展示,提升转化
</div>
<div
class=
"form-tips"
>
有机会在搜索、推荐等场景展示,提升转化
</div>
<Upload
v-model=
"form.video_url"
accept=
"video/*"
tips=
"主图视频"
isVideo
></Upload>
<Upload
v-model=
"form.video_url"
accept=
"video/*"
tips=
"主图视频"
isVideo
></Upload>
<div
class=
"upload-tips"
style=
"margin-left: 20px"
>
<div
class=
"upload-tips"
style=
"margin-left: 20px"
>
...
...
src/modules/live/product/management/components/ImageDesign.vue
浏览文件 @
cdf9c380
...
@@ -11,10 +11,17 @@ const userStore = useUserStore()
...
@@ -11,10 +11,17 @@ const userStore = useUserStore()
const
designVisible
=
ref
(
false
)
const
designVisible
=
ref
(
false
)
const
data
=
reactive
({
const
data
=
reactive
({
list
:
[],
list
:
[
count
:
0
,
{
designId
:
1
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/1.JPG'
},
{
designId
:
2
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/2.JPG'
},
{
designId
:
3
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/3.JPG'
},
{
designId
:
4
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/4.JPG'
},
{
designId
:
5
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/5.JPG'
},
{
designId
:
6
,
thumbUrl
:
'https://webapp-pub.ezijing.com/upload/saas-dml-pro/design/6.JPG'
},
],
})
})
async
function
fetchList
()
{
async
function
fetchList
()
{
return
false
const
res
=
await
getChuanKitDesignList
({
const
res
=
await
getChuanKitDesignList
({
user_flag
:
userStore
.
user
.
id
,
user_flag
:
userStore
.
user
.
id
,
kind_id
:
29
,
kind_id
:
29
,
...
@@ -46,7 +53,7 @@ async function handleSubmit() {
...
@@ -46,7 +53,7 @@ async function handleSubmit() {
<
template
>
<
template
>
<el-dialog
title=
"图库选择"
:close-on-click-modal=
"false"
@
closed=
"$emit('update:modelValue', false)"
width=
"860px"
>
<el-dialog
title=
"图库选择"
:close-on-click-modal=
"false"
@
closed=
"$emit('update:modelValue', false)"
width=
"860px"
>
<div
class=
"image-design"
>
<div
class=
"image-design"
>
<el-button
type=
"primary"
@
click=
"designVisible = true"
>
打开编辑器
</el-button>
<el-button
type=
"primary"
@
click=
"designVisible = true"
v-if=
"false"
>
打开编辑器
</el-button>
<ul>
<ul>
<li
<li
v-for=
"item in data.list"
v-for=
"item in data.list"
...
@@ -73,7 +80,6 @@ async function handleSubmit() {
...
@@ -73,7 +80,6 @@ async function handleSubmit() {
margin
:
30px
auto
;
margin
:
30px
auto
;
display
:
flex
;
display
:
flex
;
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
align-items
:
center
;
gap
:
30px
;
gap
:
30px
;
}
}
li
{
li
{
...
@@ -88,6 +94,8 @@ async function handleSubmit() {
...
@@ -88,6 +94,8 @@ async function handleSubmit() {
}
}
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
object-fit
:
cover
;
}
}
}
}
</
style
>
</
style
>
src/modules/live/score/api.ts
deleted
100644 → 0
浏览文件 @
eb0b4cc7
差异被折叠。
点击展开。
src/modules/score/api.ts
0 → 100644
浏览文件 @
cdf9c380
import
httpRequest
from
'@/utils/axios'
// 获取直播成绩详情
export
function
getScoreDetail
(
params
?:
{
id
:
string
})
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/live-student-record/detail'
,
{
params
})
}
// 获取直播成绩列表
export
function
getScoreList
(
params
?:
{
name
?:
string
})
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/live-student-record/list'
,
{
params
})
}
// 导出成绩
export
function
exportScore
(
params
?:
{
name
?:
string
})
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/live-student-record/export'
,
{
params
})
}
// 更新成绩
export
function
updateScore
(
data
:
{
id
:
string
;
check_status
:
number
;
total_score
:
number
;
score_details
:
string
})
{
return
httpRequest
.
post
(
'/api/lab/v1/experiment/live-student-record/score'
,
data
)
}
// 一键发布成绩
export
function
publishAll
()
{
return
httpRequest
.
post
(
'/api/lab/v1/experiment/live-student-record/publish-all'
)
}
src/modules/
live/
score/components/CompetitionLive.vue
→
src/modules/score/components/CompetitionLive.vue
浏览文件 @
cdf9c380
...
@@ -55,7 +55,7 @@ const firstLivePractice = computed(() => {
...
@@ -55,7 +55,7 @@ const firstLivePractice = computed(() => {
})
})
const
firstLivePracticeRecord
=
computed
(()
=>
{
const
firstLivePracticeRecord
=
computed
(()
=>
{
return
props
.
detail
.
live_data
.
practice_records
.
find
((
item
)
=>
item
.
live_practice_id
===
firstLivePractice
.
value
?.
id
)
return
firstLivePractice
.
value
?.
records
[
0
]
})
})
const
secondLivePractice
=
computed
(()
=>
{
const
secondLivePractice
=
computed
(()
=>
{
...
@@ -63,7 +63,7 @@ const secondLivePractice = computed(() => {
...
@@ -63,7 +63,7 @@ const secondLivePractice = computed(() => {
})
})
const
secondLivePracticeRecord
=
computed
(()
=>
{
const
secondLivePracticeRecord
=
computed
(()
=>
{
return
props
.
detail
.
live_data
.
practice_records
.
find
((
item
)
=>
item
.
live_practice_id
===
secondLivePractice
.
value
?.
id
)
return
secondLivePractice
.
value
?.
records
[
0
]
})
})
// 商品类别
// 商品类别
...
@@ -205,7 +205,7 @@ const handleNext = () => {
...
@@ -205,7 +205,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品品类管理"
:name=
"1"
>
<el-tab-pane
label=
"商品品类管理"
:name=
"1"
>
<ScoreCard
<ScoreCard
:maxScore=
"5"
:maxScore=
"5"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity_type.score"
v-model:score=
"scoreDetails.commodity_type.score"
v-model:comment=
"scoreDetails.commodity_type.comment"
v-model:comment=
"scoreDetails.commodity_type.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -220,7 +220,7 @@ const handleNext = () => {
...
@@ -220,7 +220,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品属性管理"
:name=
"2"
lazy
>
<el-tab-pane
label=
"商品属性管理"
:name=
"2"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"5"
:maxScore=
"5"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity_attr.score"
v-model:score=
"scoreDetails.commodity_attr.score"
v-model:comment=
"scoreDetails.commodity_attr.comment"
v-model:comment=
"scoreDetails.commodity_attr.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -231,7 +231,7 @@ const handleNext = () => {
...
@@ -231,7 +231,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品管理"
:name=
"3"
lazy
>
<el-tab-pane
label=
"商品管理"
:name=
"3"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity.score"
v-model:score=
"scoreDetails.commodity.score"
v-model:comment=
"scoreDetails.commodity.comment"
v-model:comment=
"scoreDetails.commodity.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -288,7 +288,7 @@ const handleNext = () => {
...
@@ -288,7 +288,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播话术管理"
:name=
"4"
lazy
>
<el-tab-pane
label=
"直播话术管理"
:name=
"4"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.speech.score"
v-model:score=
"scoreDetails.speech.score"
v-model:comment=
"scoreDetails.speech.comment"
v-model:comment=
"scoreDetails.speech.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -315,7 +315,7 @@ const handleNext = () => {
...
@@ -315,7 +315,7 @@ const handleNext = () => {
<el-tab-pane
label=
"首次直播演练"
:name=
"5"
lazy
>
<el-tab-pane
label=
"首次直播演练"
:name=
"5"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"20"
:maxScore=
"20"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.practice_record1.score"
v-model:score=
"scoreDetails.practice_record1.score"
v-model:comment=
"scoreDetails.practice_record1.comment"
v-model:comment=
"scoreDetails.practice_record1.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -330,7 +330,7 @@ const handleNext = () => {
...
@@ -330,7 +330,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播复盘分析"
:name=
"6"
lazy
>
<el-tab-pane
label=
"直播复盘分析"
:name=
"6"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"10"
:maxScore=
"10"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.improvement_plan.score"
v-model:score=
"scoreDetails.improvement_plan.score"
v-model:comment=
"scoreDetails.improvement_plan.comment"
v-model:comment=
"scoreDetails.improvement_plan.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -346,7 +346,7 @@ const handleNext = () => {
...
@@ -346,7 +346,7 @@ const handleNext = () => {
<el-tab-pane
label=
"二次直播演练"
:name=
"7"
lazy
>
<el-tab-pane
label=
"二次直播演练"
:name=
"7"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.practice_record2.score"
v-model:score=
"scoreDetails.practice_record2.score"
v-model:comment=
"scoreDetails.practice_record2.comment"
v-model:comment=
"scoreDetails.practice_record2.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -361,7 +361,7 @@ const handleNext = () => {
...
@@ -361,7 +361,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播总结汇报"
:name=
"8"
lazy
>
<el-tab-pane
label=
"直播总结汇报"
:name=
"8"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
:hasNextButton=
"false"
:hasNextButton=
"false"
v-model:score=
"scoreDetails.report.score"
v-model:score=
"scoreDetails.report.score"
v-model:comment=
"scoreDetails.report.comment"
v-model:comment=
"scoreDetails.report.comment"
...
...
src/modules/
live/
score/components/CompetitionLiveProd.vue
→
src/modules/score/components/CompetitionLiveProd.vue
浏览文件 @
cdf9c380
...
@@ -56,7 +56,7 @@ const firstLivePractice = computed(() => {
...
@@ -56,7 +56,7 @@ const firstLivePractice = computed(() => {
})
})
const
firstLivePracticeRecord
=
computed
(()
=>
{
const
firstLivePracticeRecord
=
computed
(()
=>
{
return
props
.
detail
.
live_data
.
practice_records
.
find
((
item
)
=>
item
.
live_practice_id
===
firstLivePractice
.
value
?.
id
)
return
firstLivePractice
.
value
?.
records
[
0
]
})
})
const
secondLivePractice
=
computed
(()
=>
{
const
secondLivePractice
=
computed
(()
=>
{
...
@@ -64,7 +64,7 @@ const secondLivePractice = computed(() => {
...
@@ -64,7 +64,7 @@ const secondLivePractice = computed(() => {
})
})
const
secondLivePracticeRecord
=
computed
(()
=>
{
const
secondLivePracticeRecord
=
computed
(()
=>
{
return
props
.
detail
.
live_data
.
practice_records
.
find
((
item
)
=>
item
.
live_practice_id
===
secondLivePractice
.
value
?.
id
)
return
secondLivePractice
.
value
?.
records
[
0
]
})
})
// 商品类别
// 商品类别
...
@@ -206,7 +206,7 @@ const handleNext = () => {
...
@@ -206,7 +206,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品品类管理"
:name=
"1"
>
<el-tab-pane
label=
"商品品类管理"
:name=
"1"
>
<ScoreCard
<ScoreCard
:maxScore=
"3"
:maxScore=
"3"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity_type.score"
v-model:score=
"scoreDetails.commodity_type.score"
v-model:comment=
"scoreDetails.commodity_type.comment"
v-model:comment=
"scoreDetails.commodity_type.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -221,7 +221,7 @@ const handleNext = () => {
...
@@ -221,7 +221,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品属性管理"
:name=
"2"
lazy
>
<el-tab-pane
label=
"商品属性管理"
:name=
"2"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"2"
:maxScore=
"2"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity_attr.score"
v-model:score=
"scoreDetails.commodity_attr.score"
v-model:comment=
"scoreDetails.commodity_attr.comment"
v-model:comment=
"scoreDetails.commodity_attr.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -232,7 +232,7 @@ const handleNext = () => {
...
@@ -232,7 +232,7 @@ const handleNext = () => {
<el-tab-pane
label=
"商品管理"
:name=
"3"
lazy
>
<el-tab-pane
label=
"商品管理"
:name=
"3"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"10"
:maxScore=
"10"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.commodity.score"
v-model:score=
"scoreDetails.commodity.score"
v-model:comment=
"scoreDetails.commodity.comment"
v-model:comment=
"scoreDetails.commodity.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -289,7 +289,7 @@ const handleNext = () => {
...
@@ -289,7 +289,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播话术管理"
:name=
"4"
lazy
>
<el-tab-pane
label=
"直播话术管理"
:name=
"4"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.speech.score"
v-model:score=
"scoreDetails.speech.score"
v-model:comment=
"scoreDetails.speech.comment"
v-model:comment=
"scoreDetails.speech.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -316,7 +316,7 @@ const handleNext = () => {
...
@@ -316,7 +316,7 @@ const handleNext = () => {
<el-tab-pane
label=
"首次直播演练"
:name=
"5"
lazy
>
<el-tab-pane
label=
"首次直播演练"
:name=
"5"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"15"
:maxScore=
"15"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.practice_record1.score"
v-model:score=
"scoreDetails.practice_record1.score"
v-model:comment=
"scoreDetails.practice_record1.comment"
v-model:comment=
"scoreDetails.practice_record1.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -331,7 +331,7 @@ const handleNext = () => {
...
@@ -331,7 +331,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播复盘分析"
:name=
"6"
lazy
>
<el-tab-pane
label=
"直播复盘分析"
:name=
"6"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"10"
:maxScore=
"10"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.improvement_plan.score"
v-model:score=
"scoreDetails.improvement_plan.score"
v-model:comment=
"scoreDetails.improvement_plan.comment"
v-model:comment=
"scoreDetails.improvement_plan.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -347,7 +347,7 @@ const handleNext = () => {
...
@@ -347,7 +347,7 @@ const handleNext = () => {
<el-tab-pane
label=
"二次直播演练"
:name=
"7"
lazy
>
<el-tab-pane
label=
"二次直播演练"
:name=
"7"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"30"
:maxScore=
"30"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
v-model:score=
"scoreDetails.practice_record2.score"
v-model:score=
"scoreDetails.practice_record2.score"
v-model:comment=
"scoreDetails.practice_record2.comment"
v-model:comment=
"scoreDetails.practice_record2.comment"
@
save=
"$emit('save')"
@
save=
"$emit('save')"
...
@@ -362,7 +362,7 @@ const handleNext = () => {
...
@@ -362,7 +362,7 @@ const handleNext = () => {
<el-tab-pane
label=
"直播总结汇报"
:name=
"8"
lazy
>
<el-tab-pane
label=
"直播总结汇报"
:name=
"8"
lazy
>
<ScoreCard
<ScoreCard
:maxScore=
"10"
:maxScore=
"10"
:hasSaveButton=
"detail.status != '2'"
:hasSaveButton=
"detail.
check_
status != '2'"
:hasNextButton=
"false"
:hasNextButton=
"false"
v-model:score=
"scoreDetails.report.score"
v-model:score=
"scoreDetails.report.score"
v-model:comment=
"scoreDetails.report.comment"
v-model:comment=
"scoreDetails.report.comment"
...
...
src/modules/
live/
score/components/CompetitionOperations.vue
→
src/modules/score/components/CompetitionOperations.vue
浏览文件 @
cdf9c380
...
@@ -61,7 +61,7 @@ const handleNext = () => {
...
@@ -61,7 +61,7 @@ const handleNext = () => {
<
template
>
<
template
>
<el-tabs
stretch
v-model=
"activeTab"
class=
"score-tabs"
>
<el-tabs
stretch
v-model=
"activeTab"
class=
"score-tabs"
>
<el-tab-pane
label=
"创意策划方案"
:name=
"1"
>
<el-tab-pane
label=
"创意策划方案"
:name=
"1"
>
<ModuleCard
:maxScore=
"20"
:hasSaveButton=
"detail.status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ModuleCard
:maxScore=
"20"
:hasSaveButton=
"detail.
check_
status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ScoreCardSub
<ScoreCardSub
title=
"全媒体运营的主题(方向)描述(3分)"
title=
"全媒体运营的主题(方向)描述(3分)"
:maxScore=
"3"
:maxScore=
"3"
...
@@ -93,7 +93,7 @@ const handleNext = () => {
...
@@ -93,7 +93,7 @@ const handleNext = () => {
</ModuleCard>
</ModuleCard>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"视听运营"
:name=
"2"
>
<el-tab-pane
label=
"视听运营"
:name=
"2"
>
<ModuleCard
:maxScore=
"55"
:hasSaveButton=
"detail.status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ModuleCard
:maxScore=
"55"
:hasSaveButton=
"detail.
check_
status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ScoreCardSub
<ScoreCardSub
title=
"综合稿件标题(5分)"
title=
"综合稿件标题(5分)"
:maxScore=
"5"
:maxScore=
"5"
...
@@ -140,7 +140,7 @@ const handleNext = () => {
...
@@ -140,7 +140,7 @@ const handleNext = () => {
</ModuleCard>
</ModuleCard>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"流量运营"
:name=
"3"
>
<el-tab-pane
label=
"流量运营"
:name=
"3"
>
<ModuleCard
:maxScore=
"20"
:hasSaveButton=
"detail.status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ModuleCard
:maxScore=
"20"
:hasSaveButton=
"detail.
check_
status != '2'"
@
next=
"handleNext"
@
save=
"$emit('save')"
>
<ScoreCardSub
<ScoreCardSub
title=
"作品(或产品)发布的运营计划,上述全媒体综合文稿拟分发的媒体平台,并逐一说明理由(10分)"
title=
"作品(或产品)发布的运营计划,上述全媒体综合文稿拟分发的媒体平台,并逐一说明理由(10分)"
:maxScore=
"10"
:maxScore=
"10"
...
...
src/modules/
live/
score/components/ModuleCard.vue
→
src/modules/score/components/ModuleCard.vue
浏览文件 @
cdf9c380
File moved
src/modules/
live/
score/components/ScoreCard.vue
→
src/modules/score/components/ScoreCard.vue
浏览文件 @
cdf9c380
File moved
src/modules/
live/
score/components/ScoreCardLive.vue
→
src/modules/score/components/ScoreCardLive.vue
浏览文件 @
cdf9c380
<
script
setup
>
<
script
setup
>
import
Demo
from
'
../..
/test/components/Demo.vue'
import
Demo
from
'
@/modules/live
/test/components/Demo.vue'
import
RecordView
from
'
../..
/test/components/RecordView.vue'
import
RecordView
from
'
@/modules/live
/test/components/RecordView.vue'
defineProps
({
livePracticeId
:
{
type
:
String
},
recordId
:
{
type
:
String
}
})
defineProps
({
livePracticeId
:
{
type
:
String
},
recordId
:
{
type
:
String
}
})
</
script
>
</
script
>
...
...
src/modules/
live/
score/components/ScoreCardSub.vue
→
src/modules/score/components/ScoreCardSub.vue
浏览文件 @
cdf9c380
File moved
src/modules/
live/
score/index.ts
→
src/modules/score/index.ts
浏览文件 @
cdf9c380
...
@@ -10,6 +10,14 @@ const routes: RouteRecordRaw[] = [
...
@@ -10,6 +10,14 @@ const routes: RouteRecordRaw[] = [
{
path
:
'view'
,
component
:
()
=>
import
(
'./views/View.vue'
)
},
{
path
:
'view'
,
component
:
()
=>
import
(
'./views/View.vue'
)
},
],
],
},
},
{
path
:
'/operations/score'
,
component
:
Layout
,
children
:
[
{
path
:
''
,
component
:
()
=>
import
(
'./views/Index.vue'
),
props
:
{
hasAI
:
false
}
},
{
path
:
'view'
,
component
:
()
=>
import
(
'./views/View.vue'
)
},
],
},
]
]
export
{
routes
}
export
{
routes
}
src/modules/
live/
score/prompt.ts
→
src/modules/score/prompt.ts
浏览文件 @
cdf9c380
...
@@ -500,9 +500,7 @@ ${JSON.stringify(data.speeches)}
...
@@ -500,9 +500,7 @@ ${JSON.stringify(data.speeches)}
export
const
generatePracticeRecordPrompt
=
(
data
:
any
)
=>
{
export
const
generatePracticeRecordPrompt
=
(
data
:
any
)
=>
{
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePracticeRecord
=
data
.
practice_records
.
find
(
const
firstLivePracticeRecord
=
firstLivePractice
?.
records
[
0
]
(
item
:
any
)
=>
item
.
live_practice_id
===
firstLivePractice
?.
id
)
return
`请根据选手提交的内容进行评分(满分20分)
return
`请根据选手提交的内容进行评分(满分20分)
选手提交内容:
选手提交内容:
${
JSON
.
stringify
(
firstLivePracticeRecord
)}
${
JSON
.
stringify
(
firstLivePracticeRecord
)}
...
@@ -511,9 +509,7 @@ export const generatePracticeRecordPrompt = (data: any) => {
...
@@ -511,9 +509,7 @@ export const generatePracticeRecordPrompt = (data: any) => {
export
const
generateImprovementPlanPrompt
=
(
data
:
any
)
=>
{
export
const
generateImprovementPlanPrompt
=
(
data
:
any
)
=>
{
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePracticeRecord
=
data
.
practice_records
.
find
(
const
firstLivePracticeRecord
=
firstLivePractice
?.
records
[
0
]
(
item
:
any
)
=>
item
.
live_practice_id
===
firstLivePractice
?.
id
)
return
`请根据选手提交的改进方案进行评分(满分10分):
return
`请根据选手提交的改进方案进行评分(满分10分):
选手提交的改进方案:
选手提交的改进方案:
${
JSON
.
stringify
(
firstLivePracticeRecord
?.
improvement_plan
)}
${
JSON
.
stringify
(
firstLivePracticeRecord
?.
improvement_plan
)}
...
@@ -527,9 +523,7 @@ export const generateImprovementPlanPrompt = (data: any) => {
...
@@ -527,9 +523,7 @@ export const generateImprovementPlanPrompt = (data: any) => {
export const generatePracticeRecord2Prompt = (data: any) => {
export const generatePracticeRecord2Prompt = (data: any) => {
const secondLivePractice = data.practices[1]
const secondLivePractice = data.practices[1]
const secondLivePracticeRecord = data.practice_records.find(
const secondLivePracticeRecord = secondLivePractice?.records[0]
(item: any) => item.live_practice_id === secondLivePractice?.id
)
return `
return `
请根据选手提交的二次直播演练内容进行评分(满分
15
分)
请根据选手提交的二次直播演练内容进行评分(满分
15
分)
选手提交内容:
选手提交内容:
...
...
src/modules/
live/
score/prompt2.ts
→
src/modules/score/prompt2.ts
浏览文件 @
cdf9c380
...
@@ -263,9 +263,7 @@ ${JSON.stringify(data.speeches)}
...
@@ -263,9 +263,7 @@ ${JSON.stringify(data.speeches)}
export
const
generatePracticeRecordPrompt
=
(
data
:
any
)
=>
{
export
const
generatePracticeRecordPrompt
=
(
data
:
any
)
=>
{
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePracticeRecord
=
data
.
practice_records
.
find
(
const
firstLivePracticeRecord
=
firstLivePractice
?.
records
[
0
]
(
item
:
any
)
=>
item
.
live_practice_id
===
firstLivePractice
?.
id
)
return
`请根据选手提交的内容进行评分(满分15分)
return
`请根据选手提交的内容进行评分(满分15分)
选手提交内容:
选手提交内容:
${
JSON
.
stringify
(
firstLivePracticeRecord
)}
${
JSON
.
stringify
(
firstLivePracticeRecord
)}
...
@@ -412,9 +410,7 @@ export const generatePracticeRecordPrompt = (data: any) => {
...
@@ -412,9 +410,7 @@ export const generatePracticeRecordPrompt = (data: any) => {
export
const
generateImprovementPlanPrompt
=
(
data
:
any
)
=>
{
export
const
generateImprovementPlanPrompt
=
(
data
:
any
)
=>
{
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePractice
=
data
.
practices
[
0
]
const
firstLivePracticeRecord
=
data
.
practice_records
.
find
(
const
firstLivePracticeRecord
=
firstLivePractice
?.
records
[
0
]
(
item
:
any
)
=>
item
.
live_practice_id
===
firstLivePractice
?.
id
)
return
`请根据选手提交的改进方案进行评分(满分10分):
return
`请根据选手提交的改进方案进行评分(满分10分):
选手提交的改进方案:
选手提交的改进方案:
${
JSON
.
stringify
(
firstLivePracticeRecord
?.
improvement_plan
)}
${
JSON
.
stringify
(
firstLivePracticeRecord
?.
improvement_plan
)}
...
@@ -436,9 +432,7 @@ export const generateImprovementPlanPrompt = (data: any) => {
...
@@ -436,9 +432,7 @@ export const generateImprovementPlanPrompt = (data: any) => {
export const generatePracticeRecord2Prompt = (data: any) => {
export const generatePracticeRecord2Prompt = (data: any) => {
const secondLivePractice = data.practices[1]
const secondLivePractice = data.practices[1]
const secondLivePracticeRecord = data.practice_records.find(
const secondLivePracticeRecord = secondLivePractice?.records[0]
(item: any) => item.live_practice_id === secondLivePractice?.id
)
return `
return `
请根据选手提交的二次直播演练内容进行评分(满分
30
分)
请根据选手提交的二次直播演练内容进行评分(满分
30
分)
选手提交内容:
选手提交内容:
...
...
src/modules/
live/
score/views/Index.vue
→
src/modules/score/views/Index.vue
浏览文件 @
cdf9c380
<
script
setup
>
<
script
setup
>
import
LiveProductCategory
from
'@/components/LiveProductCategory.vue'
import
LiveProductCategory
from
'@/components/LiveProductCategory.vue'
import
{
getScoreList
}
from
'../api'
import
{
getScoreList
,
getScoreDetail
,
publishAll
,
updateScore
}
from
'../api'
import
{
ElMessage
}
from
'element-plus'
import
{
useChat
}
from
'@ezijing/ai-vue'
import
{
generatePrompt
}
from
'../prompt'
import
{
generatePrompt
as
generatePrompt2
}
from
'../prompt2'
import
{
useIntervalFn
}
from
'@vueuse/core'
const
route
=
useRoute
()
const
route
=
useRoute
()
const
appList
=
ref
(
null
)
const
appList
=
ref
(
null
)
defineProps
({
hasAI
:
{
type
:
Boolean
,
default
:
true
}
})
// 刷新
// 刷新
const
handleRefresh
=
()
=>
{
const
handleRefresh
=
()
=>
{
appList
.
value
?.
refetch
()
appList
.
value
?.
refetch
()
...
@@ -24,6 +31,7 @@ const listOptions = computed(() => {
...
@@ -24,6 +31,7 @@ const listOptions = computed(() => {
{
label
:
'暂未评分'
,
value
:
'0'
},
{
label
:
'暂未评分'
,
value
:
'0'
},
{
label
:
'评分中'
,
value
:
'1'
},
{
label
:
'评分中'
,
value
:
'1'
},
{
label
:
'已评分'
,
value
:
'2'
},
{
label
:
'已评分'
,
value
:
'2'
},
{
label
:
'AI评分完成'
,
value
:
'3'
},
],
],
},
},
],
],
...
@@ -43,30 +51,74 @@ const listOptions = computed(() => {
...
@@ -43,30 +51,74 @@ const listOptions = computed(() => {
}
}
})
})
// const handleSubmit = () => {
// studentSubmit().then(() => {
// handleRefresh()
// })
// }
const
handleExport
=
()
=>
{
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
handleAIScore
=
async
()
=>
{
console
.
log
(
'AI一键评分'
)
const
res
=
await
getScoreList
({
'per-page'
:
200
,
check_status
:
0
})
const
list
=
res
.
data
.
list
list
.
forEach
(
async
(
item
)
=>
{
const
detailRes
=
await
getScoreDetail
({
id
:
item
.
id
})
const
detail
=
detailRes
.
data
.
detail
const
prompt
=
detail
.
competition_rule
?.
questions
==
1
?
generatePrompt
(
detail
.
live_data
)
:
generatePrompt2
(
detail
.
live_data
)
// 修改为评分中
updateScore
({
id
:
item
.
id
,
check_status
:
1
})
const
result
=
await
generateText
({
prompt
,
response_format
:
{
type
:
'json_object'
}
})
console
.
log
(
result
)
try
{
const
parsed
=
JSON
.
parse
(
result
.
content
)
console
.
log
(
parsed
)
const
totalScore
=
Object
.
values
(
parsed
).
reduce
((
acc
,
curr
)
=>
acc
+
(
curr
.
score
||
0
),
0
)
updateScore
({
id
:
item
.
id
,
check_status
:
3
,
total_score
:
totalScore
.
value
,
score_details
:
JSON
.
stringify
(
parsed
),
}).
then
(()
=>
{
console
.
log
(
'AI评分完成'
)
})
}
catch
(
error
)
{
console
.
log
(
'评分失败'
,
error
)
}
})
}
const
handlePublishScore
=
()
=>
{
publishAll
().
then
(()
=>
{
ElMessage
.
success
(
'发布成绩成功'
)
handleRefresh
()
})
}
useIntervalFn
(()
=>
{
handleRefresh
()
},
5000
)
</
script
>
</
script
>
<
template
>
<
template
>
<AppCard
title=
"成绩管理"
>
<AppCard
title=
"成绩管理"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
>
<template
#
header-buttons
>
<template
#
header-buttons
>
<
!--
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
提交成绩
</el-button>
--
>
<
el-row
justify=
"space-between"
>
<el-button
type=
"primary"
@
click=
"handleExport"
>
导出成绩
</el-button>
<el-button
type=
"primary"
@
click=
"handleExport"
>
导出成绩
</el-button>
<div>
<el-button
type=
"primary"
@
click=
"handleAIScore"
:loading=
"isLoading"
v-if=
"hasAI"
>
AI一键评分
</el-button>
<el-button
type=
"primary"
@
click=
"handlePublishScore"
v-if=
"false"
>
一键发布成绩
</el-button>
</div>
</el-row>
</
template
>
</
template
>
<
template
#
filter-category
>
<
template
#
filter-category
>
<LiveProductCategory
v-model=
"listParams.live_commodity_type_id"
@
change=
"handleRefresh"
></LiveProductCategory>
<LiveProductCategory
v-model=
"listParams.live_commodity_type_id"
@
change=
"handleRefresh"
></LiveProductCategory>
</
template
>
</
template
>
<
template
#
table-x=
"{ row }"
>
<
template
#
table-x=
"{ row }"
>
<el-button
text
type=
"primary"
>
<el-button
text
type=
"primary"
v-if=
"row.check_status != '2'"
>
<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>
</
template
>
</
template
>
...
...
src/modules/
live/
score/views/View.vue
→
src/modules/score/views/View.vue
浏览文件 @
cdf9c380
...
@@ -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
:
'
volcano
'
})
const
{
isLoading
,
generateText
}
=
useChat
({
provider
:
'
siliconflow
'
})
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
().
then
(()
=>
{
commitScore
(
1
).
then
(()
=>
{
ElMessage
.
success
(
'保存成功'
)
ElMessage
.
success
(
'保存成功'
)
})
})
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -96,7 +96,9 @@ const handlePublishScore = () => {
...
@@ -96,7 +96,9 @@ const handlePublishScore = () => {
v-if=
"detail.competition_rule?.competition == 1"
v-if=
"detail.competition_rule?.competition == 1"
>
AI一键评分
</el-button
>
AI一键评分
</el-button
>
>
<el-button
type=
"primary"
:disabled=
"detail.check_status == '2'"
@
click=
"handlePublishScore"
>
发布成绩
</el-button>
<el-button
type=
"primary"
:disabled=
"detail.check_status == '2'"
@
click=
"handlePublishScore"
>
发布成绩
</el-button
>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
class=
"score-box"
>
<div
class=
"score-box"
>
...
...
src/stores/menu.ts
浏览文件 @
cdf9c380
...
@@ -418,7 +418,7 @@ const adminMenus: IMenuItem[] = [
...
@@ -418,7 +418,7 @@ const adminMenus: IMenuItem[] = [
{
id
:
401
,
name
:
'创意策划方案'
,
path
:
'/operations/plan'
,
icon
:
markRaw
(
RiLightbulbLine
)
},
{
id
:
401
,
name
:
'创意策划方案'
,
path
:
'/operations/plan'
,
icon
:
markRaw
(
RiLightbulbLine
)
},
{
id
:
402
,
name
:
'视听运营'
,
path
:
'/operations/audiovisual'
,
icon
:
markRaw
(
RiSoundModuleLine
)
},
{
id
:
402
,
name
:
'视听运营'
,
path
:
'/operations/audiovisual'
,
icon
:
markRaw
(
RiSoundModuleLine
)
},
{
id
:
403
,
name
:
'流量运营'
,
path
:
'/operations/flow'
,
icon
:
markRaw
(
RiLineChartLine
)
},
{
id
:
403
,
name
:
'流量运营'
,
path
:
'/operations/flow'
,
icon
:
markRaw
(
RiLineChartLine
)
},
{
id
:
404
,
name
:
'成绩管理'
,
path
:
'/
live
/score'
,
icon
:
markRaw
(
RiFileChartLine
),
role
:
[
5
,
6
]
},
{
id
:
404
,
name
:
'成绩管理'
,
path
:
'/
operations
/score'
,
icon
:
markRaw
(
RiFileChartLine
),
role
:
[
5
,
6
]
},
],
],
},
},
]
]
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论