Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin-fdc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
admin-fdc
Commits
8ab18457
提交
8ab18457
authored
6月 08, 2022
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: 试卷批阅新增分数和导出
上级
84b843c8
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
302 行增加
和
20 行删除
+302
-20
package-lock.json
package-lock.json
+157
-1
package.json
package.json
+2
-1
ReviewStudents.vue
src/components/ReviewStudents.vue
+45
-8
VueExcelXlsx.vue
src/components/VueExcelXlsx.vue
+96
-0
Index.vue
src/modules/school/review/exam/views/Index.vue
+1
-5
Index.vue
src/modules/school/review/test/views/Index.vue
+1
-5
没有找到文件。
package-lock.json
浏览文件 @
8ab18457
...
...
@@ -15,7 +15,8 @@
"vue"
:
"^2.6.14"
,
"vue-meta"
:
"^2.4.0"
,
"vue-router"
:
"^3.5.4"
,
"vuex"
:
"^3.6.2"
"vuex"
:
"^3.6.2"
,
"xlsx"
:
"^0.18.5"
},
"devDependencies"
:
{
"ali-oss"
:
"^6.17.1"
,
...
...
@@ -1226,6 +1227,14 @@
"node"
:
">= 0.12.0"
}
},
"node_modules/adler-32"
:
{
"version"
:
"1.3.1"
,
"resolved"
:
"https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz"
,
"integrity"
:
"sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/aes-decrypter"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.2.tgz"
,
...
...
@@ -1645,6 +1654,18 @@
}
]
},
"node_modules/cfb"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz"
,
"integrity"
:
"sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA=="
,
"dependencies"
:
{
"adler-32"
:
"~1.3.0"
,
"crc-32"
:
"~1.2.0"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
...
...
@@ -1691,6 +1712,14 @@
"fsevents"
:
"~2.3.2"
}
},
"node_modules/codepage"
:
{
"version"
:
"1.15.0"
,
"resolved"
:
"https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz"
,
"integrity"
:
"sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
...
...
@@ -1784,6 +1813,17 @@
"integrity"
:
"sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
,
"dev"
:
true
},
"node_modules/crc-32"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz"
,
"integrity"
:
"sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
,
"bin"
:
{
"crc32"
:
"bin/crc32.njs"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/cross-spawn"
:
{
"version"
:
"7.0.3"
,
"resolved"
:
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
,
...
...
@@ -3274,6 +3314,14 @@
"pause-stream"
:
"~0.0.11"
}
},
"node_modules/frac"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/frac/-/frac-1.1.2.tgz"
,
"integrity"
:
"sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/fs-extra"
:
{
"version"
:
"10.1.0"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
,
...
...
@@ -5267,6 +5315,17 @@
"integrity"
:
"sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
,
"dev"
:
true
},
"node_modules/ssf"
:
{
"version"
:
"0.11.2"
,
"resolved"
:
"https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz"
,
"integrity"
:
"sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g=="
,
"dependencies"
:
{
"frac"
:
"~1.1.2"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/statuses"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
,
...
...
@@ -6278,6 +6337,22 @@
"semver"
:
"bin/semver"
}
},
"node_modules/wmf"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz"
,
"integrity"
:
"sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/word"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/word/-/word-0.3.0.tgz"
,
"integrity"
:
"sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/word-wrap"
:
{
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
,
...
...
@@ -6293,6 +6368,26 @@
"integrity"
:
"sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
,
"dev"
:
true
},
"node_modules/xlsx"
:
{
"version"
:
"0.18.5"
,
"resolved"
:
"https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz"
,
"integrity"
:
"sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ=="
,
"dependencies"
:
{
"adler-32"
:
"~1.3.0"
,
"cfb"
:
"~1.2.1"
,
"codepage"
:
"~1.15.0"
,
"crc-32"
:
"~1.2.1"
,
"ssf"
:
"~0.11.2"
,
"wmf"
:
"~1.0.1"
,
"word"
:
"~0.3.0"
},
"bin"
:
{
"xlsx"
:
"bin/xlsx.njs"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/xml2js"
:
{
"version"
:
"0.4.23"
,
"resolved"
:
"https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz"
,
...
...
@@ -7235,6 +7330,11 @@
"integrity"
:
"sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA=="
,
"dev"
:
true
},
"adler-32"
:
{
"version"
:
"1.3.1"
,
"resolved"
:
"https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz"
,
"integrity"
:
"sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
},
"aes-decrypter"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.2.tgz"
,
...
...
@@ -7559,6 +7659,15 @@
"integrity"
:
"sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ=="
,
"dev"
:
true
},
"cfb"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz"
,
"integrity"
:
"sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA=="
,
"requires"
:
{
"adler-32"
:
"~1.3.0"
,
"crc-32"
:
"~1.2.0"
}
},
"chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
...
...
@@ -7591,6 +7700,11 @@
"readdirp"
:
"~3.6.0"
}
},
"codepage"
:
{
"version"
:
"1.15.0"
,
"resolved"
:
"https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz"
,
"integrity"
:
"sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
...
...
@@ -7667,6 +7781,11 @@
"integrity"
:
"sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
,
"dev"
:
true
},
"crc-32"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz"
,
"integrity"
:
"sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
},
"cross-spawn"
:
{
"version"
:
"7.0.3"
,
"resolved"
:
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
,
...
...
@@ -8686,6 +8805,11 @@
"pause-stream"
:
"~0.0.11"
}
},
"frac"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/frac/-/frac-1.1.2.tgz"
,
"integrity"
:
"sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
},
"fs-extra"
:
{
"version"
:
"10.1.0"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
,
...
...
@@ -10184,6 +10308,14 @@
"integrity"
:
"sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
,
"dev"
:
true
},
"ssf"
:
{
"version"
:
"0.11.2"
,
"resolved"
:
"https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz"
,
"integrity"
:
"sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g=="
,
"requires"
:
{
"frac"
:
"~1.1.2"
}
},
"statuses"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
,
...
...
@@ -10990,6 +11122,16 @@
}
}
},
"wmf"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz"
,
"integrity"
:
"sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
},
"word"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/word/-/word-0.3.0.tgz"
,
"integrity"
:
"sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
},
"word-wrap"
:
{
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
,
...
...
@@ -11002,6 +11144,20 @@
"integrity"
:
"sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
,
"dev"
:
true
},
"xlsx"
:
{
"version"
:
"0.18.5"
,
"resolved"
:
"https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz"
,
"integrity"
:
"sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ=="
,
"requires"
:
{
"adler-32"
:
"~1.3.0"
,
"cfb"
:
"~1.2.1"
,
"codepage"
:
"~1.15.0"
,
"crc-32"
:
"~1.2.1"
,
"ssf"
:
"~0.11.2"
,
"wmf"
:
"~1.0.1"
,
"word"
:
"~0.3.0"
}
},
"xml2js"
:
{
"version"
:
"0.4.23"
,
"resolved"
:
"https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz"
,
...
...
package.json
浏览文件 @
8ab18457
...
...
@@ -18,7 +18,8 @@
"
vue
"
:
"^2.6.14"
,
"
vue-meta
"
:
"^2.4.0"
,
"
vue-router
"
:
"^3.5.4"
,
"
vuex
"
:
"^3.6.2"
"
vuex
"
:
"^3.6.2"
,
"
xlsx
"
:
"^0.18.5"
},
"devDependencies"
:
{
"
ali-oss
"
:
"^6.17.1"
,
...
...
src/components/ReviewStudents.vue
浏览文件 @
8ab18457
...
...
@@ -2,36 +2,73 @@
<el-dialog
v-bind=
"$attrs"
v-on=
"$listeners"
width=
"600px"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
:label=
"`全部($
{students.length})`" name="0">
<ul>
<VueExcelXlsx
:data=
"students"
:columns=
"exportColumns"
:file-name=
"data.paper_title + '_全部'"
sheet-name=
"全部"
>
<el-button
type=
"primary"
>
导出
</el-button>
</VueExcelXlsx>
<AppList
v-bind=
"tableOptions"
:data=
"students"
>
<template
#
table-action=
"
{ row }">
<el-button
type=
"text"
@
click=
"$emit('studentReview', row)"
>
查看
</el-button>
</
template
>
</AppList>
<!-- <ul>
<li v-for="(student, index) in students" :key="index" @click="$emit('studentReview', student)">
{{ student.name }}
</li>
</ul>
</ul>
-->
</el-tab-pane>
<el-tab-pane
:label=
"`未批阅(${unreviewedStudents.length})`"
name=
"1"
>
<ul>
<VueExcelXlsx
:data=
"unreviewedStudents"
:columns=
"exportColumns"
:file-name=
"data.paper_title + '_未批阅'"
sheet-name=
"未批阅"
>
<el-button
type=
"primary"
>
导出
</el-button>
</VueExcelXlsx>
<AppList
v-bind=
"tableOptions"
:data=
"unreviewedStudents"
>
<
template
#
table-action=
"{ row }"
>
<el-button
type=
"text"
@
click=
"$emit('studentReview', row)"
>
查看
</el-button>
</
template
>
</AppList>
<!-- <ul>
<li v-for="(student, index) in unreviewedStudents" :key="index" @click="$emit('studentReview', student)">
{{ student.name }}
</li>
</ul>
</ul>
-->
</el-tab-pane>
<el-tab-pane
:label=
"`已批阅(${reviewedStudents.length})`"
name=
"2"
>
<ul>
<VueExcelXlsx
:data=
"reviewedStudents"
:columns=
"exportColumns"
:file-name=
"data.paper_title + '_已批阅'"
sheet-name=
"已批阅"
>
<el-button
type=
"primary"
>
导出
</el-button>
</VueExcelXlsx>
<AppList
v-bind=
"tableOptions"
:data=
"reviewedStudents"
>
<
template
#
table-action=
"{ row }"
>
<el-button
type=
"text"
@
click=
"$emit('studentReview', row)"
>
查看
</el-button>
</
template
>
</AppList>
<!-- <ul>
<li v-for="(student, index) in reviewedStudents" :key="index" @click="$emit('studentReview', student)">
{{ student.name }}
</li>
</ul>
</ul>
-->
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<
script
>
import
VueExcelXlsx
from
'@/components/VueExcelXlsx.vue'
export
default
{
props
:
{
students
:
{
type
:
Array
,
default
:
()
=>
[]
}
},
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
({})
},
students
:
{
type
:
Array
,
default
:
()
=>
[]
}
},
components
:
{
VueExcelXlsx
},
data
()
{
return
{
activeName
:
'0'
activeName
:
'0'
,
tableOptions
:
{
columns
:
[
{
label
:
'姓名'
,
prop
:
'name'
},
{
label
:
'分数'
,
prop
:
'score'
},
{
label
:
'操作'
,
align
:
'right'
,
slots
:
'table-action'
}
]
},
exportColumns
:
[
{
label
:
'姓名'
,
field
:
'name'
},
{
label
:
'分数'
,
field
:
'score'
}
]
}
},
computed
:
{
...
...
src/components/VueExcelXlsx.vue
0 → 100644
浏览文件 @
8ab18457
<
template
>
<span
@
click=
"exportExcel"
>
<slot></slot>
</span>
</
template
>
<
script
>
import
XLSX
from
'xlsx'
export
default
{
name
:
'vue-excel-xlsx'
,
props
:
{
columns
:
{
type
:
Array
,
default
:
()
=>
[]
},
data
:
{
type
:
Array
,
default
:
()
=>
[]
},
fileName
:
{
type
:
String
,
default
:
'excel'
},
sheetName
:
{
type
:
String
,
default
:
'SheetName'
},
fileType
:
{
type
:
String
,
default
:
'xlsx'
,
validator
:
val
=>
[
'xlsx'
,
'xls'
].
includes
(
val
)
}
},
methods
:
{
exportExcel
()
{
const
createXLSLFormatObj
=
[]
const
newXlsHeader
=
[]
const
vm
=
this
if
(
vm
.
columns
.
length
===
0
)
{
console
.
log
(
'Add columns!'
)
return
}
if
(
vm
.
data
.
length
===
0
)
{
this
.
$message
.
error
(
'无数据'
)
console
.
log
(
'Add data!'
)
return
}
vm
.
columns
.
forEach
(
column
=>
{
newXlsHeader
.
push
(
column
.
label
)
})
createXLSLFormatObj
.
push
(
newXlsHeader
)
vm
.
data
.
forEach
(
value
=>
{
const
innerRowData
=
[]
vm
.
columns
.
forEach
(
val
=>
{
let
fieldValue
=
value
[
val
.
field
]
if
(
val
.
field
.
split
(
'.'
).
length
>
1
)
{
fieldValue
=
this
.
getNestedValue
(
value
,
val
.
field
)
}
if
(
val
.
dataFormat
&&
typeof
val
.
dataFormat
===
'function'
)
{
innerRowData
.
push
(
val
.
dataFormat
(
fieldValue
))
}
else
{
innerRowData
.
push
(
fieldValue
)
}
})
createXLSLFormatObj
.
push
(
innerRowData
)
})
const
fileName
=
vm
.
fileName
+
'.'
+
vm
.
fileType
const
wsName
=
vm
.
sheetName
const
wb
=
XLSX
.
utils
.
book_new
()
const
ws
=
XLSX
.
utils
.
aoa_to_sheet
(
createXLSLFormatObj
)
XLSX
.
utils
.
book_append_sheet
(
wb
,
ws
,
wsName
)
XLSX
.
writeFile
(
wb
,
fileName
)
},
getNestedValue
(
object
,
string
)
{
string
=
string
.
replace
(
/
\[(\w
+
)\]
/g
,
'.$1'
)
string
=
string
.
replace
(
/^
\.
/
,
''
)
const
a
=
string
.
split
(
'.'
)
for
(
let
i
=
0
,
n
=
a
.
length
;
i
<
n
;
++
i
)
{
const
k
=
a
[
i
]
if
(
k
in
object
)
{
object
=
object
[
k
]
}
else
{
return
}
}
return
object
}
}
}
</
script
>
src/modules/school/review/exam/views/Index.vue
浏览文件 @
8ab18457
...
...
@@ -5,11 +5,7 @@
<el-link
type=
"primary"
>
{{
row
.
paper_title
}}
</el-link>
</
template
>
</app-list>
<review-students
@
studentReview=
"studentReview"
:visible
.
sync=
"visible"
:students=
"currentClickRow.students"
></review-students>
<review-students
@
studentReview=
"studentReview"
:visible
.
sync=
"visible"
:data=
"currentClickRow"
:students=
"currentClickRow.students"
></review-students>
</app-card>
</template>
...
...
src/modules/school/review/test/views/Index.vue
浏览文件 @
8ab18457
...
...
@@ -5,11 +5,7 @@
<el-link
type=
"primary"
>
{{
row
.
paper_title
}}
</el-link>
</
template
>
</app-list>
<review-students
@
studentReview=
"studentReview"
:visible
.
sync=
"visible"
:students=
"currentClickRow.students"
></review-students>
<review-students
@
studentReview=
"studentReview"
:data=
"currentClickRow"
:visible
.
sync=
"visible"
:students=
"currentClickRow.students"
></review-students>
</app-card>
</template>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论