Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
admin-base
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
new-sing
admin-base
Commits
68cef85c
Commit
68cef85c
authored
Sep 02, 2019
by
赵茹林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加班级 修复 班级名不能修改的问题
parent
c06f6762
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
5 additions
and
1 deletion
+5
-1
index.html
dist/index.html
+1
-1
app.0231ea7709bfe761e4429120244413c1.css
dist/static/css/app.0231ea7709bfe761e4429120244413c1.css
+1
-0
21.1bb961e08620e9ac1308.js
dist/static/js/21.1bb961e08620e9ac1308.js
+1
-0
manifest.5db3fda62ecbfe5b9ed8.js
dist/static/js/manifest.5db3fda62ecbfe5b9ed8.js
+1
-0
dialog.vue
src/components/class/dialog.vue
+1
-0
No files found.
dist/index.html
View file @
68cef85c
<!DOCTYPE html>
<html><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"width=device-width,initial-scale=1"
><meta
name=
referrer
content=
never
><link
rel=
stylesheet
href=
https://at.alicdn.com/t/font_746649_x1rivf5f5.css
><link
rel=
stylesheet
href=
https://lib.baomitu.com/element-ui/2.11.1/theme-chalk/index.css
><title>
唱唱启蒙-后台
</title><link
href=
/static/css/app.
9837cb19aa9d12ebde6f0a41bd7e9eab.css
rel=
stylesheet
></head><body><script
src=
https://lib.baomitu.com/vue/2.5.17/vue.js
></script><script
src=
https://lib.baomitu.com/vuex/3.0.1/vuex.min.js
></script><script
src=
https://lib.baomitu.com/axios/0.18.0/axios.min.js
></script><script
src=
https://lib.baomitu.com/element-ui/2.11.1/index.js
></script><div
id=
app
></div><script
type=
text/javascript
src=
/static/js/manifest.34cc2dfdf6577922d444
.js
></script><script
type=
text/javascript
src=
/static/js/vendor.67bcaac7027a9ca0cb5c.js
></script><script
type=
text/javascript
src=
/static/js/app.bd537766d8d662b95a8d.js
></script></body><script>
let
el
=
document
.
getElementsByTagName
(
"script"
);
<!DOCTYPE html>
<html><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"width=device-width,initial-scale=1"
><meta
name=
referrer
content=
never
><link
rel=
stylesheet
href=
https://at.alicdn.com/t/font_746649_x1rivf5f5.css
><link
rel=
stylesheet
href=
https://lib.baomitu.com/element-ui/2.11.1/theme-chalk/index.css
><title>
唱唱启蒙-后台
</title><link
href=
/static/css/app.
0231ea7709bfe761e4429120244413c1.css
rel=
stylesheet
></head><body><script
src=
https://lib.baomitu.com/vue/2.5.17/vue.js
></script><script
src=
https://lib.baomitu.com/vuex/3.0.1/vuex.min.js
></script><script
src=
https://lib.baomitu.com/axios/0.18.0/axios.min.js
></script><script
src=
https://lib.baomitu.com/element-ui/2.11.1/index.js
></script><div
id=
app
></div><script
type=
text/javascript
src=
/static/js/manifest.5db3fda62ecbfe5b9ed8
.js
></script><script
type=
text/javascript
src=
/static/js/vendor.67bcaac7027a9ca0cb5c.js
></script><script
type=
text/javascript
src=
/static/js/app.bd537766d8d662b95a8d.js
></script></body><script>
let
el
=
document
.
getElementsByTagName
(
"script"
);
el
.
onerror
=
function
(
a
,
b
,
c
){
el
.
onerror
=
function
(
a
,
b
,
c
){
console
.
log
(
'error:'
,
a
,
b
,
c
);
console
.
log
(
'error:'
,
a
,
b
,
c
);
};
};
...
...
dist/static/css/app.0231ea7709bfe761e4429120244413c1.css
0 → 100644
View file @
68cef85c
This source diff could not be displayed because it is too large. You can
view the blob
instead.
dist/static/js/21.1bb961e08620e9ac1308.js
0 → 100644
View file @
68cef85c
webpackJsonp
([
21
],{
"+UvB"
:
function
(
e
,
t
){},
"1zqz"
:
function
(
e
,
t
){},
OX9A
:
function
(
e
,
t
,
i
){
"use strict"
;
Object
.
defineProperty
(
t
,
"__esModule"
,{
value
:
!
0
});
var
s
=
i
(
"CCn6"
),
o
=
i
(
"+TkF"
),
n
=
{
props
:[
"dialogObj"
],
data
:
function
(){
return
{
imageList
:[],
form
:{
teacher_id
:
""
,
max_join_num
:
""
,
class_name
:
""
,
source
:
""
,
qr
:
""
},
type
:
0
,
classSource
:[],
teacherList
:[],
exitTeacherList
:[],
goodsList
:[],
periods
:{},
uploadShow
:
!
0
}},
methods
:{
beforeAvatarUpload
:
function
(){
this
.
uploadShow
=!
1
},
handleRemove
:
function
(){
this
.
uploadShow
=!
0
},
handleAvatarSuccess
:
function
(
e
){
this
.
imageList
=
[{
name
:
e
.
data
.
url
,
url
:
"https://cdn.singsingenglish.com/"
+
e
.
data
.
url
}]},
uploadFile
:
function
(
e
){
var
t
=
this
;
this
.
loading
=!
0
,
this
.
$store
.
dispatch
(
"setProgress"
,{
type
:
"new"
,
id
:
e
.
file
.
uid
}),
this
.
fileUid
=
e
.
file
.
uid
,
Object
(
s
.
_196
)({
file
:
e
.
file
,
type
:
"all"
}).
then
(
function
(
e
){
t
.
form
.
media_id
=
e
.
wechat_info
?
e
.
wechat_info
.
media_id
:
""
,
t
.
imageList
=
[{
name
:
e
.
url
,
url
:
"https://cdn.singsingenglish.com/"
+
e
.
url
}],
t
.
uploadShow
=!
1
,
t
.
loading
=!
1
,
t
.
$message
({
type
:
"success"
,
message
:
"上传成功!"
})}).
catch
(
function
(){
t
.
loading
=!
1
})},
findDifferentArray
:
function
(
e
,
t
){
var
i
=
[];
return
e
.
forEach
(
function
(
e
){
-
1
===
t
.
findIndex
(
function
(
t
){
return
t
.
teacher_id
===
e
.
id
})
&&
i
.
push
(
e
)}),
i
},
getTeacher
:
function
(){
var
e
=
this
;
Object
(
s
.
_113
)({
limit
:
100
,
status
:
0
}).
then
(
function
(
t
){
e
.
teacherList
=
t
.
list
})},
getTeacherByPeriods
:
function
(){
var
e
=
this
;
Object
(
s
.
_113
)({
limit
:
100
,
status
:
0
}).
then
(
function
(
t
){
e
.
teacherList
=
t
.
list
})},
initPage
:
function
(){
var
e
=
this
;
switch
(
Object
(
s
.
_97
)().
then
(
function
(
t
){
e
.
classSource
=
t
}),
this
.
periods
=
this
.
dialogObj
.
periods
,
this
.
dialogObj
.
type
){
case
0
:
this
.
dialogObj
.
periodsId
||
this
.
getPeriodList
(),
this
.
form
=
{
teacher_id
:
""
,
max_join_num
:
""
,
class_name
:
""
,
source
:
""
,
qr
:
""
},
this
.
type
=
0
,
this
.
uploadShow
=!
0
,
this
.
getTeacher
();
break
;
case
1
:
this
.
type
=
1
,
Object
(
s
.
_46
)(
this
.
dialogObj
.
id
).
then
(
function
(
t
){
e
.
form
=
{
teacher_id
:
parseInt
(
t
.
teacher_id
),
max_join_num
:
t
.
max_join_num
,
class_name
:
t
.
class_name
,
source
:
t
.
source
},
t
.
qr
&&
(
e
.
form
.
qr
=
t
.
qr
,
e
.
imageList
=
[{
name
:
t
.
qr
,
url
:
t
.
qr
}]),
e
.
form
.
media_id
=
t
.
media_id
?
t
.
media_id
:
""
,
e
.
uploadShow
=!
t
.
qr
,
console
.
log
(
e
.
uploadShow
),
e
.
getTeacher
()})}},
getPeriodList
:
function
(){
var
e
=
this
;
Object
(
s
.
_61
)().
then
(
function
(
t
){
t
.
list
.
forEach
(
function
(
e
){
e
.
name
=
"["
+
o
.
g
[
e
.
goods_type
]
+
"]["
+
e
.
current_price
/
100
+
"元]"
+
e
.
name
,
e
.
children
=
[]}),
e
.
goodsList
=
t
.
list
,
e
.
periods
||
Object
(
s
.
_77
)({
goods_id
:
e
.
goodsList
[
0
].
id
}).
then
(
function
(
t
){
t
.
list
.
forEach
(
function
(
e
){
e
.
name
=
e
.
title
}),
e
.
goodsList
[
0
].
children
=
t
.
list
,
e
.
periods
=
t
.
list
[
0
]})})},
onSave
:
function
(){
var
e
=
this
;
this
.
imageList
.
length
>
0
&&
(
this
.
form
.
qr
=
this
.
imageList
[
0
].
url
);
var
t
=
{
max_join_num
:
String
(
this
.
form
.
max_join_num
),
teacher_id
:
String
(
this
.
form
.
teacher_id
),
source
:
this
.
form
.
source
,
class_name
:
this
.
form
.
class_name
,
media_id
:
this
.
form
.
media_id
};
switch
(
this
.
form
.
qr
&&
(
t
.
qr
=
this
.
form
.
qr
),
console
.
log
(
t
),
this
.
dialogObj
.
type
){
case
0
:
var
i
=
this
.
dialogObj
.
periodsId
?
this
.
dialogObj
.
periodsId
:
this
.
periods
.
id
;
Object
(
s
.
g
)(
i
,
t
).
then
(
function
(
t
){
e
.
$message
({
type
:
"success"
,
message
:
"添加成功!"
}),
e
.
$emit
(
"reflash"
,
e
.
periods
),
e
.
dialogObj
.
show
=!
1
});
break
;
case
1
:
Object
(
s
.
_10
)(
this
.
dialogObj
.
id
,
t
).
then
(
function
(
t
){
e
.
$message
({
type
:
"success"
,
message
:
"修改成功!"
}),
e
.
$emit
(
"reflash"
,
e
.
periods
),
e
.
dialogObj
.
show
=!
1
})}},
handleItemChange
:
function
(
e
){
var
t
=
this
;
Object
(
s
.
_77
)({
goods_id
:
e
[
0
]}).
then
(
function
(
i
){
i
.
list
.
forEach
(
function
(
e
){
e
.
name
=
e
.
title
}),
t
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
[
0
]}).
children
=
i
.
list
})},
changePeriods
:
function
(
e
){
if
(
e
.
length
>
1
){
var
t
=
this
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
[
0
]});
this
.
periods
=
t
.
children
.
find
(
function
(
t
){
return
t
.
id
===
e
[
1
]}),
this
.
getTeacherByPeriods
()}},
selectName
:
function
(
e
,
t
){
var
i
=
e
.
filter
(
function
(
e
,
i
){
return
e
.
id
==
t
});
this
.
form
.
class_name
=
i
[
0
].
name
+
"一班"
}},
watch
:{
"dialogObj.show"
:
function
(
e
){
e
&&
this
.
initPage
()}}},
a
=
{
render
:
function
(){
var
e
=
this
,
t
=
e
.
$createElement
,
i
=
e
.
_self
.
_c
||
t
;
return
i
(
"el-dialog"
,{
attrs
:{
title
:
e
.
dialogObj
.
title
,
visible
:
e
.
dialogObj
.
show
},
on
:{
"update:visible"
:
function
(
t
){
e
.
$set
(
e
.
dialogObj
,
"show"
,
t
)}}},[
i
(
"el-form"
,{
ref
:
"form"
,
attrs
:{
model
:
e
.
form
,
"label-width"
:
"120px"
}},[
this
.
dialogObj
.
periodsId
?
e
.
_e
():
i
(
"el-form-item"
,{
attrs
:{
label
:
"期数"
}},[
i
(
"el-cascader"
,{
staticClass
:
"refresh-cascader-multi width-480"
,
staticStyle
:{
width
:
"480px"
},
attrs
:{
options
:
e
.
goodsList
,
props
:{
value
:
"id"
,
label
:
"name"
}},
on
:{
"active-item-change"
:
e
.
handleItemChange
,
change
:
e
.
changePeriods
}})],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
attrs
:{
label
:
"老师"
}},[
i
(
"el-select"
,{
attrs
:{
placeholder
:
"请选择"
,
filterable
:
""
},
on
:{
change
:
function
(
t
){
e
.
selectName
(
e
.
teacherList
,
e
.
form
.
teacher_id
)}},
model
:{
value
:
e
.
form
.
teacher_id
,
callback
:
function
(
t
){
e
.
$set
(
e
.
form
,
"teacher_id"
,
t
)},
expression
:
"form.teacher_id"
}},
e
.
_l
(
e
.
teacherList
,
function
(
e
,
t
){
return
i
(
"el-option"
,{
key
:
t
,
attrs
:{
label
:
e
.
name
,
value
:
e
.
id
}})}))],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
attrs
:{
label
:
"班级名称"
}},[
i
(
"el-input"
,{
staticStyle
:{
width
:
"220px"
},
model
:{
value
:
e
.
form
.
class_name
,
callback
:
function
(
t
){
e
.
$set
(
e
.
form
,
"class_name"
,
t
)},
expression
:
"form.class_name"
}})],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
attrs
:{
label
:
"最大学员"
}},[
i
(
"el-input-number"
,{
model
:{
value
:
e
.
form
.
max_join_num
,
callback
:
function
(
t
){
e
.
$set
(
e
.
form
,
"max_join_num"
,
t
)},
expression
:
"form.max_join_num"
}})],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
attrs
:{
label
:
"活动方案"
}},[
i
(
"el-select"
,{
staticStyle
:{
width
:
"480px"
},
attrs
:{
placeholder
:
"请选择"
,
filterable
:
""
,
"popper-class"
:
"refresh-select-multi width-480"
},
model
:{
value
:
e
.
form
.
source
,
callback
:
function
(
t
){
e
.
$set
(
e
.
form
,
"source"
,
t
)},
expression
:
"form.source"
}},
e
.
_l
(
e
.
classSource
,
function
(
e
,
t
){
return
i
(
"el-option"
,{
key
:
t
,
attrs
:{
label
:
e
.
name
,
value
:
e
.
type
}})}))],
1
)],
1
),
e
.
_v
(
" "
),
i
(
"span"
,{
staticClass
:
"dialog-footer"
,
attrs
:{
slot
:
"footer"
},
slot
:
"footer"
},[
i
(
"el-button"
,{
on
:{
click
:
function
(
t
){
e
.
dialogObj
.
show
=!
1
}}},[
e
.
_v
(
"取 消"
)]),
e
.
_v
(
" "
),
i
(
"el-button"
,{
attrs
:{
type
:
"primary"
},
on
:{
click
:
e
.
onSave
}},[
e
.
_v
(
"确 定"
)])],
1
)],
1
)},
staticRenderFns
:[]};
var
r
=
i
(
"VU/8"
)(
n
,
a
,
!
1
,
function
(
e
){
i
(
"wuOD"
)},
"data-v-438b4e3a"
,
null
).
exports
,
l
=
i
(
"0qGg"
),
c
=
i
(
"kmJW"
),
d
=
i
(
"Ix4X"
),
u
=
{},
h
=
{
data
:
function
(){
return
{
noticeDialog
:
!
1
,
nowPage
:
1
,
total
:
0
,
limit
:
10
,
periodsId
:
null
,
goods_id
:
null
,
goodsList
:[],
teacher_id
:
""
,
classList
:[],
title
:
""
,
countObj
:
""
,
teacherList
:[],
userObj
:{
classId
:
""
,
title
:
""
,
show
:
!
1
,
goods_id
:
null
},
dialogObj
:{
show
:
!
1
,
title
:
"添加班级"
,
periodsId
:
""
,
type
:
0
,
id
:
0
},
selectedGoods
:[],
secGoods
:[]}},
components
:{
UserList
:
l
.
a
,
classDialog
:
r
,
page
:
c
.
a
},
filters
:{
classTypeFilter
:
function
(
e
){
var
t
=
parseInt
(
e
);
return
1
===
t
?
"带班班级"
:
2
===
t
?
"观摩班级"
:
""
},
classSourceFilter
:
function
(
e
){
return
u
[
e
]},
percent
:
function
(
e
){
return
(
100
*
e
).
toFixed
(
2
)
+
"%"
}},
computed
:{
periodName
:
function
(){
return
this
.
selectedGoods
.
length
?
"【"
+
this
.
selectedGoods
[
0
]
+
"】"
+
this
.
title
.
title
+
this
.
title
.
watch_num
+
"课时("
+
this
.
title
.
start_at
.
slice
(
5
).
replace
(
"-"
,
""
)
+
")-d"
+
this
.
title
.
has_watch_num
:
""
}},
mounted
:
function
(){
this
.
initPage
()},
methods
:{
rendertip
:
function
(
e
,
t
){
var
i
=
t
.
column
;
return
e
(
"span"
,[
e
(
"span"
,
i
.
label
),
e
(
"el-tooltip"
,{
props
:{
effect
:
"dark"
,
content
:
d
.
a
[
i
.
label
],
placement
:
"top"
}},[
e
(
"i"
,{
class
:
"el-icon-question"
,
style
:
"color:#409eff;display:block;"
})])])},
sendMsg
:
function
(){
var
e
=
this
;
this
.
title
&&
this
.
title
.
title
?
this
.
$confirm
(
"你将发送给"
+
this
.
title
.
title
+
"用户"
,
"提示"
,{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}).
then
(
function
(){
Object
(
s
.
_142
)(
e
.
periods
.
id
).
then
(
function
(
t
){
e
.
noticeDialog
=!
1
,
e
.
$message
({
type
:
"success"
,
message
:
"发送成功"
+
t
.
num
+
"个"
})})}):
this
.
$message
({
message
:
"请选择期数"
})},
changeRow
:
function
(
e
,
t
){
t
.
indexOf
(
e
)
>-
1
&&
Object
(
s
.
_48
)(
e
.
periods_id
,
e
.
id
).
then
(
function
(
t
){
e
.
arrive_course_rate
=
t
.
arrive_course_rate
,
e
.
watch_course_rate
=
t
.
watch_course_rate
,
e
.
over_course_rate
=
t
.
over_course_rate
,
e
.
work_rate
=
t
.
work_rate
,
e
.
over_work_rate
=
t
.
over_work_rate
,
e
.
clock_rate
=
t
.
clock_rate
,
e
.
over_clock_rate
=
t
.
over_clock_rate
,
e
.
transform_rate
=
t
.
transform_rate
})},
initQuery
:
function
(){
var
e
=
this
,
t
=
this
.
$route
.
query
;
t
&&
t
.
goods_id
&&
t
.
periods_id
?(
this
.
goods_id
=
t
.
goods_id
,
this
.
selectedGoods
=
[
parseInt
(
t
.
goods_id
),
parseInt
(
t
.
periods_id
)],
Object
(
s
.
_77
)({
goods_id
:
this
.
selectedGoods
[
0
],
limit
:
100
}).
then
(
function
(
t
){
t
.
list
.
forEach
(
function
(
e
){
e
.
name
=
e
.
title
}),
e
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
0
]}).
children
=
t
.
list
;
var
i
=
e
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
0
]});
e
.
periods
=
i
.
children
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
1
]}),
console
.
log
(
e
.
periods
),
e
.
teacher_id
=
""
,
e
.
getClassList
()})):
Object
(
s
.
_53
)().
then
(
function
(
t
){
console
.
log
(
t
),
t
&&
(
e
.
goods_id
=
t
.
goods_id
,
e
.
selectedGoods
=
[
parseInt
(
t
.
goods_id
),
parseInt
(
t
.
id
)],
Object
(
s
.
_77
)({
goods_id
:
e
.
selectedGoods
[
0
],
limit
:
100
}).
then
(
function
(
t
){
t
.
list
.
forEach
(
function
(
e
){
e
.
name
=
e
.
title
}),
e
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
0
]}).
children
=
t
.
list
;
var
i
=
e
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
0
]});
e
.
periods
=
i
.
children
.
find
(
function
(
t
){
return
t
.
id
===
e
.
selectedGoods
[
1
]}),
e
.
teacher_id
=
""
,
console
.
log
(
e
.
periods
),
e
.
getClassList
()}))}),
console
.
log
(
this
.
goodsList
)},
initPage
:
function
(){
var
e
=
this
;
Object
(
s
.
_97
)().
then
(
function
(
e
){
var
t
=
{};
e
.
forEach
(
function
(
e
,
i
){
t
[
e
.
type
]
=
e
.
name
}),
u
=
t
,
console
.
log
(
t
)}),
Object
(
s
.
_61
)({
page
:
1
,
limit
:
100
,
goods_type
:
"1,2"
}).
then
(
function
(
t
){
console
.
log
(
t
),
t
.
list
.
forEach
(
function
(
e
){
e
.
name
=
"["
+
e
.
id
+
"]["
+
o
.
g
[
e
.
goods_type
]
+
"]["
+
e
.
current_price
/
100
+
"元]"
+
e
.
name
,
e
.
children
=
[]}),
e
.
goodsList
=
t
.
list
,
e
.
initQuery
()})},
showUser
:
function
(
e
){
var
t
=
1
==
e
.
type
?
"(带班班级)"
:
"(观摩班级)"
;
console
.
log
(
e
),
this
.
userObj
=
{
classId
:
e
.
id
,
periods_id
:
e
.
periods_id
,
show
:
!
0
,
goods_id
:
this
.
goods_id
,
title
:
e
.
teacher_name
+
"班级用户列表"
+
t
,
teacherId
:
e
.
teacher_id
,
class_name
:
e
.
class_name
,
type
:
e
.
type
,
watch_num
:
this
.
title
.
watch_num
},
console
.
log
(
this
.
userObj
)},
getTeacher
:
function
(){
var
e
=
this
;
this
.
periods
&&
Object
(
s
.
_82
)(
this
.
periods
.
id
).
then
(
function
(
t
){
var
i
=
{};
t
=
t
.
reduce
(
function
(
e
,
t
){
return
!
i
[
t
.
teacher_id
]
&&
(
i
[
t
.
teacher_id
]
=
e
.
push
(
t
)),
e
},[]),
e
.
teacherList
=
t
})},
changePeriods
:
function
(
e
){
if
(
e
.
length
>
1
){
this
.
goods_id
=
e
[
0
];
var
t
=
this
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
[
0
]});
this
.
periods
=
t
.
children
.
find
(
function
(
t
){
return
t
.
id
===
e
[
1
]}),
console
.
log
(
this
.
goodsList
),
console
.
log
(
this
.
periods
),
this
.
teacher_id
=
""
,
this
.
getTeacher
(),
this
.
getClassList
()}},
onPageChange
:
function
(
e
){
this
.
nowPage
=
e
,
this
.
getClassList
()},
onSizeChange
:
function
(
e
){
this
.
limit
=
e
,
this
.
nowPage
=
1
,
this
.
getClassList
()},
onReflash
:
function
(
e
){
this
.
periods
=
e
,
this
.
selectedGoods
=
[
e
.
goods_id
,
e
.
id
],
this
.
getClassList
()},
getClassList
:
function
(){
var
e
=
this
;
if
(
this
.
periods
){
this
.
getTeacher
();
var
t
=
{
limit
:
this
.
limit
,
page
:
this
.
nowPage
};
this
.
teacher_id
&&
(
t
.
teacher_id
=
this
.
teacher_id
),
console
.
log
(
this
.
periods
),
Object
(
s
.
_47
)(
this
.
periods
.
id
,
t
).
then
(
function
(
t
){
t
.
list
.
forEach
(
function
(
e
){
e
.
arrive_course_rate
=
0
,
e
.
watch_course_rate
=
0
,
e
.
over_course_rate
=
0
,
e
.
work_rate
=
0
,
e
.
over_work_rate
=
0
,
e
.
clock_rate
=
0
,
e
.
over_clock_rate
=
0
,
e
.
transform_rate
=
0
}),
e
.
title
=
t
.
periods
,
e
.
title
.
count_join_num
=
t
.
count
.
count_join_num
?
t
.
count
.
count_join_num
:
"暂无"
,
e
.
title
.
count_max_join_num
=
t
.
count
.
count_max_join_num
?
t
.
count
.
count_max_join_num
:
"暂无"
,
e
.
title
.
count_teacher_num
=
t
.
count
.
count_teacher_num
?
t
.
count
.
count_teacher_num
:
"暂无"
,
e
.
countObj
=
t
.
count
?
t
.
count
:
""
,
e
.
classList
=
t
.
list
,
e
.
total
=
t
.
total
})}},
handleItemChange
:
function
(
e
){
var
t
=
this
;
Object
(
s
.
_77
)({
goods_id
:
e
[
0
],
limit
:
100
}).
then
(
function
(
i
){
i
.
list
.
forEach
(
function
(
e
){
e
.
name
=
e
.
title
}),
t
.
goodsList
.
find
(
function
(
t
){
return
t
.
id
===
e
[
0
]}).
children
=
i
.
list
})},
delClass
:
function
(
e
){
var
t
=
this
;
this
.
$confirm
(
"此操作将删除该班级?"
,
"提示"
,{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}).
then
(
function
(){
Object
(
s
.
L
)(
e
.
id
).
then
(
function
(
e
){
t
.
$message
({
type
:
"success"
,
message
:
"删除成功!"
}),
t
.
getClassList
()})})},
onExport
:
function
(){
var
e
=
{
periods_id
:
this
.
selectedGoods
[
1
]};
Object
(
s
.
_27
)(
"/api/admin/periods/finish/user/export"
,
e
)},
onAdd
:
function
(){
this
.
dialogObj
=
{
show
:
!
0
,
title
:
"添加班级"
,
type
:
0
,
teacherList
:
this
.
teacherList
?
this
.
teacherList
:[]},
this
.
periods
&&
(
this
.
dialogObj
.
periods
=
this
.
periods
,
this
.
dialogObj
.
periodsId
=
this
.
periods
.
id
)},
editClass
:
function
(
e
){
this
.
dialogObj
=
{
show
:
!
0
,
title
:
"编辑班级"
,
type
:
1
,
id
:
e
.
id
,
teacherList
:
this
.
teacherList
?
this
.
teacherList
:[]},
this
.
periods
&&
(
this
.
dialogObj
.
periods
=
this
.
periods
,
this
.
dialogObj
.
periodsId
=
this
.
periods
.
id
)}}},
_
=
{
render
:
function
(){
var
e
=
this
,
t
=
e
.
$createElement
,
i
=
e
.
_self
.
_c
||
t
;
return
i
(
"div"
,{
staticClass
:
"class admin-refresh"
},[
i
(
"div"
,{
staticClass
:
"form-block section-search search-single"
},[
i
(
"el-form"
,{
attrs
:{
"label-width"
:
"90px"
,
inline
:
""
,
size
:
"small"
}},[
i
(
"el-form-item"
,[
i
(
"el-cascader"
,{
staticStyle
:{
width
:
"560px"
},
attrs
:{
"popper-class"
:
"refresh-cascader-multi width-560"
,
placeholder
:
"请选择期数"
,
filterable
:
""
,
options
:
e
.
goodsList
,
props
:{
value
:
"id"
,
label
:
"name"
}},
on
:{
"active-item-change"
:
e
.
handleItemChange
,
change
:
e
.
changePeriods
},
model
:{
value
:
e
.
selectedGoods
,
callback
:
function
(
t
){
e
.
selectedGoods
=
t
},
expression
:
"selectedGoods"
}})],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,[
i
(
"el-select"
,{
staticStyle
:{
width
:
"160px"
},
attrs
:{
filterable
:
""
,
placeholder
:
"请选择老师"
,
clearable
:
""
},
on
:{
change
:
e
.
getClassList
},
model
:{
value
:
e
.
teacher_id
,
callback
:
function
(
t
){
e
.
teacher_id
=
t
},
expression
:
"teacher_id"
}},
e
.
_l
(
e
.
teacherList
,
function
(
e
,
t
){
return
i
(
"el-option"
,{
key
:
t
,
attrs
:{
label
:
e
.
teacher_name
,
value
:
e
.
teacher_id
}})}))],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
attrs
:{
label
:
""
}},[
i
(
"el-button"
,{
attrs
:{
type
:
"primary"
},
on
:{
click
:
e
.
getClassList
}},[
e
.
_v
(
"搜索"
)])],
1
),
e
.
_v
(
" "
),
i
(
"el-form-item"
,{
staticStyle
:{
float
:
"right"
}},[
i
(
"div"
,{
staticClass
:
"search-btn-wrapper"
},[
e
.
$store
.
state
.
exportFinish
?
i
(
"el-button"
,{
attrs
:{
type
:
"primary"
,
plain
:
""
},
on
:{
click
:
e
.
onExport
}},[
e
.
_v
(
"导出完课用户"
)]):
e
.
_e
(),
e
.
_v
(
" "
),
e
.
$store
.
state
.
readonly
?
e
.
_e
():
i
(
"el-button"
,{
attrs
:{
type
:
"success"
},
on
:{
click
:
e
.
onAdd
}},[
e
.
_v
(
"添加班级"
)]),
e
.
_v
(
" "
),
i
(
"el-button"
,{
attrs
:{
type
:
"success"
},
on
:{
click
:
e
.
sendMsg
}},[
e
.
_v
(
"发送活动通知"
)])],
1
)])],
1
)],
1
),
e
.
_v
(
" "
),
e
.
title
&&
e
.
title
.
title
?
i
(
"div"
,{
staticClass
:
"intro"
},[
i
(
"el-table"
,{
staticStyle
:{
display
:
"block"
,
margin
:
"10px auto"
,
background
:
"transparent"
},
attrs
:{
border
:
""
,
size
:
"mini"
,
data
:[
e
.
title
]}},[
i
(
"el-table-column"
,{
attrs
:{
label
:
"期数名称"
,
width
:
"280px"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,{
staticStyle
:{
"white-space"
:
"normal"
}},[
e
.
_v
(
e
.
_s
(
e
.
periodName
))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"可看课包数"
,
prop
:
"watch_num"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"已看课包数"
,
prop
:
"has_watch_num"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"开始时间"
,
prop
:
"start_at"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"老师数量"
,
prop
:
"count_teacher_num"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"预计学员总数"
,
prop
:
"count_max_join_num"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"学员总数"
,
prop
:
"count_join_num"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"结束时间"
,
prop
:
"over_at"
}})],
1
)],
1
):
e
.
_e
(),
e
.
_v
(
" "
),
e
.
title
&&
e
.
title
.
title
?
e
.
_e
():
i
(
"div"
,[
i
(
"el-form"
,{
attrs
:{
"label-width"
:
"300px"
,
inline
:
""
}},[
i
(
"el-form-item"
,{
attrs
:{
label
:
"暂无期数信息,请先选择期数"
}})],
1
)],
1
),
e
.
_v
(
" "
),
i
(
"div"
,[
i
(
"el-table"
,{
attrs
:{
data
:
e
.
classList
},
on
:{
"expand-change"
:
e
.
changeRow
}},[
i
(
"el-table-column"
,{
attrs
:{
type
:
"expand"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"el-table"
,{
staticStyle
:{
width
:
"100%"
},
attrs
:{
data
:[
t
.
row
]}},[
i
(
"el-table-column"
,{
attrs
:{
label
:
"到课率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
arrive_course_rate
)))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"看课率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
watch_course_rate
)))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"完课率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
over_course_rate
)))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"打卡率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
clock_rate
)))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"全勤打卡率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
over_clock_rate
)))])]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"转化率"
,
"render-header"
:
e
.
rendertip
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"span"
,[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"percent"
)(
t
.
row
.
transform_rate
)))])]}}])})],
1
)]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"班级名称"
,
width
:
"200px"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
e
.
_v
(
e
.
_s
(
t
.
row
.
class_name
))]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
prop
:
"teacher_name"
,
label
:
"班主任"
,
width
:
"120px"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"老师状态"
,
width
:
"80px"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
e
.
_v
(
e
.
_s
(
0
===
t
.
row
.
teacher_status
?
"带班"
:
"不带班"
))]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"班级类型"
,
width
:
"80px"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"classTypeFilter"
)(
t
.
row
.
type
)))]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
prop
:
"max_join_num"
,
label
:
"最大人数"
,
width
:
"100px"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
prop
:
"join_num"
,
label
:
"现有人数"
,
width
:
"100px"
}}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
prop
:
"source"
,
label
:
"活动方案"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
e
.
_v
(
e
.
_s
(
e
.
_f
(
"classSourceFilter"
)(
t
.
row
.
source
)))]}}])}),
e
.
_v
(
" "
),
i
(
"el-table-column"
,{
attrs
:{
label
:
"操作"
,
width
:
"246"
},
scopedSlots
:
e
.
_u
([{
key
:
"default"
,
fn
:
function
(
t
){
return
[
i
(
"el-button"
,{
attrs
:{
size
:
"mini"
,
type
:
"primary"
},
on
:{
click
:
function
(
i
){
e
.
showUser
(
t
.
row
)}}},[
e
.
_v
(
"班级成员"
)]),
e
.
_v
(
" "
),
e
.
$store
.
state
.
readonly
?
e
.
_e
():
i
(
"el-button"
,{
attrs
:{
size
:
"mini"
,
type
:
"warning"
},
on
:{
click
:
function
(
i
){
e
.
editClass
(
t
.
row
)}}},[
e
.
_v
(
"编辑"
)]),
e
.
_v
(
" "
),
e
.
$store
.
state
.
deletePermission
&&!
e
.
$store
.
state
.
readonly
?
i
(
"el-button"
,{
attrs
:{
size
:
"mini"
,
type
:
"danger"
},
on
:{
click
:
function
(
i
){
e
.
delClass
(
t
.
row
)}}},[
e
.
_v
(
"删除"
)]):
e
.
_e
()]}}])})],
1
)],
1
),
e
.
_v
(
" "
),
i
(
"page"
,{
attrs
:{
nowPage
:
e
.
nowPage
,
total
:
e
.
total
,
limit
:
e
.
limit
},
on
:{
pageChange
:
e
.
onPageChange
,
sizeChange
:
e
.
onSizeChange
}}),
e
.
_v
(
" "
),
i
(
"class-dialog"
,{
attrs
:{
dialogObj
:
e
.
dialogObj
},
on
:{
reflash
:
e
.
onReflash
}}),
e
.
_v
(
" "
),
i
(
"user-list"
,{
attrs
:{
userObj
:
e
.
userObj
},
on
:{
reflash
:
e
.
getClassList
}})],
1
)},
staticRenderFns
:[]};
var
f
=
i
(
"VU/8"
)(
h
,
_
,
!
1
,
function
(
e
){
i
(
"+UvB"
),
i
(
"1zqz"
)},
"data-v-31b6a586"
,
null
);
t
.
default
=
f
.
exports
},
wuOD
:
function
(
e
,
t
){}});
\ No newline at end of file
dist/static/js/manifest.5db3fda62ecbfe5b9ed8.js
0 → 100644
View file @
68cef85c
!
function
(
e
){
var
c
=
window
.
webpackJsonp
;
window
.
webpackJsonp
=
function
(
f
,
b
,
n
){
for
(
var
r
,
t
,
o
,
i
=
0
,
u
=
[];
i
<
f
.
length
;
i
++
)
t
=
f
[
i
],
a
[
t
]
&&
u
.
push
(
a
[
t
][
0
]),
a
[
t
]
=
0
;
for
(
r
in
b
)
Object
.
prototype
.
hasOwnProperty
.
call
(
b
,
r
)
&&
(
e
[
r
]
=
b
[
r
]);
for
(
c
&&
c
(
f
,
b
,
n
);
u
.
length
;)
u
.
shift
()();
if
(
n
)
for
(
i
=
0
;
i
<
n
.
length
;
i
++
)
o
=
d
(
d
.
s
=
n
[
i
]);
return
o
};
var
f
=
{},
a
=
{
75
:
0
};
function
d
(
c
){
if
(
f
[
c
])
return
f
[
c
].
exports
;
var
a
=
f
[
c
]
=
{
i
:
c
,
l
:
!
1
,
exports
:{}};
return
e
[
c
].
call
(
a
.
exports
,
a
,
a
.
exports
,
d
),
a
.
l
=!
0
,
a
.
exports
}
d
.
e
=
function
(
e
){
var
c
=
a
[
e
];
if
(
0
===
c
)
return
new
Promise
(
function
(
e
){
e
()});
if
(
c
)
return
c
[
2
];
var
f
=
new
Promise
(
function
(
f
,
d
){
c
=
a
[
e
]
=
[
f
,
d
]});
c
[
2
]
=
f
;
var
b
=
document
.
getElementsByTagName
(
"head"
)[
0
],
n
=
document
.
createElement
(
"script"
);
n
.
type
=
"text/javascript"
,
n
.
charset
=
"utf-8"
,
n
.
async
=!
0
,
n
.
timeout
=
12
e4
,
d
.
nc
&&
n
.
setAttribute
(
"nonce"
,
d
.
nc
),
n
.
src
=
d
.
p
+
"static/js/"
+
e
+
"."
+
{
0
:
"fc53186e041687440114"
,
1
:
"e329b9b549c4118ed0bf"
,
2
:
"557116d16cf7b8475850"
,
3
:
"ddc27f21b39a980f2ec3"
,
4
:
"4b63f2bb981af0f0c4cd"
,
5
:
"e36d41ee8ed2040e80f6"
,
6
:
"04d80b2f6d89d85f8b52"
,
7
:
"6d194b08c16e528e61b9"
,
8
:
"7905bcfc376529dc9f0b"
,
9
:
"34aa9b8acaa3f68481e1"
,
10
:
"63652735b5ef07da63b8"
,
11
:
"d73d3f8e354096bf4138"
,
12
:
"8cc5b11aabd526c6e8a4"
,
13
:
"f9c06cf54aaf1f8b99b3"
,
14
:
"eeef6575118faca906dc"
,
15
:
"5d24fc68da3bfb37e539"
,
16
:
"2c943d73b5784b657fe5"
,
17
:
"2fd11ca6a45ff71a0371"
,
18
:
"916c9c6c535212901918"
,
19
:
"2c9580f0706f0bba6746"
,
20
:
"90e3b23241e6568f3680"
,
21
:
"1bb961e08620e9ac1308"
,
22
:
"bae085052659e6d35048"
,
23
:
"1f4a89d6675114ba937f"
,
24
:
"a0987f8329fa9ccb2edc"
,
25
:
"532859715b4f2f20d76a"
,
26
:
"4bd60554835b3b855f35"
,
27
:
"afe30e80823e64ed4be8"
,
28
:
"c2be79bf193607d6513e"
,
29
:
"6ffb1015531d19c82252"
,
30
:
"21a52d299fe21d0dc7c6"
,
31
:
"7cabd2e9c652de76a1bf"
,
32
:
"281c84bc6b14700866b4"
,
33
:
"3673c89accc536262175"
,
34
:
"f2dc51aef29bda516f95"
,
35
:
"74c665b163b87147d7ce"
,
36
:
"dae70c3c5fcb1fc03b4a"
,
37
:
"40b831749f78fce3a77a"
,
38
:
"37c7be08010a4c834c9c"
,
39
:
"1fbe9793ec25067d5732"
,
40
:
"c4c3b4245aefd6690ef6"
,
41
:
"ad579cc96cdc9d481d5c"
,
42
:
"d37a5c7934f5e7515990"
,
43
:
"007705a337762c79de23"
,
44
:
"13e2e5a8a17efc0417ea"
,
45
:
"61052be98583f314b07c"
,
46
:
"072912e1b2add75c0c90"
,
47
:
"1ff87eb69cebe8d6a900"
,
48
:
"6e29962aa90c0e3227a1"
,
49
:
"d332d227f8bc5aa366e7"
,
50
:
"3ed15b2a49c297de37ae"
,
51
:
"b5876d6d4833e1dfb00e"
,
52
:
"8cb88af424367f4922d2"
,
53
:
"95d83bdb8557d9c2e5de"
,
54
:
"52858170c4a2c85f39e0"
,
55
:
"f7c90fa2be6fc94e4844"
,
56
:
"253de30723b8062712a1"
,
57
:
"6ba0c83b56f4cfc82017"
,
58
:
"afaa7655354f4e558a21"
,
59
:
"2a74a9bd6c05eb7b0a42"
,
60
:
"15f4c68aa6f51d629833"
,
61
:
"f1f918879fffd50063fc"
,
62
:
"9f14c3144130e9d1ace0"
,
63
:
"4bcfc7126181b32dd8c8"
,
64
:
"97e10b392fe4fd98fde1"
,
65
:
"cbf86086e9005ad83ecb"
,
66
:
"3246d2a424fb89c5d221"
,
67
:
"7a9e9ffa97e4300fff68"
,
68
:
"33b4ca75f5039de87d45"
,
69
:
"ceea45263c0ef223870e"
,
70
:
"996ec458d8dc269b3371"
,
71
:
"caf4fea616a60375721e"
,
72
:
"32f8dcc9d4b054e9ea5d"
}[
e
]
+
".js"
;
var
r
=
setTimeout
(
t
,
12
e4
);
function
t
(){
n
.
onerror
=
n
.
onload
=
null
,
clearTimeout
(
r
);
var
c
=
a
[
e
];
0
!==
c
&&
(
c
&&
c
[
1
](
new
Error
(
"Loading chunk "
+
e
+
" failed."
)),
a
[
e
]
=
void
0
)}
return
n
.
onerror
=
n
.
onload
=
t
,
b
.
appendChild
(
n
),
f
},
d
.
m
=
e
,
d
.
c
=
f
,
d
.
d
=
function
(
e
,
c
,
f
){
d
.
o
(
e
,
c
)
||
Object
.
defineProperty
(
e
,
c
,{
configurable
:
!
1
,
enumerable
:
!
0
,
get
:
f
})},
d
.
n
=
function
(
e
){
var
c
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
d
.
d
(
c
,
"a"
,
c
),
c
},
d
.
o
=
function
(
e
,
c
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
c
)},
d
.
p
=
"/"
,
d
.
oe
=
function
(
e
){
throw
console
.
error
(
e
),
e
}}([]);
\ No newline at end of file
src/components/class/dialog.vue
View file @
68cef85c
...
@@ -154,6 +154,7 @@
...
@@ -154,6 +154,7 @@
this
.
form
=
{
this
.
form
=
{
teacher_id
:
''
,
teacher_id
:
''
,
max_join_num
:
''
,
max_join_num
:
''
,
class_name
:
''
,
source
:
''
,
source
:
''
,
qr
:
""
qr
:
""
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment