Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-resource
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-resource
Commits
55d41116
提交
55d41116
authored
3月 23, 2026
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 案例授权新增其他资料
上级
31b99a78
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
29 行增加
和
12 行删除
+29
-12
useCaseAuthorization.ts
src/modules/case-auth/composables/useCaseAuthorization.ts
+21
-10
types.ts
src/modules/case-auth/types.ts
+1
-1
Index.vue
src/modules/case-auth/views/Index.vue
+7
-1
没有找到文件。
src/modules/case-auth/composables/useCaseAuthorization.ts
浏览文件 @
55d41116
...
...
@@ -24,6 +24,7 @@ const caseFileTypeMap: Record<CaseFileSelectionType, string> = {
book
:
'3'
,
video
:
'4'
,
dataset
:
'5'
,
other
:
'6'
,
}
const
caseFileSectionConfig
:
Array
<
{
...
...
@@ -36,10 +37,11 @@ const caseFileSectionConfig: Array<{
{
key
:
'book'
,
title
:
'案例指导书'
,
emptyText
:
'暂无案例指导书'
},
{
key
:
'video'
,
title
:
'案例操作视频'
,
emptyText
:
'暂无案例操作视频'
},
{
key
:
'dataset'
,
title
:
'案例数据集'
,
emptyText
:
'暂无案例数据集'
},
{
key
:
'other'
,
title
:
'其他资料'
,
emptyText
:
'暂无其他资料'
},
]
const
experimentSupportedTypes
=
new
Set
<
CaseFileSelectionType
>
([
'case'
,
'book'
,
'video'
])
const
resourceSupportedTypes
=
new
Set
<
CaseFileSelectionType
>
([
'ppt'
,
'book'
,
'video'
,
'dataset'
])
const
resourceSupportedTypes
=
new
Set
<
CaseFileSelectionType
>
([
'ppt'
,
'book'
,
'video'
,
'dataset'
,
'other'
])
function
createEmptySelections
():
Record
<
CaseFileSelectionType
,
string
[]
>
{
return
{
...
...
@@ -48,6 +50,7 @@ function createEmptySelections(): Record<CaseFileSelectionType, string[]> {
book
:
[],
video
:
[],
dataset
:
[],
other
:
[],
}
}
...
...
@@ -56,9 +59,11 @@ function getMimeType(fileName: string) {
const
mimeMap
:
Record
<
string
,
string
>
=
{
doc
:
'application/msword'
,
docx
:
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
,
html
:
'text/html'
,
pdf
:
'application/pdf'
,
ppt
:
'application/vnd.ms-powerpoint'
,
pptx
:
'application/vnd.openxmlformats-officedocument.presentationml.presentation'
,
txt
:
'text/plain'
,
xls
:
'application/vnd.ms-excel'
,
xlsx
:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
,
csv
:
'text/csv'
,
...
...
@@ -75,6 +80,10 @@ function getFileNameWithoutExt(fileName: string) {
return
fileName
.
replace
(
/
\.[^
.
]
+$/
,
''
)
}
function
getAuthorizedName
(
caseName
:
string
,
fileName
:
string
)
{
return
`
${
caseName
}
-
${
getFileNameWithoutExt
(
fileName
)}
`
}
function
getFilesByType
(
files
:
CaseLibraryItem
[
'files'
],
type
:
string
)
{
return
files
.
filter
((
file
)
=>
file
.
type
===
type
)
}
...
...
@@ -158,6 +167,7 @@ export function useCaseAuthorization() {
book
:
getFilesByType
(
files
,
caseFileTypeMap
.
book
),
video
:
getFilesByType
(
files
,
caseFileTypeMap
.
video
),
dataset
:
getFilesByType
(
files
,
caseFileTypeMap
.
dataset
),
other
:
getFilesByType
(
files
,
caseFileTypeMap
.
other
),
}
})
...
...
@@ -342,7 +352,8 @@ export function useCaseAuthorization() {
try
{
for
(
let
index
=
0
;
index
<
actionableItems
.
length
;
index
+=
1
)
{
const
item
=
actionableItems
[
index
]
const
{
type
,
file
,
authorizeToExperiment
,
authorizeToResource
}
=
item
const
{
row
,
type
,
file
,
authorizeToExperiment
,
authorizeToResource
}
=
item
const
authorizedName
=
getAuthorizedName
(
row
.
name
,
file
.
name
)
setStepProgress
(
index
,
actionableItems
.
length
,
0.05
,
`准备处理
${
index
+
1
}
/
${
actionableItems
.
length
}
:
${
file
.
name
}
`
)
if
(
type
===
'video'
)
{
...
...
@@ -352,7 +363,7 @@ export function useCaseAuthorization() {
setStepProgress
(
index
,
actionableItems
.
length
,
0.98
,
`正在创建实验操作视频:
${
file
.
name
}
`
)
await
createVideo
({
experiment_id
:
selectedExperiment
.
value
,
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
source_id
:
sourceId
,
status
:
'1'
,
})
...
...
@@ -362,7 +373,7 @@ export function useCaseAuthorization() {
if
(
authorizeToResource
)
{
setStepProgress
(
index
,
actionableItems
.
length
,
0.98
,
`正在创建统一资源视频:
${
file
.
name
}
`
)
await
createResourceVideo
({
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
source
:
'2'
,
classification
:
resourceClassification
.
value
,
knowledge_points
:
''
,
...
...
@@ -382,7 +393,7 @@ export function useCaseAuthorization() {
setStepProgress
(
index
,
actionableItems
.
length
,
0.95
,
`正在创建实验案例原文:
${
file
.
name
}
`
)
await
createCase
({
experiment_id
:
selectedExperiment
.
value
,
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
type
:
getMimeType
(
file
.
name
),
url
:
uploadedFile
.
url
,
size
:
(
uploadedFile
.
file
.
size
/
1024
/
1024
).
toString
(),
...
...
@@ -394,7 +405,7 @@ export function useCaseAuthorization() {
if
(
type
===
'ppt'
&&
authorizeToResource
)
{
setStepProgress
(
index
,
actionableItems
.
length
,
0.95
,
`正在创建统一资源课件:
${
file
.
name
}
`
)
await
createResourceCourseware
({
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
source
:
'2'
,
classification
:
resourceClassification
.
value
,
knowledge_points
:
''
,
...
...
@@ -410,7 +421,7 @@ export function useCaseAuthorization() {
setStepProgress
(
index
,
actionableItems
.
length
,
0.95
,
`正在创建实验案例指导书:
${
file
.
name
}
`
)
await
createBook
({
experiment_id
:
selectedExperiment
.
value
,
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
type
:
getMimeType
(
file
.
name
),
url
:
uploadedFile
.
url
,
size
:
(
uploadedFile
.
file
.
size
/
1024
/
1024
).
toString
(),
...
...
@@ -422,7 +433,7 @@ export function useCaseAuthorization() {
if
(
authorizeToResource
)
{
setStepProgress
(
index
,
actionableItems
.
length
,
0.97
,
`正在创建统一资源教案:
${
file
.
name
}
`
)
await
createResourceLessonPlan
({
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
source
:
'2'
,
classification
:
resourceClassification
.
value
,
knowledge_points
:
''
,
...
...
@@ -434,10 +445,10 @@ export function useCaseAuthorization() {
}
}
if
(
type
===
'dataset'
&&
authorizeToResource
)
{
if
(
(
type
===
'dataset'
||
type
===
'other'
)
&&
authorizeToResource
)
{
setStepProgress
(
index
,
actionableItems
.
length
,
0.95
,
`正在创建统一资源其他资料:
${
file
.
name
}
`
)
await
createResourceOther
({
name
:
getFileNameWithoutExt
(
file
.
name
)
,
name
:
authorizedName
,
source
:
'2'
,
classification
:
resourceClassification
.
value
,
knowledge_points
:
''
,
...
...
src/modules/case-auth/types.ts
浏览文件 @
55d41116
...
...
@@ -19,7 +19,7 @@ export interface CaseLibraryItem {
updated_at
:
string
}
export
type
CaseFileSelectionType
=
'case'
|
'ppt'
|
'book'
|
'video'
|
'dataset'
export
type
CaseFileSelectionType
=
'case'
|
'ppt'
|
'book'
|
'video'
|
'dataset'
|
'other'
export
type
AuthorizePlatform
=
'resource'
|
'experiment'
...
...
src/modules/case-auth/views/Index.vue
浏览文件 @
55d41116
...
...
@@ -92,6 +92,7 @@ const {
<div>
3、案例PPT -> 统一资源平台:课件
</div>
<div>
4、案例操作视频 -> 统一资源平台:视频;实操平台:实验操作视频
</div>
<div>
5、案例数据集 -> 统一资源平台:其他资料
</div>
<div>
6、其他资料 -> 统一资源平台:其他资料
</div>
</div>
</el-alert>
...
...
@@ -244,10 +245,13 @@ const {
}
.
case
-
card__desc
{
min
-
height
:
44
px
;
font
-
size
:
14
px
;
line
-
height
:
1.6
;
color
:
var
(
--
el
-
text
-
color
-
regular
);
display
:
-
webkit
-
box
;
overflow
:
hidden
;
-
webkit
-
box
-
orient
:
vertical
;
-
webkit
-
line
-
clamp
:
3
;
}
.
case
-
card__meta
{
...
...
@@ -269,6 +273,8 @@ const {
background
:
var
(
--
el
-
fill
-
color
-
light
);
border
-
radius
:
8
px
;
min
-
height
:
180
px
;
max
-
height
:
360
px
;
overflow
-
y
:
auto
;
}
.
case
-
auth
-
section
--
disabled
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论